1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Prometheusを使用して、Redisクラスターの監視

1
Posted at

image.png

はじめに

この記事では、Redisデータベースモニタリングとは何か、およびMetricFireのHosted Prometheusを使用してRedisデータベースモニタリングシステムをセットアップする方法について概説します。 次に、Grafanaに表示したときに最終的なグラフとダッシュボードがどのように表示されるかもお見せしていきます。 MetricFireが提供するHosted PrometheusとHosted Grafanaを使用して監視を強化し、またシミュレートされたRedisDBを使用してGrafanaダッシュボードのデータを生成していきましょう。

image.png

Redis DBおよびRedisクラスターとは何か?

Redis DB(データベース)は、データベース、キャッシュ、またはメッセージブローカーとして使用できるキーと値のペアにデータを編成するインメモリデータ構造ストアです。 Redis DBはオープンソースであり、さまざまなホスティングサービスが提供されています。 Redisデータ構造は、パフォーマンスと使いやすさの両方の点で効率的です。 Redis DBは通常、単一のユーザー名に接続されているパスワードなど、迅速に取得する必要のあるデータ、または一時的ですぐに削除できるデータに使用されます。シンプルなコマンドラインインターフェイスは開発の労力を軽減し、メモリ内コンポーネントはレイテンシーを削減し、スループット(処理能力)を向上させます。

RedisクラスターはRedisDBの実装であり、複数のRedisノード間でデータを自動的にシャーディングできます。クラスターは、パーティショニング中に一定レベルの冗長性と可用性も提供します。つまり、ノードが回復中または障害発生したときにデータを通信/送信することができます。 また、「マスター」ノードに障害が発生した場合にデータを保護するマスタースレーブモデルでも実行されます。

MetricFireはRedisをどのように監視するのか?

各Redisクラスターには、ポート8070でリッスンするmetrics_exporterコンポーネントがあり、Prometheusがメトリックを取得できるPrometheusエンドポイントとして機能します。 Prometheusを使用してRedisメトリックを監視すると、データベースにほとんど、またはまったく負荷がかかりません。 Redisは必要なメトリックをPrometheusエンドポイントにプッシュし、そこでユーザーは利用可能なRedisメトリックについてPrometheusでスクレイピングできるため、メトリックが照会されるたびにRedisをスクレイピングすることを回避できます。 こうすることで、Redisクラスター内のキーの総数、処理されたコマンドの現在の数、メモリ使用量、およびRedis接続の総数を監視できます。 さらに、クラスター全体のデータ、個々のノードのデータ、または単一のデータベースのデータも監視できます。

MetricFireによってホストされているHosted Prometheusを使用している場合は、まったく同じように機能します。 このツールで、Redis DBエンドポイントをスクレイプしてメトリック情報を取得し、Grafanaダッシュボードに自動的に表示されます。

MetricFireを使用してRedisクラスターモニタリングをどのように設定するのか?

A. MetricFireUIにPrometheusとRedisをインストールする

  • MetricFireUIの左側にある[Add on]メニューに移動します。
  • PrometheusAPIキーを見つけます。
  • prometheus.ymlファイルを編集して、APIキーをbearer_tokenとしてremote_writeセクションとremote_readセクションを含めます。

image.png

B. Prometheus構成を編集してRedisEnterpriseジョブを含める

docs.redislabs.comによると、上記の手順のPrometheus構成を現在のフォルダーの./prometheus/prometheus.ymlにコピーします。 クラスター名は、完全ドメイン名またはIPアドレスのいずれかです。

image.png

C. MetricFire UIのGrafanaダッシュボードにデータソースを追加する

MetricFire UIで、左側のメニューの[Dashboard]に移動し、[Graph]をクリックします。 以下に見られるように、[Data Sources]メニューに移動します。

image.png

Prometheusをデータソースとして追加します。

image.png

以下に示すように、Prometheusデータソース設定メニューが表示されます。 URLをhttp:// localhost:9090に変更します。 [Access]で、[Browser]を選択します。 次に、[Save & Test]をクリックします。

image.png

D. Grafanaダッシュボードでデータを表示するには、データソースをPrometheusに変更します

