This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. はじめに

統合されたグラフ作成システムを備えた Checkmk は、メトリックを記録および視覚化するための強力なツールです。 しかし、Grafana を外部グラフ作成システムとして接続すると、さらに便利な場合があります。 たとえば、すでに Grafana を使用しており、Checkmk のデータを他のシステムのデータとマージして共有ダッシュボードに表示したい場合などです。
Grafana 8.x 以降では、すべてのエディションで Checkmk をデータソースとして直接指定し、Checkmk で定義済みの個々のメトリックやグラフ全体を表示することができます。 さらに、正規表現を使用して、グラフに含めるメトリックのホストおよびサービスのグループを定義することで、独自のグラフを動的に作成することもできます。
この記事では、Grafana で Checkmk メトリックを取得して表示する方法について説明します。 ここで使用しているスクリーンショットは Grafana 10.1 で作成したものです。以前のバージョンでは、ユーザーインターフェースが若干異なります。 Grafana の使用方法および設定方法の詳細については、Grafana Labs のドキュメントをご覧ください。
Grafana プラグインは Checkmk とは独立して開発されており、独自のGithub リポジトリで管理されています。 この記事では、Checkmk2.1.0 および2.2.0 と連携するバージョン 3.1 のプラグインのインストール方法について説明します。 このプラグインは Grafana にインストールされるため、Checkmk と一緒に提供することは意味がありません。
2. Grafana へのプラグインのインストール
Grafana サーバーのインストールタイプおよび Checkmk エディションに応じて、プラグインをインストールする方法はいくつかあります。 唯一の制限は、Grafana Cloud ソリューションのユーザーは、少なくともCheckmk Cloud、つまり Checkmk Cloud または Checkmk MSP を使用し、公式の Grafana プラグインコレクションからプラグインをアクティブ化する必要があることです。 オンプレミスでインストールした Grafana は、すべての Checkmk エディションに接続できます。
2.1. コマンドラインを使用したインストール (Checkmk Cloud 以降、独自の Grafana サーバー)
このタイプのインストールには、少なくとも Checkmk Cloud を使用する必要があります。 Grafana を独自のサーバーで運用している場合は、コマンドラインから Grafana プラグインコレクションからインストールすることができます。
root@linux# grafana-cli plugins install checkmk-cloud-datasourceGrafana サーバーサービスを再起動します。
root@linux# systemctl restart grafana-serverプラグインが Grafana インターフェースで使用可能になり、そこで有効化および設定を行うことができます。
2.2. Grafana Cloud GUI によるインストール(Checkmk Cloud 以降、Grafana Cloud)
まず、Checkmk データソースをインストールする Grafana インスタンスにログインします。 次に、Grafana プラグインコレクションでデータソースのページを開きます。Installation (プラグインの管理)タブで、プラグインをインストールする Grafana インスタンスにチェックを入れ、Install (プラグインをインストール)ボタンをクリックします。 プラグインが Grafana インストールの web インターフェイスで使用可能になるまで、数分かかる場合があります。
2.3. zip アーカイブからのインストール (すべてのエディション、独自の Grafana サーバー)
GitHub リポジトリの「リリース」ページには、zip アーカイブ形式の 2 種類のプラグインがあります。
上記で述べた署名付きバージョン「
checkmk-cloud-datasource-X.Y.Z.zip」は、Checkmk Cloud 以降でのみ使用できます。Checkmk2.1.0 以降のすべてのエディションで、旧式の
tribe-29-checkmk-datasource-X.Y.Z.zip命名規則を使用するバージョン。
最新バージョンを zip ファイルとしてダウンロードし、scp などを使用して Grafana サーバーにコピーしてください。

