LINEでNew Relicのアラートを受け取ってみよう

# ■ はじめに
New Relic アラートは、標準でメール、Slack、WebHookなど9種類の通知チャネルが用意されていますが、日本ではやっぱりLINEユーザが多いのでLINEに通知できるようにしてみました。

通知をLINEで受信する方法としては下記2種類があるようです。
* [LINE Messaging API](https://business.line.me/ja/services/bot) （APIやbotを使っていろいろ活用できそう）
* [LINE Notify](https://notify-bot.line.me/ja/) （簡単にサービスの通知受信できる）

今回は手軽に実現できそうなLINE Notifyを使用して実装したいと思います。
（LINE NotifyのAPIの詳細は、[LINE Notify API Document](https://notify-bot.line.me/doc/ja/)をご参考ください）

# ■ LINEアプリ側の設定

## １）LINEグループの作成
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/2090a8aa-8785-d801-53a8-46e39b73e058.png)

LINEアプリでNew Relicからの通知を受けるグループを作成します。

## ２）LINE Notifyの友達追加
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/c6f2dadc-1929-9f55-ab07-d3eec5af8a2e.png "LINE Notify")

LINE Notifyで通知されたメッセージを表示させるために、"LINE Notify"を友達追加して、先ほど作成したグループに招待します。

# ■ LINE Notifyの設定
## １）LINE Notifyにログイン
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/e8016eb2-2e48-c01b-78c2-555281a38dd6.png)

![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/66a421a3-3787-2781-df2c-75597e8579b6.png)

[LINE Notify](https://notify-bot.line.me/ja/)のページからLINE IDでログインします。
※ IDとパスワードを忘れた方は「[LINEパスワードの確認方法！忘れた・わからないときの対処法](https://securitynavi.jp/1986)」を参考にしてください

## ２）マイページの表示
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/ef95187f-a034-606a-1560-3cf376918de4.png)

ログインできたら、右上のメニューから
①「マイページ」を選択し
②アクセストークンの発行から「トークンを発行する」を選択します。

## ３）アクセストークンの発行
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/c6c46dce-a1a8-5155-fc05-0fb4c1d25e9e.png)

①でトークン名（わかりやすい名前）
②はLINEアプリ側の設定で作成したグループ名を選択
③の「発行する」ボタンでアクセストークンを発行することができます。

## ４）アクセストークンを保存
このアクセストークンは、New RelicからLINE Notifyで通知する際に必要となるキーなので画面を閉じる前にコピーして忘れないように控えときます。

※画面を閉じると二度とアクセストークンを確認することができないので注意してください。アクセストークンを忘れた場合は再度再作成してください
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/7ad34b82-8006-b93c-b23a-a60184f47eef.png)

# ■ New Relic側の設定
[LINE Notify API Document](https://notify-bot.line.me/doc/ja/)の通知系に記載されている情報を元にWebHookで実装していきます。

## １）New Relic Alertsの設定
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/d62fdbeb-4b2e-1792-c650-a27ffe104c44.png)

[New Relicにログイン](https://login.newrelic.com)してアラートを表示します。

## ２）通知チャネルの追加
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/4c07c4f1-fd9f-ef9a-31d4-f7a2d548d4d4.png)

① 「Notification channels」を選択します
② 「New notification channel」ボタンをクリックして、新しい通知チャネルを追加します

## ３）WebHook設定（全般）
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/76a7e92a-8b63-953c-c238-2548d02f316a.png)

① 選択通知チャネル一覧から"WebHook"を選択します。
② 通知チャネルの名前を記入します。
③ LINE Notifyのエンドポイントである下記URLを入力します（固定）

```
https://notify-api.line.me/api/notify
```

## ４）WebHook設定（カスタムヘッダ）
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/052449fa-3504-58ff-6347-33a780795d24.png)

認証に必要なリクエストヘッダを設定します。
①「LINE Notifyの設定」で発行したアクセストークンを記入します

|Name|Value|
|:-------|:----|
|Authorization|Bearer + アクセストークン|

## ５）WebHook設定（カスタムペイロード）
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/c15052b3-ad23-0f83-32e7-299cf06273e0.png)

- Payload type

LINE Notifyでは、下記２つのコンテンツタイプに対応しています。

|リクエストメソッド/ヘッダ|値|
|:-------|:----|
|Content-Type|application/x-www-form-urlencoded|
|Content-Type|multipart/form-data|

New Relic WebHookでは、JSON又はFormを選択できるので、①でFormを選択します。
サンプルメッセージとして②のPayload箇所に通知できる値一覧が表示されるので、通知したい内容を編集します。
$から始まる変数で、New Relicアラートで検知した値を参照することができます。各値の意味についてはNew Relicドキュメントの[Customize your webhook payload](https://docs.newrelic.com/docs/alerts/new-relic-alerts/managing-notification-channels/customize-your-webhook-payload)に記載があるので確認してください。

- Payload

LINE Notifyは、下記リクエストパラメータを使用することでメッセージを送信することができます。

|パラメータ名|必須|型|説明|
|:-------|:----|:----|:----|
|message|必須|String|最大 1000文字|

New Relic WebHookのPayload部分は、残念ながらURLエンコードされたフォームを入力できないため、改行を含めたメッセージを送信できないようです。通知内容が読みやすいように必要最低限の内容のみ通知し、詳細内容はNew Relicのインシデント管理で確認することにしたいと思います。今回は以下のPayloadに変更しますが、必要に応じて追加・修正してみてください。
後は③の"Create channel"ボタンを押して完了です。

```
message="$ACCOUNT_NAME, $CONDITION_NAME, $EVENT_STATE, $EVENT_DETAILS, $EVENT_TYPE, $INCIDENT_URL"
```

# ■ LINE Notify 通知確認
![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/e9aa89e8-d495-a53a-e112-cd9cf38b35d3.png)

先ほど作成したWebHookのチャネルをクリックして、最下位部にある"Send test notificatin"ボタンをクリックすると、テスト用のアラートをLINE Notifyに通知することができます。作成したLINEグループにメッセージが受信できているか確認してみてください。

------

![LINE Notify](https://qiita-image-store.s3.amazonaws.com/0/150422/06cd1388-2c6d-b2c8-58e4-35582a94d888.png)

Payloadで指定した$INCIDENT_URLがNew Relicのインシデント管理のハイパーリンクになっています。これで、詳細な内容を確認したい場合はこのURLをタップして確認できるようになりました。

# ■ さいごに
今回はWebHookを使用して簡単にLINE Notifyとアラートを送ってみましたが、改行ができないなど通知メッセージのカスタマイズが不十分でした。IFTTT,ZapierやStackStormなどのワークフローや自動化ツールを組み合わせれば、いろいろと応用できそうなので次回以降でご紹介できればと思います。