翻訳しながらGrafanaを触ってみる
はじめに
以前Prometheusを触ってみました。大まかな使い方は理解できました。そこで今回はPrometheusから取ったデータをさらにわかりやすい状態で表示できるGrafanaを触ってみたいと思います。
目的としてはGrafanaとは何か・基本的な使用方法・Prometheusとの連携方法を理解することです!
今回すすめて行く方針としてはまず公式のドキュメントの概要を読んでGrafanaが何かを理解してみます。その次にチュートリアルが用意されているのでそれに沿って進めてみたいと思います。
Introduction to Grafana
Grafanaとはメトリックスの分析・ログやトレースの監視を行う観測スタック
どこにデータが保存されていても可視化や理解ができる
GrafanaもPrometheusと同様いくつかのコンポーネントに分けることができるみたいです。
Grafana Loki → ロギングを行う用のコンポーネント
Grafana Tempo → トレーシング用のコンポーネント?トレーシングがあまりわからないです。
入れ子になっているこちらのページでも少し説明が補足されているみたいです。
Prometheusと比べて概要は結構ざっとしている気がしますがなんとなく何をするのかはわかったのでチュートリアルを進めてみます。
Grafana tutorials
まず基本的なことが知りたいのでここから始めてみます。
手順通りに進めてGrafanaのダッシュボードが見えるところまできました。
Add a metrics data source
次にPrometheusのデータをGrafana上で見れるようにしていきます。
説明ではアプリケーションがPrometheusに対してメトリックスを出してPrometheusが保存しているというふうに書いています。
アプリケーションのコードを見てみたのですがPrometheusの時に利用したClientは使用されておらず代わりに「"github.com/grafana/tns/client"」が利用されていました。コード見た感じログを出すクライアントですかね?
とりあえず進めて行くとPrometheusを監視対象として追加することに成功しました。
Explore your metrics
Grafana Explore → データ検索とトラブルシューティングのためのワークフロー
ad-hocクエリを作ってサンプルアプリケーションから公開されているメトリックスについて理解して行くみたいです。
Ad-hocクエリ → データの検索のために作られたクエリで基本的にさらに具体的なクエリと一緒に書かれる。PrometheusのPromQLとはまた別の概念?進めてみた感じ同じのものか?
グラフが表示されている下のグラフの色の意味を説明している箇所のことをレジェンドという
右上でクエリを更新するタイミングやグラフの全体表示時間を変えることもできる
自動更新だったり全体の時間変更だったりPrometheus単体よりかなり便利です。結局 Ad-hocクエリとPromQLに関して以下のクエリの場合
sum(rate(tns_request_duration_seconds_count[5m])) by(route)
「tns_request_duration_seconds_count」がPromQLでそれ以外のrateやsumの部分がAd-hocクエリということですかね?文面だけで判断しているので間違っていたらすみません。
Explore your logs
Lokiを使ってログファイルの可視化をしていきます。
先ほどのPrometheusとの接続と同様の手順でデータソースとして追加できるみたいです。コードみた感じLokiはアプリケーションのapiを叩きに行っているというよりかはログファイルを直接読みに行っているという感じだと思います。
アプリケーションではgo-kitというフレームワークを使って作られていてそのロガー機能によってログファイルを出しているみたいです。みた感じログが特定の型だったらzapとかでログを出しても動いてくれそうです。ただweaveworksというライブラリも使っていてログを出しています。ここらへんはチュートリアルの型や使用パターンを調べてみたら良いかもしれないです。
接続ができたところでチュートリアルに従ってクエリを投げていきます。エラーだけの取得といったこともできるみたいです。便利ですね。
Build a dashboard
ダッシュボードによってメトリックスを別々の方法で可視化できる
ダッシュボードは複数のパネルによって成り立っている
各パネルはクエリと可視化の表によって成り立っている
クエリ→表示したいデータ
可視化の表→データが表示される方法
今まで触ってきたクエリを入力するだけで簡単にグラフを表示させることができます!レジェンドだったり表の表示方法も自分の好きなように変更することができたり表をグループ化することができそうです。
Annotate events
エラーが起きた時などにどのような状態で失敗したかを可視化できるみたいです。
アプリケーションの新バージョンリリース時やイベント開催時など普段の運用に比べて変化があると予測される場合などに使えそうです。そのようなイベント?を簡単にマーキングできるような仕組みです。
手動で行う他特定の条件(チュートリアルではエラー発生時)で付けることができるみたいです。またパネルを複数建てた場合であっても同じ時間帯にはパネルを超えた注釈を付けることができました。
Set up an alert
アラートの設定によってシステムに問題が起こった時にわかるようになります。
アラートはNotification channelとAlert rulesの2つに分かれます。
Notification channel → アラートがどのように通知されるか。アラートの条件となった場合設定されたチャンネルに通知を送ります。
Alert rules → アラートの通知条件
サービス運用を考えた場合結構大事な要素だとは思いますが検証環境のために使用する場合アラートはあまり必要とは感じないです。とりあえず概要と動作確認だけ行いました。
まとめ
Grafanaを触ってみました。特にコードを書くわけではなくデータの可視化に特化したようなツールでした。PrometheusやGrafana Lokiから送信するデータさえしっかりすれば後の操作はそこまで難しいものではないといった印象を受けました。
この記事が気に入ったらサポートをしてみませんか?