ブラウザを使用する代わりに、コマンドラインから直接ファイルをロードすることもできます。
このためには、現在のバージョンを知っている必要があります。以下の例では、$plugvers 変数にバージョンを記述しています。
root@linux# plugvers='3.1.1'
root@linux# wget https://github.com/Checkmk/grafana-checkmk-datasource/releases/download/v${plugvers}/tribe-29-checkmk-datasource-${plugvers}.zip次に、zip アーカイブを解凍します:
root@linux# unzip tribe-29-checkmk-datasource-${plugvers}.zipプラグインディレクトリがまだ存在しない場合は作成し、Grafana プロセスが実行される ID(通常はgrafana )の Linux ユーザーをその所有者に設定します。
root@linux# mkdir -p /var/lib/grafana/plugins
root@linux# chown grafana:grafana /var/lib/grafana/plugins結果のフォルダを Grafana プラグインディレクトリに移動します。
これは通常、ファイルパス/var/lib/grafana/plugins/ です。
root@linux# mv -v tribe-29-checkmk-datasource /var/lib/grafana/plugins/tribe-29-checkmk-datasource所有権を Grafana ユーザーに変更します。
root@linux# chown -R grafana:grafana /var/lib/grafana/plugins/tribe-29-checkmk-datasourceGit アーカイブをクローンしてインストールする(この記事の古いバージョンで説明されている方法)ことは、もうできません。 プラグインの開発に参加したい場合は、開発ガイドをお読みください。
署名のないプラグインの許可
Grafana 8.0 以降、署名されていない外部プラグインを統合することはできなくなりました。 これは Checkmk プラグインにも適用されるため、追加の手順が必要になります。
これを行うには、[plugins] セクションの/etc/grafana/grafana.ini 設定ファイルを編集します。;allow_loading_unsigned_plugins = という行を次のように変更します。
行の先頭にあるセミコロンを必ず削除してください。
[plugins]
allow_loading_unsigned_plugins = tribe-29-checkmk-datasourceこの設定により、この 1 つのプラグインに対する例外が追加されます。 (Docker) コンテナで Grafana を使用している場合、Grafana の設定を変更するにはいくつかの方法があります。 設定の変更がごくわずかな場合は、環境変数を使用して変更できます。
user@host:~$ sudo docker run -d \
-e GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=tribe-29-checkmk-datasource \
-p 3000:3000 --name grafana \
-v grafana-plugins:/var/lib/grafana/plugins \
-v grafana-db:/var/lib/grafana grafana/grafanaINI ファイルまたは/etc/grafana/ 全体の大規模なカスタマイズが必要な場合は、カスタマイズした INI ファイルをコンテナにリンクするか、volume を作成して、コンテナ内のディレクトリ (/etc/grafana/) にマッピングしてください。
以下は、INI ファイルを--mount にリンクする方法の例です。
これはあくまで例であり、お客様の環境には直接適用できない場合が多いことにご注意ください。
user@host:~$ sudo docker run -d \
--mount type=bind,source=/home/user/grafana/grafana.ini,target=/etc/grafana/grafana.ini \
-p 3000:3000 --name grafana \
-v grafana-plugins:/var/lib/grafana/plugins \
-v grafana-db:/var/lib/grafana grafana/grafanaGrafana サービスの再起動
プラグインのインストール、設定ファイルの更新または変更が完了したら、Grafana サーバーサービスを再起動してください。
root@linux# systemctl restart grafana-serverプラグインが Grafana インターフェースで使用可能になり、そこで有効化および設定できるようになります。
3. Checkmk で Grafana ユーザーを作成する
Grafana 接続には、Checkmk 側に十分な許可を持ち、パスワードではなくオートメーションパスワード(オートメーションの秘密)によって認証されるユーザーが必要です。 通常のゲストユーザーや監視ユーザーでは不十分であり、セキュリティ上の理由から管理者を使用しないでください。
「適切な」ユーザーを作成する最も簡単な方法は、ゲストユーザーの役割(guest )を複製し、追加の認可User management (ユーザー情報への読み取りアクセスを許可)を付与することです。
Grafana ユーザーの役割を別の役割に基づいて作成する場合は、User management に加えて、See all host and services 認可も設定されていることを確認してください。
ロールを作成したら、オートメーションパスワード (オートメーションの秘密) を使用して 1 つ以上の Grafana ユーザーを作成します。 後で、ロールに割り当てられた認可をさらに制限することができます (たとえば、BIまたはイベントコンソールへのアクセスを禁止するなど)。
4. プラグインのアクティブ化と設定
必要なファイルがインストールされたら、Grafana でプラグインを有効にすることができます。 これを行うには、設定に切り替えて、[Data sources ] オプションを選択します。 ここで、[Add data source ] ボタンを使用して新しいデータソースを追加できます。

