やりたかったこと
Kibanaで作ったダッシュボードを自社サービスの管理画面に埋め込んで、他のスタッフにも見てもらおうと思いました。こういうときに便利なのはKibanaのShare機能で、iframeを使った埋め込みが可能です。
ダッシュボードを保存するときに、時間フィルタの設定も一緒に保存するオプションを有効にすることで、常に直近24時間の統計を表示することができます。
できなかったこと
さて、iframeによるKibanaダッシュボードの埋め込みはうまくいきました。実際に他のスタッフに見てもらって、いくつか変更したい箇所が出てきたとします。
Kibanaのダッシュボードを開いて、グラフのレイアウトといじったり、時間フィルタの設定を直近7日間に変更したりして上書き保存します。
ところがiframeで埋め込んだダッシュボードは変更が反映されません。
落とし穴
Share機能で表示されるコードにはダッシュボードを構成するための設定情報が含まれています。したがって、Kibanaの方でダッシュボードを変更しても、iframeで埋め込んだ方に反映されないというのは当然といえば当然です。
とはいえ、初めて使った時、更新させるものと思い込んでいてハマりました。
解決方法
よくよく見てみるとKibanaで保存してあるダッシュボードを呼び出すとき、リンクのURLはダッシュボード名だけになっています。
http://your.domain.com/#/dashboard/<ダッシュボード名>
このURLを呼び出した後、ダッシュボード名から設定を読み込んでURLを書き換えて、ダッシュボードが構築されます。さらにiframe埋め込みの場合はGETパラメータにembedを指定するだけで枠が消えるので以下のようなフォーマットで指定すると設定が反映されます。
http://your.domain.com/#/dashboard/<ダッシュボード名>?embed