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. 概要
サービスは、監視システムの実際の「内容」です。それぞれは、複雑な IT 環境における重要な 歯車です。完全な監視の有用性は 、サービスがどれだけ正確かつ有用に 設定されているかによって決まります。最後に、監視は、どこかに問題が発生したら 確実に通知するだけでなく、誤った通知や無用な通知を 確実に最小限に抑える必要があります。

Checkmk は、サービスの設定において、おそらくその最大の強みを発揮します。 Checkmk は、サービスの自動検出および設定を行う、他に類を見ない非常に強力なシステムを備えています。 Checkmk を使用すると、テンプレートや個別の割り当てによってすべてのサービスを個別に定義する必要はありません。 Checkmk は、監視するサービスのリストを自動的に、かつ確実に検出し、まず第一に、そのリストを最新の状態に保ちます。 Checkmk は、監視するサービスのリストを自動的に、かつ確実に検出し 、何よりもまず、そのリストを常に最新の状態に保ちます。これにより 、時間を大幅に節約できるだけでなく、監視の精度も向上します。 これにより、データセンターでの日々の変化が常に迅速に 反映され、重要なサービスが監視から漏れることがありません。
Checkmk のサービスディスカバリーは、重要な基本原則に基づいています。 それは、「何」と「どのように」を分離することです。
何を監視すべきか?→ ホスト上のシステム
/varmyserver01どのように監視すべきか?→ 使用容量が 90% になった時点でWARN 、95% になった時点でCRIT
サービスディスカバリーによって自動的に検出されます。これは
ホスト名(myserver01 )、チェックプラグイン(df: Linux のデータシステムチェック)、および項目
(/var )の組み合わせです。ホストに最大 1 つのサービスしか作成できないチェックプラグイン
は、項目は必要ありません(CPU 使用率のチェックプラグインなど)。
サービスディスカバリーの結果は、以下の表のように表示されます。
| ホスト | チェックプラグイン | 項目 |
|---|---|---|
|
|
|
|
|
|
|
|
|
… |
… |
… |
|
|
|
… |
… |
… |
その方法、つまり個々のサービスの閾値/チェックパラメータは
ルールによって個別に設定します。
たとえば、マウントポイントが/var のすべてのデータシステムを
90 % / 95 % の閾値で監視するルールを、そのようなデータシステムがどのホストに存在するかを
考慮することなく定義することができます。これが、Checkmk での設定が
とても明確で簡単な理由です。
一部のサービスは、自動ディスカバリーを使用してインストールすることはできません。 その中には、HTTP で指定された web サイトごとに照会されるチェックなどがあります。 これらは、アクティブチェックに関する記事で説明しているように、ルールを使用して作成します。
2. セットアップでのホストサービスの設定
2.1. 新しいホストの組み込み
セットアップに新しいホストを追加したら、次のステップはサービスのリストを呼び出すことです。 この操作により、このホストに対して初めて自動サービスディスカバリーが行われ、データソースのアクセス可能性が同時にチェックされます。 このリストは、ディスカバリーを再開したり、設定を変更したりするために、後でいつでも呼び出すことができます。 サービスリストを開くには、さまざまな方法があります。
ボタン「Save & run service discovery セットアップの「Properties of host
Properties of host のメニューバーHost > Run service discovery
ホストのリストの 記号セットアップのフォルダ
アクションメニューの「Run service discovery 」から Check_MK Discoveryホストの
ホストが新しく組み込まれた場合、そのサービスはまだ設定されていないため、検出されたすべてのサービスが「Undecided services - currently not monitored 」カテゴリに表示されます。

新しく発見されたサービスを追加する通常の方法は、単に「Accept all 」ボタンをクリックすることです。 そうすることで、すべてのホストラベルも一度に追加されます。 その後、すぐに「Activate changes」をクリックすると、そのホストが監視対象になります。
2.2. 不足しているサービスの追加
すでに監視されているホストの場合、このリストは異なります。Undecided services - currently not monitored の代わりに、Monitored services が表示されます。 Checkmk が、監視されていないが監視すべきホストで何かを検出した場合、リストは次のようになります。

Monitor undecided services またはAccept all をクリックすると、不足しているサービスがすべて追加され、監視が再び完全になります。 不足しているサービスの一部のみを追加したい場合は、代わりに ボタンをクリックして、Move to monitored services を選択してください。
2.3. 消失したサービス
データセンターでは、新しいものが追加されるだけでなく、消えることもあります。 データベースインスタンスが廃止されたり、LUN がアンマウントされたり、ファイルシステムが削除されたりする場合があります。 Checkmk は、このようなサービスを自動的に消失したサービスとして認識します。サービスリストでは、次のように表示されます。

