LoginSignup
5
6

More than 3 years have passed since last update.

ZabbixのアラートをLINEに送る

Last updated at Posted at 2020-03-28

はじめに

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

前提条件

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

LINE Notify設定

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

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

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6