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 は、そのシステムが何らかの形で情報を提供しなければ、サーバーのストレージ容量がどれだけ使用されているかをどのように知ることができるでしょうか? この情報を提供するコンポーネントは、常にアクティブなソフトウェア、つまり監視エージェント(通常は単にエージェントと呼ばれます)です。 エージェントは、指定した間隔でホストから監視に関連するデータを収集し、そのデータを監視サーバーに送信します。
サーバーおよびワークステーション用に、Checkmk は独自のエージェント、いわゆるCheckmk エージェントを提供しています。 Checkmk エージェントは、Windows や Linux などの一般的なものから、OpenVMS などの珍しいものまで、さまざまなオペレーティングシステムに対応しています。 エージェントはプルモードでは受動的であり、TCP ポート 6556 をリッスンしています。 これらのエージェントは、Checkmk サーバーからのクエリを受信した場合にのみ起動し、必要なデータで応答します。 一方、プッシュモードでは、Checkmk エージェントが監視データを定期的に Checkmk サーバーに送信します。
すべての Checkmk エージェントは、web インターフェイスの「Setup 」メニューから確認できます。 そこからエージェントをダウンロードし、ターゲットシステムにインストールできます。 Checkmk エージェントのインストール、設定、拡張の方法については、この記事をご覧ください。
ただし、監視のためにエージェントをインストールする必要がない場合もあります。これは、使用可能なエージェントがすでに存在するためです。 その最たる例が SNMP です。 管理可能なすべてのネットワーク機器およびアプライアンスには、SNMP エージェントがビルトインされています。 Checkmk はこの SNMP エージェントにアクセスし、アクティブなクエリ (GET) によってシステム状態の詳細を取得します。
ただし、一部のシステムでは、エージェントのインストールも、SNMP の使用可能なフォームもサポートされていません。 その代わりに、Telnet、SSH、HTTP/XML に基づく、管理用のアプリケーションプログラミングインタフェース(API)を提供しています。 Checkmk は、Checkmk サーバー上で実行されている、いわゆるスペシャルエージェントを介して、このようなインタフェースにクエリを実行します。
最後に、HTTP、SMTP、IMAP などのネットワークサービスの監視は、それ自体が 1 つのケースとなります。
ネットワークサービスの場合、当然のことながら、ネットワーク経由でサービスを照会し、監視します。
このために、Checkmk は、独自のプラグインを使用する場合もあれば、既存のプラグインを使用する場合もあります。
これらは、アクティブチェックとも呼ばれます。
たとえば、check_http は、web サイトの照会に非常に人気があります。
しかし、この場合でも、通常、監視に補足的なサーバーデータを提供する追加のエージェントが使用されます。
次の図は、Checkmk が監視対象システムにアクセスするさまざまな方法を示しています。

これまで、Checkmk の得意分野であるアクティブ監視についてのみ説明してきました。 これとは逆の方法、つまり、ターゲットシステム自体が、syslog や SNMP トラップなどを介して監視にメッセージを送信する方法もあります。 これらの機能については、Checkmk のイベントコン ソールで説明しています。
2. Checkmk エージェント
サーバーまたはワークステーションを監視するには、ホストにインストールする必要がある小さなプログラム、Checkmk エージェントが必要です。
このエージェントは、最小限の機能で、安全かつ拡張が容易なシンプルなシェルスクリプトです。 Checkmk バージョン2.1.0 では、このエージェントスクリプトに新しいコンポーネント「エージェントコントローラー」が追加されました。 エージェントコントローラーは、エージェントスクリプトの上流に接続され、エージェントスクリプトにクエリを実行し、その代わりに Checkmk サーバーと通信します。 そのため、コントローラーは、Checkmk サーバー上で実行されているエージェントレシーバーに登録されます。

