sensu-serverとpagerdutyの連携

この記事では、sensuでhttpdの死活監視を行い、pagerdutyを利用してアラートが飛ぶところまでをやります。
sensu-server・clientはインストール済みとします。

sensu-serer・clientのインストールはこちらから。
https://sensuapp.org/docs/latest/install-sensu-client

## sensuでhttpdの死活監視を行います
まずsensu-serverにプロセス監視のスクリプトとconfファイルを置いてrestartします。

```lang:sensu-server
# 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
```
```lang:sensu-server
# 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"
      ]
    }
  }
}
```
```lang:sensu-server
# 設定が完了したのでsensu-serverの再起動をします
service sensu-server restart
```

今度はsensu-client側でhttpdのsubscribersを追記してclientをrestartします。

```lang:sensu-client
vi /etc/sensu/conf.d/client.json
{
  "client": {
    "name": "sensu-client",
    "address": "監視先ipアドレス",
    "subscriptions": ["httpd"]
  }
}
```

```lang:sensu-client
service sensu-client restart
```

設定が反映されて監視されているかsensu-serverのダッシュボード(Uchiawa)を確認します。
![スクリーンショット 2015-06-18 17.41.46.png](https://qiita-image-store.s3.amazonaws.com/0/63175/9eb18f34-8438-9024-9074-d8388cd8102c.png)
httpdの監視ができてますね。

## sensu-serverとpagerdutyを連携させます
### 1.pagerdutyのapi_keyを取得します
pagerdutyのアカウントを作って管理画面にログインします。
その後、「Configuration > Services」 をクリックしてServices画面を開きます。
![スクリーンショット 2015-06-18 15.35.57.png](https://qiita-image-store.s3.amazonaws.com/0/63175/0ea36477-63ec-37ea-06a0-b9a1acfdab67.png)
「Add New Services」をクリックします。
![スクリーンショット 2015-06-18 15.39.30.png](https://qiita-image-store.s3.amazonaws.com/0/63175/29f77724-0646-dc1c-8d25-4cb1e5767aa3.png)
必要な項目を入力してAdd Serviceを押して保存します。
![スクリーンショット 2015-06-18 15.43.10.png](https://qiita-image-store.s3.amazonaws.com/0/63175/fe611413-3382-8cc0-b978-3b62b2d8e2ad.png)

api_keyが表示されます。
![スクリーンショット 2015-06-18 15.44.30.png](https://qiita-image-store.s3.amazonaws.com/0/63175/5565d7bb-6089-e02d-65e7-aaa4598d3a1d.png)
### 2.sensu-serverとpagerdutyを連携させます
sensu-serverにログインし、pagerdutyのhandlersの設定をします。
(1)pagerdutyで使用するgemをインストールします

```lang:sensu-server
/opt/sensu/embedded/bin/gem install redphone
```
(2)handlersを取得します

```lang:sensu-server
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を作成します

```lang:sensu-server
vim /etc/sensu/conf.d/handler_notification.json
{
    "handlers": {
      "pagerduty": {
        "type": "pipe",
        "command": "/etc/sensu/handlers/pagerduty.rb"
      }
    }

```
(3)notification.jsonを作成して、1で取得したapi_keyをセットします

```lang:sensu-server
vim /etc/sensu/conf.d/notification.json
{
  "pagerduty": {
    "api_key": "*****************"
  }
}
```

(4) sensu-serverに設定したhttpdの監視confのhandlersに追記します

```lang:sensu-server
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を検知しました。
![スクリーンショット 2015-06-18 17.43.56.png](https://qiita-image-store.s3.amazonaws.com/0/63175/34e9a515-fe41-0267-7a01-3dbb7fa12ce5.png)
pagerdutyのダッシュボードでもerrorが表示され
emailが届くことを確認できたら、これで連携完了です！
![スクリーンショット 2015-06-18 17.45.00.png](https://qiita-image-store.s3.amazonaws.com/0/63175/56036381-4a9d-d5c5-d7c7-c88905dd00d2.png)