これらのサービスを削除する最も簡単な方法は、再び「Accept all 」をクリックするか、各行の「Remove vanished services 」ボタンをクリックすることです。 注意:サービスが消えた理由は、もちろん問題によるものかもしれません。 ファイルシステムが消えた場合は、エラーのためにマウントできなかった可能性もあります。 監視は、このような場合に備えてあるのです。 そのサービスがもはや監視する必要がないことが確実になった場合にのみ、そのサービスを削除してください。 2.4. 不要なサービスの削除
2.4. 不要なサービスの削除
Checkmk が検出したすべてを監視したいとは限りません。 ディスカバリーは、もちろんターゲット指向で機能し、 事前に多くの不要なデータを除外することができます。しかし、たとえば、特定のデータベースインスタンスが「試しに」設定されたもので、 本番環境では使用されていないことを Checkmk はどのようにして知ることができるのでしょうか? このようなサービスを排除するには、2 つの方法があります。
サービスを一時的に使用不能にする
特定のサービスを監視から一時的に削除するには、アイコンをクリックします。 これにより、そのサービスは「Undecided services 」リストに移動されます。 または、行の先頭にあるアイコンをクリックして、サービスを無効にすることもできます。 もちろん、通常の「Activate changes 」も忘れずに実行してください。
ただし、この方法は一時的な、小規模な作業にのみご利用ください。この方法で選択を解除したサービスは、Checkmk によって「missing 」として強調表示され、ディスカバリーチェック(後述)でもエラーとして検出されます。 いずれにしても、何千ものサービスがある環境では、作業が大変で現実的ではありません。
サービスの永久的な使用不能化
Disabled services ルールセットを使用して、サービスを永久的に無視する方が、はるかにエレガントで永続的です。ここでは、 個々のサービスを監視から除外するだけでなく、「myserviceで始まるサービスをホスト で監視したくない」などのルールを策定することもできます。 ホストmyserver01."
ルールは、Setup > Services > Discovery rules > Discovery and Checkmk settings > Disabled Services からアクセスできます。

ルールを保存してホストのサービスリストに戻ると、Disabled Services セクションに、使用不能になったサービスと 手動で使用不能になったサービスが表示されます。

2.5. サービスの更新
ディスカバリー中にさまざまなことを通知するプラグインがいくつかあります。 たとえば、ネットワークインターフェイス用のプラグインは、ディスカバリー中にインターフェイスに設定されている速度をチェックします。 なぜでしょうか?変更があった場合に警告を表示するためです。 インターフェイスが 10 Mbit/s に設定されていることもあれば 1 Gbit/s に設定されていることもある場合、これは良い兆候とは言い難いでしょう。 これは、オートネゴシエーションに問題があることを示している可能性があります。 この変更が望ましく、今後 OK として受け入れる場合はどうすればよいでしょうか?
この変更が望ましく、今後 OK として受け入れる場合はどうすればよいでしょうか? アイコン(Move to undecided services )でサービスを削除し、 その後すぐに再追加してください。 または、メニューバーのActions > Remove all and find new をクリックして、ホストのすべてのサービスを更新してください。 これは当然、はるかに簡単な方法ですが、個々のサービスをエラー状態にしておきたくない場合に限ります。
2.6. ホストおよびサービスのラベルを更新する
ラベルのみを更新するには、メニューバーの [Actions > Host labels > Update host labels ] および [Actions > Services > Update service labels ] をそれぞれ選択します。 個々の (新しい) サービスラベルを追加または更新する必要がある場合は、[Changed services ] ボックスのそれぞれのサービスの行で をクリックして実行できます。

2.7. SNMP の特別な条件
SNMP によって監視されるデバイスには、いくつかの特別な機能があります。 これらの機能については、SNMP に関する記事をご覧ください。
3. 一括検出 — 複数のホストでの同時検出
1 つのアクションで複数のホストのディスカバリーを実行したい場合は Checkmk の バルクアクションを使用すると、作業を簡単にすることができます。まず、ディスカバリーを実行するホストを選択します。
フォルダ内で、個々のホストのチェックボックスを選択し、メニューバーのHosts > On selected hosts > Run bulk service discovery を選択します。
ホスト検索でホストを検索し、検索結果で をクリックしてすべてのホストを選択し、メニューバーのHosts > On selected hosts > Run bulk service discovery をクリックします。
フォルダ内で、 Hosts > In this folder > Run bulk service discoveryをクリックします。 メニューバーの
3 番目の方法では、すべてのサブフォルダでサービスディスカバリーを再帰的に実行することもできます。 上記の 3 つのオプションのいずれを選択した場合も、次のステップでは次のダイアログが表示されます。

