paint-brush
永続的なメトリクス ストレージのために MinIO を使用して Grafana Mimir を実行するためのガイド@minio
9,138 測定値
9,138 測定値

永続的なメトリクス ストレージのために MinIO を使用して Grafana Mimir を実行するためのガイド

MinIO8m2023/08/15
Read on Terminal Reader

長すぎる; 読むには

Mimir は永続化のためにデータをオブジェクト ストレージに保存し、ユビキタスでコスト効率が高く、耐久性の高い MinIO を利用できるようにします。
featured image - 永続的なメトリクス ストレージのために MinIO を使用して Grafana Mimir を実行するためのガイド
MinIO HackerNoon profile picture
0-item
1-item
2-item

分散システムには多くの可動部分が含まれているため、メトリクス、ログ、トレースなどのテレメトリ データを監視して可視性を高め、チームが問題の根本原因を特定できるようにすることが重要です。多くの可観測性への取り組みの目標は、可用性とパフォーマンスを向上させることです。 Grafana Labs は、最も広く使用されているオープンソースの可観測性スタック (視覚化の Grafana、ログの Loki、メトリクスの Mimir、トレースの Tempo、アラートの Alertmanager) を作成し、 Grafana CloudGrafana Enterpriseを販売しています。


Grafana Mimir は、AGPLv3 ライセンスのオープン ソース ソフトウェア プロジェクトであり、MinIO と組み合わせることで、Prometheus メトリクスにスケーラブルな長期ストレージを提供します。 Mimir は、水平方向にスケーラブルなマイクロサービス ベースのアーキテクチャを使用して構築されました。各マイクロサービスはコンポーネントと呼ばれ、Mimir はこれらのコンポーネントで構成される単一のバイナリとして実行されます。ほとんどのコンポーネントはステートレスであり、再起動の間にデータを保持する必要はありません。


Mimir と MinIO を組み合わせると、次のようなエンタープライズ クラウドネイティブの可観測性のニーズを満たすのに特に適したインフラストラクチャが生成されます。


  • パフォーマンス: MinIO のスケーラビリティとハイパフォーマンスの組み合わせにより、要求がどれほど厳しいものであっても、あらゆるワークロードに対応できます。 MinIO は驚異的なパフォーマンスを実現します。最近のベンチマークでは、わずか 32 ノードの既製 NVMe SSD で GET で 325 GiB/s (349 GB/s)、PUT で 165 GiB/s (177 GB/s) を達成しました。


  • スケール: MinIO はサーバー プール全体で水平方向にスケールするため、制限がありません。各サーバー プールは、独自のコンピューティング、ネットワーク、ストレージ リソースを持つ独立したノードのグループです。マルチテナント構成では、各テナントは単一の名前空間内のサーバー プールのクラスターであり、他のテナントのサーバー プールから完全に分離されています。 MinIO に新しいサーバー プールを指定することで、既存のシステムに容量を簡単に追加できます。MinIO は自動的にサーバー プールを準備してサービスを開始します。


  • シンプルさ:オブジェクト ストレージをいじるのに何時間も費やすよりも、Mimir を使用したい場合は、MinIO より簡単なソリューションはありません。 MinIO はオブジェクトを提供するだけです。私たちはそれがすべてであり、最高のものであることに執着しています。他の製品は、オブジェクト ストレージとファイル ストレージを組み合わせており、その結果、複数のストレージ層が形成され、Mimir のクエリ応答時間に遅延が生じ、より複雑なアーキテクチャが作成され、失敗する可能性が高くなります。


  • マルチクラウド:クラウドで誕生した MinIO は、ハードウェアとソフトウェアの任意の組み合わせでどこでも実行できます。豊富な統合セットにより、MinIO は既存のセキュリティおよび管理ツールとサービスに透過的に接続され、ID 管理や暗号化キー管理などを一元化します。 MinIO は、ベアメタルまたは任意のバージョンの Kubernetes (GKE、EKS、AKS、Red Hat OpenShift、VMware Tanzu など) 上で S3 API 互換のオブジェクト ストレージを提供し、アクティブ/アクティブ レプリケーションを使用してデータを効率的に同期します。