このアーキテクチャは、Linux エージェントと Windows エージェントで同じであり、各オペレーティングシステムに固有のものは技術的な実装のみです。
エージェントスクリプトは、監視データを収集し、エージェントコントローラーが利用できるようにする役割を担います。 このスクリプトは、以下の特徴があります。
最小限の RAM、CPU、ディスク容量、ネットワークリソースしか使用しないため、最小限のサイズです。
ネットワークからのアクセスを一切許可しないため、安全です。
拡張が容易です。あらゆるプログラミング言語またはスクリプト言語でプラグインを記述し、エージェントスクリプトで実行することができます。
エージェントコントローラーは、エージェントスクリプトによって収集されたデータを転送するエージェントコンポーネントです。 プルモードでは、TCP ポート 6556 で Checkmk サイトからの接続をリッスンし、エージェントスクリプトにクエリを送信します。
エージェントコントローラーを備えたエージェントのソフトウェアアーキテクチャは、エージェントスクリプトの最小限の設計では実現できなかった新しい機能を提供するための前提条件です。 たとえば、Transport Layer Security (TLS) による通信の暗号化、データ圧縮 、およびプルモードから プッシュモードへの通信方向の反転などです。 プルモードでは、Checkmk サーバーが通信を開始し、エージェントにデータを要求します。
プルモードでは、Checkmk サーバーが通信を開始し、エージェントにデータを要求します。 プッシュモードでは、エージェントが通信を開始します。 プッシュモードは、クラウドベースの構成や、一部の区分化されたネットワークで必要です。 どちらの場合も、Checkmk サーバーは、監視対象のホストが置かれているネットワークにアクセスできません。 そのため、エージェントは、定期的に Checkmk サーバーにデータを自動的に送信します。
エージェントレシーバーは、エージェントコントローラーの通信の一般的なエンドポイントとして機能する Checkmk サーバーコンポーネントです。 たとえば、接続の登録や、プッシュモードでエージェントコントローラーから送信されたデータの受信などを行います。 プッシュモードでは、受信したデータはエージェントレシーバーによってファイルシステムに保存され、サイトのフェッチャーが利用できるようになります。 商業版では、これらはCheckmk フェッチャーです。 一方、プルモードでは、データ交換はエージェントレシーバーを必要とせずに、サイトのフェッチャーとエージェントコントローラーの間で直接行われます。
TLS 暗号化およびデータ圧縮は、エージェントコントローラーとエージェントレシーバーによって実現されます。 このため、Checkmk サーバーおよびエージェントは、少なくともバージョン2.1.0 である必要があります。 インストール後の最初のステップは、エージェントコントローラーを Checkmk サイトのエージェントレシーバーに登録し、これら 2 つのコンポーネント間の信頼関係を確立することです。 通信の TLS 暗号化は、この登録中に設定されます。 プッシュモードを使用するには、Checkmk サーバーおよびエージェントのバージョンが2.2.0 以上である必要があります。
次の表は、Checkmk エージェントのさまざまな機能をまとめ、これらの機能が利用可能な Checkmk エディションを示しています。
| 機能 | 説明 | 利用可能性 |
|---|---|---|
登録 |
ホストのエージェントコントローラーと Checkmk サイトのエージェントレシーバー間の信頼関係が確立されます。 |
2.1.0 以降のすべてのエディション |
TLS 暗号化 |
登録が正常に完了すると、データは TLS を使用して暗号化されたフォームで交換されます。 |
バージョン以降のすべてのエディション2.1.0 |
圧縮 |
データは圧縮されたフォームで交換されます。 |
バージョン以降のすべてのエディション2.1.0 |
プルモード |
エージェントは、Checkmk サイトからの要求に応じてデータを送信します。 |
すべてのエディション |
プッシュモード |
エージェントは、Checkmk サイトに自律的にデータを送信します。 |
2.2.0 以降の Checkmk Cloud、Checkmk MSP2.3.0 |
個々のエージェントの設定 |
エージェントベーカリーでは、エージェントを単一のホストまたはホストのグループごとに個別に設定し、インストール用のエージェントパッケージを作成することができます。 |
商業版 |
エージェントベーカリーからのパッケージは、最初に手動またはスクリプトでインストールされ、それ以降は自動的に更新されます。 |
商業版 |
|
Checkmk サイトへのエージェントの登録およびホストの作成は自動的に行われます。 |
2.2.0 以降の Checkmk Cloud、Checkmk MSP2.3.0 |
3. ダウンロードページからエージェントをダウンロードする
Checkmk プロジェクトでは、現在 11 種類のオペレーティングシステムファミリー用のエージェントが管理されています。 これらのエージェントはすべて Checkmk のコンポーネントであり、Checkmk サーバーの web インターフェイスからダウンロードできます。 これらのエージェントには、Setup > Agents からアクセスできます。
Checkmk Raw では、メニュー項目「Linux 」、「Windows 」、「Other operating systems 」から、事前設定済みのエージェントおよびエージェントプラグインがダウンロードできるページに直接移動できます。以下の例では、Linux, Solaris, AIX のダウンロードページに移動します。

