コンテンツに移動
管理ツール

Google Cloud 上の IBM MQ インスタンスを Prometheus 指標でモニタリングする方法

2023年7月1日
Google Cloud Japan Team

※この投稿は米国時間 2023 年 5 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。

テレメトリー データを収集するためのクラウド上の Ops エージェントの直接的なサポートがない、サードパーティ製の Google Cloud上のアプリケーションをモニタリングすることは、しばしば困難なことです。2023 年 4 月現在、サードパーティがサポートしているアプリケーションの一覧はこちらです。IBM MQ(メッセージおよびキュー ミドルウェア)は、Ops エージェントがサポートしていないプロダクトの一つです。したがって、Google Cloud をご利用のお客様にとって、Dyantrace や IBM のモニタリング サービスなどの他のオペレーション スイートで遠隔測定データを維持し保護するためには、多額の費用だけでなくオーバーヘッドも発生します。この記事では、IBM MQ インスタンスから指標を抽出するだけでなく、チャート、ダッシュボード、アラートを生成するためにネイティブの Cloud Monitoring にエクスポートする独自のモニタリング フローの作成についてご説明いたします。

要件:

こちらで説明するフローには、大きく分けて 2 つのステップがあります。

MQ Metrics Exporter:

MQ Metrics Exporter ステップは、MQ サーバーと Prometheus の間の抽象化レイヤとして理解でき、MQ 指標を Prometheus 指標に変換して簡単に使用できるようにします。MQ Metrix Exporter は、Prometheus 指標をスクレイピング可能なエンドポイントで公開します。このエクスポーターの実装には、以下のコンポーネントが必要です。

  • IBM MQ クライアント: MQ クライアントは、IBM MQ プロダクト群に含まれるもので、基本プロダクトおよびサーバーとは別のマシンに単独でインストールできます。こちらは無償でご利用いただけます。このクライアントは、MQ Metrix Exporter を実行する予定のホストにインストールする必要があります。MQ Metrix Exporter は、MQ クライアントを使用して、一つ以上の IBM MQ サーバーと対話し、それらのキュー マネージャーに接続して、有用な指標を取得します。

  • pymqi Python ライブラリ: 構築予定のエクスポーターは Python でコーディングされており、IBM MQ PCF コマンドを実行するために pymqi ライブラリのさまざまな組み込みメソッドを活用します。PCF コマンドを起動し、MQ サーバーから指標を取得します。Python 3.6.8 と pip3 がホスト上にインストールされていること、および以下の依存関係が存在しているかご確認ください。

読み込んでいます...

  • Prometheus クライアント: MQ 指標を Prometheus 指標として使用するには、Prometheus クライアントが必要です。データコレクタ向けに、このような指標を利用できるように、http エンドポイントを公開しています。今回は Python でエクスポーターを記述するため、Prometheus の Python クライアントを使用します。以下の依存関係がインストールされているかご確認ください。

読み込んでいます...

MQ Metrics データコレクタ:

データコレクタは、MQ Metrix Exporter から指標を収集し、クエリやダッシュボードで利用するために、Cloud Monitoring にデータを保存できます。PromQL を使用してグローバルにデータを照会できるため、既存の Grafana ダッシュボード、PromQL ベースのアラート、およびワークフローをそのまま使用できます。このソリューションで使用するデータコレクタは、Compute Engines 上で動作する MQ Metrix Exporter をスクレイピングする最も簡単な方法である Ops エージェントを使用します。しかしながら、MQ Metrix Exporter をコンテナ化し、Google Kubernetes Engine のコンテナで実行することは可能です。Kubernetes 環境では、Google Cloud Managed Service for Prometheus 向けのセルフ マネージドまたはマネージド データコレクタ オプションを活用し、Cloud Monitoring に指標を保存できます。以下より詳細をご確認ください。

解決方法:

https://storage.googleapis.com/gweb-cloudblog-publish/images/1._IBM_MQ_Monitoring_on_GCP.max-1500x1500.jpeg
MQ モニタリングの流れ

