2012-06-06 sensu -the next generateion monitoring framework-

23
Sensu The Next Generateion Monitoring Framework 201266運用部技術チーム 山田 修司

Upload: shuji-yamada

Post on 15-Jul-2015

173 views

Category:

Technology


5 download

TRANSCRIPT

Sensu The Next Generateion

Monitoring Framework

2012年6月6日 運用部技術チーム 山田 修司

What is Sensu?

• Sensu – 名前は「扇子」から取られている。 – 昨年からひっそりと配布/開発が進められているモニタリングフレームワーク。

– NagiosやZabbixに匹敵するくらいに流行るのではないかと一部で囁かれている期待のツール。

– https://github.com/sensu

2

Old Monitoring Tool

• Size S

Central Server

Client

Client

Client

3

Old Monitoring Tool

• Size M

Central Server

Client

Client

Client

Central Server

Client

Client

4

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 Monitoring Framework

7

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 Archtechture

• 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

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

ANYQUESTION?

23