NEWS
IBM i アプリの第二の柱 OSS IBM i アプリの第二の柱 OSS
2023.03.16

【OSS】第12回「Prometheusを使ってIBM iを監視する」

【OSS】第12回「Prometheusを使ってIBM iを監視する」
Prometheusを使ってIBM iを監視する

前回の記事(「簡単なGrafanaダッシュボードのデプロイ方法」)では、IBM iを監視するための方法として、オープンソースのGrafanaを使ったダッシュボードの構築法を説明しましたが、今回は同じくオープンソースのPrometheusを使ったIBM iの監視法について説明します。また、GrafanaとPrometheusという2つのツールを組み合わせることで、幅広いデータを監視するダッシュボードが実現できることも説明しています。復習を兼ねて前回の記事と照らし合わせてお読みいただければと思います。(編集部)

2022年12月14日 ジェシー・ゴルジンスキー

ジェシー・ゴルジンスキーが、IBM iを含むテクノロジー・エコシステム全体を、Prometheusを使って監視する方法について解説します。

前回のブログ記事で、オープンソースのデータ可視化ツールであるGrafanaを使って簡単なダッシュボードをデプロイする方法をお見せしました。今日は、違うアプローチを調べようと思います。IBM i上で実行しているGrafanaバックエンドを使う代わりに、Prometheusを活用します。Prometheusはそれ自身を「オープンソースのシステム監視及び警告ツールキット」と定義しています。Prometheusは、IBM iを含むテクノロジー・エコシステム全体を監視するのに使えます。このツールを使うことで、自社システムのパフォーマンスに関する実時間データポイント及び履歴データポイント、経営データ、その他多くのデータにアクセスすることができます。

何故Prometheusなのか?

自社のシステム基盤を監視するのに、Prometheusを使いたいと思うかもしれないいくつかの理由があります。まず、Prometheusは自社システムのメトリクスを永続性のあるものにします。前回のブログ記事で述べたように、Grafanaによる簡単なRESTに基づく統合は、強力で視覚に訴えるダッシュボードを提供する素晴らしい方法です。しかし、Grafanaはいかなるデータも保存しません。それは、単に構成されたデータソースから送られた生の情報を表示するだけです。ですから、前回のブログ記事で述べたRESTに基づく構成を使うと、データはただGrafanaダッシュボードを実行している間だけ収集されるに過ぎません。

加えて、Prometheusの周りのエコシステムは膨大です。コミュニティはこれまで、様々なハードウェアまたはソフトウェアパッケージからPrometheusに情報を送ることのできる数千の「エクスポーター」を提供してきています。Prometheusのウェブサイトには公式リストが継続的に維持されており、GitHubのデフォルトポート割り当てWikiページには利用可能なもっと多くの様々なエクスポーターの完全なカタログがあります。この巨大なエコシステムは、あなたの持つすべてのハードウェア及びソフトウェア基盤を監視するのに十分な装備を備えています。事実、どれ程多くのソフトウェアが既にPrometheusと通信できるかということに驚かされるかも知れません。例えば、WildFlyエクスポーターは、WildFly(即ちJBoss)アプリケーションが重要な情報を公開できるようにします。

更に、Prometheusのプロトコルはかなり普及しているので、独自仕様及びオープンソースの数えきれないほど多くのエンタープライズ監視ツールがそれを理解できます! いくつかの例を挙げてみます:

  • Turbonomic
  • Nagios
  • Splunk
  • DataDog
  • IBM Instana
  • DataStax
  • Zabbix
  • その他多数!

また、Prometheusには堅牢な警告システムも付随していますから、何か重要なイベントが発生した場合、その知らせを受け取ることができます。警告管理機能はテキスト通知、e-メール、チャットシステム等々と統合できます。

トポロジーを理解する

詳細に立ち入る前に、様々な要素が組み合わされる方法をおさらいしてみましょう。主要なコンポーネントは次の通りです:

  • 1つ以上のエクスポーターが、関心のあるエンドポイントに関するデータを提供します。私達の場合、エクスポーターはIBM i上のジョブで実行されます。これらのエクスポーターは、受動的エクスポーターです。つまり、それらはPrometheusにデータを主体的には送出しません。その代わり、それらは求められた場合にPrometheusにデータを提供します。
  • Prometheusのインスタンスは、しばしば24時間実行しています。このPrometheusのインスタンスは、周期的にエクスポーターにメトリクスを要求(取得)します。
  • メトリクスは多くのツールで検査または視覚化することができます。Grafanaが一般的な選択です。それは、巨大なプラグインのライブラリーのおかげで、Prometheusと継ぎ目なく統合され、かつ多くの他の機能を有しています。今の場合、Grafanaは関心のあるメトリクスを可視化したい場合にだけ立ち上げる必要があります。

▲図1. PrometheusとGrafanaを使った全般的トポロジー

IBM iのPrometheusエクスポーターをデプロイする

有難いことに、IBM iのメトリクスをエクスポートするために、IBM iサービス(QSL)を活用するJDBCに基づいたツールがあります! ご想像の通り、このツールはオープンソースです。詳細情報についてはGitHubのプロジェクトページをご覧ください。Prometheusのデプロイは比較的簡単です。リリースページから最新の .jarファイルをダウンロードし、それをIBM iシステム上のストリームファイルとして保管します。そこから次のコマンドを実行するだけです:

java -jar prom-client-ibmi.jar

初めてツールを実行する場合、ツールはいくつかの合理的なデフォルト値をもったデフォルトの構成ファイル(config.json)を作成したいかと尋ねてくる筈です。

▲図2.Prometheusエクスポーターの最初の構成