Parameters ドロップダウンメニューでは、Custom service configuration update オプションが事前に選択されています。 下の4つのチェックボックスは、セットアップのサービスリストにあるオプションとまったく同じオプションで、すでに上で説明しました。 ドロップダウンメニューでは、Refresh all services (tabula rasa) を選択することもできます。
Selection (ホストの選択)で、ホストの選択を再度制御することができます。 これは、チェックボックスではなくフォルダから選択した場合などに主に有用です。 ほとんどのオプションは、ディスカバリーを高速化するためのものです。
Include all subfolders |
フォルダ内のすべてのホストに対して一括検出を開始した場合、このオプションはデフォルトで有効になります。 ディスカバリーは、すべてのサブフォルダ内のすべてのホストでも実行されます。 一括アクションによる以前のサービスディスカバリーが失敗したホスト (その時点でホストにアクセスできなかった場合など) は、記号でマークされます。 |
Only include hosts that failed on previous discovery |
バルクアクションによる以前のサービス検出が失敗したホスト (その時点でホストにアクセスできなかった場合など) は、記号でマークされます。このオプションを使用すると、これらのホストのみに対して検出を繰り返し実行することができます。 |
Only include hosts with a failed discovery check |
これにより、ディスカバリーチェックが失敗したホストのみにディスカバリーが制限されます。ディスカバリーチェックを使用する場合、これは多くのホストでのディスカバリーを大幅に高速化する良い方法です。ただし、この場合は、既存のサービスのステータスが歪む可能性があるため、Refresh all services (tabula rasa) オプションと組み合わせる意味はそれほどありません。 |
Exclude hosts where the agent is unreachable |
アクセスできないホストは、接続のタイムアウトによりディスカバリー中に長い遅延が発生します。これにより、ホストの数が多くなるとディスカバリーのパフォーマンスが大幅に低下する可能性があります。ホストがすでに監視対象であり、DOWNであることがわかっている場合は、ここでそれらをバイパスしてタイムアウトを回避することができます。 |
Performance Options は、full service scan が実行されるようにあらかじめ定義されています。新しい プラグインに関心がない場合は、このオプションを選択しないことでディスカバリーを大幅に高速化できます。
Number of hosts to handle at once で設定された10 は、
1 つのアクションで常に 10 台のホストが処理されることを意味します。これは、内部で
HTTP リクエストによって実現されています。一部のホストの検出に時間がかかり、タイムアウトの問題が発生した場合は
、この数値を小さく設定してみてください
(ただし、所要時間は長くなります)。
ダイアログを確認すると、手順が開始され、その進行状況を確認できます。

4. サービス内のパラメータをチェック
チェックプラグインの多くは、パラメータを使用して設定できます。最も一般的な 方法は、WARN およびCRIT の閾値を設定することです。パラメータは 、Checkmk による温度監視のこの例に示すように、より複雑な方法で構造化することができます 。

サービスのチェックパラメータは 3 つの部分で構成されています。
すべてのプラグインには、パラメータのデフォルト値があります。
一部のプラグインは、ディスカバリー中に値を設定します(上記を参照)。
パラメータはルールを使用して設定できます。
ルールによるパラメータは、ディスカバリーで設定された値よりも優先され、 ディスカバリーで設定された値は、デフォルト値よりも優先されます。個々のサブパラメータがチェックボックスを使用して設定される複雑なパラメータ(温度など)の場合 、これらの優先ルールは、各サブパラメータに個別に適用されます。 したがって、ルールで 1 つのサブパラメータのみを設定した場合、他のサブパラメータは それぞれのデフォルト値を保持します。 したがって、ルールで 1 つのサブパラメータのみを設定した場合、他のサブパラメータは それぞれのデフォルト値のままになります。 このようにして、たとえば、1 つのルールで温度のトレンド 計算を有効にし、別のルールで 物理センサーデバイスの温度の閾値を設定することができます。 これにより、 完全なパラメータセットは、両方のルールから構成されます。
サービスが最終的に持つ正確なパラメータは、サービスの パラメータページで確認できます。 これは、ホストのサービスリストの 記号からアクセスできます。 すべてのサービスのパラメータを サービステーブルで直接確認したい場合は、メニューバーの 「Display > Details > Show check parameters 」をクリックして表示できます。 次のような画面が表示されます。

5. サービスディスカバリーのカスタマイズ
先ほど、不要なサービスの表示を抑制するために サービスディスカバリーを設定する方法をご紹介しました。 さらに、これらのプラグインによるディスカバリーの動作に影響を与える、 さまざまなプラグイン用のルールセットも用意されています。 項目を省略するための設定だけでなく、 項目を積極的に検索したり、グループに収集したりする設定もあります。 項目の命名も問題になる場合があります。たとえば、 スイッチポート ネットワークインターフェイス では、 インターフェイス ID の代わりに、項目として使用する説明またはエイリアス(サービス名で使用されます)を指定することができます。
サービスディスカバリーに関連するすべてのルールセットは、以下の場所にあります。 Setup > Services > Discovery rules これらのルールセットを、実際のサービスをパラメータ化するためのルールセットと混同しないでください。 多くのプラグインには、実際には 2 つのルールセットがあります。1 つはディスカバリー用、もう 1 つはパラメータ用です。 以下に、その例をいくつか示します。
5.1. プロセスの監視
Checkmk が、ホスト上で見つかったすべてのプロセスを監視するサービスを単に定義してもあまり意味がありません。 ほとんどのプロセスは、関心のないものか、一時的にしか存在しないものです。 少なくとも、一般的な Linux サーバーでは、何百ものプロセスが実行されています。 そのため、サービス監視には、実行中のプロセスをフィルタリングするルールが必要です。
したがって、サービスを監視するには、強制サービスを使用するか、 より洗練された方法として、ルールセット「Process discovery 」を使用して サービスディスカバリーに監視すべきプロセスを指示する必要があります。 この方法では、ホスト上で確実に興味深いプロセスが見つかった場合に、 常に自動的に監視を開始することができます。 次の図は、 ルールセットにあるルールを示しています。
次の図は、Process discovery ルールセットのルールで、
プログラム/usr/sbin/apache2 を実行するプロセスを検索するものです。
この例では、そのようなプロセスが見つかったすべてのオペレーティングシステムユーザーに対して、
サービス (Grab user from found processes) が作成されます。
このサービスの名前はApache %u となり、%uはユーザー名に置き換えられます。閾値については、プロセスの
インスタンス数をそれぞれ 1/1 (最小) および 30/60 (最大) に設定します。

