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 によって、いわゆるラウンドロビンデータベース (RRD) に内部的に保存されます。 これらのメトリックは、ビルトインのグラフ作成システムによって処理され、Checkmk web インターフェイス内のさまざまな場所で視覚化されます。たとえば、サービスリストのパーフオメーターや、サービスリストからグラフアイコンを使用して表示できるグラフなどです。 メトリックを視覚化するインターフェースは HTML5 に基づいており、商業版と Checkmk Raw で同じです。 このテーマの詳細については、「グラフ」の記事をご覧ください。
Checkmk にビルトインされているグラフ作成機能と並行して、外部メトリックデータベースに接続し、メトリックをInfluxDBまたはGraphite に送信することもできます。 転送は Checkmk マイクロコア (CMC) によって行われるため、この機能は商業版でのみご利用いただけます。
この記事では、Checkmk で InfluxDB および Graphite へのメトリックの転送を設定する方法について説明します。
2. メトリックを InfluxDB に送信します

InfluxDB は、時系列データ用のオープンソースのデータベース管理システム (DBMS) で、現在この分野で最も人気のあるソリューションです。 V2.0 以降、InfluxDB は、データベースへのメトリックデータの書き込みなど、さまざまな機能に使用できる新しい統合 API、InfluxDB v2 API を提供しています。 Checkmk は InfluxDB v2 API を使用し、Checkmk から InfluxDB にメトリックを送信できるだけでなく、InfluxDB の既存の構造に適切に保存する機能も提供しています。 この API を使用することで、メトリックデータの送信設定が簡略化される一方で、Checkmk は将来の拡張にも対応できるようになります。
重要:InfluxDB v2 API はこのバージョン以降でのみ利用可能であるため、この章で説明する設定は InfluxDB V2.0 以降への接続にのみ適用されます。 InfluxDB V1.8 以前を使用している場合は、InfluxDB は V1.8 までのGraphite のカーボンプロトコルをサポートしているため、Graphite接続の章の説明に従って設定してください。
2.1. 情報の収集
Checkmk でセットアップを開始する前に、Checkmk に接続する InfluxDB ターゲットシステムについて、以下の情報を入手してください。
| パラメーター | 説明 |
|---|---|
ホスト名 |
InfluxDB サーバーの名前 (または IP アドレス)。 HTTPS 経由で接続が暗号化されている場合は、IP アドレスにはほとんどの場合証明書が発行されないため、DNS 名を入力することが特に重要です。 |
ポート番号 |
InfluxDB サーバーにアクセスするための TCP ポート番号です。
デフォルトのポートは |
プロトコル |
|
組織 |
InfluxDB では、組織は複数のユーザーのためのワークスペースです。 最初の組織は、InfluxDB のセットアップ時に要求されます。 追加の組織は、InfluxDB GUI から手動で作成できます。 |
バケット |
InfluxDB は、時系列データをバケットと呼ばれるコンテナに保存します。
特に、各バケットには保存期間が定義されています。
InfluxDB は、この期間より古いデータポイントはすべて自動的に削除します。 |
トークン |
Checkmk と InfluxDB 間の通信は、InfluxDB v2 API 経由で行われます。 InfluxDB は、API 経由の要求を認可するために API トークンを使用します。 API トークンは特定のユーザーに属し、そのユーザーの組織内の InfluxDB に対する許可を識別します。 トークンは、InfluxDB GUI を使用して、組織内のすべてのリソースへの完全な読み取りおよび書き込みアクセス権(オールアクセストークン)または組織内の特定のバケットへの選択したアクセス権(読み取り/書き込みトークン)のいずれかで作成されます。 トークンはクリップボードにコピーできるため、後で Checkmk の設定時に貼り付けるのが簡単です。 Checkmk サーバーへの接続に使用されるトークンは、もちろん、Checkmk で設定されているバケットの読み取りおよび書き込み許可を持っている必要があります。 |
詳細については、InfluxDB のドキュメントをご参照ください。
この情報があれば、Checkmk の設定は 2 つの簡単な操作で完了します。
2.2. Checkmk を InfluxDB に接続する
セットアップメニューを開き、もっと表示を有効にしてください。そうしないと、Setup > Exporter > InfluxDB connections (InfluxDB 接続)メニュー項目が表示されません。 これを選択すると、既存の InfluxDB 接続のリストが表示されます。 おそらくここではまだ何も設定していないため、このリストは空です。
データを送信するには、接続が前提条件となります。 ただし、メトリック情報を選択するルールを設定しないと、データは送信されません。
まず、Add connection で新しい接続を作成します。

