😀

ZabbixのアラートをLINEに送る

2020/03/28に公開

はじめに

ZabbixのアラートをLINEに送信する方法について述べる。

前提条件

  • Zabbixのバージョン: 4.4.6
  • LINE Notify APiのバージョン: 2019-06-25版

LINE Notify設定

LINE NotifyというLINE公式サービスを使うと、自動的にLINEにメッセージを送信できる。

https://notify-bot.line.me/ja/

LINEのアカウントを持っていれば誰でもログインできる。
ログイン後のトップ画面で「トークンを発行する」ボタンをクリック。

アクセストークンの発行
Screenshot from 2020-03-28 09-34-42.png

通知の際に表示される「トークン名」と通知を送信する「トークルーム」を指定する。
このとき、あらかじめトークルームにLINE Notifyを招待しておくこと。招待されていないと通知の送信に失敗する。

トークン設定画面
Screenshot from 2020-03-28 09-40-13.png

表示されたトークンは二度と再表示できないので、コピペしておくこと。

設定が完了すると、トップ画面の「連携中サービス一覧」に表示される。

設定完了
Screenshot from 2020-03-28 09-40-26.png

Zabbix設定

次にZabbixを設定する。

Zabbixでは通知を送信する単位をメディアと呼び、そのメディアの種類をメディアタイプと呼ぶ。デフォルトのメディアタイプは、Email、Slack、SMSなどがある。今回はこのメディアタイプにLINEを追加する。

しかし、LINEをメディアタイプに追加しただけでは、通知は送信されない。メディアをユーザに追加する必要がある。これにより、そのユーザが管理するホストの通知がLINEに送信されるようになる。

メディアタイプを作る

まず、LINEのメディアタイプを作る。

「管理 > メディアタイプ」 を表示し、右上の「メディアタイプの作成ボタン」をクリック。

media.png

パラメータは以下のとおりとする。

名前
名前 Line
パラメータ/message {ALERT.SUBJECT} {ALERT.MESSAGE}
スクリプト 下記参照
スクリプト
try {
 Zabbix.Log(4, 'line webhook script value='+value);
 
 var result = {
  'tags': {
   'endpoint': 'line'
  }
 },
 params = JSON.parse(value),
 req = new CurlHttpRequest(),
 resp;
 
        // YOUR_TOKENをLINE Notifyで生成したトークンで置き換える。
 req.AddHeader('Content-Type: application/x-www-form-urlencoded');
 req.AddHeader('Authorization: Bearer YOUR_TOKEN');
 
 resp = req.Post('https://notify-api.line.me/api/notify',
  'message='+params.message
 );
 
 if (req.Status() != 200 && req.Status() != 400 && req.Status() != 401 && req.Status() != 500) {
  throw 'Response code: '+req.Status();
 }
 
 resp = JSON.parse(resp);
 result.tags.status = resp.status;
 result.tags.message = resp.message;
} catch (error) {
 Zabbix.Log(4, 'line issue creation failed json : '+JSON.stringify({"fields": fields}));
 Zabbix.Log(4, 'line issue creation failed : '+error);
 
 result = {};
}
 
return JSON.stringify(result);

ユーザにメディアを割り付ける

次に、ユーザにメディアを割り当てる。

「管理 > ユーザー > Admin > メディア」 を表示し、右上の「追加ボタン」をクリック。

user.png

以下のパラメータを設定して追加ボタンをクリック。

名前
タイプ Line
送信先 something(使わないので何でも良い)
有効な時間帯 1-7,00:00-24:00

LINEに通知が来た

こんなかんじでLINEに通知が来た。

Screenshot from 2020-03-28 09-55-51.png

Discussion