Suche senden
Hochladen
Grafana Dashboards as Code
•
3 gefällt mir
•
19,496 views
T
Takuhiro Yoshida
Folgen
2019.6.3 Prometheus Tokyo Meetup #2
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 18
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
Empfohlen
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
NTT DATA Technology & Innovation
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
こわくない Git
こわくない Git
Kota Saito
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom Vision
Yoshitaka Seo
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
Jumpei Ogawa
Weitere ähnliche Inhalte
Was ist angesagt?
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
こわくない Git
こわくない Git
Kota Saito
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
DockerとPodmanの比較
DockerとPodmanの比較
Akihiro Suda
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
貴仁 大和屋
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kenjiro Kubota
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Was ist angesagt?
(20)
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Docker Compose 徹底解説
Docker Compose 徹底解説
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
メタプログラミングって何だろう
メタプログラミングって何だろう
こわくない Git
こわくない Git
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
DockerとPodmanの比較
DockerとPodmanの比較
Oss貢献超入門
Oss貢献超入門
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
Ähnlich wie Grafana Dashboards as Code
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom Vision
Yoshitaka Seo
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
Jumpei Ogawa
Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発
Yuki Hattori
Preview: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
Preview: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
Daisuke Masubuchi
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
Kiyoshi SATOH
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Preferred Networks
Djangoフレームワークの紹介
Djangoフレームワークの紹介
Shinya Okano
CodeIgniterによるPhwittr
CodeIgniterによるPhwittr
kenjis
Tekton 入門
Tekton 入門
Mamoru Shimizu
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだこと
dcubeio
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
Kohei KaiGai
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
Tomomi Imura
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
takezoe
msgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graph
yaegashi
20120118 titanium
20120118 titanium
Hiroshi Oyamada
Wasm blazor and wasi 2
Wasm blazor and wasi 2
Takao Tetsuro
Chrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターン
Yoichiro Tanaka
Jetpack Library 事始め
Jetpack Library 事始め
Tomohiro Kaizu
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
株式会社MonotaRO Tech Team
Ähnlich wie Grafana Dashboards as Code
(20)
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom Vision
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
Microsoft Graph APIを活用した社内アプリケーション開発
Microsoft Graph APIを活用した社内アプリケーション開発
Preview: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
Preview: 世界中のゲーム分析をしてきたPlayFabが大進化!一緒に裏側の最新データ探索の仕組みを覗いてみよう
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Djangoフレームワークの紹介
Djangoフレームワークの紹介
CodeIgniterによるPhwittr
CodeIgniterによるPhwittr
Tekton 入門
Tekton 入門
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだこと
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
msgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graph
20120118 titanium
20120118 titanium
Wasm blazor and wasi 2
Wasm blazor and wasi 2
Chrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターン
Jetpack Library 事始め
Jetpack Library 事始め
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
Grafana Dashboards as Code
1.
Prometheus Tokyo Meetup
#2 2019/6/3 Takuhiro Yoshida <takuhyos@zlab.co.jp> Grafana Dashboards as Code
2.
▶「第8章 アプリケーションを運⽤する」 + 8.2
メトリクスモニタリング ▶Kubernetes環境でのPrometheus/ Grafanaの利⽤について解説 広告⚠ + +
3.
本⽇のテーマ: Grafanaのダッシュボードをどう管理するか?
4.
Dashboards as JSON
5.
Dashboards as JSON{ … "panels":
[ { … "id": 2, "legend": { …. } "targets": [ { "expr": "count(kube_deployment_created) by (namespace)", "format": "time_series", "intervalFactor": 2, "legendFormat": "{{namespace}}", "refId": "A" } ], … "title": "Number of deployment count by namespace", … Export Import/Provisioning
6.
GitOps ☺ JSON { … }Export Commit/Push JSON { … } Import/Provisioning #
7.
▶ 監視対象が増えると同じようなグラフを作ることが多い + e.g.
HTTPリクエストのリクエスト数/エラー数/レイテンシ ▶ UIでの複製が⾯倒 ▶ 後で修正を反映するのが⼤変 Duplicate 🤔
8.
▶ メタデータが多く重要な差分が分かりづらい Review 😢
9.
Dashboards as Jsonnet
10.
Jsonnet ▶ https://jsonnet.org/ ▶ JSON形式の設定ファイルを⽣成するためのテンプレーティング⾔語 ▶
JSON + 変数、算術演算、関数、import式など ▶ JSONのスーパーセット + 通常のJSONはJsonnetファイルとして扱える 出典: https://jsonnet.org/
11.
Grafonnet ▶ https://github.com/grafana/grafonnet-lib ▶ Grafanaダッシュボードを⽣成するためのJsonnetライブラリ ▶
Grafanaのダッシュボードやパネルを表すJSONを⽣成するためのJsonnet関数を 提供 ▶ GrafanaのJSONを⽣成できる類似のツール + grafanalib + https://github.com/weaveworks/grafanalib + Python製
12.
Dashboards as Jsonnet local
grafana = import 'grafonnet/grafana.libsonnet'; local dashboard = grafana.dashboard; local graphPanel = grafana.graphPanel; local prometheus = grafana.prometheus; local resourcePanel(resource) = graphPanel.new( title='Number of %s count by namespace' % resource, datasource='prometheus', ).addTarget( prometheus.target( expr='count(kube_%s_created) by (namespace)' % resource, legendFormat='{{namespace}}', ) ); local gridPos = { x: 0, y: 0, w: 24, h: 8, }; dashboard.new( 'grafonnet: Kubernetes resource count', ) .addPanel(resourcePanel('deployment'), gridPos) .addPanel(resourcePanel('daemonset'), gridPos) .addPanel(resourcePanel('job'), gridPos) .addPanel(resourcePanel('cronjob'), gridPos) .addPanel(resourcePanel('pod'), gridPos) .addPanel(resourcePanel('configmap'), gridPos) .addPanel(resourcePanel('secret'), gridPos) .addPanel(resourcePanel('service'), gridPos) .addPanel(resourcePanel('endpoint'), gridPos) ▶ import式で別ファイルの関数を使える + Grafonnet(grafana.libsonnet)を利⽤ ▶ 共通部分を関数として定義可能 + PromQLの⼀部(メトリクス名、ラベル) を引数で置換 ① ① ② ② ③ ③ 例: Kubernetesのリソース数を種類ごとに表示するダッシュボード
13.
GitOps ☺ Jsonnet { … } Commit/Push JSON { … } Import/Provisioning JSON { … }Generate Jsonnet { … } #
14.
Duplicate ☺ local grafana
= import 'grafonnet/grafana.libsonnet'; local dashboard = grafana.dashboard; local graphPanel = grafana.graphPanel; local prometheus = grafana.prometheus; local resourcePanel(resource) = graphPanel.new( title='Number of %s count by namespace' % resource, datasource='prometheus', ).addTarget( prometheus.target( expr='count(kube_%s_created) by (namespace)' % resource, legendFormat='{{namespace}}', ) ); local gridPos = { x: 0, y: 0, w: 24, h: 8, }; dashboard.new( 'grafonnet: Kubernetes resource count', ) .addPanel(resourcePanel('deployment'), gridPos) .addPanel(resourcePanel('daemonset'), gridPos) .addPanel(resourcePanel('job'), gridPos) .addPanel(resourcePanel('cronjob'), gridPos) .addPanel(resourcePanel('pod'), gridPos) .addPanel(resourcePanel('configmap'), gridPos) .addPanel(resourcePanel('secret'), gridPos) .addPanel(resourcePanel('service'), gridPos) .addPanel(resourcePanel('endpoint'), gridPos) ▶ 関数、importで共通化 ▶ 複製したグラフも⼀括修正可能
15.
Review ☺ ▶ 差分も重要な部分だけでわかりやすい
16.
まとめ
17.
Dashboards as Code ▶
Grafanaのダッシュボードはコードで管理すると便利 + GitOps ▶ Jsonnet/Grafonnetを使うことでグラフの複製やレビュー効率を改善 + グラフや設定の共通化 + わかりやすい差分
18.
▶ Qiita + 「Dashboards-as-Code:
Grafanaダッシュボードをコードから⽣成する」 + https://qiita.com/takuhiro/items/eb79ec17a667faba8be2 Thank you !
Jetzt herunterladen