General properties で、通常どおり、接続の内部 ID とタイトルを指定します。
分散監視の場合のように、現在のサイトに他のサイトが接続されている場合は、Site restriction で特定のサイトへの接続を制限することができます。 これを行うには、まず、All sites エントリを左側の列に移動し、メトリックを受信するサイトを左側の列から右側のSelected 列に移動します。メトリックを受信しないサイトは、左側の列に残ります。
次に、次のボックスでInfluxDB Connection properties:

ここで、前のセクションでまとめたパラメータ値の最初のセットを入力します。
Save で接続を保存すると、接続のリストに戻ります。

接続リストの [Enabled ] 列には、接続の状態に関する重要な情報が表示されます。 上のスクリーンショットのリストに 3 つのエントリが表示されても驚かないでください。 すべての記号が機能している様子を確認するために、リストに 2 つの接続を追加しました。Enabled の最初の列では、接続が 有効か、または 使用不能かを確認できます。 2 列目では、その接続に ルールがすでに存在するか、または 存在しないかを確認できます。
メトリック情報を選択するルールに関連付けられるまで、接続を介してデータは送信されません。 このルールは、Send metrics to InfluxDB と呼ばれます。 ルールアイコンはボタンであり、ルール作成へのショートカットです。 ルールが設定されている接続の場合、をクリックしてルールセットの概要ページを開くと、その接続に対して有効になっている、または有効になるルールが強調表示されます。 ルールが設定されていない接続の場合、をクリックすると、ルール作成ページに直接移動します。
次の章では、このルールで指定できる内容について詳しく説明します。
2.3. メトリック情報の選択
ルールを使用して、Checkmk で InfluxDB サーバーに送信されるデータと、その保存先を決定します。
Send metrics to InfluxDB ルールセットは、Setup > Services > Service monitoring rules にあり、セットアップメニューの検索からすばやくアクセスできます。また、接続リストをクリックすると最もすばやくアクセスできます。

Send metrics to InfluxDB ボックスで、まず前のセクションで作成した接続を選択し、次に InfluxDB サーバー上のデータの保存先を指定します。 ここで、InfluxDB サーバー用に収集する2 番目の情報セットを入力します。Organization を使用して、データを受信するユーザーを決定し、Bucket を使用して、メトリックの保存期間を決定します。 複数の選択は不可能です。つまり、たとえば、異なる組織で使用するために、複数のバケットにメトリックを送信することはできません。
以下では、Checkmk から InfluxDB サーバーに送信されるメトリックデータを選択します。Metrics of service はデフォルトで既に選択されており、メトリックの送信を有効にします。Service state チェックボックスをオンにすると、サービス状態が独自のメトリックとして送信されます。
Additional values per metric を有効にすると、表示用に、State of service やThresholds などのメタデータをメトリックに追加することができます。 ここで、Unit は、現在、アクティブチェックがサポートしているメトリックにのみ機能することに注意してください。 その理由は、アクティブチェックのみに単位を指定するオプションがあり、CMC は他のメトリックにはアクセスできないためです。
最後の選択メニュー「Tags to use 」では、ホストタグやラベルなどのメタデータがメトリックに追加されます。これらは主にフィルタリングに使用され、その目的のために最適化されています。 デフォルトで選択されている「Host name 」および「Service name 」は、選択を解除できない必須項目です。
InfluxDB では、Additional values per metric はフィールドとして保存され、Tags to use はタグとして保存されます。
最後に、変更をアクティブにして接続を作成し、ルールを作成します。 メトリックの送信に問題がある場合は、以下のエラーの診断に関する情報を参照してください。
2.4. InfluxDB でのメトリックの表示
Checkmk からのメトリックが InfluxDB サーバーに到着すると、InfluxDB GUI に表示することができます。
例として、メモリ使用量を表すメトリック「total_used 」のグラフを以下の画像に示します。

注:このメトリックは、Checkmk のMemory サービスにある、メトリック名Total used memory.
3. Graphite へのメトリックの送信

