StoplightのIcinga,Monitプロバイダ書いたよー
近頃はなぜかめっきりインフラエンジニア?*1化しているさいないぷです。こんにちは。Eclipseとかもう1年以上開いてないし、Javaとか書いてないし、ひたすらRubyでしこしこな今日この頃。一人でDevOpsエンジニアだぜカッコイーとか勘違いしながら日々過ごしてます。
本題
さてさて、以前"複数のビルドサーバを一つのUIで確認できるStoplight"というのを紹介しましたが、インフラエンジニア化している昨今ビルドというより監視のStoplight(信号)を上げて欲しいなと思うようになりまして、さっくり作ってみました。
部屋に置けるでっかいディスプレイも調達できたし!マルチディスプレイ上に常時Icingaを表示しておいて一人で監視の確認なんかして寂しい!一人だと見落とし怖い*2!なんて人もこれでみんなの目を引く監視環境の立ち上げができますよん!
Stoplightが元々はビルドサーバ用という思想の上に作られてるのでタイル表示のハンドリング周りが若干無理矢理感ありますが、表示、挙動周りについては概ね満足な仕上がり。しばらく使ってみて良さげならPullRequestでも送ってみようかなぁと思ってます。ていうかせめてテストかかないと・・・・。
Icinga Provider
Icingaの状態をStoplightに表示するプロバイダ。IcingaのステータスはStoplight上では以下のよう扱われます。
- クリティカルな場合、赤いタイルを表示
- 警告の場合、黄色のタイルを表示
- 通知、認識済み(Acknowledged)なものは無効(ステータスが変わっても表示されない)
使い方
まず、IcingaのAuthProviderを有効にします。icinga-web/app/modules/AppKit/config/auth.xmlにある以下の箇所のauth_enabledをtrueにしてあげます。
<ae:parameter name="auth_key"> <ae:parameter name="auth_module">AppKit</ae:parameter> <ae:parameter name="auth_provider">Auth.Provider.AuthKey</ae:parameter> <ae:parameter name="auth_enable">true</ae:parameter> <ae:parameter name="auth_authoritative">true</ae:parameter> </ae:parameter>
設定を有効にするために以下のいずれかの方法で設定のキャッシュを飛ばして反映させてあげます。
$ rm -f app/cache/config/*.php #もしくは $ icinga-web/bin/clearcache.sh
次に、Icinga-Web上から以下の内容でIcingaユーザを作ります。
以上でIcinga-Web側の設定は終了。
Stoplightの設定はserver.yml.exampleにサンプルが書いてあるのでよしなに設定してください。もし、hostとserviceの両方をStoplight上に表示させたい場合はkindを変えて2つの設定が必要なので注意してくださいな。
# ホストの設定 - type: 'icinga' url: http://icinga.example.com kind: host apikey: my_apikey projects: - web01.example.com # host named "web01.example.com" - /^monitoring01/ # all hosts ors services starting with "monitoring01" ignored_projects: - /^stg-/ # ignore the hosts and services starting with "stg-" # サービスの設定 - type: 'icinga' url: http://icinga.example.com kind: service apikey: my_apikey projects: - web01.example.com # host named "web01.example.com" - /^monitoring01/ # all hosts ors services starting with "monitoring01" ignored_projects: - /^stg-/ # ignore the hosts and services starting with "stg-"
ちなみにNagiosはだめなの?という声が聞こえてきそうですが、Icinga-Web REST APIを使っている関係上Nagiosでは使えません。dmytro/nagiraを使えば実現できそうですが、今のところ作る予定はないです。
Monit Provider
Monitの状態をStoplightに表示するプロバイダ。
- リソースリミットに達した場合、赤いタイルで表示
- モニタリングが外れている(unmonitored)場合、黄色のタイルで表示
使い方
まず、monitのhttpサービスをたちあげておく必要があります。RHEL系の場合/etc/monit.conf、Debian系の場合/etc/monit/monitrcに以下のような設定が書かれてればOK。
set httpd port 2812 and allow admin:monit # require user 'admin' with password 'monit' allow @monit # allow users of group 'monit' to connect (rw) allow @users readonly # allow users of group 'users' to connect readonly
Stoplightの設定はIcingaと同じくserver.yml.exampleにサンプルが書いてあるのでこちらもよしなに設定してください。
- type: 'monit' url: http://monit.example.com username: admin password: monit
あとがき
もしこの記事を見て使ってくれる人がいたら色々ご意見くださると嬉しいです。Icinga,Monitが返すステータス全てを把握してるわけではないので*3こういうステータスもあるよーなんていうのを教えていただけると助かります。他にもお前のRubyコード全然イケてねぇなんていうモヒモヒしたコメントもウェルカムです。
ちなみに、DevOps的に最近旬?なPuppetのモジュールとChefのクックブックもあるのでその手の人はチェックしてみるとよいかもです。
Nagios統合監視[実践]リファレンス (Software Design plus)
- 作者: 株式会社エクストランス,佐藤省吾,Team-Nagios
- 出版社/メーカー: 技術評論社
- 発売日: 2011/03/25
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 32回
- この商品を含むブログ (7件) を見る
サーバ/インフラエンジニア養成読本 管理/監視編 [24時間365日稼働を支える知恵と知識が満載!] (Software Design plus)
- 作者: SoftwareDesign編集部編
- 出版社/メーカー: 技術評論社
- 発売日: 2012/04/11
- メディア: 大型本
- 購入: 4人 クリック: 33回
- この商品を含むブログ (3件) を見る
- 作者: James Turnbull,Jeffrey McCune
- 出版社/メーカー: Apress
- 発売日: 2011/05/04
- メディア: ペーパーバック
- クリック: 6回
- この商品を含むブログを見る