その後、エクスポーターはポート9853で実行されている筈です。

▲図3. Prometheusエクスポーターの開始成功メッセージ

これですべてです! IBM iのメトリクスをエクスポートするPrometheusエクスポーターはもう動いています。デフォルトの構成は以下のものを含む数百のメトリクスを公開しています:

  • (CPU使用率の様な)システム活動レベル
  • メモリープールの情報
  • Apache HTTPサーバーのメトリクス
  • 遠隔TCP接続の数

本番環境にデプロイする場合、サインアウトした後もそれが実行し続けるように、おそらくこのエクスポーターをサービスとしてデプロイしたいと思うでしょう。GitHubのプロジェクトページには、‘nohup’ ユーティリティまたはIBM i用サービスコマンダーを使ってこれを行う方法についてのガイダンスがあります。

Prometheusのインスタンスをデプロイする

PrometheusのインスタンスはIBM i上で動きません。多くの場合それは、コンテナにデプロイすることができます。私は次のコマンドを実行して、Prometheus提供イメージをDocker Hubからダウンロードすることを選びました:

docker pull prom/Prometheus

あるいは、Podmanを使用している場合は、次のコマンドを実行します:

podman pull docker.io/prom/Prometheus

PrometheusはYAMLで記述されたファイルで構成されています。最も注目すべきは次のことです:

  • Prometheus.ymlは主要な構成ファイル
  • Alerts.ymlは警告システム用の構成

最低限の構成は、メトリクス取得のための単一ターゲット構成です。単一ターゲットをもつ例は次のようになります(図4)。ターゲットのアドレスとポート番号は、エクスポーターが実行されている場所を示すことに注意してください。

▲図4. 簡単なPrometheusの構成

構成の準備ができたら、Prometheus.ymlファイルへのパスを提供するために ‘-v’ を指定し、イメージの文書ページに従って起動することができます。例えば、「prometheus」と言う名前のコンテナ内のイメージを起動するには、次の通りコマンドを入力します:

docker run -d --name=prometheus -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml
 -p 9090:9090 prom/prometheus

この時点で、Prometheusはコンテナ内でポート9090で開始、実行されている筈です。ブラウザーでhttp://<コンテナのIPアドレス>:9090 を指定して、実行中のPrometheusにアクセスできます。最初は、そこには多くのものはありません(図5)。

▲図5.初期のPrometheusのウェブ表示

次のステップは、構成されたターゲットが稼働していることを検証することです。そのためには、ただ状況メニューの下にある「ターゲット」に行くだけです。ここで、構成された1つのターゲットを見ることができ、それは稼働しています(図6)。

▲図6. ターゲットシステムの状況

ターゲットが稼働していることが分かったら、「グラフ」タブを開き色々と試すことができます。図7に示すスクリーンショットでは、既にいくらかの履歴データをもっています。ですから、開始時に最初に目にする筈の画面よりは少々ワクワクするものになっています:

▲図7. 履歴データをグラフィックに表示する

Grafanaをデプロイする

次に、自分用にあつらえたダッシュボードを構築するために、Grafanaの可視化エンジンを使うことができます。前回のブログ記事で行った通りGrafanaをデプロイするために同じ手順を踏みます。

しかしこの場合、新しいデータソースを追加する際に、Grafanaのデータソース・タイプとしてPrometheusを選びます。アドレスには現在実行中のPrometheusサーバーのアドレスを指定します。

▲図8. Grafana中のPrometheusのデータソース

新しいデータソースを使い、通常の場合と同様にGrafanaにダッシュボードが構成できます(図9)。

▲図9.GrafanaのIBM iダッシュボード

監視を次のレベルに引き上げる

結論として、Pmetheusは特にGrafanaと一緒に使った場合、IT基盤の監視ツールとして非常に強力なものとなり得ます。IBM iエクスポーターもSQLを使って容易に拡張できるので、非常に大きな柔軟性をもたらします。もっと詳しい情報は、GitHubのプロジェクトページをご覧ください。要するに、SQLでアクセス可能な数値データはPrometheusを使って監視できます。これにはあなたの会社の経営に関するデータも含まれます。経費データの追跡がしたいですか? サプライヤーのリードタイムや収益データは? SQLがそれらのデータを把握できるなら、Prometheusはそれを取得できます! そしてPrometheusに新しいメトリクスを追加すれば、それらは自動的にGrafanaでも利用可能になります。

会社の規模に関係なく、Prometheusの使用を考える価値はあります。オープンソース・プロジェクトと同様に、洞察と協力を求めてオープンソースリソースというページにリストされているコミュニティ・チャネルに気軽に参加してください。

いいねと思ったらシェア
twitter
facebook
hatena
IBM i アプリの第二の柱 OSS 目次を見る

この連載は…

IBM i アプリの第二の柱 OSS
関連記事
【OSS】第8回「Nginxを使ってウェブコンテンツを素早く動かす」
【OSS】第8回「Nginxを使ってウェブコンテンツを素早く動かす」
【OSS】第4回「IBM iのPythonを始めよう」
【OSS】第4回「IBM iのPythonを始めよう」
【OSS】第11回「簡単なGrafanaダッシュボードのデプロイ方法」
【OSS】第11回「簡単なGrafanaダッシュボードのデプロイ方法」
あなたにオススメの連載
できるIBM i 温故知新編
7記事
できるIBM i 温故知新編
IBM i の”新”必須言語 〜FFRPG入門〜
14記事
IBM i の”新”必須言語 〜FFRPG入門〜
IBM i アプリの第二の柱 OSS
15記事
IBM i アプリの第二の柱 OSS
PAGE TOP