日本語フォーラム

Reply
Highlighted
Aruba Employee

[Central] AlertをWebhookを使ってSlackへ送る

CentralのAlertは、Emailで送信するか、Webhookで外部に送ることができます。

メールでもいいですが、Slackのようなコラボレーションツールの方が、チームで共有するには便利です。

残念ながら、Centralから直接Slackへ送るとうまく動かないので、CentralとSlackの間に中継サーバを構築する必要があります。

ここでは、その方法の一例を紹介します。

 

Node-RED

Node-REDはブラウザベースで簡単にプログラミングっぽいことができるオープンソースソフトウェアです。名前の通り、Node.jsベースなのでNode.jsが動く環境ならどこでも動きます。詳しくはググって下さい。

 

今回は、Central, Slackと連携する必要があるので、AWSのUbuntu上で動作させています。1年の無料枠でも動くので興味があればお試し下さい。

AWS UbuntuでNode-REDを動作させる方法はここを見ればわかります。

https://nodered.org/docs/platforms/aws

npmがデフォルトではインストールされていないので、以下のコマンドだけ足りなかったぐらいです。

 

 

sudo apt install npm

 

 

Node-REDの設定

Node-REDでは、人が作成したFlow(プログラムの塊みたいなもの)をコピペするだけで簡単に使うことができます。

以下のFlowをコピーして使って下さい。

 

[{"id":"45061c23.012374","type":"http in","z":"3cd249b9.0b28e6","name":"","url":"/webhook","method":"post","upload":false,"swaggerDoc":"","x":160,"y":100,"wires":[["168f5a15.982aa6"]]},{"id":"8cb4dbeb.34b038","type":"function","z":"3cd249b9.0b28e6","name":"Set Messages","func":"text1 = \"Alert Type : \" + msg.payload.alert_type + \"\\n\" \ntext2 = \"Description : \" + msg.payload.description + \"\\n\"\ntext3 = \"Severity : \" + msg.payload.severity + \"\\n\"\ntext = text1 + text2 + text3\n\nmsg.payload = {\n    \"text\" : text\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":520,"y":100,"wires":[["e6c9b8c0.6e1c68"]]},{"id":"168f5a15.982aa6","type":"function","z":"3cd249b9.0b28e6","name":"Set Values","func":"msg.url = \"https://hooks.slack.com/services/XXXXX\"\nmsg.headers = {\n    \"Content-type\": \"application/json\"\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":330,"y":100,"wires":[["8cb4dbeb.34b038"]]},{"id":"e6c9b8c0.6e1c68","type":"http request","z":"3cd249b9.0b28e6","name":"","method":"POST","ret":"txt","url":"","tls":"","x":710,"y":100,"wires":[["d08e7041.c146a"]]},{"id":"d08e7041.c146a","type":"http response","z":"3cd249b9.0b28e6","name":"","statusCode":"","headers":{},"x":850,"y":100,"wires":[]}]

貼り付ける方法は、右上のボタンをクリック、読み込み > クリップボードから行うことができます。Screen Shot 2019-02-26 at 10.35.07.png

 

Screen Shot 2019-02-26 at 10.35.18.png

 

読み込んだら、"Set Values" の中身を編集します。Screen Shot 2019-02-26 at 10.37.29.png

 

msg.url = "https://hooks.slack.com/services/XXXXX"
msg.headers = {
    "Content-type": "application/json"
}
return msg;

上記のmsg.urlにセットしているURLをご自身のSlackのIncoming Webhook のURLに変更します。

 

必要な設定はこれだけです。

Slackに送るメッセージの中身を編集したいときは、"Set Messages"を編集して下さい。

実際にCentralのWebhookで送られてくるMessageの中身を確認したい時は、Debugを有効にしてみて下さい。DebugもGUIで簡単にできるのがNode-REDの面白いところです。

Screen Shot 2019-02-26 at 10.43.21.png

SlackのIncoming Webhookの設定

順番が前後しましたが、Node-REDに設定するためのSlackのIncoming WebhookのURLを取得する必要があります。

方法は、英語ですがこちらをご参照下さい。

自分用のIncomming Webhookを作成して、Webhook用のURLを取得するだけです。

 

CentralのWebhook設定

メンテナンス > API Gateway > Webhook で新しくWebhookを作成して下さい。

URLsの部分に、Node-RED (AWS)のアドレスを入力します。

Node-REDは1880ポートを使っているので、必ず<AWSのアドレス>:1880になります。

/webhookは、Flowをコピペでそのまま使うと同じで構いません。

Screen Shot 2019-02-25 at 22.49.09.png

APIを使って動作確認

動作確認のために、実際のAlertを待つのは面倒です。

APIのWebhookの項目で、"Test for webhook notification"というのがあるので、こちらで擬似的にAlertをWebhookで送信することが可能です。widはWebhookのListをAPIで取得して確認して下さい。

 

https://api-ap.central.arubanetworks.com/swagger/central/#!/Webhooks/api_dispatcher_external_api_test_webhook

 

Node-REDにも簡単にまとめてますので、英語でよければこちらもご覧ください。

https://flows.nodered.org/flow/2ac880bd2ea7b2831e9e52eff2b9b40f

 

サクッと試せる環境を目的にしてるだけなので、

実運用時にはNode-REDのURLをhttpsにする必要などもありますので、その辺りは自己責任でお願いします!

 

 

 

Aruba Employee

Re: [Central] AlertをWebhookを使ってSlackへ送る

クラウド版の自動化ツールのZapierを使っても同じことが実現できます。

https://zapier.com/

 

Zapierの設定方法がわからなければ個別にご連絡下さい。

Search Airheads
cancel
Showing results for 
Search instead for 
Did you mean: