【Zabbix】アラートをLINEに送信する方法

ZabbixのアラートをLINEに送信する方法について紹介します。

LINE Notify

LINE Notifyを用いると、LINEのアカウントを持っていれば外部から簡単にLINEへメッセージを送信できます。
送信先のトークルーム毎にアクセストークンの発行が必要になりますので、以下ページを参考にアクセストークンを発行します。

【LINE】Notify アクセストークンを発行&グループに友だち追加する方法
LINE Notify アクセストークンを発行する方法する方法をまとめてみました。

※アクセストークンの発行時、LINE側のトークルームにLINE Notifyを招待しておく必要があります。
※アクセストークンの発行時、表示されたトークンは二度と再表示できないため、必ず控えておきます。

Zabbix側の設定

Zabbixでは通知を送信する単位を「メディア」といいます。
また、メディアの種類(Email、Slack、SMSなど)をメディアタイプといいます。
メディアの種類は自分でも追加できるため、メディアタイプにLINEを追加します。

① 左メニューから「通知」 > 「メディアタイプ」 を選択します。

② 右上の「メディアタイプの作成ボタン」をクリックします。

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

項目
名前 LINE Notify
パラメータ {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;

    
    req.AddHeader('Content-Type: application/x-www-form-urlencoded');
    req.AddHeader('Authorization: Bearer LINE_TOKEN'); // LINE_TOKENにLINE Notifyで生成したトークンを入力

    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 > メディア」 を表示し、右上の「追加ボタン」をクリック。

関連ページ

Zabbixの使い方については以下ページにまとめています。

Zabbix入門 使い方まとめ
Zabbixとは?使い方やインストール方法について紹介します。

Ubuntuの使い方については以下ページにまとめています。

【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。

コメント