巷で話題のsensuをインストール
乗り遅れ気味ですが、実際に使ってみましたよ。
感想としてはいい感じ。何がいい感じというと柔軟性の高さがいい感じ。 APIは充実してるし、pluginも作りやすいし。 公式でmonitoring frameworkと名乗っちゃってるあたり素敵ですね。
以下より試したときの記録を残していきたいと思います。 多分しばらくsensuネタが続くかと。
sensuのインストール記録
ほんとはchefやpappetを使ってのインストールを(強く)推奨しているとのこと。 ただ、勉強もかねて手動でインストールしてみる。
環境
OSはCentOS6系 sensuは0.13
必要となるパッケージ
- RabbitMQ
- Redis
- Sensu
- Uchiwa (Dashbord)
インストールは以下を参考に進める
RabbitMQ
インストール
# yum install erlang --enablerepo=epel # rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.1/rabbitmq-server-3.2.1-1.noarch.rpm
SSLの設定
# cd /var/tmp # wget http://sensuapp.org/docs/0.13/tools/ssl_certs.tar # tar xf ssl_certs.tar # cd ssl_certs # ./ssl_certs.sh generate
生成された以下のファイルを/etc/rabbitmq/ssl以下に移動
sensu_ca/cacert.pem server/cert.pem server/key.pem
設定ファイル作成
- /etc/rabbitmq/rabbitmq.config
[ {rabbit, [ {ssl_listeners, [5671]}, {ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"}, {certfile,"/etc/rabbitmq/ssl/cert.pem"}, {keyfile,"/etc/rabbitmq/ssl/key.pem"}, {verify,verify_peer}, {fail_if_no_peer_cert,true}]} ]} ].
最後のピリオドは必須
起動
# /etc/init.d/rabbitmq-server start # chkconfig rabbitmq-server on
credentialsを作成。以下のコマンドを実行。
# rabbitmqctl add_vhost /sensu # rabbitmqctl add_user sensu sensu # rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
Redis
インストール
# yum install redis --enablerepo=epel -y
起動
# /etc/init.d/redis start
Sensu
レポジトリの追加
- /etc/yum.repos.d/sensu.repo
[sensu] name=sensu-main baseurl=http://repos.sensuapp.org/yum/el/$releasever/$basearch/ gpgcheck=0 enabled=0
インストール
# yum install sensu --enablrepo=sensu
クライアント証明書の設置
# mkdir /etc/sensu/ssl # cd /etc/sensu/ssl # cp -a /var/tmp/ssl_certs/client/key.pem . # cp -a /var/tmp/ssl_certs/client/cert.pem .
設定 config.jsonとしてある程度まとめることにした。
- /etc/sensu/conf.d/config.json
{ "rabbitmq": { "ssl": { "cert_chain_file": "/etc/sensu/ssl/cert.pem", "private_key_file": "/etc/sensu/ssl/key.pem" }, "host": "monitor", "port": 5671, "user": "sensu", "password": "sensu", "vhost": "/sensu" }, "redis": { "host": "localhost", "port": 6379 }, "api": { "host": "localhost", "port": 4567, "user": "admin", "password": "admin" }, "client": { "name": "monitor", "address": "127.0.0.1", "subscriptions": [ "all" ] } }
「monitor」 で名前解決できるようにしておくこと
ハンドラーの設定
/etc/sensu/conf.d/ 以下に置く
# pwd /etc/sensu/conf.d/handlers
設定
- /etc/sensu/conf.d/handlers/default.json
{ "handlers": { "default": { "type": "set", "handlers": [ "stdout" ] }, "stdout": { "type": "pipe", "command": "cat" } } }
起動
# /etc/init.d/sensu-server start # /etc/init.d/sensu-client start # /etc/init.d/sensu-api start # chkconfig sensu-server on # chkconfig sensu-client on # chkconfig sensu-api on
Uchiwa
0.13からデフォルトのダッシュボードでなく、「uchiwa」を使うことが推奨となったらしい。 インストール
# yum install uchiwa --enablerepo=sensu
設定
- /etc/sensu/uchiwa.json
{ "sensu": [ { "name": "Sensu", "host": "127.0.0.1", "ssl": false, "port": 4567, "user": "admin", "pass": "admin", "path": "", "timeout": 5000 } ], "uchiwa": { "user": "sensu", "pass": "sensu", "port": 3000, "stats": 10, "refresh": 10000 } }
監視の設定
試しにApacheのプロセス監視を設定する 事前準備としてpluginを設置 pluginはsensu-community-pluginsより取得。 だいたいのsensuのpluginはここにあるので、監視に必要となるpluginはまずはここから探すとよいです。
以下のコマンドで取得。
# cd /etc/sensu/plugins # wget https://raw.githubusercontent.com/sensu/sensu-community-plugins/master/plugins/processes/check-procs.rb # chmod 755 check-procs.rb
※wgetで直接とってるけど、githubからcloneして設置するでもよい。
jsonファイルを設置。 これが監視するための設定になる。
{ "checks": { "httpd_check": { "command": "/etc/sensu/plugins/check-procs.rb -p httpd -C 1 ", "subscribers": [ "all" ], "handlers": [ "default" ], "interval": 10 } } }
起動
# /etc/init.d/uchiwa start # chkconfig uchiwa on
アクセスするには以下のURLにアクセス
書くの疲れたので今日はここまで