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

1.1. 背景と動機

なぜ Prometheus を Checkmk に統合すべきなのか、疑問に思う方もいらっしゃるかもしれません。そこで、この点について重要な注意点を1つご説明いたします。 当社の Prometheus 統合は、すでに Prometheus をご利用のお客様すべてを対象としています。 Prometheus を Checkmk に統合することで、このギャップを埋めることができ、2つの監視システムを継続的にチェックする必要がなくなります。

これにより、2 つのシステムのデータを関連付け、エラー分析を迅速化すると同時に、Checkmk ユーザーと Prometheus ユーザー間のコミュニケーションも円滑になります。 したがって、Checkmk は引き続き「単一の画面」としてご利用いただけます。

最後に、コンテキストの重要性

この統合の最も嬉しい副次的なメリットは、Prometheus のメトリックが Checkmk のおかげで自動的に意味のあるコンテキストを取得できることです。 たとえば、Prometheus は使用中のメインメモリの容量を正しく表示しますが、Checkmk では、これが使用可能なメモリ総容量の何パーセントに相当するかを調べるために、手動で追加の手順を行う必要はありません。 この例はごくありふれたものですが、Checkmk が監視を容易にする点を、細部まで示しています。

1.2. エクスポーターまたは PromQL

Prometheus の最も重要なエクスポータの統合は、特別なエージェントによって提供されています。 Prometheus 用の以下のエクスポータが利用可能です。

必要なエクスポーターがサポートされていない場合、Prometheus の経験豊富なユーザーは、Checkmk から Prometheus に直接、自己定義のクエリを送信することもできます。 これはPrometheus 独自のクエリ言語である PromQL を使用して実行されます。

2. 統合の設定

2.1. ホストの作成

Prometheus にはホストの概念が存在しないため、まず、必要なメトリックを収集する場所を作成します。 このホストは、スペシャルエージェントの連絡窓口となり、後で Checkmk 内の適切なホストに配信されたデータを分配します。 これを行うには、Setup > Hosts > Hosts > Add host を使用して新しいホストを作成します。

prometheus hostname

指定したホスト名が Checkmk サーバーで解決できない場合は、Prometheus サーバーにアクセスできる IP アドレスを入力してください。

環境に合わせたその他の設定を行い、Save & view folder で選択内容を確認してください。

2.2. Prometheus のルールを作成する

Checkmk が Prometheus からメトリックを見つけるには、まず、Prometheus ルールセットを使用してスペシャルエージェントを設定する必要があります。 これは、Setup > Agents > VM, cloud, container から確認できます。 使用するエクスポータに関係なく、Prometheus サーバーの web フロントエンドの接続をカスタマイズするためのオプションがいくつかあります。

  • URL server address: 必要なすべてのポートを含めて、Prometheus サーバーの URL を指定します。 プロトコルは、以下で選択できるため、ここでは指定しないでください。

  • Authentication: ログインが必要な場合は、ここにアクセスデータを入力してください。

  • Protocol: インストール後、web フロントエンドは HTTP 経由で提供されます。 HTTPS でアクセスを保護している場合は、ここでプロトコルを適宜変更してください。

デフォルト値は、次のスクリーンショットで確認できます。

prometheus connection details

Node Exporter を使用した統合

たとえば、Prometheus から、いわゆるScrape Targets のハードウェアコンポーネントを統合したい場合は、Node Exporter を使用します。Add new Scrape Target を選択し、開くドロップダウンメニューからNode Exporter を選択します。

prometheus ruleset exporter

ここでは、Node Exporter がクエリするハードウェアまたはオペレーティングシステムのインスタンスを選択できます。 取得したくない情報については、いつでも選択を解除することができます。 この方法で作成されたサービスは、他の Linux ホストで使用されているのと同じチェックプラグインを使用します。 つまり、その動作はすでに慣れているものと同じであるため、新しいことに慣れる必要なく、閾値の設定やグラフの操作をすばやく行うことができます。

通常、エージェントは、Checkmk のホストにデータを自動的に割り当てようとします。同様に、データを取得する Checkmk のホストにもデータを割り当てようとします。 ただし、Prometheus サーバーのデータに IP アドレス、FQDN、localhost のいずれも存在しない場合は、Explicitly map Node Exporter host オプションを使用して、Prometheus サーバーのデータから Checkmk の Prometheus ホストに割り当てるホストを指定してください。