次に、データソースをPrometheusに変更して、Grafanaダッシュボードにデータが表示されるようにします。

image.png

Prometheusを使用したRedisクラスターモニタリングのダッシュボードの例

グラフ1 - 4つのグラフを含むダッシュボード

image.png

これは、Grafanaダッシュボード内の行の例で、4つのパネルで構成されています。 Grafanaには、グラフ、テキスト、および表を関連するカテゴリにグループ化する機能があるため、1つのダッシュボード内でさまざまなメトリックを簡単に並べ替えることができます。 パネルを整理すると、相関関係がわかり、問題のトラブルシューティングをすばやく行うことができます。

このダッシュボードには、RedisDBからプッシュされた以下の4つのメトリックが表示されています。

  • Redisクライアントビュー - Redisクライアントの総数
  • キービュー - 各RedisDBインスタンスのキーの総数
  • 処理されたコマンド - マシンのグループごとに処理されたコマンドの数
  • メモリ - 異なるアグリゲーションマシンごとの合計メモリ使用量

グラフ2 - アグリゲーションマシンでのRedis

image.png

このグラフは、さまざまなアグリゲーションマシンの合計メモリ使用量を示しています。 これらのマシンは、取り込まれたデータを収集し、データをより管理しやすい形式に集約する役割を果たします。 普通、各リソースが使用しているメモリの量を監視する必要があり、 リソースが最大メモリ消費量に近づくと、パフォーマンスが低下し始めます。 メモリ使用量の急増は、アプリケーションとプロセスの重要な変更の識別子として機能する可能性があります。

このグラフは「スタック」されています。つまり、線の間の全範囲が現在のメトリックが読み取っているものです。 これにより、値がすべて類似している場合に送信されるさまざまなメトリックを簡単に確認できます。 このグラフにはフローティングの凡例もあり、グラフ自体が見やすくなっています。

グラフ3 - 処理されたコマンド

image.png

これは、上のグラフ1から拡大された「処理されたコマンド」グラフです。 これは、Redis DBインスタンスを実行しているマシンのさまざまなグループと、それに関連して処理されたコマンドの数を示しています。 「処理されたコマンド」グラフは、DB管理者がRedis DBに渡されたコマンドを監視できるため、グラフ化するための重要なメトリックです。 これは、リソースにかかるトラフィックと潜在的なストレスを示しています。

グラフ4 - キービュー

image.png

これも、上のグラフ1から拡大されたキービューグラフです。 このグラフでは、各RedisDBインスタンスのキーの総数を示しています。

他のグラフと同様に、インスタンス内のキーの総数を知ることで、管理者は各RedisDBをより深く理解できます。 分散キャッシングストアとしてRedisDBを使用している場合、このようなグラフは、各インスタンスが適切にバランスされて使用されていることを確認するのに役立ちます。 インスタンスでキーの大幅な低下が見られる場合、この問題をさらに調査するために重要となってくるメトリックです。

RedisDBの主要なメトリクス

RedisDBから自動的にプッシュされるメトリックはたくさんあります。 以下のいくつかをご覧ください。完全なリストはRedisのWebサイトにあります。

  • Bdb_avg_latency - データベースでの操作の平均待ち時間(マイクロ秒単位)
  • Bdb_conns - データベースへのクライアント接続の数
  • Bdb_ingress_bytes - DBへの着信ネットワークトラフィックの場合のレート(バイト/秒)
  • Bdb_no_of_keys - データベース内のキーの数
  • Node_conns - ノード上のエンドポイントに接続されているクライアントの数
  • Node_cpu_user - ユーザーが費やしたCPU時間の部分-ペースプロセス
  • Node_free_memory - バイト単位でのノードのフリーメモリ
  • Node_up - ノードがクラスターの一部であり、接続されているか
  • Redis_up - シャードが稼働していルカ

まとめ

MetricFireで何ができるかについて詳しくは、ブログでGrafanaダッシュボードの作成や、GrafanaをKubernetesにデプロイする方法などのチュートリアルをご覧ください。

RedisのPrometheus監視について、ご質問がある際は、是非デモを予約し、ご連絡ください。

それでは、またの記事で!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?