はじめに
- とりあえず sensu で監視環境を作りたい
- Sensu についてはこちらやこちら、こちら等で詳しく纏めて頂いていて参考になる
chef
とかpuppet
での構築が推奨されているが、今回はこちらを見ながら sensu-server の構築をやってみる- EC2 上の Amazon Linux 上に構築する
参考
最低限必要なツールをインストール
rabbitmq
sudo yum --enablerepo=epel install rabbitmq-server sudo chkconfig rabbitmq-server on sudo /etc/init.d/rabbitmq-server start
redis
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo yum install --enablerepo=remi redis sudo chkconfig redis on sudo /etc/init.d/redis start
sensu
リポジトリを登録する。
sudo sh -c 'cat << EOT >> /etc/yum.repos.d/sensu.repo [sensu] name=sensu-main baseurl=http://repos.sensuapp.org/yum/el/6/\$basearch/ gpgcheck=0 enabled=1 EOT '
yum
で一発!
sudo yum -y install sensu
SSL 証明書の生成
cd /tmp wget http://sensuapp.org/docs/0.12/tools/ssl_certs.tar tar -xvf ssl_certs.tar cd ssl_certs ./ssl_certs.sh generate
各種設定
[Amazon Linux] 日時を日本時間に修正する
sudo cp /usr/share/zoneinfo/Japan /etc/localtime
[rabbitmq] vhost を作成
sudo su - rabbitmq rabbitmqctl add_vhost /sensu
以下のように出力される。
Creating vhost "/sensu" ... ...done.
[rabbitmq] vhost の権限を設定
sensu
ユーザーを作成する。
sudo su - rabbitmq rabbitmqctl add_user sensu mypass
以下のように出力される。
Creating user "sensu" ... ...done.
/sensu
に対して sensu
ユーザーの権限を指定する。
rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"
以下のように出力される。
Setting permissions for user "sensu" in vhost "/sensu" ... ...done.
[rabbitmq] rabbitmq_management を有効にする
sudo /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
以下のように出力される。
The following plugins have been enabled: mochiweb webmachine rabbitmq_web_dispatch amqp_client rabbitmq_management_agent rabbitmq_management Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
以下のような rabbitmq
を管理するダッシュボードが有効になる。
[rebbitmq] rebbitmq.config の設定
rabbitmq.config
を /etc/rabbitmq/
以下に設置する。
sudo sh -c 'cat << EOT >> /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}]} ]} ]. EOT '
[rabbitmq] SSL 証明書を設置
先ほどの SSL 証明書作成で作成した証明書を設置しなければいけないが、上記の rabbitmq.config
の ssl_options
で指定している証明書を設置する為のディレクトリを作成する。
sudo mkdir -p /etc/rabbitmq/ssl/
ディレクトリの作成後、証明書を /etc/rabbitmq/ssl/
以下にコピーする。
sudo cp /tmp/ssl_certs/sensu_ca/cacert.pem /etc/rabbitmq/ssl/ sudo cp /tmp/ssl_certs/server/cert.pem /etc/rabbitmq/ssl/ sudo cp /tmp/ssl_certs/server/key.pem /etc/rabbitmq/ssl/
[rabbitmq] rabbitmq-server の再起動
sudo service rabbitmq-server restart
[sensu-server] config.json の設定
sensu
自身をインストール後に /etc/sensu/config.json.example
というファイルが置いてある。
{ "rabbitmq": { "host": "localhost", "port": 5672, "user": "sensu", "password": "sensu", "vhost": "/sensu" }, "redis": { "host": "localhost", "port": 6379 }, "api": { "host": "localhost", "port": 4567 }, "dashboard": { "port": 8080, "user": "admin", "password": "secret" }, "handlers": { "default": { "type": "set", "handlers": [ "stdout" ] }, "stdout": { "type": "pipe", "command": "cat" } }, "checks": { "test": { "command": "echo -n OK", "subscribers": [ "test" ], "interval": 60 } }, "client": { "name": "localhost", "address": "127.0.0.1", "subscriptions": [ "test" ] } }
また、/etc/sensu/conf.d/README
を斜め読みしたところ conf.d
以下に .json
という拡張子でファイルを置くことで設定ファイルとして認識されるようだ。(※設定ファイルは .json
という拡張子を付けなはれということかな)
ということで、/etc/sensu/config.json.example
をベースに以下のようにファイルを設置した。
/etc/sensu/conf.d/ ├── README.md ├── api.json ├── client.json ├── dashboard.json ├── rabbitmq.json └── redis.json
ポイントというかドキュメントを参考にしながら設定を進めていく上での注意点としては config.json.example
をそのままだと rabbitmq
に接続出来なかったので、今回、rabbitmq
への接続が定義されている rabbitmq.json
は以下のように修正した。
{ "rabbitmq": { "ssl": { "private_key_file": "/etc/sensu/ssl/key.pem", "cert_chain_file": "/etc/sensu/ssl/cert.pem" }, "host": "localhost", "port": 5671, "user": "sensu", "password": "mypass", "vhost": "/sensu" } }
[sensu-server] 各種サービスの起動
以下のように関連するサービスを起動する。
sudo /etc/init.d/sensu-server start sudo /etc/init.d/sensu-api start sudo /etc/init.d/sensu-dashboard start
ついでに sensu-client
も起動して sensu-server
自身が稼働するホストも監視するようにする。
sudo /etc/init.d/sensu-client start
[sensu-server] Web Dashboard にアクセスする
各種サービスが正常に起動したらブラウザをでインスタンスの 8080
ポートにアクセスすると...以下のようなシンプルなダッシュボードが表示される。
とりあえずここまで。監視対象としてはローカルホストのみの状態。
但し、監視項目の設定は無いのでクライアントとして登録されているのみ。
とりあえず...
現在、こんな状態
構成としては以下のような状態。
次のステップ
以下のようなことをやりたい。