IBM MQ クライアント環境で実行する Python クライアントは、PCF コマンドを発行し、リクエストはキュー マネージャーにリダイレクトされ、そこで処理後に、クライアントに返信されます。Python クライアントと MQ クライアント間のリンクは、実行時に動的に確立されます。Ops エージェントには、http サーバー(/metrics パス)をポーリングしてデータを収集し、Cloud Monitoring に転送し続ける prometheus レシーバーがあります。

サンプルコード:

以上が、必要とされる依存関係となります。それではこれより IBM MQ 指標について、いくつか例を用いて、MQ Metrix Exporter の実装について確認します。次のサンプルコードでは、3 つの有用な指標を取得できます。

  1. 現在の接続数

  2. キューの深さ

  3. キュー マネージャーの健康状態

このコードを拡張して、必要とされる指標を取得できます。

読み込んでいます...

指標のコレクション

エクスポートされた指標は、データコレクタで収集する必要があります。以下の手順にて、ホスト上で Ops エージェントをセットアップしてください。

Ops エージェントの構成ファイルである、/etc/google-cloud-ops-agent/config.yaml を編集し、Prometheus のレシーバーとパイプラインを追加します。
読み込んでいます...

注: ターゲット ホストを変更し、コレクタを MQ Metrix Exporter が動作しているマシンに向けてください。

  • Ops エージェントの再起動

読み込んでいます...

Cloud Monitoring で Prometheus 指標の表示

上記のように MQ Metrix Exporter と Ops エージェントを実行後、Cloud Monitoring で利用可能な以下のオプションを使用して指標データを可視化できます。

また、Prometheus UI や Grafana など、他のインターフェースにおいても、指標を表示可能です。

先にご説明した 3 つの MQ 指標が取り込まれていることを確認するために、PromQL を使用します。

  1. Google Cloud コンソールで [Monitoring] へ移動。

  2. [Monitoring] のナビゲーション パネルで、[Metrics Explorer] をクリック。

  3. [PromQL] タブを選択。

  4. 以下のクエリを一つずつ実行すると、データとチャートが表示されます。

読み込んでいます...

https://storage.googleapis.com/gweb-cloudblog-publish/images/2._current_connection_count.max-2200x2200.jpg

指標 1: 現在の接続数

https://storage.googleapis.com/gweb-cloudblog-publish/images/3._queue_depth.max-2200x2200.jpg
指標 2: キューの深さ
https://storage.googleapis.com/gweb-cloudblog-publish/images/4._health_state.max-2200x2200.jpg
指標 3: キュー マネージャーの健全性の状態

総括

MQ Metrix Exporter と Ops エージェントのコンポーネントは元々独立しているため、分散してデプロイすることも、同じマシンにバンドルしてデプロイすることも可能です。しかしながら、MQ モニター(またはエクスポーター)は、スケーラビリティを確保するために、MQ サーバーとは別のマシンにデプロイすることを推奨します。

上記のサンプルコードでは、いくつかの指標をカバーしていますが、ソリューションを拡張して、pymqi ライブラリで利用可能な PCF コマンドを実行することで、以下の指標も収集可能です。

  1. 共有接続

  2. アクティブなチャネル

  3. チャネルのステータス

  4. メッセージの合計件数

  5. 送信、受信バイト数

  6. 送信、受信バッファ

  7. キューの深さの割合

  8. キュー I/O

  9. commit されていないメッセージ

  10. キューに追加されたメッセージ

  11. キューから出されたメッセージ

次のステップ

Cloud Monitoring は、クラウドを利用したアプリケーションのパフォーマンス、稼働時間、そして全体的な健全性を可視化します。一方、Cloud Logging は、大規模に稼働し、アプリケーションとプラットフォームのログデータ、および Google Cloud 内外の GKE 環境、VM、その他のサービスからカスタム ログデータを取り込むことができるフルマネージド サービスです。

以下のインタラクティブなページから、ご利用を開始してください。

関連情報

詳細につきましては、以下の関連情報をご確認ください。


- クラウド エンジニア Pushpdeep Gupta
投稿先