狠狠撸

狠狠撸Share a Scribd company logo
Sensu
The Next Generateion
Monitoring Framework
2012年6月6日
運用部技術チーム 山田 修司
What is Sensu?
? Sensu
– 名前は「扇子」から取られている。
– 昨年からひっそりと配布/開発が進められているモニ
タリングフレームワーク。
– NagiosやZabbixに匹敵するくらいに流行るのではな
いかと一部で囁かれている期待のツール。
– https://github.com/sensu
2
Old MonitoringTool
? Size S
Central Server
Client
Client
Client
3
Old MonitoringTool
? Size M
Central Server
Client
Client
Client
Central Server
Client
Client
4
Old MonitoringTool
? 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 MonitoringTool
? 既存の監視ツールの課題
– 監視サーバに処理を負担させすぎ
? スケジューリング、グラフ描画、アラート発報などなど。。
– 監視サーバの負荷がボトルネックになりやすい。
– 負荷分散のために監視サーバをいっぱい立てたり、
NagiosのNPREのような監視中継サーバを使って階層
化すると監視システムの構成管理が煩雑になる。
6
Sensu
Monitoring Framework
7
SensuArchtechture
? Sensu-Server
– 1000行程度のRubyで記述された軽量なサーバ。
– クライアント側でスケジュールされている監視結果
を受け取るだけ。
– RESTベースのJSON APIによるデータ検索をサポート。
Sensu-Server
Client
Client
API
JSON
8
SensuArchtechture
? Sensu-Client
– Rubyで記述されたOSに依存しないエージェント。
– 簡単な機能追加が可能なモジュール型設計。
– Nagiosプラグインをモジュールとして再利用可能。
Sensu-Server Client
AMQP
9
SensuArchtechture
? Sensu-dashboard
– とても簡素なダッシュボード。。
10
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
OldTools vs Sensu
? Nagios / xymon
– 設定変更の度に、監視サーバに設定を再読み込み
(reload)してやらないといけない。
? Sensu
– Chefやpuppet等の構成管理ツールで、Sensu-Client
を配布するように設定しておけば良い。
– クライアントは動的に監視に参加できる。
– サーバの設定変更に伴うリスクを回避できる。
~監視対象の追加/停止~
13
OldTools vs Sensu
? Nagios / zabbix / cacti
– プラグインを追加するほど、監視サーバの負荷が高
まりやすい。
– 機能追加のためのプラグインは豊富に存在するけど、
満足な機能追加ができないことも。。
? Sensu
– クライアント側で全ての監視処理をしており、サー
バ側は監視結果を受け取るだけなので、監視サーバ
の負荷は少ない。
~機能拡張性~
14
OldTools vs Sensu
? Nagios / xymon / cacti
– 監視対象や監視項目の数が増加するほど、監視サー
バの負荷が増大する。
? Sensu
– 監視サーバはクライアントから監視結果を受け取る
だけなので、監視対象や監視項目の数が増加しても、
監視サーバの負荷は少ない。
~スケーラビリティ~
15
OldTools 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/n
agios/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
ANYQUESTION?
23

More Related Content

Sensu -The Next Generateion Monitoring Framework-