事前定義された閾値はDefault parameters for detected services として参照されます。これらは、 他のすべてのサービスと同様に、ルールを使用して割り当てることができます。念のため、上記のルールは サービスディスカバリー( 何 )を設定するものです。サービスが 初めて存在する場合、ルールチェーンState and count of processes が 閾値を担当します。
ディスカバリー中に閾値を設定できることは、利便性を高める機能です。 ただし、ディスカバリールールを変更した場合、その変更は 次回のディスカバリーまで有効になりません。閾値を変更した場合は 、新しいディスカバリーを実行する必要があります。ただし、ルールを サービスのディスカバリー(何)にのみ使用し、ルールセットState and count of processes をどのように使用するか(方法)に指定している場合は、この問題はありません。
Windows ホスト上の特定または単一のプロセスを監視するには、フィールドExecutable に、パスを指定せずにファイル名 (拡張子を含む) を指定するだけです。
これらの名前は、たとえば Windows の [タスク マネージャー] の [詳細] タブで確認できます。
ルールProcess discovery では、プロセスsvchost の場合、次のように指定します。

プロセスディスカバリーに関する詳細情報は、このルールセットのインラインヘルプでご覧いただけます。このヘルプは、メニューバーの「Help > Show inline help 」からいつでも表示できます。
5.2. Windows でのサービスの監視
Windows サービスのディスカバリーと監視のパラメータ設定は プロセスと同様で、ルールセットWindows service discovery (何) およびWindows services (どのように) によって制御されます。ここでは、2 つのサービスを監視するルールの例を示します。

プロセスとまったく同じように、ここでもサービスディスカバリーは 1 つのオプションにすぎません。ホストの特性とフォルダに基づいて 特定のサービスが予想されるホストについて正確なルールを策定できる 場合は、強制サービスも使用できます。 これは、実際に発見された状況とは無関係ですが、 この状況では、どのホストでどのサービスが実行されるかを正確に記述するために 多くのルールが必要になるため、 かなり手間がかかる場合があります。
5.3. スイッチポートの監視
Checkmk は、サーバーのネットワークインターフェイスとイーサネットスイッチのポートの監視に同じロジックを使用します。 スイッチポートでは、サービスディスカバリーを制御するための既存のオプションが 特に興味深いですが、 (プロセスや Windows サービスとは対照的に)ディスカバリーは、最初は ルールなしで機能します。つまり、デフォルトでは、Checkmk は 現在 UP 状態のすべての物理ポートを自動的に監視します。適用される ルールセットはNetwork interface and switch port discovery と呼ばれ、 ここでは簡単に説明する、数多くの設定オプションを提供しています。

以下のオプションが最も重要です:
Appearance of network interface セクションでは、 サービスの名前でインターフェースをどのように表示するか決定できます。Use description 、Use alias 、Use index から選択できます。
監視するインターフェースのタイプまたは名前の制限または拡張。
6. 強制サービスの設定
自動サービスディスカバリーが意味を成さない状況もあります。 これは、特定のガイドラインの遵守を強制したい場合に常に当てはまります。 前の章で見たように、Windows サービスが見つかった場合に、そのサービスの 監視を自動的に設定するようにすることができます。 そのようなサービスがない場合に問題が発生した場合はどうなりますか? たとえば、
特定のウイルススキャナをすべての Windows ホストにインストールする必要があります。
NTP はすべての Linux ホストで設定する必要があります。
このような場合、これらのサービスを強制的に実行することができます。この設定を行うには、Setup > Services > Enforced services を参照してください。この設定の 背景には、これらのチェックのパラメータを設定するために使用されるルールセットとまったく同じ 名前のルールセットのコレクションがあります。
ただし、ルールには 2 つの点が異なります。
これらはサービスではなく、ホストに関するルールです。サービスは、ルールによって作成されます。
ディスカバリーは実行されないため、チェックに使用するチェックプラグインを選択する必要があります。
次の例は、Enforced services にあるState of NTP time synchronisationルールの本文を示しています。

