Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GrafanaのHTTP API を眺めてみよう

Rinchoku
October 10, 2024

GrafanaのHTTP API を眺めてみよう

Grafanaに公開されているAPIの存在を知ってましたか?このAPIはGrafana上で行う操作と同等の機能を扱えます。つまり、外部からGrafanaの操作がある程度できるということです。一緒にAPIを種類を見て、さらなるGrafanaの可能性を見つけていければと思います。

Rinchoku

October 10, 2024
Tweet

More Decks by Rinchoku

Other Decks in Programming

Transcript

  1. 自己紹介 名前:林 直哉(Rinchoku) 所属:eForce株式会社 X: @stupid_owl 趣味:宝石鑑賞、指輪づくり、個人スポンサー(予定) その他: • PHP

    Conference 2024にて登壇します @ 12/22(日) • SRE Kaigi 2025 コアスタッフ @ 1/26(日) • SRE NEXT 2025 コアスタッフ @ 7/11(土), 7/12(日)
  2. Grafana HTTP API Grafana v9.1(2022/08/16)で追加された機能 Grafanaのフロントエンドで実際にリクエストするAPIと同一 使用例: • 特定のダッシュボードのレポートを配信するようにスケジュール設定 •

    外部SAML認証プロバイダーの設定 • ユーザーとしてサインインせずにGrafanaを操作 https://grafana.com/docs/grafana/latest/administration/service-accounts/
  3. Grafana HTTP API • Admin HTTP API • Alerting Provisioning

    HTTP API • Annotations HTTP API • Authentication HTTP API • Correlations HTTP API • Dashboard HTTP API • Dashboard Permissions HTTP API • Dashboard Versions HTTP API • Data source HTTP API • Datasource Permissions HTTP API • Folder HTTP API • Folder Permissions HTTP API • Folder/Dashboard Search HTTP API • Library Element HTTP API • Licensing HTTP API • Organization HTTP API • Other HTTP API • Playlist HTTP API • Preferences API • Public Dashboard HTTP API • Query and Resource Caching HTTP API • Query History HTTP API • RBAC HTTP API • Reporting API • Service account HTTP API • Short URL HTTP API • Snapshot API • SSO Settings API • Team HTTP API • Team Sync HTTP API • User HTTP API
  4. Annotation API 手動でAnnotationを追加した場合 • 付与したパネルのみにしか反映されない • テキストとタグのみしか更新できない Annotation APIを利用する場合 •

    パネルやダッシュボードに依存しないAnnotationが追加できる • もし時間等に間違いがあった場合、変更ができる
  5. HTTP APIを使うために 1. 「Users and access > Service accounts」 を開く

    2. 「Add Service accounts」を押下 3. 名前と適応Roleを入力して、作成 4. 「Add Service account token」でToken生成 5. AuthorizationヘッダーにBearerトークンでリクエスト
  6. 権限について 権限の種類 • BasicRole ◦ ユーザーの権限で利用する「 Viewer」「Edit」「Admin」をそのまま利用 ◦ 「No basic

    role」も選択可能 • FixedRole ◦ 各API(リソース)単位で、read/writeを設定 ◦ 基本的には利用する範囲を絞る意味合いで、 Fixed Roleがいいと思われる カスタム定義はProvisioningを有効にしたうえで、yamlファイルを追加が必要 https://grafana.com/docs/grafana/latest/administration/roles-and-permissions/a ccess-control/rbac-grafana-provisioning/
  7. 最後に • APIを見ることで、知らない機能の発見につながる ◦ 痒いところに手が届くようになる ◦ APIを通して仕様の把握にもつながる • 発表(特にLT)は気楽に考えてやっていこう ◦

    今回のLTは、LT枠が空いていたため 2週間前に唐突に決めた LTです ◦ Outputすることで、より深い知見を得ることにもつながる ◦ 発表内容は絶対に誰かには刺さるので、怖がらなくてもいい