Graphite は、メトリックの保存、取得、共有、視覚化を行う、よく知られたオープンソースの時系列 DBMS です。
Graphite は、データを待機してデータベースに保存する Carbon ディーモンで構成されており、そこから Graphite web アプリケーションを使用して処理され、グラフとして表示されます。
Checkmk を使用して、プレーンテキストプロトコルで Graphite の Carbon ディーモンにメトリックを転送することができます。Carbon ディーモンは、ポート 2003 でこのプロトコルからのデータを待機しています。
プレーンテキストプロトコルでは、レコードは<metricpath> <value> <timestamp> という非常にシンプルな形式で構成されています。ここで、<metricpath> はピリオドで区切られた一意の識別子です。
InfluxDB 接続とは異なり、デフォルトでは、Graphite 接続が有効になると、すべてのメトリックデータがすぐに送信されます。 これを望まない場合は、接続を有効にする前にルールでメトリックを選択し、ルールと接続を同時に有効にしてください。
3.1. メトリック情報の選択
Checkmk の [Setup > Services > Service monitoring rules ] に、2 つのルールセット「Send host metrics to Graphite 」と「Send service metrics to Graphite 」があります。 設定は、ホストメトリックとサービスメトリックで同じ方法で行います。 ここでは、サービスメトリックの設定例を示します。 ホストメトリックも、同じ方法で設定します。
Send service metrics to Graphite ルールを使用して、メトリックとともに送信する値を選択できます。

次に、Conditions ボックスで、特定のホストおよびサービスへの送信を制限することができます。 制限ルールを設定しないと、すべてのデータが送信されます。そのため、まず、上記のスクリーンショットで表示されているすべてのチェックボックスをオフにして、送信をグローバルに無効にするルールを作成することをお勧めします。 次に、Graphite サーバーにメトリックを送信するホストおよびサービスについて、必要なメトリック情報を含む特定のルールを作成します。 特定のルールをグローバルルールの前に配置します。

myhost のサービスメトリックのみ送信されます。3.2. Checkmk と Graphite の接続
Setup > General > Global Settings > Monitoring Core > Send metrics to Graphite で、Graphite サーバーへの接続を設定します。そこにあるAdd new Graphite connection:

明らかな Graphite サーバーの詳細 (Carbon プレーンテキストプロトコルのポート名と番号) に加えて、Optional variable prefix を使用して、各ホスト名に追加するプレフィックスを設定することもできます (一意の名前を使用する場合など)。
Checkmk は、プレーンテキストプロトコルのメトリックパスを<host>.<service>.<metric> に設定します。
ルールおよび接続の変更をアクティブにすると、Graphite の設定は完了です。
3.3. Graphite でのメトリックの表示
Graphite GUI では、Checkmk から受信したメトリックも表示できます。
次の図は、InfluxDB GUI で例としてすでに示した、total_used メトリックのグラフです。

4. エラー診断
メトリックが予想した場所に届かない場合は、~/var/log/cmc.log ファイル(Checkmk Micro Coreのログファイル)で、サイトからの診断情報を見つけることができます。
以下の例は、Checkmk で設定されたバケットが InfluxDB サーバーに存在しない場合のメッセージです。
2022-01-10 11:41:35 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully initiated connection
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully connected
2022-01-10 11:41:36 [3] [influxdb https://myinfluxdb.example.com:8086] POST [404] {"code": "not found", "message": "bucket \"my_bucket\" not found"}
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Closing connection次の例は、Graphite サーバーへの接続に失敗した場合に受信されるメッセージです。
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Successfully initiated connection
2021-12-15 17:33:33 [4] [carbon 10.0.0.5:2003] Connection failed: Connection refused
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Closing connectionこのような状況では、Checkmk Micro Core は自動的に接続を再試行します。
重要:パフォーマンス上の理由から、ターゲットシステムに接続していない間に生成されたメトリックはキャッシュされず、失われます(または Checkmk RRD でのみ利用可能になります)。
注:ログメッセージが意味不明の場合は、Setup > General > Global Settings > Monitoring Core > Logging of the core でログレベルのデフォルト値を変更することができます。ここでは、InfluxDB (InfluxDB processing) および Graphite (Carbon connections) のログ記録に関するエントリを見つけることができます。
