LoginSignup
5
5

More than 5 years have passed since last update.

Zabbix 3.2でsidekiqを監視する - Amazon Linux編

Last updated at Posted at 2017-01-26

Sidekiqを導入することになったので、Zabbixでプロセス監視をします。
Amazon LinuxでUpstartがSupervisorを監視し、SupervisorがSidekiqを監視する形です。
Upstartで直接監視しようと思ったのですが、Amazon LinuxのUpstartのバージョンが古く、実行ユーザが容易には設定できないため断念しました。

Railsでsidekiqが動くように設定する

ここを参照する

Supervisorの導入

インストールします。root以外のユーザでインストールした際は/usr/local/bin/supervisord、rootでインストールした際は/usr/bin/supervisordインストールされます。
今回は、rootでインストールしました。

sudo su - root
pip install supervisor

exit

sudo mkdir /var/log/supervisor
sudo mkdir /etc/supervisor
sudo mkdir /etc/supervisor/conf.d/

設定ファイルの作成. /etc/supervisor/supervisord.conf に以下を記載

[unix_http_server]
file=/root/supervisor.sock

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10           ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false               ; (start in foreground if true;default false)
minfds=65536                  ; (min. avail startup file descriptors;default 1024)
minprocs=200                 ; (min. avail process descriptors;default 200)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///root/supervisor.sock 

[include]
files = /etc/supervisor/conf.d/*.conf

foregroundで正しく起動できるか確認. 正しく起動できたらCtrl+Cで停止.

/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf 
2017-01-25 16:09:00,624 CRIT Supervisor running as root (no user in config file)
2017-01-25 16:09:00,625 WARN No file matches via include "/etc/supervisor/conf.d/*.conf"
2017-01-25 16:09:00,625 INFO supervisord started with pid 25228

UpstartでSupervisorのプロセス永続化する.

sudo vi /etc/init/supervisord.conf
で以下のように編集

description     "supervisord"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
exec /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf 
pre-stop exec /usr/bin/supervisorctl stop all

Upstartで設定を再読込みします

initctl reload-configuration

設定が読み込まれたか確認します。workersが登録されていれば大丈夫です。

initctl list

以下のコマンドでsupervisordを起動・停止できます。起動しておきます。

# 起動
sudo initctl start supervisord

# 停止
sudo initctl stop supervisord

起動後、以下で実際にsupervisorが動いているか確認します。

ps -ef |grep supervisor

Upstartの各種ログは以下に出ています

/var/log/message

Supervisorのログは以下のように出てます

/var/log/supervisor/supervisord.log

SupervisorでSidekiqの起動

以下のように設定ファイル( /etc/supervisor/conf.d/sidekiq.conf )を作成します. usernameの部分は適宜かえてください。

[program:sidekiq]
command=bash -c 'source ~/.bash_profile && bundle exec sidekiq'
stopasgroup=true
environment=USER="username",HOME="/home/username"
directory=/home/username/server
user=username
startsecs=10
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/sidekiq.log
logfile_maxbytes=1MB
logfile_backups=10
redirect_stderr=true

Upstartの設定を再読込します

sudo initctl reload supervisord

起動しているか確かめてみます

ps -ef |grep sidekiq

SupervisorやSidekiqをkillして再起動するか確かめてみます。
よければ実際にログを送ってみます

Zabbixを設定する

Supervisorの監視

image

Supervisorを停止し、アラートがでれば成功です

sudo initctl stop supervisord

Sidekiqの監視

まずプロセス監視をします。以下に設定の一部を示します。

image

有用なコマンド

# Sidekiq再起動
supervisorctl -c /etc/supervisor/supervisord.conf restart sidekiq

TODO

SidekiqのQueueの数の監視はまだやっていないのでいずれやります。

参考

sidekiq

upstrat

monit

supervisor

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5