start run rails pumactl animal ruby-on-rails puma

ruby on rails - run - ¿Cómo monitorear un servidor puma?



pumactl start (3)

Puedes usar la herramienta pumactl :

$ pumactl --help

¿Hay alguna manera de monitorear el estado de un servidor puma? más específicamente, cuántos trabajadores ocupados tiene y cuántos subprocesos aprovisionó cada trabajador. Lo mejor sería algo similar al mod_status de apache.


Yo uso el dios o monit.

God es una gema rubí, Monit es una herramienta de monitoreo.

  • monitores servidores,
  • procesos,
  • enviar notificaciones de uso de recursos,
  • reinicie sus procesos si se estrelló,
  • Proporcionar terminal y web ui para comprobar el estado de los procesos.

Tal vez

$ touch /path/to/your/stats.txt $ puma -S /path/to/your/stats.txt

en otra terminal

$ watch cat /path/to/your/stats.txt

Resultados en:

--- pid: 14364 config: !ruby/object:Puma::Configuration cli_options: conf: options: :min_threads: 0 :max_threads: 16 :quiet: false :debug: false :binds: - tcp://0.0.0.0:9292 :workers: 0 :daemon: false :mode: :http :before_fork: [] :worker_timeout: 60 :worker_boot_timeout: 60 :worker_shutdown_timeout: 30 :state: /path/to/your/stats.txt :config_file: :control_auth_token: 21c9241912a8e0e7ddaabac667ff5682 :tag: solar :environment: development

Pero eso se ve estático :(

Iniciando tu aplicación a través de puma así:

$ puma -S /path/to/your/stats.txt -C config/puma.rb --control tcp://0.0.0.0:9191 --control-token foo config.ru

le permite más tarde consultar por su navegador web:

$ http://localhost:9191/stats?token=foo or $ pumactl -C tcp://0.0.0.0:9191 -T foo stats

Resultando en:

{ "workers": 3, "phase": 0, "booted_workers": 3 }

Lo que parece más dinámico ...

Edit_0:

Como los trabajadores son procesos, también se pueden aprovechar las herramientas proporcionadas por el sistema operativo para recopilar información, por ejemplo, en Linux:

Comenzando una instancia de puma:

puma -S p/stats.txt -C config/puma.rb --control tcp://0.0.0.0:9191 --control-token foo config.ru [1908] Puma starting in cluster mode... [1908] * Version 2.15.3 (ruby 2.1.5-p273), codename: Autumn Arbor Airbrush [1908] * Min threads: 8, max threads: 32 [1908] * Environment: development [1908] * Process workers: 3 [1908] * Preloading application [1908] * Listening on tcp://0.0.0.0:9292 [1908] Use Ctrl-C to stop [1908] * Starting control server on tcp://0.0.0.0:9191 [1908] - Worker 0 (pid: 1921) booted, phase: 0 [1908] - Worker 1 (pid: 1929) booted, phase: 0 [1908] - Worker 2 (pid: 1937) booted, phase: 0

Usando top para investigar trabajadores:

$ top -p1921 -p1929 -p1937 -n 1

Nos da

Tasks: 3 total, 0 running, 3 sleeping, 0 stopped, 0 zombie %Cpu(s): 8.4 us, 1.5 sy, 0.0 ni, 88.9 id, 1.2 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 4058820 total, 1626576 used, 2432244 free, 56456 buffers KiB Swap: 9609212 total, 0 used, 9609212 free. 424948 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1921 benjamin 20 0 1171600 85484 3116 S 0.0 2.1 0:00.38 puma 1929 benjamin 20 0 1171600 85264 2884 S 0.0 2.1 0:00.37 puma 1937 benjamin 20 0 1171600 85264 2884 S 0.0 2.1 0:00.42 puma

a partir de la cual se puede analizar información relevante como la utilización de la CPU o RAM.