Sensu導入と初期設定について
May 2, 2014
Chef: 11.8.0
sensu: 0.12.3
RabbitMQ: 3.1.5
erlang R14B-04.1.4
Redis :2.6.17
参考 :
監視ソフトをNagiosからSensuに切り替えて2ヶ月経ったのでまとめた - Glide Note
Amazon Linux 上に sensu-server を構築する(1)- ようへいの日々精進 XP
特にようへいさんのブログはSensuのエントリーが多く、大変参考になります。
ありがとうございます。
Sensu server + Sensu client のインストール
Chefを利用します。
インストール自体はRabbitMQでコケる記事を参考にして下さい。
2014/05/02 現在、RabbitMQのインストールで失敗することはなくなりました。
また、下記に記載しますが、インストール先サーバのRubyのバージョンに環境が左右されないように
"use_embedded_ruby": true
としてembedded rubyを利用することをおすすめいたします。
tips
sensu-chef から include_recipe”yum” 外す
基本的にsensuをインストールするのに既存のものを破壊することはないのですが
sensu-chef
の中にinclude_recipe “yum”しているところがあり
この設定をよしなにしないとyum.conf
が書き換えられてしまいます。
sensuのインストールはsensu.repo
を追加して行うので「include_recipe “yum”」は不要です。
既存のサーバにインストールするときは気を付けて下さい。
この前ryuzeeさんのpull requestが取り込まれて
Amazon Linuxにインストールすることができるようになりました。
- sensu_server.json
sensuとredisとrabbitmqをインストールしてください。
- sensu_server.json
{
"sensu": {
"use_embedded_ruby": true,
"dashboard": {
"user": "foo",
"password": "bar"
},
"rabbitmq": {
"host": "localhost",
"port": 5671,
"vhost": "/sensu",
"password": "baz"
},
"node_subscriptions": [
"sensu_server"
]
},
"run_list": ["recipe[sensu]", "recipe[sensu::redis]", "recipe[sensu::rabbitmq]"]
}
上記内容でChefを廻せばインストールされるかと思います。
パスワードやポートなどデフォルトの設定のままで問題なければ指定は不要です。
Sensu client のインストール
clientはsensu-clientだけが動いていれば大丈夫です。
- sensu_client.json
{
"sensu": {
"use_embedded_ruby": true,
"node_subscriptions": [ "sensu_client" ],
"use_embedded_ruby": true,
"rabbitmq": {
"host": "sensu-server",
"port": 5671,
"vhost": "/sensu",
"password": "baz"
}
}
},
"run_list": ["recipe[sensu]"]
}
上記内容でChefを廻せばインストールされるかと思います。
パスワードやポートなどデフォルトの設定のままで問題なければ指定は不要です。
Sensu serverの設定
Chefの動作が問題なければ/etc/sensu/config.json
のファイルが作成されているかと思います。
$ /etc/init.d/sensu-server start
$ tail -F /var/log/sensu/sensu-server.log
起動できることを確認してください。
最初、すごい勘違いしていたのですが、sensu-apiはdashboardの為の機能で
sensu-serverには必要ないと思っていたのですが、基本的なミドルウェア間のやり取りは
sensu-apiを通して利用することになります。なので
$ /etc/init.d/sensu-api start
$ tail -F /var/log/sensu/sensu-api.log
として、sensu-apiを起動してください。
これでsensu-clientからデータを受け付ける準備ができました。
Sensu clientの設定
https://github.com/kenjiskywalker/sensu-client-plugin
多分みなさんこのような自前recipeを作成しているかと思いますが
上記のrecipeを利用して/etc/sensu/conf.d/client.json
という
client用のjsonファイルを作成します。
pluginの配布も上記cookbookを利用して配布しようかなと考えていますが
Chefの実行自体のコストが地味に大きいので、配布自体はrsyncか何かで配布して
Chefで冪等性を確保するのが効率良いのかなとも考えています。
$ /etc/init.d/sensu-client start
$ tail -F /var/log/sensu/sensu-client.log
監視項目の追加(server)
- 監視に利用するプラグインのコマンド置き場
/etc/sensu/plugins/
- 通知に利用するプラグインのコマンド置き場
/etc/sensu/handlers/
- 監視内容の設定・通知の設定など
/etc/sensu/conf.d/
ファイル構成
- server
/etc/sensu/
├── conf.d
│ ├── checks
│ │ ├── check_cpu.json
│ │ ├── check_disk.json
│ │ ├── check_mailq.json
│ │ ├── check_memcached.json
│ │ ├── check_mongodb.json
│ │ ├── check_mongodb_replica.json
│ │ ├── check_proc_apache.json
│ │ ├── check_proc_nginx.json
│ │ ├── check_redis_info.json
│ │ ├── check_redis_info_slave.json
│ │ ├── check_smtp.json
│ ├── handlers
│ │ ├── graphite.json
│ │ ├── hipchat.json
│ │ └── mailer.json
│ ├── metrics
│ │ ├── metrics-cpu.json
│ │ ├── metrics-disk_usage.json
│ │ ├── metrics-net.json
│ │ ├── metrics-netstat-tcp.json
│ │ └── metrics-vmstat.json
│ └── README.md
├── config.json
├── extensions
├── handlers
│ ├── hipchat.rb
│ └── mailer.rb
├── mutators
├── plugins
└── ssl
├── cert.pem
└── key.pem
Sensu serverを監視しないとういことはないので
/etc/sensu/plugins/
配下に監視用のコマンドを起きますが
Sensu serverが動く最低限の設定例を記載します。
Sensu serverはSensu clientにこれを実行してねという機能を持ち
Sensu clientはserverから受け取ったjobを実行し
serverへ結果を返す。という繰り返しを行います。
- client
/etc/sensu/
├── conf.d
│ ├── client.json
│ └── README.md
├── config.json
├── extensions
├── handlers
├── mutators
├── plugins
│ ├── check-cpu.rb
│ ├── check-disk.rb
│ ├── check-http.rb
│ ├── check-mailq.rb
│ ├── check-memcached-stats.rb
│ ├── check_mongodb.py
│ ├── check_mongo_replica_stat.rb
│ ├── check-procs.rb
│ ├── check-redis-info.rb
│ ├── cpu-pcnt-usage-metrics.rb
│ ├── disk-usage-metrics.rb
│ ├── metrics-net.rb
│ ├── metrics-netstat-tcp.rb
│ └── vmstat-metrics.rb
└── ssl
├── cert.pem
└── key.pem
Sensu server
- 監視の設定は必要(/etc/sensu/conf.d/etc/)
- 監視のコマンドは必要ない(/etc/sensu/plugins/)
Sensu client
- 監視の設定は必要ない(/etc/sensu/conf.d/etc/)
- 監視のコマンドは必要(/etc/sensu/plugins/)
ということになります。
まだ完全に動作を理解してるわけではないので
次はもう少し確認した後、監視の仕組みについてまとめたいと思います。