Grafana Mimirの中核となる強みには次のようなものがあります。


  • インストールと保守が簡単: Grafana Mimir の広範なドキュメント、チュートリアル、展開ツールにより、すぐに使い始めることができます。モノリシック モードを使用すると、追加の依存関係を必要とせず、1 つのバイナリだけで Grafana Mimir を起動して実行できます。導入後は、Grafana Mimir にパッケージ化されたベスト プラクティスのダッシュボード、アラート、プレイブックを使用して、システムの状態を簡単に監視できるようになります。


  • 優れたスケーラビリティ: Grafana Mimir の水平スケーラブルなアーキテクチャを複数のマシンにわたって実行できるため、単一の Prometheus インスタンスよりも桁違いに多くの時系列を処理できるようになります。内部テストでは、Grafana Mimir が最大 10 億のアクティブな時系列を処理できることが示されています。


  • メトリクスのグローバル ビュー: Grafana Mimir を使用すると、複数の Prometheus インスタンスからシリーズを集約するクエリを実行できるため、システムのグローバル ビューが得られます。そのクエリ エンジンはクエリ実行を広範囲に並列化するため、カーディナリティが最も高いクエリであっても驚異的な速度で完了します。


  • 安価で耐久性のあるメトリック ストレージ: Grafana Mimir は長期データ ストレージにオブジェクト ストレージを使用し、このユビキタスでコスト効率の高い、耐久性の高いテクノロジを活用できるようにします。 AWS S3、Google Cloud Storage、Azure Blob Storage、OpenStack Swift、および S3 互換のオブジェクト ストレージを含む複数のオブジェクト ストア実装と互換性があります。


  • 高可用性: Grafana Mimir は受信メトリクスを複製し、マシンに障害が発生した場合でもデータが失われないようにします。水平方向にスケーラブルなアーキテクチャは、ダウンタイムなしで再起動、アップグレード、またはダウングレードできることも意味します。これは、メトリクスの取り込みやクエリが中断されないことを意味します。


  • ネイティブなマルチテナント: Grafana Mimir のマルチテナント アーキテクチャにより、独立したチームやビジネス ユニットからデータとクエリを分離でき、これらのグループが同じクラスターを共有できるようになります。高度な制限とサービス品質制御により、テナント間で容量が公平に共有されます。


Mimir は、入手可能なオープン ソースの時系列データベースの中で最もスケーラブルでパフォーマンスが高いように開発されました。 Mimir は、Cortex よりも最大 40 倍高速な驚異的な高速クエリ パフォーマンスを備え、10 億メトリクス以上まで簡単に拡張でき、TSDB Mimir は置き換えるために構築されました。 Cortex は 2018 年から CNCF プロジェクトであり、Prometheus メトリクスを保存するために広く使用されています。 Mimir を作成する際、Grafana Labs は、AGPLv3 ライセンス、アクセス制御、およびパフォーマンス、スケーラビリティ、可用性の向上により、エンタープライズ対応の可観測性の基礎を築きました。


Grafana Labs の Mimir の目標は、メトリクスの形式に関係なく、最高のスケーラブルな時系列データベースになることです。企業は、既存のコードを変更せずに Prometheus メトリクス (および他のベンダーが連携する場合の他のメトリクス) を利用できる必要があります。


Mimir とは何かを学習したので、入門チュートリアルを実行してみましょう。

Grafana Mimir と MinIO のチュートリアル

このチュートリアルは、既存のチュートリアル「Play with Grafana Mimir」を利用して、Docker を使用して Mimir を始めるのがいかに簡単かを示します。


Git コマンド ラインを使用して、Grafana Mimir リポジトリのコピーを作成します。

 git clone https://github.com/grafana/mimir.git


チュートリアル ディレクトリに移動します。

 cd mimir/docs/sources/tutorials/play-with-grafana-mimir/


MinIO、Mimir、Prometheus、Grafana、NGINX を開始する

docker compose up


これにより、次のことが表示されます。


  • Grafana Mimir - 高可用性のための Mimir の 3 つのインスタンス。マルチテナンシーが有効になっています (テナント ID はデモです)。
  • Prometheus - Mimir メトリクスを取得し、それを Mimir に書き戻して利用できるようにします。
  • MinIO - ブロック、ルール、アラート用の S3 互換ソフトウェア定義永続ストレージ
  • Grafana - Mimir をクエリするためのプリインストールされたデータソースと、Mimir を監視するためのプリインストールされたダッシュボードが含まれています
  • ロード バランサー - Mimir インスタンスを公開する NGINX ベースのロード バランサー


次のポートが使用されます。





このチュートリアルで使用される構成をさらに詳しく知りたい場合は、次の場所に保存されている YAML ファイルを参照してください。

 ~/mimir/docs/sources/tutorials/play-with-grafana-mimir/config/ 



Grafana にアクセスするには、ブラウザを起動してhttp://localhost:9000を開きます。 Grafana を使用して、Mimir クラスターのステータスを表示するダッシュボードを表示します。ダッシュボードは、表示されるメトリクスについて Mimir にクエリを実行します。左上のメニューから「ダッシュボード」をクリックし、「参照」をクリックして、チュートリアル用にプリロードされているダッシュボードを表示します。これらのダッシュボードは Grafana Mimir ミックスインからのもので、Grafana Labs のベスト プラクティス ダッシュボード、記録ルール、Mimir を監視するためのアラートがパッケージ化されています。



通常、チュートリアル コンテナーを起動してから、メトリクスが Grafana ダッシュボードに表示されるまでに 3 ~ 5 分かかります。また、イングレス ゲートウェイ、クエリ スケジューラー、または memcached なしで Mimir を実行しているため、関連するダッシュボードは空になります。