商業版では、メニュー項目「Windows, Linux, Solaris, AIX 」をクリックすると、エージェントベーカリーにアクセスできるページが表示されます。 このページから「Related 」メニュー項目をクリックすると、Checkmk Raw と同じエージェントファイルのページに移動します。
Linux 用 (RPM および DEB ファイル形式) および Windows 用 (MSI ファイル形式) のパッケージ化されたエージェントは、対応するダウンロードページの最初のボックスにあります。 これらのソフトウェアパッケージには、2.1.0 以降のバージョンのエージェントコントローラーを含むエージェントが含まれています。 インストールおよび設定の詳細については、Linux エージェント および Windows エージェントに関する記事をご覧ください。
Agents ボックスには、さまざまなオペレーティングシステムに適したエージェントスクリプトがあります。 エージェントをレガシーモード(つまり、エージェントコントローラーを使用しない)で設定する必要があるオペレーティングシステムについては、レガシーモードでの Linux の監視および FreeBSD の監視の記事をご覧ください。
4. エージェントベーカリー
4.1. 概要
商業版を使用している場合は、エージェントベーカリーを使用して、カスタマイズしたエージェントをパッケージ化することができます。 これにより、既存のエージェントに加えて、カスタム設定や追加のプラグイン、オプションのプラグインを含むエージェントパッケージを作成(または「焼き上げ」)することができます。 これらのパッケージは、1 つのコマンドでインストールできます。 このようなパッケージは、自動配布やインストールに最適です。 フォルダや特定のホストグループ用にカスタマイズしたエージェントを作成することもできます。 これにより、自動エージェント更新を使用して柔軟性を高めることができます。
Checkmk エージェントは、設定やプラグインを必要とせずに「そのまま」すぐに機能しますが、場合によってはエージェントの設定が必要になることもあります。 その例をいくつか挙げます。
特定の IP アドレスへのアクセス制限
Oracle データベースの監視(プラグインと設定が必要です)
テキストログファイルの監視(プラグイン、データ名、テキストパターンが必要です)
HW/SW インベントリの利用(プラグインが必要です)
異なるベイクプロセスを区別するために、各ベイクプロセスに対して連続したベイクリビジョンを生成することができます。 これは、ベイクされたパッケージのメタデータでのみ表示されます。 Checkmk2.3.0 以降、この機能は、ベイクされたエージェントが有効な署名を失うことを防ぐため、デフォルトで無効になっています。 パッケージマネージャでの一意の処理などのために、再ベイクを有効にしたい場合は、Setup > Global settings > Setup > Apply bake revision オプションを有効にしてください。 このオプションを有効にした場合、Automatically create monitoring agents ルールによって後で自動的にベイクされたエージェントについては、署名を失わないように、以前のリビジョンはそのまま残ります。 連続したリビジョンを持つ自動的にベイクされたエージェントが必要な場合は、ルールの代わりにREST APIを使用してください。 |
4.2. エージェントのダウンロード
エージェントベーカリーには、Setup > Agents > Windows, Linux, Solaris, AIX からアクセスできます。