Checkmk のエントリは、Others カテゴリにあります。

このデータソースのテンプレートは非常にシンプルです。 サイトの URL、エディションのタイプ、および Grafana 用に作成したユーザーを入力してください。 重要:分散環境で Checkmk を使用する場合は、ここにセントラルサイトの URL を入力してください。

複数の Checkmk サイトを接続する場合は、各接続に固有の名前を付けることもできます。
それ以外の場合は、デフォルトの「Checkmk 」または「Checkmk for Cloud Edition 」のままにしておいてください。
Save & test ボタンで接続を保存すると、その接続が Grafana のデータソースとして利用可能になり、最初のグラフを設定できるようになります。
5. グラフの作成
5.1. 空白のダッシュボードの作成
Home > Dashboards に、プラス記号が付いたドロップダウンメニューがあります。New dashboard をクリックして、新しいダッシュボードを作成します。

5.2. 単一のホストメトリックの表示
最もシンプルなダッシュボードは、ホストのサービスに関する 1 つのグラフを表示します。 これは、既製のグラフが存在しないローカルチェックのメトリックでもかまいません。 既存のダッシュボードまたは作成したばかりのダッシュボードに、新しい視覚化を作成します。 まず、ここで「Add visualization 」を選択します。

視覚化を作成すると、データソースの選択画面が表示されます。Checkmk を選択すると、新しく作成したパネルのクエリの編集モードに直接移動します。 パネルは、視覚化のコンテナです。
視覚化するデータへのアクセスは、Checkmk Rawと商業版で少し異なります。 Checkmk Raw では、サイト、ホスト名、サービスなど、あらかじめ定義されたメニューを使用して作業を行います。 商業版では、フィルタのカスケードを定義するオプションがあります。 これにより、正規表現を使用して、非常に詳細な選択を行うことができます。 以下の簡単な例は、すべてのエディションで実行できるように選択されています。
まず、Site を選択し、次に監視でHostname をフィルタリングします。 最初のテストでは、WindowsまたはLinuxエージェントを使用している任意のホストを使用してください。Service としてCheck_MK を選択します。Aggregation のタイプをMaximum に設定します。 選択可能なGraph type は、Single metric またはPredefined graph です。Predefined graphs は、結合グラフも含むCheckmkからメトリックを取得します。 こちらのスクリーンショットは、エージェントの合計実行時間(Time spent waiting for Checkmk agent )を含むSingle metric を示しています。


Grafana は結果を直接表示します。Apply ボタンを使用すると、ダッシュボードを保存せずにグラフを適用することができます。Save を選択すると、新しいDashboard のタイトルを入力する画面が表示され、新しく作成したダッシュボードを保存することができます。

5.3. Checkmk から定義済みグラフを表示する
Checkmk の開発者は、ユーザーが 1 つのリソースのさまざまな側面を簡単に把握できるように、関連する多くのメトリックを一般的なグラフにまとめました。 このような既製のグラフのメトリックは、Grafana で直接表示することができます。
手順は、前のセクションで説明したものと最初は同じです。 ただし、プロセスを完了するには、[Graph type ] エントリPredefined graph 、および使用するサービスの [Predefined graph ] を選択してください。
200 以上のエレメントを含む複合メトリックの選択は許可されていませんというエラーメッセージが表示された場合は、追加のフィルタを使用して選択を制限してください。 不明な場合は、結果を大幅に制限するフィルタをセットの先頭に移動してください。

選択に問題がなければ、[Apply ] ボタンをクリックします。 これで、選択したダッシュボードでグラフを使用できるようになります。

5.4. 複雑なグラフの作成
特に動的なクラスタでは、新しいノードが追加または削除されるたびにグラフをカスタマイズすることなく、参加しているすべてのホストにおけるメトリックの進捗全体を追跡できることが望ましい場合がよくあります。 これを実現するために、グラフを動的に適応させるさまざまなオプションがあります。
最初のオプションは、個々のホストを選択する代わりに、Host Labels またはHost Tags でフィルタリングすることです。
もう 1 つのオプションは、正規表現を使用することです。
正規表現は、ホストまたはサービスに適用できます。
次の例では、filesystem は、ホストがマウントしているファイルシステムの数に関係なく、filesystemを含むすべてのサービスと一致します。