閾値とともに、ここでチェックプラグイン (chrony
またはntp_time など) を設定します。項目を必要とするチェックプラグインの場合は、
それらも指定する必要があります。たとえば、監視するデータベース SID の詳細を必要とするoracle_processes
プラグインでは、これが必要です。

この方法で定義された手動サービスは、これらのルールが適用されるすべてのホストにインストールされます。 実際の監視には、3 つの条件があります。 ホストが正しくインストールされており、サービスが xml-ph-0000@deepl.internal である。
ホストが正しくインストールされており、サービスがOK である。
エージェントが、要求されたサービスが実行されていないか、問題があることを通知します。サービスは、CRIT またはUNKNOWN をフラグに設定します。
エージェントは、NTP がインストールされていないなどの理由で、まったく情報を提供しません。 サービスはPENDのままとなり、Check_MK サービスは、エージェントデータの関連セクションが欠落していることを示す通知とともに、WARN になります。
Enforced servicesモジュールにあるルールのほとんどは、完全性を期すために用意されているだけであり、実際には必要ありません。最も一般的な 手動チェックの例は次のとおりです。
Windows サービスの監視 (ルールセット:Windows Services)
プロセスの監視 (ルールセット:State and count of processes)
7. ディスカバリーチェック
はじめに、Checkmk はサービスのリストを自動的に検出するだけでなく、 そのリストを常に最新に保つことができるとご紹介しました。また、 すべてのホストに対して、手動で一括検出を随時実行できる機能も 当然あるべきでしょう。
7.1. 監視対象外のサービスの自動チェック
しかし、このためには、新しいサイトで自動的に設定される定期的なディスカバリーチェックの方がはるかに優れています。 このサービスCheck_MK Discovery はすべてのホストに存在し、監視されていない項目を見つけると警告をログに記録します。

監視対象外のサービスまたは消滅したサービスの詳細は、[Details ] フィールドの [Check_MK Discovery ] サービス詳細ページで確認できます。

セットアップのホストのサービスリストには、Check_MK Discovery サービスのアクションメニュー およびRun service discovery エントリから簡単にアクセスできます。
ディスカバリーチェックのパラメータ設定は、Periodic service discovery ルールセットを使用して非常に簡単に行えます。 すぐに使えるサイトには、すべてのホストに適用されるように定義済みのルールが 1 つあります。

チェックを実行する間隔とともに、監視されていないサービス、消滅したサービス、変更されたサービスラベル、および新しいホストラベルの場合の監視状態を設定できます。 7.2. サービスの自動追加
7.2. サービスの自動追加
ディスカバリーチェックで、不足しているサービスを自動的に追加することができます。 このためには、Automatically update service configuration オプションを有効にしてください。これにより、さらにオプションが利用可能になります。

追加に加えて、[Parameters ] では、消滅したサービスを削除したり、既存のサービスをすべて削除して完全に新しいディスカバリーを実行したりすることもできます。 後者のオプションは、[Refresh all services and host labels (tabula rasa)] という名前でドロップダウンメニューにあります。 これらのオプションは慎重に使用してください。 消滅したサービスは、問題の存在を示している可能性があります。 ディスカバリーチェックでは、そのようなサービスは単に削除され、すべてが正常であるとの誤った認識に陥ります。 更新は特に危険です。 たとえば、スイッチポートのチェックではUP のポートのみが監視対象となります。DOWN のステータスのポートは、ディスカバリーチェックでは消失したと認識され、すぐに削除されます。
さらに、別の問題も考慮する必要があります。サービスを追加したり、 自動Activate Changes を実行したりすると、設定作業中の管理者(あなた)の注意がそらされてしまいます。 理論的には、ルールや設定の作業中に、その瞬間にディスカバリーチェックが実行され、 変更がアクティブになる可能性があります。 Checkmk では、すべての変更を一度にアクティブにすることができます。Checkmk では、すべての変更は一度にのみアクティブにすることができます。このような 状況を回避するために、この機能の時間を、たとえば夜間に再スケジュールすることができます。 上の画像は、その例を示しています。xml-ph-0000@deepl.internal では、クラスタ化されたサービスを個別に処理することができます。
Vanished clustered services (サービスチェックのスケジュール)では、クラスタ化されたサービスを個別にハンドルすることができます。 この機能の特別な点:クラスタ化されたサービスが 1 つのノードから別のノードに移動した場合、そのサービスは一時的に消失したとみなされ、意図せずに削除される可能性があります。 このオプションを無効にすると、実際に消失したサービスは削除されなくなります。
Group discovery and activation for up to (ディスカバリーチェックの待機時間)の設定により、 新しく発見されたすべてのサービスがすぐにActivate Changes(ディスカバリーチェック)をトリガーするのではなく、指定した待機時間があり、 複数の変更を 1 つのアクションでアクティブにすることができます。ディスカバリー チェックが 2 時間以上の間隔に設定されている場合でも、これは各ホストに個別に適用されます。 チェックは、すべてのホストで同時に実行されるわけではありません。 これは、ディスカバリーチェックは通常のチェックよりもはるかに多くのリソースを必要とするため 、望ましいことです。
8. パッシブサービス
パッシブサービスは、Checkmk によってアクティブに開始されるものではなく、 外部ソースから定期的にチャンネルで送信されるチェック結果によって開始されるサービスです。これは通常、 コアのコマンドパイプを介して行われます。パッシブサービスを作成する手順は、次のとおりです。 まず、サービスのコアに通知する必要があります。
まず、コアにサービスについて通知する必要があります。 これは、Command line を省略する以外は、独自のアクティブチェックと同じルールセットを使用して行います。