Checkmk は、エージェントベーカリーで Windows、Linux、Solaris、および AIX オペレーティングシステムをサポートしています。
Linux では、パッケージ形式として RPM (Red Hat Enterprise Linux (RHEL) ベースのシステム、SLES 用) および DEB (Debian、Ubuntu 用) から選択できます。
また、TGZ ファイル形式のいわゆる「tarball」も利用でき、/ のroot に解凍するだけで使用できます。
AIX 向けにも tarball が用意されていますが、これはinetd への自動統合を含んでいません。
統合は手動で一度だけ実行する必要があります。
Solaris 向けには、tarball と PKG パッケージが用意されています。
特定のホストの設定をまだ行っていない場合は、デフォルトのエージェント設定が 1 つだけあります。 さまざまなエージェント設定の説明は、次の 2 つのセクションで説明します。
各エージェント構成には、hash という一意の ID が割り当てられています。 ハッシュの最初の 8 文字は GUI に表示されます。 このハッシュはパッケージバージョンの一部となり、パッケージファイル名にも埋め込まれます。 パッケージの設定を変更したり、Checkmk を更新したりすると、パッケージのハッシュも変更されます。 これにより、オペレーティングシステムのパッケージマネージャは、それが別のパッケージであることを認識し、更新を実行します。 Checkmk のバージョン番号だけでは、ここでは区別できません。
4.3. ルールを使用した設定
エージェントの設定は、Checkmk でよく使用されるルールを使用して変更することができます。 これにより、異なるホストに異なる設定やプラグインを装備することが可能になります。Agent rules ボタンをクリックすると、エージェントに影響を与えるすべてのルールセットがリストされたページが表示されます。

次の例を見てみましょう。 エージェントへのアクセスを許可する IP アドレスのリストを制限したいとします。 このためには、Generic Options > Allowed agent access via IP address (Linux, Windows) ルールセットを選択します。 ルールの値として 1 つ以上の IP アドレスを入力します。

このルールがすべてのホストに適用されるように、[Conditions ] ボックスのデフォルト値は変更しないでください。 新しいルールを保存します。
4.4. エージェントの設定
保存後、[Windows, Linux, Solaris, AIX ] ページに戻ります。 ボタンをクリックすると、エージェントが新たに作成されます。 結果、2 つの個別の設定が作成されます。

[Agent type ] 列には、それぞれの設定が割り当てられているホストが表示されます。 スペースの都合上、このリストは完全ではない場合があります。
Vanilla (factory settings) |
エージェントパッケージにはデフォルト設定のみが含まれており、個別のエージェントルールは含まれていません。 |
Folders |
エージェントパッケージには、ホストに対する条件が定義されておらず、リストされているフォルダに適用されるすべてのエージェントルールが含まれています。 |
Hosts |
エージェントパッケージには、リスト内のホストに適用されるすべてのエージェントルールが含まれます。 |
上記の例では、ホストの条件なしでAllowed agent access via IP address (Linux, Windows) ルールが作成されました。
したがって、新しいエージェント設定は、Main フォルダと、現在サイト唯一のホストであるlocalhost に適用されます。
ホスト固有のルールを配備するほど、さまざまなエージェントのバリエーションが構築されます。 エージェントベーカリーは、既存のフォルダまたはホストのうち少なくとも 1 つで使用されている構成のみを構築するようにしています。
ちなみに、ホストのプロパティから、ホストのエージェントパッケージに簡単にアクセスすることもできます。Setup > Hosts > Hosts でホストをクリックし、Hosts メニューからMonitoring agent を選択してください。

なぜ、すべてのホストにすべてのオペレーティングシステム用のパッケージが用意されているのですか? 答えは簡単です。 システムにエージェントがインストールされていない場合、Checkmk はオペレーティングシステムを認識できません。 いずれの場合も、自動エージェント更新を有効にすれば、それ以上の操作は必要ありません。
4.5. プラグインによる拡張
多くのルールは、さまざまなプラグインのインストールに関係しています。 これらは、非常に特定のコンポーネントの監視のためにエージェントを拡張します。 これらのほとんどは、データベースなどの特別なアプリケーションです。 プラグインをアクティブにするルールとともに、プラグインを設定するための設定も表示されます。 たとえば、MySQL を監視するためのルールは次のとおりです。

4.6. 設定ファイル
ターゲットシステムでエージェントベーカリーによって生成された設定ファイルを手動で変更しないでください。 手動で変更しても、その時点では問題なく動作しますが、次回エージェントをアップデートすると、変更は失われます。 ただし、追加のプラグインや設定ファイルは問題なくインストールできます。
4.7. ログの有効化
グローバル設定では、Agent bakery logging で、Bakery プロセスのログ記録を有効にすることができます。
結果は、~/var/log/agent_bakery.log ファイルに記録されます。

