この記事では、sensuでhttpdの死活監視を行い、pagerdutyを利用してアラートが飛ぶところまでをやります。
sensu-server・clientはインストール済みとします。
sensu-serer・clientのインストールはこちらから。
https://sensuapp.org/docs/latest/install-sensu-client
sensuでhttpdの死活監視を行います
まずsensu-serverにプロセス監視のスクリプトとconfファイルを置いてrestartします。
# sensu監視pluginを設置します
mkdir /etc/sensu/plugins/processes
wget -O /etc/sensu/plugins/processes/check-procs.rb https://sensuapp.org/docs/0.19/files/check-procs.rb
chmod +x /etc/sensu/plugins/check-procs.rb
chown sensu:sensu /etc/sensu/plugins/check-procs.rb
# pluginを利用するconfファイルを書きます
vi /etc/sensu/conf.d/proc_httpd.json
{
"checks": {
"httpd": {
"handlers": ["default"],
"pager_team": "septeni.sensu-server",
"command": "/etc/sensu/plugins/processes/check-procs.rb -p httpd -w 128 -c 64",
"interval": 30,
"subscribers": [
"httpd" , "web"
]
}
}
}
# 設定が完了したのでsensu-serverの再起動をします
service sensu-server restart
今度はsensu-client側でhttpdのsubscribersを追記してclientをrestartします。
vi /etc/sensu/conf.d/client.json
{
"client": {
"name": "sensu-client",
"address": "監視先ipアドレス",
"subscriptions": ["httpd"]
}
}
service sensu-client restart
設定が反映されて監視されているかsensu-serverのダッシュボード(Uchiawa)を確認します。
httpdの監視ができてますね。
sensu-serverとpagerdutyを連携させます
1.pagerdutyのapi_keyを取得します
pagerdutyのアカウントを作って管理画面にログインします。
その後、「Configuration > Services」 をクリックしてServices画面を開きます。
「Add New Services」をクリックします。
必要な項目を入力してAdd Serviceを押して保存します。
2.sensu-serverとpagerdutyを連携させます
sensu-serverにログインし、pagerdutyのhandlersの設定をします。
(1)pagerdutyで使用するgemをインストールします
/opt/sensu/embedded/bin/gem install redphone
(2)handlersを取得します
cd /etc/sensu/handlers
wget https://raw.github.com/sensu/sensu-community-plugins/master/handlers/notification/pagerduty.rb
chmod 755 pagerduty.rb
chown sensu:sensu pagerduty.rb
(2)handler_notification.jsonを作成します
vim /etc/sensu/conf.d/handler_notification.json
{
"handlers": {
"pagerduty": {
"type": "pipe",
"command": "/etc/sensu/handlers/pagerduty.rb"
}
}
(3)notification.jsonを作成して、1で取得したapi_keyをセットします
vim /etc/sensu/conf.d/notification.json
{
"pagerduty": {
"api_key": "*****************"
}
}
(4) sensu-serverに設定したhttpdの監視confのhandlersに追記します
vim proc_httpd.json
{
"checks": {
"httpd": {
"handlers": ["default", "pagerduty"],
"command": "/etc/sensu/plugins/processes/check-procs.rb -p httpd -w 128 -c 64",
"interval": 30,
"subscribers": [
"httpd" , "web"
]
}
}
}
(4)設定が完了したので、sensu-clientをrestartします
chown -R sensu:sensu /etc/sensu/
service sensu-server restart
service sensu-client restart
3.確認します
service httpd stop
sensuがerrorを検知しました。
pagerdutyのダッシュボードでもerrorが表示され
emailが届くことを確認できたら、これで連携完了です!