filesystem.*nvme を使用すると、filesystem とnvme の間の文字列は任意であるため、使用するファイルシステムの種類に関係なく、NVMe ドライブ上のすべてのファイルシステムに選択が制限されます。
拡張フィルターオプションに加えて、Aggregation を使用してグラフに表示するメトリックを決定し、Graph を使用して参照として使用するグラフを決定します。 ホスト/サービスのメトリックは、選択したグラフも存在する場合にのみ表示されます。 グラフは、たとえば次のようになります。

5.5. 正規表現を使用したリネーム
各パネルの編集モードには、Transform (正規表現による編集)タブがあります。
ここで、Rename by regex (正規表現による編集)サブ項目を使用して、メトリックの名前を並べ替えたり、不要な情報を非表示にしたりすることができます。
次の例では、コンマとスペースで区切られた 2 つの文字列を検索し、それらを交換して、Service とHost を先頭に明示的に配置しています。

変数$1 および$2 は、上の行で「キャプチャ」された文字列(マッチグループまたはキャプチャグループ)に対応しています。
Grafana では、ネストしたマッチグループも使用できます。
正規表現に関する記事の対応するセクションでは、これらの機能の概要を説明しています。
6. 変数を使用してグラフをより柔軟にする
変数を使用すると、ダッシュボードにグラフを柔軟に追加することができます。 これにより、ドロップダウン選択で特定のメトリックのホストを決定したり、変数を使用して複数のホストのグラフをダッシュボードに同時に追加したりすることができます。 この記事は、Grafana のドキュメントに代わるものではありません。 ここでは、まず第一に、可能なアプリケーションの概要とトピックの紹介を提供したいと考えています。
変数はクエリから作成できます。 この場合、サイト、ホスト、またはサービスをフィルタリングできます。 あるいは、数量やフリーテキストフィールドを定義して、任意の数のフィルタを作成することもできます。
6.1. 変数の作成
各変数は、ダッシュボードのプロパティです。 ダッシュボードの設定で作成する必要があり、そのダッシュボード内でのみ使用できます。 クエリは最も広範な設定が必要であるため、この例でその使用方法を説明します。
変数に関連するプロパティは、そのタイプと名前です。その他のプロパティは、ダッシュボードの明確化のためにのみ使用されます。
名前は、変数を区別できるものにしてください。
したがって、複数の変数を使用して異なるサブセットからホストを選択する場合は、例のようにhost ではなく、このセットを参照する名前、たとえばhost_from_linuxservers を使用してください。

host を作成します。データソースを選択する際には、Checkmk 接続が選択されていることを確認してください。 選択したオブジェクトタイプは、正規表現などを使用してさらに制限することができます。 使用されたフィルタは、Checkmk サーバーで評価されます。 一方、Regex およびSort フィールドは、Grafana によって評価されます。

Save dashboard ページ下部の「Selection options 」の 2 つのチェックボックスは、必要に応じて後でオプションで使用できます。 これらの設定は、必要に応じていつでも変更できます。最初のテストでは、両方をデフォルト設定(空)のままにしてください。
6.2. グラフでの変数の使用
割り当てた変数を適切なフィールドに入力して、柔軟なグラフを作成することができます。 変数は、グラフのタイトルにも使用できます。

ダッシュボードには、各変数のドロップダウン選択が表示され、ダッシュボードに表示する変数の値(ホスト、サービスなど)を設定できます。 複数選択を有効にしている場合は、パネル設定で「Repeat by variable 」オプションを有効にすると、選択した各変数の値に対応するパネルが表示されます。

7. ファイルとディレクトリ
以下のファイルおよびディレクトリは、自己ホスト型の Grafana サーバーに関連しています。
| ファイルパス | 説明 |
|---|---|
|
Grafana はここで (新しい) プラグインを検索します。各プラグインには独自のサブディレクトリがあります。したがって、Checkmk のプラグインはここに配置する必要があります。 |
|
Grafana 設定ディレクトリ。 |
|
Grafana の中央設定ファイル。ここで、許可する署名のないプラグインを定義します。 |