ログが有効になっていない場合、この情報は、コマンドラインで cmk --bake-agents -v を指定してエージェントをベイクした場合にのみ表示されます。
5. エージェントはいつ更新すべきですか?
監視するホストが数台でも数千台でも、すべてのホストの Checkmk エージェントを更新することは、常に大規模な作業となります。 ただし、商業版には エージェントの自動更新 機能が搭載されており、非常に役立ちます。 それでも、エージェントの更新は、以下の場合にのみ行うことをお勧めします。
更新がご自身に影響を与える問題を解決する場合、または
更新に必須の新機能が含まれている場合。
これを可能にするため、Checkmk では一般的なルールが適用されます。 新しいバージョンの Checkmk は、基本的に古いエージェントの出力をハンドルできます。
重要:その逆は必ずしも当てはまりません。 エージェントの Checkmk バージョンが監視サーバーのバージョンよりも新しい場合、そのサーバーのチェックプラグインはエージェントの出力を正しく解釈できない可能性があります。 その場合、影響を受けるサービスはUNKNOWN状態になります。

上の画像ではそうではないように見えますが、このような場合はクラッシュレポートを送信しないでください。
6. エラー診断
6.1. コマンドラインによるエージェントのテスト
正しくインストールされたエージェントは、コマンドラインから非常に簡単に照会できます。
これを行う最善の方法は、エージェントをアクティブに監視している Checkmk サイトから直接行うことです。
こうすることで、サーバーの IP アドレスがエージェントによって確実に受け入れられるようになります。
適切なコマンドとしては、telnet やnetcat (またはnc) などがあります。
OMD[mysite]:~$ echo | nc 10.1.1.2 6556
1616 の出力は、TCP ポート 6556 経由で接続が確立され、TLS ハンドシェイクが実行可能になったことを示しています。
エージェントは、エージェントコントローラーを介して Checkmk サイトに登録されているため、通信は TLS によって暗号化され、エージェントの出力は表示されません。
登録の詳細については、Linux エージェントおよび Windows エージェントの記事をご覧ください。
エージェントと Checkmk サーバー間の通信がまだ暗号化されていない場合(レガシープルモードの場合)、または暗号化されておらず、その状態が続いている場合(レガシーモードの場合)、このコマンドは、16 の代わりに、暗号化されていないエージェントの出力をすべて表示します(以下には最初の行のみを表示しています)。
OMD[mysite]:~$ echo | nc 10.1.1.2 6556
<<<check_mk>>>
Version: 2.4.0p8
AgentOS: linux
Hostname: mycmkserver
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins出力は、常に「<<<check_mk>>> 」という行で始まります。<<< および>>> に含まれる行は、セクションヘッダーと呼ばれます。
これらは、エージェント出力をセクションに分割します。
各セクションには関連情報が含まれ、通常は診断コマンドの出力だけです。check_mk セクションは特別な役割を果たします。
このセクションには、エージェントのバージョン番号などの一般的な情報が含まれます。
ホストがすでに監視されている場合は、 cmk -d コマンドを使用してデータを取得することもできます。
これは、Setup で設定された IP アドレスを使用し、ポート番号が再設定されている場合や、特別なエージェントが存在する場合にも対応しています。--debug -v オプションを使用すると、デバッグ情報を追加で取得することができます。
OMD[mysite]:~$ cmk -d mycmkserver
<<<check_mk>>>
Version: 2.4.0p8問題のホストの監視がすでに定期的に実行されている場合は、~/tmp/check_mk/cache サイトディレクトリに、出力の現在のコピーが常に保存されています。
OMD[mysite]:~$ cat tmp/check_mk/cache/mycmkserver
<<<check_mk>>>
Version: 2.4.0p8エージェントのホストで実行できるその他の診断コマンドについては、Linux エージェントおよび Windows エージェントの記事をご覧ください。 |
6.2. web インターフェイスによるエージェントのテスト
web インターフェイスを使用して、エージェントの診断を行うこともできます。 この診断では、すべての設定が考慮され、SNMP デバイスおよびスペシャルエージェントを使用してクエリされたデバイスもサポートされます。 実際には、Checkmk は常に TCP ポート 6556およびSNMP を使用して同時にクエリを試みます。
接続テストには、ホストのプロパティからアクセスできます。Properties of host ページで、メニューからHost > Connection tests を選択し、Run tests をクリックしてテストを開始します。

これらの設定(SNMP コミュニティなど)の多くはすぐに試して、成功したら保存することができます。
