日本語フォーラム

 View Only
last person joined: 2 days ago 

HPE Aruba Networking のソリューション、ネットワークマーケットに関する日本語ディスカッションフォーラム
Expand all | Collapse all

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

This thread has been viewed 1 times
  • 1.  [Central] AlertをWebhookを使ってSlackへ送る

    EMPLOYEE
    Posted Feb 25, 2019 09:00 PM

    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 + \"\
    \"
    text2 = \"Description : \" + msg.payload.description + \"\
    \"
    text3 = \"Severity : \" + msg.payload.severity + \"\
    \"
    text = text1 + text2 + text3

    msg.payload = {
    \"text\" : text
    }

    return 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\"
    msg.headers = {
    \"Content-type\": \"application/json\"
    }

    return 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にする必要などもありますので、その辺りは自己責任でお願いします!

     

     

     



  • 2.  RE: [Central] AlertをWebhookを使ってSlackへ送る

    EMPLOYEE
    Posted Mar 06, 2019 06:20 PM

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

    https://zapier.com/

     

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