Checkmk
to checkmk.com
Important

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. はじめに

Checkmk2.4.0 では、Checkmk Cloud以降、つまり Checkmk Cloud および Checkmk MSP でOpenTelemetryメトリックを受信し、監視で処理することができます。 この目的のために、Checkmk には OpenTelemetry コレクターが付属しています。 このコレクターは、プッシュ構成の受信者としてgRPCおよびHTTP(S)転送プロトコルをサポートしています。 スクレイパーとして、Prometheus エンドポイントから(プル構成で)データを収集することもできます。

特定された OpenTelemetry サービスに基づいて、ダイナミックホストマネージメントによりホストを自動的に作成できます。 これらのホストには、スペシャルエージェントにより OpenTelemetryメトリックがCheckmkサービスとして割り当てられます。

簡単にまとめると、3 つのコンポーネント(コレクター、ダイナミックホストマネージメント、スペシャルエージェント)が相互に作用して、サービスが検出され、メトリックが生成されます。 したがって、まずこの 3 つのコンポーネントを設定し、最後に保留中の変更をアクティブにしてください

Tip

ここでご紹介している機能は、技術的なプレビュー、つまり、追って開発および拡張が行われる新機能のプレビューです。 この段階では、機能が追加されるだけでなく、既存の構成が廃止され、再作成が必要になるような変更が行われる可能性があります。 この点について、ご了解のほどよろしくお願いいたします。

2. 設定

2.1. OpenTelemetry コレクターの有効化

まず、サイトが停止している状態でコレクターをアクティブにする必要があります。 これは、サイトユーザーとしてコマンドラインで omd configテキストベースの構成メニューで、次のコマンドを実行します。

OMD[mysite]:~$ omd config

Addons に移動し、OPENTELEMETRY_COLLECTOR を有効にします。

 ┌──────────────────────────Addons─────────────────────────────┐ ┌─────────────────────────────────────────────────────────┐  
   MKEVENTD                                     on   
   MKEVENTD_SNMPTRAP                            off   
   MKEVENTD_SYSLOG                              off   
   MKEVENTD_SYSLOG_TCP                          off   
   OPENTELEMETRY_COLLECTOR                       オン        
   OPENTELEMETRY_COLLECTOR_SELF_MONITORING_PORT 14317   
   TRACE_RECEIVE                                off   
   TRACE_SEND                                   off   
                                                            
 └─────────────────────────────────────────────────────────┘  
 ├─────────────────────────────────────────────────────────────┤  
                < 変更  >       <メインメニュー>                │  
 └─────────────────────────────────────────────────────────────┘  
                                                                  

コレクタの自己監視用のポートは、複数のサイトを使用している場合でも 14317 から次の空きポートに設定されるため、変更する必要はありません。

コレクターを有効にした後、omd start でサイトを再起動してください。

2.2. OpenTelemetry コレクターの設定

Setup > Hosts > OpenTelemetry collector (experimental) を呼び出し、[Add OpenTelemetry collector configuration ] ボタンで新しいコレクタの設定を開始します。

The general properties of the OpenTelemetry collector.

General properties で、新しいコレクターに ID とタイトルを割り当ててください。Site restriction では、左側から右側に少なくとも 1 つのエントリを移動する必要があります。 上の画像では、ローカルサイト mysite が唯一利用可能です。

The specific properties of the OpenTelemetry collector.

コレクターのプロパティで以下の点に注意してください:

  • 2 つのプッシュエンドポイント (gRPC または HTTP) のうち少なくとも 1 つ、または Prometheus スクレイパー (プル) を設定する必要があります。 この図は、すべての IPv4 アドレス (0.0.0.0) の標準ポート 4317 上の、暗号化および認証されていない gRPC エンドポイントを示しています。

  • Host name computation 用に少なくとも 1 つのフィールドを作成してください。 この例では、最も簡単なオプションが選択されています。OpenTelemetry 経由で受信したservice.name フィールドが、Checkmk のホスト名として使用されます。 インラインヘルプには、OpenTelemetry データからホスト名を作成する方法の詳細情報が記載されています。

Save を使用してコレクターを保存します。

2.3. ダイナミックホストマネージメントの設定

ホストが自動的に作成されるように、ダイナミックホストマネージメントを使用して新しいOpenTelemetry 接続を設定します。 準備として、少なくとも最初のテストでは、自動的に生成される OpenTelemetry ホストを保存する別のフォルダを作成することをお勧めします。

