2012-06-06 sensu -the next generateion monitoring framework-
TRANSCRIPT
What is Sensu?
• Sensu – 名前は「扇子」から取られている。 – 昨年からひっそりと配布/開発が進められているモニタリングフレームワーク。
– NagiosやZabbixに匹敵するくらいに流行るのではないかと一部で囁かれている期待のツール。
– https://github.com/sensu
2
Old Monitoring Tool
• Size L
Central Server
Client
Client
Central Server
Central Server
Central Server
Client
Client
Client
Client
Client
Client
Relay Server
Relay Server
Relay Server
5
Old Monitoring Tool
• 既存の監視ツールの課題 – 監視サーバに処理を負担させすぎ
• スケジューリング、グラフ描画、アラート発報などなど。。
– 監視サーバの負荷がボトルネックになりやすい。 – 負荷分散のために監視サーバをいっぱい立てたり、
NagiosのNPREのような監視中継サーバを使って階層化すると監視システムの構成管理が煩雑になる。
6
Sensu Archtechture
• Sensu-Server – 1000行程度のRubyで記述された軽量なサーバ。 – クライアント側でスケジュールされている監視結果を受け取るだけ。
– RESTベースのJSON APIによるデータ検索をサポート。
Sensu-Server
Client
Client
API JSON
8
Sensu Archtechture
• Sensu-Client – Rubyで記述されたOSに依存しないエージェント。 – 簡単な機能追加が可能なモジュール型設計。 – Nagiosプラグインをモジュールとして再利用可能。
Sensu-Server Client AMQP
9
Sensu Building Block
• Deploy – Sensu-Clientの配布のためにChefやPuppetとの連携に対応
• Messaging – AMQPによるメッセージングにはRabbitMQと連携
• DataStore – クライアントデータやイベントの格納にはRedisと連携
• Metrics – グラフ描画にはGraphiteやlibratoとの連携に対応
• Alert – SMS/mail/IRC/Twitterなど多様なソースに送信が可能
11
Sensu Building Block
12
Messaging
Deploy
DataStore
Messaging
Metrics
Sensu-Server
Sensu-clients
Alert
Old Tools vs Sensu
• Nagios / xymon – 設定変更の度に、監視サーバに設定を再読み込み
(reload)してやらないといけない。
• Sensu – Chefやpuppet等の構成管理ツールで、Sensu-Clientを配布するように設定しておけば良い。
– クライアントは動的に監視に参加できる。 – サーバの設定変更に伴うリスクを回避できる。
~監視対象の追加/停止~
13
Old Tools vs Sensu
• Nagios / zabbix / cacti – プラグインを追加するほど、監視サーバの負荷が高まりやすい。
– 機能追加のためのプラグインは豊富に存在するけど、満足な機能追加ができないことも。。
• Sensu – クライアント側で全ての監視処理をしており、サーバ側は監視結果を受け取るだけなので、監視サーバの負荷は少ない。
~機能拡張性~
14
Old Tools vs Sensu
• Nagios / xymon / cacti – 監視対象や監視項目の数が増加するほど、監視サーバの負荷が増大する。
• Sensu – 監視サーバはクライアントから監視結果を受け取るだけなので、監視対象や監視項目の数が増加しても、監視サーバの負荷は少ない。
~スケーラビリティ~
15
Old Tools vs Sensu
• Nagios / xymon / zabbix – 構成や設定に凝り始めた途端に複雑化が進み、監視サーバ周りの運用業務が属人化しがち。
• Sensu – 設定や構成が単純なので、構成管理の負担が少ない。
~運用面~
16
Sensu Configuration
(クライアント側にプラグインをインストールする) # wget -O /etc/sensu/plugins/check-disk.rb
https://raw.github.com/sensu/sensu-community-plugins/master/plugins/system/check-disk.rb
# chmod +x /etc/sensu/plugins/check-disk.rb # gem install sensu-plugin --no-rdoc --no-ri
例:ディスク使用量監視の設定
17
Sensu Configuration
(クライアント側にサブスクリプションを追記) # vi /etc/sensu/conf.d/client.json { "client": { "name": "client-hostname", "address": "client-ipaddress", "subscriptions": [ "test", "fileservers" ] } }
例:ディスク使用量監視の設定
18
Sensu Configuration
(クライアント側にconfigを設定) # vi /etc/sensu/conf.d/check_disk.json { "checks": { "disk_check": { "handler": "default", "command": "/etc/sensu/plugins/check-disk.rb", "interval": 3600, "subscribers": [ "fileservers" ] …
例:ディスク使用量監視の設定
19
Sensu Configuration
# yum -y install nagios-plugins-http # vi /etc/sensu/conf.d/check_google.json { "checks": { "check_web": { "notification": "HTTP failed", "command":
PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_http www.mydomain -R 'search'",
…
例:Nagiosプラグインの利用
20
Sensu Configuration
(”handlers”にカスタムハンドラを追記する) # vi /etc/sensu/conf.d/check_disk.json { "checks": { "disk_check": { "handlers": ["default", "email"], "command": "/etc/sensu/plugins/check-disk.rb", ...
例:アラートメールの送信設定
21
Sensu Configuration
(emailハンドラを受信したときの処理を定義する) # vi /etc/sensu/conf.d/handler_email.json { "handlers": { "email": { "type": "pipe", "command": "mail -s 'sensu alert'
your@address" …
例:アラートメールの送信設定
22