こんにちは! JQです。
前回は『OSS編~Sensuを試してみる⑤~』と題して、Monitoring FrameworkであるSensuのsensu-admin(WEBUI)を試してみました。
今回は『OSS編~Sensuを試してみる⑥~』と題して、Monitoring FrameworkであるSensuのsensu-apiを試してみたいと思います。
sensu-api
1.前提
先ずはsensu-apiが稼働していることを確認します。
1 2 |
$ sudo /etc/rc.d/init.d/sensu-api status sensu-api (pid 3559) is running... |
次にポート等を確認します。
1 2 3 4 5 6 |
$ sudo vim /etc/sensu/config.json "api": { "host": "localhost", "bind": "0.0.0.0", "port": 4567 }, |
結果はJsonで来るため、見やすいようにjqをインストールしておきます。
1 |
$ sudo yum -y install jq |
2.試してみる
公式ドキュメントを参考にcurlで試してみます。
※記述時はver0.12
・aggregates
1 |
$ curl -s http://localhost:4567/aggregates | jq . |
・checks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ curl -s http://localhost:4567/checks | jq . [ { "name": "cron_process", "occurrences": 5, "notification": "Cron is not running", "interval": 30, "subscribers": [ "cron" ], "handlers": [ "mailer" ], "command": "check-procs.rb -p cron -C 1" } ] |
・clients
1 2 3 4 5 6 7 8 9 10 11 12 |
$ curl -s http://localhost:4567/clients | jq . [ { "timestamp": 1402461331, "subscriptions": [ "cron", "all" ], "address": "xx.xxx.xx.xxx", "name": "ip-xx.xxx.xx.xxx.ec2.internal" } ] |
・client name
1 2 3 4 5 6 7 8 9 10 |
$ curl -s http://localhost:4567/clients/ip-xx.xxx.xx.xxx.ec2.internal | jq . { "timestamp": 1402461633, "subscriptions": [ "cron", "all" ], "address": "xx.xxx.xx.xxx", "name": "ip-xx.xxx.xx.xxx.ec2.internal" } |
・client history
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
$ curl -s http://localhost:4567/clients/ip-xx.xxx.xx.xxx.ec2.internal/history | jq . [ { "last_status": 0, "last_execution": 1402461673, "history": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "check": "keepalive" }, { "last_status": 0, "last_execution": 1402461676, "history": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "check": "cron_process" } ] |
・info
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ curl -s http://localhost:4567/info | jq . { "redis": { "connected": true }, "rabbitmq": { "connected": true, "results": { "consumers": 1, "messages": 0 }, "keepalives": { "consumers": 1, "messages": 0 } }, "sensu": { "version": "0.12.6" } } |
・events
1 |
$ curl -s http://localhost:4567/events | jq . |
・health(success: 204)
1 |
$ curl -s -w "%{http_code}" http://localhost:4567/health |
・stashes
1 |
$ curl -s http://localhost:4567/stashes | jq . |
その他の詳細はドキュメントをご参照ください。
3.パスワードを掛けてみる
Basic認証によるパスワードを掛けてみます。
userとpasswordを以下に追記します。
1 2 3 4 5 6 7 8 |
$ sudo vim /etc/sensu/config.json "api": { "host": "localhost", "bind": "0.0.0.0", "port": 4567, "user": "admin", "password": "secret" }, |
反映します。
1 |
$ sudo /etc/rc.d/init.d/sensu-api restart |
401 Unauthorizedになるのが確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ curl -v http://localhost:4567/checks * Hostname was NOT found in DNS cache * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 4567 (#0) > GET /checks HTTP/1.1 > User-Agent: curl/7.36.0 > Host: localhost:4567 > Accept: */* > < HTTP/1.1 401 Unauthorized < Content-Type: text/plain < Content-Length: 0 < WWW-Authenticate: Basic realm="" < Connection: keep-alive * Server thin 1.5.0 codename Knife is not blacklisted < Server: thin 1.5.0 codename Knife |
認証をすれば正しく取得出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ curl -s http://localhost:4567/checks --user admin:secret | jq . [ { "name": "cron_process", "occurrences": 5, "notification": "Cron is not running", "interval": 30, "subscribers": [ "cron" ], "handlers": [ "mailer" ], "command": "check-procs.rb -p cron -C 1" } ] |
いかがでしたでしょうか?
次回もお楽しみに!!!