こんにちは。
サイオステクノロジーの花島です。LifeKeeperのサポートや構築を担当しています。
LifeKeeper for Linuxでは標準機能として、メールやSNMPによる動作の通知機能があります。今回はこの通知機能の処理を模倣し、LINEのアプリにLifeKeeperの動作を通知してみました。
Contents
■ LINE Notifyのパーソナルアクセストークンの取得
LINE Notifyのページからログインし、マイページに行くと「トークンを発行する」というボタンがあります。
ここでトークン名と通知先(※)を選択し作成すると、一度だけトークンが表示されるのでここで必ず控えます。
※ 通知先をグループにしておくと、サーバを管理するメンバーに通知できます。
■ コマンドラインから通知してみる
取得したアクセストークンでLINEにメッセージを通知してみます。
下記コマンドラインを実行することで、「TestMessage」というメッセージが送信されます。
# /usr/bin/curl -f -X POST -H ‘Authorization: Bearer <TOKEN>’ -F ‘message=TestMessage’ https://notify-api.line.me/api/notify
※ <TOKEN>にはアクセストークンが指定されます。
これだけで、LINEのアプリへメッセージを通知できます。
■ LifeKeeperの通知機能として作りこむ
LifeKeeper起動時の通知を例に必要な情報を変数として当てはめていくと以下のようになります。
# LINE Notifyのアクセストークン
LINENOTIFY_TOKEN=<アクセストークン>
# LINE Notifyの通知用エンドポイント
LINENOTIFY_URL=https://notify-api.line.me/api/notify
# 通知元のサーバ名(lcdunameコマンドから取得)
UNAME=`/opt/LifeKeeper/bin/lcduname`
# 通知するメッセージ
MESSAGE=”LifeKeeper startup complete on $UNAME”
これらの変数をcurlのコマンドラインに当てはめると以下のようになります。
/usr/bin/curl -f -X POST -H ‘Authorization: Bearer ‘”${LINENOTIFY_TOKEN}” -F ‘message='”${MESSAGE}” $LINENOTIFY_URL
上記の変数・コマンドラインをスクリプトとしたものをLifeKeeper起動時に実行されるイベントディレクトリに配置し、LifeKeeperを起動するとLINEへはこのように通知されます。
■ ほかのメッセージも作りこむ
ほかのメッセージも作りこみ、リソース障害によるフェイルオーバを発生させた場合は、このように障害を検知したノードと、フェイルオーバ先のノードから通知されます。
■ 後記
本記事のように、cURLを用いてHTTPSでメッセージを送信することで、SNMPトラップを受け取る管理サーバを設置できない場合や、メール用のポートを解放できない場合の代わりの一案になりえるかと思います。
■ 本記事に関する注意事項(本記事公開時点におけるもの)
- 既存の通知スクリプトの改変方法および改変後の動作につきましては、サポートをご提供することはできません。
- お客様自身で通知スクリプトを作成される場合の作成方法、導入方法および動作につきましては、サポートをご提供することはできません。
- 専用の通知スクリプト作成を行うサービスのご提供はございません。
- 本記事で紹介し内容を機能として製品に取り込む予定はございません。