概要
Sensuのクライアント側です。
簡単のため、RabbitMQの通信にSSLは導入していません。
環境
- Ubuntu 14.04
- Sensu 0.21.0
サーバ構成
サーバ | IP |
---|---|
sensu-server, rabbitMQ | 192.168.33.100 |
sensu-client | 192.168.33.101 |
sensuのインストール
パッケージを追加。
$ wget -q http://repositories.sensuapp.org/apt/pubkey.gpg -O- | sudo apt-key add - $ echo "deb http://repositories.sensuapp.org/apt sensu main" | sudo tee /etc/apt/sources.list.d/sensu.list
インストール。
$ sudo apt-get update $ sudo apt-get install sensu
設定
RabbitMQ設定
サーバと通信するための設定です。
/etc/sensu/conf.d/rabbitmq.json
{ "rabbitmq": { "host": "192.168.33.100", "vhost": "/sensu", "user": "sensu", "password": "secret" } }
詳細説明
項目 | 説明 | 値 |
---|---|---|
host | RabbitMQサーバ | 192.168.33.100 |
vhost | sensuで使うvirtual host | /sensu |
user | sensuで使うユーザ | sensu |
password | 上記ユーザのパスワード | secret |
監視設定
サーバからどんな監視コマンドを受け取るかの設定です。
/etc/sensu/config.json
{ "client": { "name": "client1", "address": "localhost", "subscriptions": [ "test" ] } }
詳細説明
項目 | 説明 | 値 |
---|---|---|
name | クライアント名。任意。ただしユニークIDになること | cilent1 |
address | 監視したいサーバアドレス | localhost |
subscriptions | サーバで設定したトピック名。そのトピックで実行されるコマンドを受け取る | test |
設定ファイルの権限をsensu
に統一します。
$ sudo chown -R sensu:sensu /etc/sensu
agentの起動
$ sudo service sensu-client start
自動起動設定
$ sudo update-rc.d sensu-client defaults
プラグインのインストール
コミュニティから出されているプラグインであれば簡単に導入できます。
今回はdisk-checkという監視を入れようと思うので、以下のプラグインを入れます。
$ sudo sensu-install -p disk-checks
サーバ側監視設定
sensuはサーバ側で命令をブロードキャストします。
それをクライアント側で取得し、commandを実行します。
なのでサーバ側でcommandを設定します。
命令は先程挙げたdisk-checkです。
/etc/sensu/conf.d/check_disk_usage.json
{ "checks": { "check_disk_usage": { "command": "check-disk-usage.rb -w 75 -c 85", "interval": 10, "subscribers": [ "test" ] } } }
詳細説明
項目 | 説明 | 値 |
---|---|---|
checks | モニタリングの種類。監視なのでchecks。 | checks |
check_disk_usage | 監視名。任意 | check_disk_usage |
command | 実行したい監視コマンド。 実行ファイルはサーバ側でなくクライアントにあること プラグインインストールであればパスなしで直接実行可 |
check-disk-usage.rb -w 75 -c 85 |
interval | 監視頻度(sec) | 10 |
subscriptions | サーバで設定するトピック名。もしクライアントがこのトピック名を指定していれば、commandを実行する | test |
agentの再起動
$ sudo service sensu-server restart
動作確認
クライアント側
クライアント側のログを見ます。
$ tail -f /var/log/sensu/sensu-client.log {"timestamp":"2015-12-10T01:22:20.269511+0000","level":"warn","message":"config file applied changes","file":"/etc/sensu/conf.d/check_disk_usage.json","changes":{"checks":{"check_disk_usage":[null,{"command":"check-disk-usage.rb -w 75 -c 85","interval":10,"subscribers":["test"]}]}}} {"timestamp":"2015-12-10T01:22:20.269572+0000","level":"warn","message":"loading config file","file":"/etc/sensu/conf.d/rabbitmq.json"} {"timestamp":"2015-12-10T01:22:20.269631+0000","level":"warn","message":"config file applied changes","file":"/etc/sensu/conf.d/rabbitmq.json","changes":{"rabbitmq":[null,{"host":"192.168.33.100","vhost":"/sensu","user":"sensu","password":"REDACTED"}]}} {"timestamp":"2015-12-10T01:22:20.272755+0000","level":"warn","message":"loading extension files from directory","directory":"/etc/sensu/extensions"} {"timestamp":"2015-12-10T01:24:12.694113+0000","level":"info","message":"received check request","check":{"name":"check_disk_usage","issued":1449710652,"command":"check-disk-usage.rb -w 75 -c 85"}} {"timestamp":"2015-12-10T01:24:12.820804+0000","level":"info","message":"publishing check result","payload":{"client":"client1","check":{"name":"check_disk_usage","issued":1449710652,"command":"check-disk-usage.rb -w 75 -c 85","interval":10,"subscribers":["test"],"executed":1449710652,"duration":0.126,"output":"CheckDisk OK: All disk usage under 75% and inode usage under 85%\n","status":0}}} {"timestamp":"2015-12-10T01:24:22.696241+0000","level":"info","message":"received check request","check":{"name":"check_disk_usage","issued":1449710662,"command":"check-disk-usage.rb -w 75 -c 85"}}
ちゃんとサーバからpublishされたcommandをsubscribeできていますね。
サーバ側
APIでクライアントの一覧を取得できます。
$ curl -s localhost:4567/clients | jq . [ { "timestamp": 1449710920, "version": "0.21.0", "subscriptions": [ "test" ], "address": "localhost", "name": "client1" } ]
先ほど設定していたclient1
という名前のクライアントが登録されてますね。