この画像では、チェック結果が定期的に受信されているかどうかを確認する方法も示しています。 10 分以上チェック結果が表示されない場合、 サービスは自動的にUNKNOWN とフラグが付けられます。
Activate Changes の後、新しいサービスは PEND状態で起動します。

PROCESS_SERVICE_CHECK_RESULT チェック結果の送信は、コマンドラインで、
~/tmp/run/nagios.cmd コマンドのパイプに
echo を指定して行います。
構文は、角括弧で囲まれた現在の
タイムスタンプを含め、通常の Nagios の規則に従います。コマンドの引数には、
ホスト名 (例:myhost) および選択したサービス名
(例:BAR) が必要です。次の 2 つの引数は、再びステータス
(0 …3) およびプラグインの出力です。タイムスタンプは$(date +%s) で作成されます。
OMD[mysite]:~$ echo "[$(date +%s)] PROCESS_SERVICE_CHECK_RESULT;myhost;BAR;2;Something bad has happened" > ~/tmp/run/nagios.cmdこれで、サービスは新しい状態をすぐに表示します。

9. コマンドラインでのサービスディスカバリー
GUI も良いですが、昔ながらのコマンドラインの方が、オートメーションの場合や、経験豊富なユーザーが
迅速に作業を行う場合など、依然として実用的な場合もあります。
サービスディスカバリは、コマンドラインでサービスディスカバリーは、コマンドラインで「cmk
-I 」コマンドを実行して起動できます。このプロセスにはいくつかの変数があります。
これらすべてについて、-v オプションを使用することをお勧めします。
これにより、何が起こっているかを確認できます。-v を使用しない場合、Checkmkは従来のUnixと同じように動作します。
すべてがOKである限り、何も表示されません。
単純な「-I」と入力すると、新しいサービスによるすべてのホストが検索されます。
OMD[mysite]:~$ cmk -vI
Discovering services and host labels on all hosts
myserver01:
+ FETCHING DATA
Using data from cache file /omd/sites/mysite/tmp/check_mk/cache/myserver01
[TCPFetcher] Use cached data
No piggyback files for 'myserver01'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (42)
SUCCESS - Found no new services, 2 host labels
myserver02:
+ FETCHING DATA
Using data from cache file /omd/sites/mysite/tmp/check_mk/cache/myserver02
[TCPFetcher] Use cached data
No piggyback files for 'myserver02'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (1900)
SUCCESS - Found no new services, 2 host labels-I を使用すると、1 つ以上のホスト名を入力して
それらのみを検索することもできます。これには 2 つ目の効果もあります。
すべてのホストに対して-I を実行すると、基本的にキャッシュされたデータのみが使用されますが
Checkmk は、明示的に指定されたホストからの最新のデータを使用して常に動作します。
OMD[mysite]:~$ cmk -vI myserver01または、タグを使用してフィルタリングすることもできます。
OMD[mysite]:~$ cmk -vI @mytagこれにより、ホストタグmytag を持つすべてのホストのディスカバリーが実行されます。
タグによるフィルタリングは、複数のホストを受け入れるすべてのcmkオプションで使用できます。
--cache および--no-cache オプションを使用すると
キャッシュの使用を明示的に指定することができます。
-v を追加すると、追加の出力を受け取ることができます。SNMP ベースの
デバイスでは、デバイスから取得されたすべての OID を表示することもできます。
OMD[mysite]:~$ cmk -vvI myswitch01
Discovering services on myswitch01:
myswitch01:
SNMP scan:
Getting OID .1.3.6.1.2.1.1.1.0: Executing SNMP GET of .1.3.6.1.2.1.1.1.0 on switch
=> ['24G Managed Switch'] OCTETSTR
24G Managed Switch
Getting OID .1.3.6.1.2.1.1.2.0: Executing SNMP GET of .1.3.6.1.2.1.1.2.0 on switch
=> ['.1.3.6.1.4.1.11863.1.1.3'] OBJECTID
.1.3.6.1.4.1.11863.1.1.3
Getting OID .1.3.6.1.4.1.231.2.10.2.1.1.0: Executing SNMP GET of .1.3.6.1.4.1.231.2.10.2.1.1.0 on switch
=> [None] NOSUCHOBJECT
failed.
Getting OID .1.3.6.1.4.1.232.2.2.4.2.0: Executing SNMP GET of .1.3.6.1.4.1.232.2.2.4.2.0 on switch
=> [None] NOSUCHOBJECT
failed.サービスの完全な更新 (タブラ・ラサ) は、-II を 2 回実行することで実行できます。
OMD[mysite]:~$ cmk -vII myserver01
Discovering services and host labels on: myserver01
myserver01:
+ FETCHING DATA
Using data from cache file /omd/sites/mysite/tmp/check_mk/cache/myserver01
[TCPFetcher] Use cached data
No piggyback files for 'myserver01'. Skip processing.
No piggyback files for '127.0.0.1'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (10)
1 cpu.loads
1 cpu.threads
6 cups_queues
3 df
1 diskstat
3 kernel
1 kernel.util
3 livestatus_status
1 lnx_if
1 lnx_thermal
SUCCESS - Found 21 services, 2 host labelsまた、これらすべてを 1 つのチェックプラグインに制限することもできます。このためには--detect-plugins= オプションを使用し、ホスト名の前に配置する必要があります。
cmk -vII --detect-plugins=df myserver01
Discovering services and host labels on: myserver01
myserver01:
+ FETCHING DATA
[TCPFetcher] Execute data source
No piggyback files for 'myserver01'. Skip processing.
No piggyback files for '127.0.0.1'. Skip processing.
[PiggybackFetcher] Execute data source
+ PARSE FETCHER RESULTS
Received no piggyback data
+ EXECUTING HOST LABEL DISCOVERY
+ PERFORM HOST LABEL DISCOVERY
+ EXECUTING DISCOVERY PLUGINS (1)
3 df
SUCCESS - Found 3 services, no host labels設定が完了したら、cmk -O(Nagios Core ではcmk -R )で変更をアクティブにします。
OMD[mysite]:~$ cmk -O
Generating configuration for core (type cmc)...OK
Creating helper config...OK
Reloading monitoring core...OKディスカバリー中にエラーが発生した場合…
OMD[mysite]:~$ cmk -vII --detect-plugins=df myserver01
WARNING: Exception in discovery function of check type 'df': global name 'bar' is not defined
nothing… 追加の--debug を使用すると、障害の発生場所の詳細な Python
スタックトレースを生成することができます。
OMD[mysite]:~$ cmk --debug -vII --detect-plugins=df myserver01
Discovering services and host labels on myserver01:
myserver01:
Traceback (most recent call last):
File "/omd/sites/heute/share/check_mk/modules/check_mk.py", line 5252, in <module>
do_discovery(hostnames, check_types, seen_I == 1)
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 76, in do_discovery
do_discovery_for(hostname, check_types, only_new, use_caches, on_error)
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 96, in do_discovery_for
new_items = discover_services(hostname, check_types, use_caches, do_snmp_scan, on_error)
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 677, in discover_services
for item, paramstring in discover_check_type(hostname, ipaddress, check_type, use_caches, on_error):
File "/omd/sites/heute/share/check_mk/modules/discovery.py", line 833, in discover_check_type
discovered_items = discovery_function(info)
File "/omd/sites/heute/share/check_mk/checks/df", line 91, in inventory_df
foo = bar
NameError: global name 'bar' is not defined9.1. オプションの概要
要約 – すべてのオプションを一目で確認:
|
新しいサービスを検出します。 |
|
すべてのサービスを削除して再検出します (タブーラ・ラサ) |
|
詳細:ホストおよび検出されたサービスを表示 |
|
非常に詳細:すべての操作の正確なプロトコルを表示 |
|
指定したチェックプラグインのみに対してディスカバリー(およびタブラ・ラサ)を実行します |
|
指定したタグを持つホストのみに対してディスカバリー(およびタブラ・ラサ)を実行します。 |
|
キャッシュデータの強制使用 (通常、ホストが指定されていない場合にのみデフォルト) |
|
最新のデータを取得します (通常、ホスト名が指定されている場合にのみデフォルトです) |
|
エラー状況ではキャンセルし、完全な Python スタックトレースを表示します。 |
|
変更をアクティブにする (CMC をコアとする商業版) |
|
変更をアクティブにする (Nagios をコアとする Checkmk Raw) |
9.2. ファイルへの保存
サービスディスカバリーの結果、つまり前述のように、ホスト名、チェックプラグイン、項目、および識別されたパラメータのテーブルは、var/check_mk/autochecks フォルダに保存されます。
ここでは、各ホストごとに、自動的にディスカバリーされたサービスを保存するデータセットがあります。
このデータセットの Python ファイルは、ホスト名と同じ名前です。
このデータセットの Python 構文を損なわない限り、
個々の行を手動で変更または削除することができます。データセットを削除すると、すべてのサービスが削除され
、再び「監視対象外」としてフラグが付けられます。
[
{'check_plugin_name': 'cpu_loads', 'item': None, 'parameters': (5.0, 10.0), 'service_labels': {}},
{'check_plugin_name': 'cpu_threads', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'diskstat', 'item': 'SUMMARY', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'kernel_performance', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'kernel_util', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'livestatus_status', 'item': 'myremotesite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'lnx_thermal', 'item': 'Zone 0', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mem_linux', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mknotifyd', 'item': 'mysite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mknotifyd', 'item': 'myremotesite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'mounts', 'item': '/', 'parameters': ['errors=remount-ro', 'relatime', 'rw'], 'service_labels': {}},
{'check_plugin_name': 'omd_apache', 'item': 'mysite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'omd_apache', 'item': 'myremotesite', 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'tcp_conn_stats', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'timesyncd', 'item': None, 'parameters': {}, 'service_labels': {}},
{'check_plugin_name': 'uptime', 'item': None, 'parameters': {}, 'service_labels': {}},
]10. サービスグループ
10.1. サービスグループが必要な理由
これまで、サービスを監視に含める方法を学びました。 しかし、何千ものサービスのリストを見たり、常に ホストビューを調べたりしなければならないのはあまり意味がありません。たとえば、すべてのファイルシステムまたは 更新サービスをまとめて表示したい場合は、ホストグループと同じような方法でグループを簡単に作成することができます。
サービスグループを使用すると、ビューやNagVis マップを使用して監視をより整理し、 ターゲットを絞った通知や アラートハンドラーを簡単に切り替えることができます。
ちなみに、ビューフィルターだけを使用して、ほぼすべての対応するビューを構築することができますが 、サービスグループの方がより明確に整理されており 、操作も簡単です。
10.2. サービスグループの作成
サービスグループは、Setup > Services > Service groups から確認できます。

サービスグループの作成は簡単です。Add group でグループを作成し、後で変更できない名前と、意味のあるエイリアスを割り当てます。

10.3. サービスグループへのサービスの追加
サービスグループにサービスを割り当てるには、ルールセット Assignment of services to service groups が必要です。 そこへ最も早く移動するには、サービスグループの概要 (Setup > Services > Service Groups) を使用します。 ここでは、メニューバーのService Groups > Assign to group > Rules をクリックするだけです。 もちろん、[Setup ] メニューのルール検索からルールを見つけることも、Setup > Services > Service monitoring rules > Various > Assignment of services to service groups を詳しく調べることもできます。 次に、[Create rule in folder ] を使用して、その作業を行います。まず、サービスを割り当てるサービスグループを指定します。たとえば、myservicegroupまたはそのエイリアスMy service group 1 などです。

Conditions セクションで、いよいよエキサイティングな部分が始まります。
まず、フォルダ、ホストタグ、および明示的なホスト名を使用して、サービス以外の制限を設定できます。
次に、グループ化したいサービスに名前を付けます。たとえば、Filesystem およびmyservice と指定して、ファイルシステムのセットを作成します。
サービスの指定は、正規表現のフォームで行います。これにより、グループを正確に定義できます。

10.4. サービスのサービスグループをチェックする
特定のサービスの詳細ページで、サービスの割り当てを確認できます。 以下は、デフォルトの「Service groups the service is member of 」行です。

10.5. サービスグループの使用
前述のように、サービスグループは、ビュー、NagVis マップ、通知、アラートハンドラーなど、いくつかの場所で使用されます。 詳細ページでは、デフォルトで「Service groups 」��が表示されます。10.5. サービスグループの使用 新しいビューでは、データソースとして「 」を使用することが重要です。 もちろん、Views ウィジェットには、サービスグループ用の定義済みビューも含まれています。 たとえば、わかりやすい要約があります。 サービスグループ名をクリックすると、そのグループに属するすべてのサービスの完全なビューが表示されます。

サービスグループ名をクリックすると、そのグループに属するすべての サービスの完全なビューが表示されます。
NagVis マップでサービスグループを使用すると、単一のアイコンにカーソルを置くと、 メニューに開いているサービスグループの概要が表示されます。

サービスグループを 通知および アラートハンドラー 通知 で使用すると、条件/フィルタとして使用でき、その中から 1 つ以上を選択して使用することができます。

11. プラグインのチェックの詳細
11.1. 機能の概要
Checkmk でサービスを生成するには、チェックプラグインが必要です。
各サービスは、チェックプラグインを使用して、そのステータスを判断したり、メトリックを作成/維持したりします。
その際、プラグインはホストごとに 1 つ以上のサービスを作成することができます。
同じプラグインの複数のサービスを区別するために、項目が必要です。
たとえば、サービス「Filesystem /var 」の場合、項目は「/var 」というテキストになります。
ホストごとに 1 つのサービスしか生成できないプラグイン(CPU utilization )など)の場合、項目は空で表示されません。
11.2. 使用可能なチェックプラグイン
使用可能なすべてのチェックプラグインのリストは、Setup > Services > Catalog of check plugins にあります。ここでは、個々のプラグインを 検索し、さまざまなカテゴリでフィルタリングすることができます。

各プラグインには、3 つの情報列が表示されます。 サービスの説明 (チェックの種類)、チェックプラグインの名前 (プラグイン名)、および 互換性のあるデータソース (エージェント) です。

