fbpx

Elastic CloudにおけるKibanaダッシュボードの自動送信について #Elastic #Elasticsearch #ElasticCloud #Kibana

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

皆様、Elasticしてますか? ^^
今回は、Elastic CloudでKibanaダッシュボードを定期的に自動送信するお話です。

Elasticの有償機能をX-Packと呼んでいた頃からある機能ですが
これをElastic Cloud環境で使ってみると意外とこれまでセルフマネージドで
Elastic Stackを構築していた時と勝手が違いました。そのナレッジを共有できればと思います!

Watcherとは?

スクリーンショット

このロゴをご存知でしょうか?
はい、X-Packの機能の1つでWatcherのロゴになります。

Elasticsearchに格納されているデータを検索し、条件に応じてアラート通知を行います。
まだ現役ですが、7.11以降では新しいアラートの仕組み(Kibana Alerting)が登場しています。

Kibanaのダッシュボードを自動送信する場合は、このWatcherの機能を活用します。

【参考】
Watcherとは
Kibana Alertingとは
What’s new in Kibana 7.11.0: Alerting is now generally available

利用環境

項目 内容
Elastic Cloud 7.12.1

今回実現したかったこと

  • 毎月1日に前月分の集計データをKibanaダッシュボードでSlackに送りたい。
  • ダッシュボードの通知先はメールにしかできないため、メールからSlackに転送しました。

【参考】
Slackにメールを送信する

実施手順


  • 以下の設定手順で実施しました。
  1. メールアドレスの登録
  2. ダッシュボードのURL取得
  3. ロールとユーザの作成
  4. Watcherの作成

1. メールアドレスの登録

  • Elastic Cloud Loginで管理コンソールにログインします。
  • ログイン後、画面右上からAccount & Billingを開きます。

 image.png

  • Contactsタブを開きます。
  • Monitoring email whitelistAdd new emailで通知したいメールアドレスを入れます。
  • Addボタンを押します。

 image.png

  • 数分後に登録したメールアドレス宛に確認メールが届きます。
  • Confirm Email Whitelistingを押すと登録が完了します。

 image.png

【補足】
・ 登録されているメールアドレスを確認する方法はないです。
・ 一度登録解除してしまうと再登録する方法はないです。

【参考】
Enable Watcher

2. ダッシュボードのURL取得

  • Kibanaにログインします。
  • 左上のメニューからDashboardを選択し、対象のダッシュボードを開きます。
  • 右上のShareを開き、Copy POST URLをクリックします。

 image.png

  • 手順4でURLを利用します。エディタに一時的に貼り付けておきましょう。

【参考】
Automating report generation

3. ロールとユーザの作成

  • まず先にロールを作成します。
  • Kibanaの左上のメニューからStack Managementを開きます。
  • [Security] > [Roles]を開き、Create roleをクリックします。
  • [Role name]は好きな名前を入力します。
  • [Indices]はダッシュボードで参照しているもの指定します。
  • [Privillages]は参照のみで良いので、readを指定します。
  • 下部のCreate roleを押してロール作成を完了します。

 image.png

  • WatcherでPDF化に必要なKibanaログインユーザを作成します。
  • [Security] > [Users]を開き、Create userをクリックします。
  • [Username]は好きな名前を入力し、パスワードをセットします。
  • [Roles]には先ほど作成したロールとreporting_userを指定します。
  • 下部のCreate userを押してロール作成を完了します。

 image.png

【参考】
Reporting and security

4. Watcherの作成

  • Kibanaの左メニューからStack Managementを開きます。
  • [Alerts and Insights] > [Watcher]を開き、
  • Create advanced watchをクリックします。

 image.png

  • Watch JSONに下記のJSONテキストを貼り付けます。

{
  "trigger": {
    "schedule": {
      "monthly": [
        {
          "on": [
            1
          ],
          "at": [
            "00:00"
          ]
        }
      ]
    }
  },
  "input": {
    "none": {}
  },
  "condition": {
    "always": {}
  },
  "actions": {
    "email_gmail": {
      "email": {
        "profile": "gmail",
        "attachments": {
          "[ダッシュボード名].pdf": {
            "reporting": {
              "url": "[Copy POST URLを貼りつける]",
              "retries": 1,
              "interval": "5m",
              "auth": {
                "basic": {
                  "username": "reporting-user",
                  "password": "[ユーザパスワード]"
                }
              }
            }
          }
        },
        "to": [
          "[登録したメールアドレス]"
        ],
        "subject": "[メールの件名]",
        "body": {
          "text": "[メールの本文]"
        }
      }
    }
  }
}

  • 下部のCreate watchを押します。
  • 以上で完了です。あとは月初が来るのを待つだけです。

【参考】
Watcher monthly schedule

注意点


  • 今回利用してみて、IP Traffic Filterとの併用ができないという問題がありました。
  • この仕組みはElasticsearch上のWatcherがKibanaにログインする必要があります。
  • IP Traffic FilterがWatcherのKibanaログインを遮断してしまうようです。
  • もし通信を許可するには該当クラウドの利用しているリージョンのIP範囲を全て登録することになります。

 image.png

【参考】
IP Traffic Filter

まとめ


いかがでしたでしょうか?

Elastic Cloudの場合、利用するメールアドレスをelasticsearch.ymlではなく
クラウドの管理コンソールで設定するところがセルフマネージド版との違いかと思います。

またセキュリティを高めるためのIP Traffic Filterとの併用ができないのは痛いですね。
おそらく、今後はKibana Alertingをメインにしていくため、改修しないのかもしれないですね。。

Author

ログ分析基盤のアーキテクチャデザインやクラウドにおけるセキュリティ実装方式を研究するElasticエバンジェリスト。
国内エンジニアの貴重なリソースを効率良く活用できるよう、技術ナレッジを惜しみなく発信するよう心がけている。

日比野恒の記事一覧

新規CTA