cAdvisor を使用した統合

cAdvisor エクスポート機能を使用すると、Docker 環境を監視し、メトリックを返すことができます。

Entity level used to create Checkmk piggyback hosts メニューから、Prometheus からのデータを、集約済みのフォームで収集するかどうか、および収集する方法を指定できます。 次の 3 つのオプションから選択できます。

  • Container - Display the information on container level

  • Pod - Display the information for pod level

  • Both - Display the information for both, pod and container, levels

Both またはContainer を選択し、コンテナのホストを作成する名前も定義してください。 命名には、次の 3 つのオプションがあります。Short オプションがデフォルトです。

  • Short - Use the first 12 characters of the docker container ID

  • Long - Use the full docker container ID

  • Name - Use the name of the container

prometheus cadvisor names

ここで選択した内容は、ダイナミックホストマネージメントによるホストの自動作成および削除に影響します。

Monitor namespaces matching を使用すると、監視するオブジェクトの数を制限することができます。 正規表現でカバーされない名前空間はすべて無視されます。

PromQL 経由の統合

すでに述べたように、スペシャルエージェントを使用すると、PromQL 経由で Prometheus サーバーにリクエストを送信することもできます。 「Service creation using PromQL queries > Add new Service 」を選択します。 「Service name 」フィールドを使用して、Checkmk で新しいサービスに付ける名前を決定します。

次に、Add new PromQL query を選択し、Metric label フィールドを使用して、Checkmk にインポートするメトリックの名前を指定します。PromQL query フィールドにクエリを入力します。 このクエリは1 つの値のみを返すことが重要です。

prometheus ruleset promql

この例では、Prometheus に、実行中およびブロックされているプロセスの数を問い合わせます。 Checkmk では、これらのプロセスと 2 つのメトリック(Running およびBlocked)が、Processes というサービスに統合されます。

これらのメトリックに閾値を設定することもできます。 これを行うには、Metric levels をアクティブにして、Lower levels またはUpper levels のいずれかを選択します。 これらは常に浮動小数点数を指定しますが、もちろん、整数のみを返すメトリックも参照します。

Prometheus ホストにルールを割り当てる

最後に、このルールを先ほど作成したホストに明示的に割り当て、Save で確定します。

prometheus ruleset explicit host

2.3. サービスディスカバリー

スペシャルエージェントの設定が完了しましたので、Prometheus ホストでサービスディスカバリーを実行します。

prometheus discovery

3. ダイナミックホストマネージメント

3.1. 基本設定

Kubernetes クラスタの監視は、おそらく Prometheus が実行する最も一般的なタスクの 1 つです。 Kubernetes によってオーケストレーションされ、Prometheus によって監視される、非常に短命なコンテナの統合を確実にするために、Checkmk でも、商業版ではダイナミックホストマネージメントを設定することができます。 個々のコンテナからのデータは、ピギーバックデータとしてCheckmk に転送されます。

Setup > Hosts > Hosts > Dynamic host management > Add connection を使用して新しい接続を作成し、接続タイプとして「Piggyback data 」を選択し、「Add new element 」を使用して、新しいホストを動的に作成する条件を設定します。

ピギーバックメカニズムによって Checkmk にデータが送信されなくなった場合に、ホストを動的に削除する必要があるかどうかをご検討ください。 必要に応じて、Delete vanished hosts オプションを設定してください。

3.2. cAdvisor との相互作用における特殊機能

コンテナは通常、再起動すると新しい ID が割り当てられます。 Checkmk では、古い ID を持つホストのメトリックは新しい ID に自動的に転送されません。 ほとんどの場合、これは意味がありません。 しかし、コンテナの場合、上記の例のように、これは非常に有用です。

コンテナが再起動されるだけの場合、そのヒストリーは失いたくないでしょう。 これを実現するには、コンテナを ID で作成するのではなく、Prometheus ルールで Name - Use the name of the container オプションを使用して名前で作成してください。

こうすることで、ダイナミックホストマネージメントのDelete vanished hosts オプションを使用すると、存在しなくなったコンテナを削除しても、そのヒストリーが失われることを心配する必要はありません。 その代わりに、同じコンテナ名を使用することで、実際には同じ名前を使用する別のコンテナであっても、そのコンテナは継続されます。

このページでは