Mimir を学習するこの初期段階では、書き込み、読み取り、クエリ、オブジェクト ストアのダッシュボードを参照することから始めます。たとえば、オブジェクト ストア ダッシュボードには、Mimir を起動してから行われた操作が表示されます。


録音ルールを構成する

記録ルールは、頻繁に必要な式や計算コストのかかる式を事前計算し、結果を新しい時系列セットとして保存するメカニズムです。 Grafana を使用して Mimir で記録ルールを構成するには、次の手順に従ってください。


このsum:up記録ルールは、稼働中でスクレイピング対象に到達可能な Mimir インスタンスの数を表示します。ルールが作成されると、クエリを実行したり、ダッシュボードに含めたりできるようになります。


左側のツールバーから [アラート] メニューを開き、[新しいアラート ルール] をクリックします。



次のように入力して、記録ルールを構成します。


  1. Mimir or Loki recording rule選択してください
  2. 以下を設定します。
  3. ルール名 = sum:up
  4. 「データソースの選択」フィールドで「Mimir」を選択します。
  5. 名前空間 = example-namespace
  6. グループ = example-group
  7. クエリ式 = sum(up)
  8. 右上隅にある [保存して終了] を選択します。


新しい記録ルールが正しく実行されることを確認するには、左側のメニューから [エクスプローラー] を開きます。



[メトリック] ドロップダウンでsum:upを選択し、右上の [クエリを実行] をクリックして、 [インスペクター] ボタンをクリックします。以下の [データ] をクリックして、時間とクエリ結果のリストを表示します。結果は「3」となり、Mimir の 3 つのローカル インスタンスが動作していることを示します。


アラート ルールを構成する

Mimir で構築されたアラート ルールは、Prometheus および Loki で構築されたものと同じPromQL形式に従います。 Grafana は式を評価し、必要に応じて Alertmanager を使用してアラートを起動します。これについては、以前のブログ投稿「 Prometheus と Grafana を使用したマルチクラウドの監視とアラート 」でかなり深く掘り下げました。


Mimir インスタンスの数が 3 つを下回ったときに発生するアラートを作成します。


左側のメニューで、「アラート」の上にマウスを置き、「新しいアラート ルール」をクリックします。



  1. Mimir or Loki alertを選択してください
  2. 以下を設定します。
  3. ルール名 = MimirNotRunning
  4. 「データソースの選択」フィールドでMimirを選択します。
  5. 名前空間 = example-namespace
  6. グループ = example-group
  7. クエリ式 = up == 0
  8. 右上隅にある [保存して終了] を選択します。


「アラート」ページに移動すると、Mimir 記録ルールとアラート ルールが表示されます。すべての Mimir コンテナーがまだ実行中であるため、アラートの横に、大きくて心地よい緑色の [通常] ステータスが表示されることに注意してください。



3 つの Mimir インスタンスの 1 つを終了することで、エラー状態をシミュレートします ( ~/mimir/docs/sources/tutorials/play-with-grafana-mimirディレクトリにいることを確認してください)。

 docker compose kill mimir-3


Mimir インスタンスを突然終了したため、ルールのクエリ中に Grafana がエラーを表示する短い期間が発生します。この問題は、Mimir の内部ヘルスチェックで終了したインスタンスが異常であると検出されるとすぐに自動的に解決されます。


約 1 分以内に、アラートに黄色の保留状態が表示されます。


さらに 1 分後、アラートは赤色の発火状態に変わります。


通知チャネルを使用して Alertmanager を構成していれば、適切なメカニズムと連絡先にアラートが送信されます。手順については、「Prometheus と Grafana を使用したマルチクラウドの監視とアラート」を参照してください。


終了した Mimir インスタンスを元に戻す前に、Grafana の Explore ページに戻り、 sum:up記録ルールをクエリします。 Mimir インスタンスがダウンしているにもかかわらず、Mimir がメトリクスを記録し続けていることがわかります。



最後に、Mimir インスタンスをバックアップします。

 docker compose start mimir-3


[アラート] ページに戻ると、アラート ステータスが通常に戻っていることがわかります。

結論

このチュートリアルでは、高可用性構成で Grafana Mimir と MinIO を実行する方法を学習しました。 Mimir 自体から Prometheus メトリクスを消費し、それを Grafana でクエリして視覚化しました。また、記録ルールとアラートを構成し、条件が満たされたときにアラートが期待どおりに起動されることを確認しました。


また、Mimir と Grafana を構成して、MinIO から Prometheus メトリクスを収集し、AlertManager 経由でアラートを発行することもできます。 Mimir は永続化のためにデータをオブジェクト ストレージに保存し、ユビキタスでコスト効率が高く耐久性の高い MinIO を利用できるようにします。


グラファナ・ミーミルを試してみよう!ご質問がある場合は、 Slack チャンネルに参加するか、[email protected] までメールをお送りください。


ここでも公開されています。