Monitoring Linux Processes using Prometheus and GrafanaーPart 3

Prometheus とGrafanaを使ってのLinuxプロセスのモニタリングー第三章

gavin.zhou
8 min readJan 17, 2020

Prometheus とGrafanaを使ってのLinuxプロセスのモニタリングをする方法を解説します。記事が長いので3回に分けて投稿致します。今回が第三回目で最終章になります。今回は様々なゲージ(水平、垂直など)などについてみていきたいと思います。

Grafanaを伴う素晴らしいダッシュボードの構築

メトリックがPrometheusに保存されています。次はそれらを可視化するために Grafanaダッシュボードを構築していきましょう。

私たちは、Grafana v6.2の最新の有効なパネルを使用します。これは、垂直および水平なバーゲージで、roundedゲージと従来の折れ線グラフです。

分かりやすいように、1~4の番号を付けた最終的なダッシュボードに注釈をつけています。

このチャプターの他の項にも共通しています。もし読者の皆さんの中で「このパネルにだけ興味がある」というのであれば、対応する章だけを読んでいただいてもかまいません。

1 — Rounded Gaugesの構築

ここにパネルの中nroundedゲージに近づいて見たものがあります。メモリ使用量のために簡単にミラーリングできるからです。

それらのパネルを使って、二つのメトリックを追跡しようと思います。:すべてのプロセスの現在のCPU使用率と平均的な

CPU使用率の二つのメトリックです。

それらのメトリックを取得するため、Prometheusインスタンス上でPromQLクエリを実行するのでしょうか?

それでは、一体PromQLとは何でしょうか?

PromQLはPrometheus用に設計されたクエリ言語です。

同じようにInfluxQL (もしくはIFQL)、PromQLクエリを伴ったInfluxDBインスタンス上に見つけたものは、sum(合計)、average(平均)、standard deviation(標準偏差)のような機能を使ってデータを集めることができます。

syntaxは使うのがとても簡単です。パネルで実際にデモンストレーションしてみたいと思います。

a — 現在の全体のCPU利用率の取得

現在の全体的なCPU使用率を取得するために、 PromQL sum機能を使います。

任意の時点では、全体的なCPU使用率は単に個々の使用率の合計になります。

こちらをご覧ください。

b — 平均的なCPU使用率の取得

平均的なCPU使用率を取得するのはそこまで難しくありません。単純にPromQLのavg 機能を使えばいいのです。次の画像を見るとすぐに分かると思います。

2 — Horizontal Gaugesの構築

Horizontal gauges(水平ゲージ)はGrafana v6.2の新しく追加された機能の一つです。

このパネルでの私たちの目標は、私たちのシステムの中で一番よく消費されるプロセスのトップ10をエクスポーズすることです。

そのために、topk 機能を使用します。この機能は、メトリックのためのtop kエレメント(要素)を取得できるようにするものです。以前行ったのと同じ様に、プロセスがあまりにも多くのリソースを消費すると、知らせてくれるように閾値を設置するつもりです。

3 –Vertical Gaugesの構築

Vertical gauges(垂直ゲージ)はhorizontal gauges(水平ゲージ)にとてもよく似て言います。ただGrafanaの可視化パネルの中でオリエンテーションパラメーターを微調整すればいいだけです。

またこのパネルを使ってメモリー使用率をモニターします。そのため、クエリは少しだけ異なります。

こちらにシートがあるので、ご確認ください:

素晴らしい!今まですごく順調に来ています。あとパネルは1つです。

4 — Line Graphs(線グラフ)の構築

Line graphs(線グラフ)は以前からずっとGrafanaで使われてきました。時間の経過とともにどのように自分のプロセスが進化したかの履歴を見るためにこのパネルを使います。

次のような場面で有効的です。

  • 過去に停止時間があって、どのプロセスがその時にアクティブだったかを調べる
  • 特定のプロセスが終了したが、発生する直前にその動作を確認したい場合

トラブルシューティングの検索についていえば、全ての記事が必要になります(特に最近のGrafana Lokiなどについてのもの)。

OKです。こちらをご確認ください。

今の時点で、最終的なダッシュボードに対して必要なすべてのパネルの準備が整いました。

自分の好きなようにアレンジしてもいいし、我々が構築したものからインスピレーションを得てもらってもいいです。

おまけ : ad hocフィルターを使ってデータを参照する

リアルタイムデータは、見ているととても興味深いものです。しかし、本当の価値は自分のデータを検索できるようになったときに分かります。

このおまけのセクションでは、「Explore(検索)」機能を使わずに(おそらくまた別の記事で)ad hocフィルターを使いたいと思います。

Grafanaを使って、グラフへ関連変数を設定することができます。変数には多くの色々なオプションがあります:例えば、クエリでデータソースをダイナミックに切り替えることを可能にするデータソースの変数を定義することも可能です。

我々の場合、シンプルに自分のデータを検索するためにad hocフィルターを使います。

それでは、左のメニューの「Variables」をクリックして、それから「New」をクリックしてください。

先ほど説明したように、ad hocフィルターは自動的にPrometheusデータソースをターゲットにするダッシュボードに適用されます。

ダッシュボードの一番左端を見てみてください。

フィルタ―です!

自分のシステムの中で特定のプロセスのパフォーマンスが必要だとしましょう。Prometheusを例にだします。

単純にフィルターにナビゲートして、それに伴ってダッシュボードがアップデートするのを見ます。

どのようにPrometheusが自分のインスタンスの中で動いているか直接見ることができます。

その時点に戻って、pidとは関係なく、どのようにプロセスが動いたか見ることもできます。

まとめ

このチュートリアルで、 Prometheus と Grafanaについてもっと深く理解することができたのではないでしょうか。

1つのインスタンスに対して完全なモニタリングダッシュボードを持つということはご存じだと思います。しかし、それをスケールするためには、Unixインスタンスの全体のクラスターをモニターするためには、ものすごく細かい手順があるのです。

DevOpsモニタリングは本当に興味深いテーマです。しかし、間違ってしまうと悪夢になりかねません。

だからこそ我々がこの記事を書き、それらのダッシュボードを構築したのです。それらのツールの持つ機能を最大限に効果的に生かすために他なりません。

便利なツールが素晴らしい技術をより高めてくれるものだと我々は信じていますし、みなさんもそうだと思います。

Orangesys.ioでは、kuberneteの運用、DevOps、監視のお手伝いをさせていただいています。ぜひ私たちにおまかせください。

--

--

No responses yet