2022年9月14日 ジェシー・ゴルジンスキー
GrafanaバックエンドをIBM iにデプロイし、Grafanaコンテナイメージからそれに接続する方法を、ジェシー・ゴルジンスキーが一歩ずつステップを踏んで説明します。
IBM iのオープンソース例の中の「秘宝」は、Grafana用のサンプルバックエンドです。GrafanaはIT基盤の様々な部分を監視するための人気のツールです。そのGitHubページには「オープンで構成可能な観測可能性とデータ可視化プラットフォーム」と記されています。本日の課題ではサンプルのGrafanaバックエンドをIBM iにデプロイし、Grafanaコンテナイメージからそれに接続します。
前提条件
まず、いくつかの前提ソフトウェアをインストールする必要があります。これは、IBM iではNode.js(私達はバージョン18を使います)が必要であり、かつサンプルのGrafanaバックエンドをダウンロードするためのいくつかのツールが必要であることを意味します。SSHも使いたいと思うでしょうから、まだSSHの設定を行っていないのであれば、必ずSSH環境を適切に設定してください。
Yumはインストール済みであると仮定し、次のコマンドを実行することで必要なソフトウェアがインストールできます。
yum install ca-certificates-mozilla nodejs18 wget tar-gnu gzip
別な方法として、これらのパッケージをACS(Access Client Solutions)ツールを使ってインストールすることもできます。
いくつかの他のOSにDockerまたはPodmanをインストールする必要があります。概念実証をするためにローカルワークステーションから始めることができます。DockerもPodmanも複数のプラットフォーム用のものが利用可能ですが、必ず許諾要件に従うようにしてください。この記事を書いている時点では、Windows用Dockerデスクトップは、いくつかの状況で使用するためには課金に基づいた許諾が必要です。私の場合は、このリンク先の指示に従い、ローカルのWindowsシステムにPodmanをインストールしました。
コンテナエンジンとIBM iが必要とするものをインストールしたら、先に進む準備は完了です!
GrafanaバックエンドをIBM iにデプロイする
本日の課題では、IBM iオープンソース例リポジトリで公開された、サンプルのGrafanaバックエンドをデプロイします。最初にGrafanaバックエンドをインストールする場所を決めます。この記事では、/opt/grafanaにインストールします。次に下記の手順に従い、「cd」コマンドを使ってそのディレクトリをホームディレクトリにしてIBM iオープンソース例リポジトリをダウンロードし、サンプルコードを解凍します。
mkdir -p /opt/grafana cd /opt/grafana wget https://github.com/IBM/ibmi-oss-examples/archive/refs/heads/master.tar.gz tar -xzvf master.tar.gz --strip-components=3 ibmi-oss-examples-master/nodejs/grafana-backend
少し立ち止まって、上記の「tar」コマンドでやったことを振り返りましょう。
- -xzvfはtarコマンドが行う操作に以下の指示を行います
・xは抽出を意味します
・zはgzipの解凍を行うことを意味します
・vはコマンド実行中にメッセージを表示することを意味します。視覚的なフィードバックがある方が良いからです。
・fはファイルに対して操作を行うことを意味します - master.tar.gzは解凍するファイルです
- –strip-components=3は、tarに対して解凍時にパスから最初の3つのディレクトリを除去するよう指示します。今回のケースでは、tarファイル中のibmi-oss-examples-master/nodejs/grafana-backendというディレクトリにサンプルコードが置かれていますが、解凍時にそのパスを除去したいのです。
- ibmi-examples-master/nodejs/grafana-backendは解凍したいディレクトリです。
この時点で、サンプルのバックエンドをダウンロードし、その内容を解凍し終えています。これで、サンプルを実行するために必要なnpmパッケージをインストールするステップに進むことができます。
/QOpenSys/pkgs/lib/nodejs18/bin/npm install
これで起動準備が整いました!
/QOpenSys/pkgs/lib/nodejs18/bin/node index
しかし、デフォルトではサーバーはポート3333上で動作しますので、次の成功メッセージを確認しなければなりません。
▲図1. ポート3333を監視することに成功したメッセージ
もしポート3333が使えない場合には、PORT環境変数を使うことができます。例えば、次のようにします。
export PORT=9333
この時点で、GrafanaバックエンドはIBM iシステム上で監視状態になり、データを提供する準備が整います。
PodmanまたはDockerのGrafanaサーバーをデプロイする
そして下記のコマンドを使い、公式のオープンソースイメージをDockerハブからダウンロードします。
docker pull grafana/grafana-oss
あるいは、Podmanを使っている場合には、以下のコマンドを使います。
podman pull docker.io/grafana/grafana-oss
「Grafana」という名前のコンテナにあるイメージを起動するために以下のコマンドを実行します。
docker run -d --name=grafana -p 3000:3000 grafana/grafana-oss
または、podman用には以下のコマンドを実行します。
podman run -d --name=grafana -p 3000:3000 grafana/grafana-oss
これですべてです! これでブラウザーにhttp://localhost:3000を指定して図2のようなGrafanaインターフェースにアクセスできます。
▲図2.Grafanaインターフェース
ユーザー名「admin」のデフォルトのパスワードは「admin」です。このデフォルトのパスワードを使ってログインした場合、もっと安全な何か別のパスワードに変更するようプロンプトが表示されます。そして、図3のようなGrafanaホームページが表示されます。これですべてです! Grafanaは実行しています!
▲図3.Grafanaのホームページ
SimpleJsonプラグインをインストールする
プラグインをインストールするために、「設定」ボタン(歯車のアイコン)を画面左で見つけ、これをクリックして「プラグイン」に移動します(図4)。
▲図4.プラグインを導入する
「SimpleJson」を探し、Grafana LabsからSimpleJsonプラグインをインストールします(KapacitorSimpleJsonなどの他の検索結果は無視します)(図5)。
▲図5.Grafana LabsからSimpleJsonプラグインをインストールする
データソースを追加する
さてここで、IBM iバックエンドをデータソースとして追加します。そのためにGraphana構成の画面に移動し、「データソース」オプションを見つけます。データソースを追加するためにそのボタンをクリックします(図6)。
▲図6. IBM iバックエンドをデータソースとして追加する
データソース・タイプの一覧が表示されます。SimpleJsonを探し、そのオプションを選択します(図7)。
▲図7.「SimpleJson」を探し、そのオプションを選択する
新しいデータソースとして、デフォルトの「SimpleJson」という名前をそのままにするか、あるいはもっと内容が分かりやすい何か別の名前を付けます。URLにはIBM iのホスト名とポート番号(デフォルトのポート上でバックエンドを動かしているならば3333)を指定します。例えば、myibm.mycompany.com:3000という具合です。Grafanaがバックエンドと通信できることを検証するために「保存とテスト」をクリックします(図8)。
▲図8. 新しいデータソースとURLに名前を付ける
例題のダッシュボードをインストールする
この時点でGrafanaはIBM iシステムと通信しています! ですから、次にデータの可視化に着手しましょう。左側にある画面(4つの小さな四角形のように見えます)のDashboardsボタンをクリックし、「import」ボタンをクリックします。
▲図9. Dashboardsボタンをクリックし「import」ボタンを選択する
バックエンドコードと同時にGrafanaの例にサンプルダッシュボードを含めます。新しいブラウザーウィンドウを開き、こちらのリンクを通じてJSON表現に直接移動することができます。それを「パネルjson経由でインポート」に単純にコピー&ペーストし、「ロード」をクリックします(図10)。
▲図10. JSON表現を「パネルjson経由でインポート」フィールドにコピー&ペーストし、「ロード」をクリックする
図11の画面でIBM i(SimpleJson)のデータソースを選ぶことができます。
▲図11. この画面でIBM i(SimpleJson)のデータソースが選択可能
これで、IBM iシステムからのリアルタイムデータを可視化しています(図12)。ここに文書化されているようにQSYS2.HTTP_SERVER_INFOに対して適切な修正レベルを適用している場合に限り、HTTPサーバー・メトリクスを利用できることに注意してください。
▲図12.IBM iシステムからのリアルタイムデータを可視化
自分独自のメトリクスを追加する
サンプルのGrafanaバックグラウンドは膨大なシステム属性を提供していますが、提供されたサンプルダッシュボードはそれらすべてを可視化している訳ではありません。新しいパネルを追加しましょう。「新しいパネル」オプションを見つけることから始めます(図13)。
▲図13. 「新しいパネル」オプションを探す
「新しいパネルを追加する」を選びます。ここには試すことのできる数多くのオプションがありますが、活動中のスレッド数を時系列で表示する新しいグラフを追加しましょう。照会定義は図14のようなものになります。
▲図14. 活動中のスレッド数を時系列で表示する新しいグラフを作成するために「新しいパネルを追加する」を選ぶ
これで図15のように活動中のスレッド数を監視しています!
▲ 図15. 活動中のスレッド数を監視する
あなたが欲しいメトリクスをサンプルバックエンドが公開していない場合はどうすればよいでしょうか? 心配いりません! 単にプロジェクトのREADMEに進んでください。YAMLで書かれた構成ファイルを編集することで、バックグラウンドに自分独自の照会を比較的簡単に追加できます。これにより、Grafanaで可視化することができます。この自分独自のメトリクスは、もっと多くのIBM iサービスまたはリアルタイムの売上高のようなあなたの企業経営に関する情報を意味しているかもしれません。
次は何か?
本日の課題では、単一システムを監視するための簡単なダッシュボードを設定しました。複数のシステムを持っている場合、追加のデータソースを加えることができます。これにより、あなたは複数システムを監視する複数のダッシュボードまたは単一のダッシュボードをデプロイできます。
次回のブログでは、IT基盤の監視に使用されるもう1つの人気ソリューションPrometheusを使ってシステムを統合する方法をお見せします。Prometheus は、履歴データを追跡するための時系列データベースを提供し、多くの場合、ダッシュボードと視覚化のためにGrafanaと組み合わせられます。 Prometheus は、DataDog、Nagios、IBM Instana など他の多くの監視ツールとも統合されています。
IBM i の運用において、日々システムの稼働状況をどのように監視・管理していますか?今回は、オープンソースのログの可視化ツールであるGrafanaをIBM iにインストールし、IBM iの稼働状況をグラフィカルに監視する方法をお伝えします。今回の記事では詳細な説明をしておりませんが、Grafanaを使うことでIBM iだけでなく他システムのハードウェアやアプリケーションを含むソフトウェアの監視も可能であることも覚えておくべき重要な点です。(編集部)