Kibanaを「ツール」から「プラットフォーム」へ:Kibana APIで実現する運用自動化の第一歩

BLOG

Elastic Stackの可視化を担うKibana。 普段、ブラウザ上のGUIからダッシュボードを作成したり、ログを検索したりするのに使っている方が多いはずです。 しかし、Kibanaの真のポテンシャルは、その裏側に用意されたREST APIにあります。

今回は、Kibana APIを活用して、開発者やSREが運用を「手作業」から「コードによる管理」へとシフトさせるための主要なAPIとその活用シーンについて解説します。

なぜKibana APIを使うのか?

GUIは直感的で便利ですが、スケールするシステムや厳格な構成管理が求められる現場では、以下のような課題に直面します。

  • 環境構築の自動化(IaC)
    • ステージング環境で作り込んだダッシュボードやインデックスパターンを、人的ミスなく本番環境へ一括デプロイしたい。

  • マルチテナント管理
    • 数十、数百の「Space(スペース)」を作成し、ユーザー権限(RBAC)を動的に割り当てたい。

  • 動的なアラート設定
    • 外部システム(TerraformやCI/CDパイプライン等)と連携して、監視対象の追加に合わせてアラートの閾値を自動更新したい。

これらを解決するのがAPIによる自動化です。

押さえておきたい3つの主要APIカテゴリー

Kibana APIは非常に豊富ですが、運用の自動化においてまず押さえるべきは以下の3点です。

1. Saved Objects API

Kibanaにおける最も重要なAPIです。ダッシュボード、ビジュアライゼーション、データビュー(旧インデックスパターン)などの「設定データ」を操作します。

  • 活用例
    • _export / _import エンドポイントを使用して、ダッシュボードのバックアップや環境間移行をCI/CDに組み込む。

2. Spaces & Security API

Kibana内の独立したワークスペースである「Space」や、ロールベースのアクセス制御(RBAC)を管理します。

  • 活用例
    • 組織変更や新規プロジェクト発足時に、専用のSpaceと閲覧権限を持つロールをスクリプトで一括生成する。

3. Alerting & Actions API

監視の要となる「ルール(Rules)」と「コネクター(Connectors)」を管理します。

  • 活用例
    • サービスデプロイ時に、そのサービス専用のSlack通知設定と異常検知ルールを自動でセットアップする。

実践:APIを叩いてみる

1. 全ダッシュボードを ndjson 形式でエクスポートする

外部からAPIを呼び出す際は、認証情報と kbn-xsrf ヘッダーが必要です。

curl -X POST "http://localhost:5601/api/saved_objects/_export" \
  -H 'kbn-xsrf: true' \
  -H 'Content-Type: application/json' \
  -u 'elastic:<password>' \
  -d '{
    "type": "dashboard",
    "includeReferencesDeep": true
  }' > all_dashboards_export.ndjson
  • Note
    • includeReferencesDeep: true を指定することで、ダッシュボードに関連付けられたチャートやデータビューもまとめてエクスポートできます。

2. Dev Tools からデータビューの一覧を取得する

Kibana内の「Dev Tools」を使えば、認証を意識せずにAPIを試せます。 Kibana APIを叩く際は、パスの先頭に kbn: を付加するのがルールです。

GET kbn:/api/data_views

運用を加速させるためのTips

  • API Keyの活用を検討する
    • 自動化スクリプトでは、ユーザー名/パスワードではなく「API Key」を発行して利用するのがセキュリティ上のベストプラクティスです。

  • バージョン互換性に注意
    • Elastic Stackのバージョンアップにより、レスポンスの構造が変わることがあります。アップグレード前には必ず公式の変更履歴を確認しましょう。

  • 「GUIで作ってAPIで抜く」が最短ルート
    • Saved ObjectsのJSON構造をゼロから書くのは困難です。一度GUIで理想のダッシュボードを作り、それをGET APIで取得してテンプレート化するのが効率的です。

主要エンドポイント一覧(抜粋)

機能カテゴリエンドポイント (ベースパス)説明
Saved Objects/api/saved_objects/_exportダッシュボード等のエクスポート
Data Views/api/data_viewsデータビューの管理
Alerting/api/alerting/rules/_findアラートルールの検索・取得
Connectors/api/actions/connectorsSlackやWebhook等の通知先管理
Security/api/security/roleロールの作成・管理
Spaces/api/spaces/spaceスペースの作成・管理
Status/api/statusKibana自体の稼働ステータス確認

詳細な仕様は、Kibana API Reference (Official) を参照してください。

まとめ

Kibana APIを使いこなすことで、Kibanaは単なる「可視化ツール」から、システムの一部として組み込める「運用プラットフォーム」へと進化します。 「毎回同じダッシュボードを手で作っているな」と感じたら、それが自動化のサインです。 まずは、よく使う設定のエクスポートあたりから手を付けてみてはいかがでしょうか?