Google Cloud 上の IBM MQ インスタンスを Prometheus 指標でモニタリングする方法
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 に指標を保存できます。以下より詳細をご確認ください。
Google Cloud Managed Service for Prometheus にてマネージド コレクションを使ってみる
Google Cloud Managed Service for Prometheus にてセルフデプロイ コレクションを使ってみる
Google Cloud Managed Service for Prometheus にて OpenTelemetry Collector を使ってみる
解決方法:
IBM MQ クライアント環境で実行する Python クライアントは、PCF コマンドを発行し、リクエストはキュー マネージャーにリダイレクトされ、そこで処理後に、クライアントに返信されます。Python クライアントと MQ クライアント間のリンクは、実行時に動的に確立されます。Ops エージェントには、http サーバー(/metrics パス)をポーリングしてデータを収集し、Cloud Monitoring に転送し続ける prometheus レシーバーがあります。
サンプルコード:
以上が、必要とされる依存関係となります。それではこれより IBM MQ 指標について、いくつか例を用いて、MQ Metrix Exporter の実装について確認します。次のサンプルコードでは、3 つの有用な指標を取得できます。
現在の接続数
キューの深さ
キュー マネージャーの健康状態
このコードを拡張して、必要とされる指標を取得できます。
指標のコレクション
エクスポートされた指標は、データコレクタで収集する必要があります。以下の手順にて、ホスト上で Ops エージェントをセットアップしてください。
Ops エージェントをインストールする。バージョン 2.25.0 以上をインストールする必要があります。
注: ターゲット ホストを変更し、コレクタを MQ Metrix Exporter が動作しているマシンに向けてください。
Ops エージェントの再起動
Cloud Monitoring で Prometheus 指標の表示
上記のように MQ Metrix Exporter と Ops エージェントを実行後、Cloud Monitoring で利用可能な以下のオプションを使用して指標データを可視化できます。
また、Prometheus UI や Grafana など、他のインターフェースにおいても、指標を表示可能です。
先にご説明した 3 つの MQ 指標が取り込まれていることを確認するために、PromQL を使用します。
Google Cloud コンソールで [Monitoring] へ移動。
[Monitoring] のナビゲーション パネルで、[Metrics Explorer] をクリック。
[PromQL] タブを選択。
以下のクエリを一つずつ実行すると、データとチャートが表示されます。
指標 1: 現在の接続数
総括
MQ Metrix Exporter と Ops エージェントのコンポーネントは元々独立しているため、分散してデプロイすることも、同じマシンにバンドルしてデプロイすることも可能です。しかしながら、MQ モニター(またはエクスポーター)は、スケーラビリティを確保するために、MQ サーバーとは別のマシンにデプロイすることを推奨します。
上記のサンプルコードでは、いくつかの指標をカバーしていますが、ソリューションを拡張して、pymqi ライブラリで利用可能な PCF コマンドを実行することで、以下の指標も収集可能です。
共有接続
アクティブなチャネル
チャネルのステータス
メッセージの合計件数
送信、受信バイト数
送信、受信バッファ
キューの深さの割合
キュー I/O
commit されていないメッセージ
キューに追加されたメッセージ
キューから出されたメッセージ
次のステップ
Cloud Monitoring は、クラウドを利用したアプリケーションのパフォーマンス、稼働時間、そして全体的な健全性を可視化します。一方、Cloud Logging は、大規模に稼働し、アプリケーションとプラットフォームのログデータ、および Google Cloud 内外の GKE 環境、VM、その他のサービスからカスタム ログデータを取り込むことができるフルマネージド サービスです。
以下のインタラクティブなページから、ご利用を開始してください。
関連情報
詳細につきましては、以下の関連情報をご確認ください。