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にメールを送信する
実施手順
- 以下の設定手順で実施しました。
- メールアドレスの登録
- ダッシュボードのURL取得
- ロールとユーザの作成
- Watcherの作成
1. メールアドレスの登録
- Elastic Cloud Loginで管理コンソールにログインします。
- ログイン後、画面右上からAccount & Billingを開きます。
- Contactsタブを開きます。
- Monitoring email whitelistでAdd new emailで通知したいメールアドレスを入れます。
- Addボタンを押します。
- 数分後に登録したメールアドレス宛に確認メールが届きます。
- Confirm Email Whitelistingを押すと登録が完了します。
【補足】
・ 登録されているメールアドレスを確認する方法はないです。
・ 一度登録解除してしまうと再登録する方法はないです。
【参考】
・ Enable Watcher
2. ダッシュボードのURL取得
- Kibanaにログインします。
- 左上のメニューからDashboardを選択し、対象のダッシュボードを開きます。
- 右上のShareを開き、Copy POST URLをクリックします。
- 手順4でURLを利用します。エディタに一時的に貼り付けておきましょう。
【参考】
・ Automating report generation
3. ロールとユーザの作成
- まず先にロールを作成します。
- Kibanaの左上のメニューからStack Managementを開きます。
- [Security] > [Roles]を開き、Create roleをクリックします。
- [Role name]は好きな名前を入力します。
- [Indices]はダッシュボードで参照しているもの指定します。
- [Privillages]は参照のみで良いので、readを指定します。
- 下部のCreate roleを押してロール作成を完了します。
- WatcherでPDF化に必要なKibanaログインユーザを作成します。
- [Security] > [Users]を開き、Create userをクリックします。
- [Username]は好きな名前を入力し、パスワードをセットします。
- [Roles]には先ほど作成したロールとreporting_userを指定します。
- 下部のCreate userを押してロール作成を完了します。
【参考】
・ Reporting and security
4. Watcherの作成
- Kibanaの左メニューからStack Managementを開きます。
- [Alerts and Insights] > [Watcher]を開き、
- Create advanced watchをクリックします。
- 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範囲を全て登録することになります。
【参考】
・ IP Traffic Filter
まとめ
いかがでしたでしょうか?
Elastic Cloudの場合、利用するメールアドレスをelasticsearch.ymlではなく
クラウドの管理コンソールで設定するところがセルフマネージド版との違いかと思います。
またセキュリティを高めるためのIP Traffic Filterとの併用ができないのは痛いですね。
おそらく、今後はKibana Alertingをメインにしていくため、改修しないのかもしれないですね。。