ダイナミックホストマネージメント用の新しい接続を設定するには、[Setup > Hosts > Dynamic host management > Add connection:

Properties of an OpenTelemetry connection in the dynamic host management.

Connection properties ボックスで、次の設定を行います。

  • Connector typeOpenTelemetry collector data.

  • OpenTelemetryTest フォルダは、この例では新しいホスト (Create hosts in) のターゲットフォルダとして使用されます。

  • システム環境に応じて、Host attributes を設定します。 OpenTelemetry コレクターの設定時に、既存のホストの名前を作成していない場合、自動的に作成されるホストは、OpenTelemetry のコンテキストでのみ使用される仮想ホストになります。 そのため、監視エージェントとしてはスペシャルエージェント (Configured API integrations, no Checkmk agent) しか使用できず、IP アドレスの設定はNo IP のままにしておく必要があります。

  • Service discovery のチェックボックスを有効にすると、自動的に生成されたホストでサービスディスカバリーが実行されます。 これにより、OpenTelemetry 用のスペシャルエージェントが設定され、アクティブになっている場合、望ましい結果になります。

  • その他のパラメータについては、ダイナミックホストマネージメントに関する記事をご覧ください。

新しい接続をSave.

2.4. スペシャルエージェントの設定

Checkmk サービスも確実に生成されるように、OpenTelemetry スペシャルエージェントの構成を少なくとも 1 つ作成する必要があります。 必要なルールは、xml-ph-0000@deepl.internal ボックスで、コレクターのアクティベーション時に表示されたポート経由で OpenTelemetry コレクター自体を監視するかどうかを決定します。Setup > Agents > Other integrations > OpenTelemetry (experimental):

The rule for configuring the OpenTelemetry special agent.

OpenTelemetry (experimental) ボックスで、OpenTelemetry コレクター自体を、コレクターのアクティブ化時に表示されたポート経由で監視するかどうかを決定します。

ルールの条件では、ホストが自動的に作成されるフォルダ(この例ではOpenTelemetryTest フォルダ)にスペシャルエージェントを割り当てることは明らかです。

Save でルールを保存します。

コレクター、ダイナミックホストマネージメント、スペシャルエージェントの 3 つのコンポーネントの設定が完了しましたので、保留中の変更をアクティブにしてください

2.5. コレクターへのテストデータの送信

IT 環境では、すでに OpenTelemetryメトリックを生 成しているものがどこかに あるため、Checkmk 用の OpenTelemetry コレクターを設定することをお勧めします。

まだ生成されていない場合、またはこの記事で説明する設定例をすばやく試してみたい場合は、GitHub リポジトリで提供されている、仮想 Python 環境で動作するサンプルアプリケーション「Hello metric」を使用できます。

最初のデータが送信されてから、ホストが作成され、サービスが検出され、監視に表示されるまで、2~3 分程度かかります。 次の図は、「Hello metric」サンプルアプリケーションのサービスを示しています。

The OpenTelemetry service created with the 'Hello metric' sample application.

ホスト名hello-metric は、opentelemetry-instrument コマンドのオプションとして指定されたサービス名から生成されます。これは、OpenTelemetry コレクターの設定で指定したとおりです。 Checkmk のサービス名OTel metric hellolevel は、メトリックの名前に、スペシャルエージェントによってプレフィックスOTel metric が追加されて生成されます。

スペシャルエージェントの設定で Monitor the collector オプション、つまりコレクターの自己監視を有効にすると、ホストにいくつかの追加サービスが作成されます。

Tip

Checkmk では、1つのデータポイントのみを含む OpenTelemetry メトリックのみが、1 つのメトリックを持つサービスとして表示されます。

OpenTelemetry の web サイトに掲載されている「Dice Roll」サンプルアプリケーションは、「Hello metric」と非常によく似た動作をします。 「Hello metric」の例で作成した仮想 Python 環境を使用して、「Dice Roll」の例を試すことができます。 ただし、Pythonflask モジュール (pip install flask) もインストールし、こちらで説明されているように、メトリック拡張バージョンでapp.py ファイルを作成する必要があります。

次の呼び出しでは、ターゲットとして Checkmk サーバー(ここでは198.51.100.42 と gRPC ポート 4317)を置き換えてください。

user@host:~$ opentelemetry-instrument \
    --traces_exporter console \
    --metrics_exporter otlp \
    --exporter_otlp_metrics_endpoint http://198.51.100.42:4317 \
    --logs_exporter console \
    --service_name dice-server \
    flask run -p 8080

数分後、ホストdice-server が、サービスOTel metric dice.rolls.とともに監視に表示されます。 ただし、「Dice Roll」のサンプルアプリケーションでは、メトリック「dice.rolls」はネストされているため、常にOK という情報サービスのみが生成されます。 ネストされたメトリックを 1 つではなく、2 つの「フラット」メトリックを作成して、Checkmk で 2 つの別々のサービスを取得します。

2.6. サービスのカスタマイズ

Setup > Services > Service monitoring rules > OpenTelemetry (experimental) ルールを使用して、サービスの閾値などを定義することができます。

3. ファイルとディレクトリ

ファイルパス 説明

~/tmp/check_mk/otel_collector/

OpenTelemetry データが作成される場所です。ホストごとにサブディレクトリが作成されます。 そこに作成されるファイルは JSON 形式です。

~/tmp/check_mk/otel_collector/self+monitoring/

コレクタから収集された集約データが、スペシャルエージェントによる評価のために保存される一時ディレクトリです。

このページでは