Slide 1

Slide 1 text

GrafanaのHTTP API を眺めてみよう Grafana Meetup Japan #3 eForce株式会社 Rinchoku

Slide 2

Slide 2 text

アジェンダ ● 自己紹介 ● 最初に ● Grafana HTTP API ● 最後に

Slide 3

Slide 3 text

自己紹介 名前:林 直哉(Rinchoku) 所属:eForce株式会社 X: @stupid_owl 趣味:宝石鑑賞、指輪づくり、個人スポンサー(予定) その他: ● PHP Conference 2024にて登壇します @ 12/22(日) ● SRE Kaigi 2025 コアスタッフ @ 1/26(日) ● SRE NEXT 2025 コアスタッフ @ 7/11(土), 7/12(日)

Slide 4

Slide 4 text

最初に 当初は「Grafana × Postman」に関するLTをしようと考えていた

Slide 5

Slide 5 text

最初に 当初は「Grafana × Postman」に関するLTをしようと考えていた ● アプリケーションエンジニアの中でPostmanの利用が拡大中 ● Postmanの中で監視系の機能がある ○ パフォーマンステスト ○ 負荷テスト ○ etc… ● DatadogやNewRelicは連携できるらしい

Slide 6

Slide 6 text

最初に パフォーマンステストや負荷テストを行うときは、アプリケーション全体のモニタリング が必要 ● ロードバランサー ● サーバー ● データベース ● ネットワーク ● etc…

Slide 7

Slide 7 text

最初に パフォーマンステストや負荷テストを行うときは、アプリケーション全体のモニタリング が必要 ● ロードバランサー ● サーバー ● データベース ● ネットワーク ● etc… →GrafanaでPostmanと連携できれば、一覧性が高まる!!

Slide 8

Slide 8 text

最初に と思っていたが。。。 ● 現状公開されているPostmanのAPIでは連携は少し厳しい ○ モニタリング周りのAPIが見つからない ● パフォーマンステストや負荷テスト前後にリクエストを挟んでおくのも難しそう

Slide 9

Slide 9 text

最初に 調査をしているとGrafanaのAPIを発見 猫が袋を見つけると入るように、エンジニアがAPIを見つけると自然とリクエストをして しまう

Slide 10

Slide 10 text

Grafana HTTP API Grafana v9.1(2022/08/16)で追加された機能 Grafanaのフロントエンドで実際にリクエストするAPIと同一 使用例: ● 特定のダッシュボードのレポートを配信するようにスケジュール設定 ● 外部SAML認証プロバイダーの設定 ● ユーザーとしてサインインせずにGrafanaを操作 https://grafana.com/docs/grafana/latest/administration/service-accounts/

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Annotation API ● パネルの特定時間に注釈をつける機能 ● 必須:テキスト ● ダッシュボードID、パネルID、時刻は任意 ○ 時刻はepoch time(milliseconds)で指定可

Slide 13

Slide 13 text

Annotation API ● パネルの特定時間に注釈をつける機能 ● 必須:テキスト ● ダッシュボードID、パネルID、時刻は任意 ○ 時刻はepoch time(milliseconds)で指定可 →Annotationを幅広い範囲で設定が可能

Slide 14

Slide 14 text

Annotation API 手動でAnnotationを追加した場合 ● 付与したパネルのみにしか反映されない ● テキストとタグのみしか更新できない Annotation APIを利用する場合 ● パネルやダッシュボードに依存しないAnnotationが追加できる ● もし時間等に間違いがあった場合、変更ができる

Slide 15

Slide 15 text

Correlation API 「Correlation」=「相関」 特定のデータソースの値から、別のデータソースのViewを作る機能 例:PromQLでステータスコードを表示する画面から、Lokiでステータスコード500のロ グを見る ※現状「Explorer」で活用できる機能

Slide 16

Slide 16 text

Correlation API

Slide 17

Slide 17 text

HTTP APIを使うために 1. 「Users and access > Service accounts」 を開く 2. 「Add Service accounts」を押下 3. 名前と適応Roleを入力して、作成 4. 「Add Service account token」でToken生成 5. AuthorizationヘッダーにBearerトークンでリクエスト

Slide 18

Slide 18 text

権限について 権限の種類 ● 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/

Slide 19

Slide 19 text

最後に ● APIを見ることで、知らない機能の発見につながる ○ 痒いところに手が届くようになる ○ APIを通して仕様の把握にもつながる ● 発表(特にLT)は気楽に考えてやっていこう ○ 今回のLTは、LT枠が空いていたため 2週間前に唐突に決めた LTです ○ Outputすることで、より深い知見を得ることにもつながる ○ 発表内容は絶対に誰かには刺さるので、怖がらなくてもいい