The commercial editions can update their agents on Linux, Windows and Solaris automatically. This feature enables easy updating of the agents in the case of new Checkmk versions, and even a changed configuration of the agents can be applied automatically. In this way you can take advantage of the Agent Bakery to apply individual configurations to hosts.
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. |
商業版では、Linux、Windows、および Solaris 上のエージェントを自動的に更新することができます。 この機能により、新しい Checkmk バージョンがリリースされた場合にエージェントを簡単に更新することができ、エージェントの設定変更も自動的に適用されます。 このようにして、エージェントベーカリーを利用して、ホストに個別の設定を適用することができます。
1. 自動更新の設定
エージェントの自動展開は、デフォルトではグローバルに使用不能になっています。 したがって、設定を行う前に、Setup > General > Global Settings > Automatic Agent Updates で [Activation of automatic agent updates ] オプションを有効にしてください。

更新を実装するには、次の手順に従ってください: まず、Setup > Agents > Windows, Linux, Solaris, AIX を開き、Agents > Automatic updates を選択します:

自動更新が正しく機能するために満たす必要のある前提条件のリストについては、「Prerequisites 」をご覧ください。 これらの項目を順番にチェックしてください。 各項目に関する詳細情報は、Help > Show inline help で確認できます。 をクリックすると、設定に必要な項目に直接移動します。 具体的には、次の 5 つの章で説明する設定を、Master switch で実行して有効にする必要があります。
1.1. 署名キーの作成
このシステムは、エージェントが中央監視サーバーから HTTP または HTTPS 経由でアップデートをダウンロードできるように設計されています。 エージェントには実行可能なコードが含まれているため、攻撃者によるエージェントの改ざんを防ぐことが特に重要です。 この目的のために、署名キーが使用されます。 このキーは、公開キーと秘密キーのペアで構成されています (公開鍵方式)。
署名キーはいくつでも作成できます。 各キーはパスフレーズで保護されており、署名するたびにパスフレーズを入力する必要があります。 これにより、たとえば、攻撃者が監視サーバーのバックアップから署名エージェントにアクセスすることを防ぐことができます。
ここで署名鍵を作成し、パスフレーズを記録してください。
重要:このパスフレーズは、後で変更または復元することはできません。 キーを紛失した場合、すべてのエージェントを再度手動で更新する必要がある場合があります。
1.2. アップデートプラグインの設定
実際の更新は、cmk-update-agent というエージェントプラグインによって実行されます。
これは、エージェントによって定義可能な周期 (1 時間ごとなど) で呼び出されます。
このとき、このホストに新しいパッケージがあるかどうかをデプロイサーバー (中央監視システム) に問い合わせ、新しいパッケージがある場合は更新を実行します。
もちろん、プラグインはエージェントに存在し、正しく設定されている必要があります。 そのためには、Agent updater (Linux, Windows, Solaris) ルールセットを使用して、このプラグインでエージェントを拡張します。 ルールセットは、たとえば、Related > Agent updater ruleset メニューのAutomatic agent updates ページで簡単に見つけることができます。
このルールセットは、「パラメータごとに最初のルールが優先」の原則に従っていることにご注意ください。 これにより、一般的な基本設定を定義して、より具体的なルールで何度も設定し直す必要がなくなります。 さらに、インラインヘルプでは、項目をアクティブにすると、その項目に関する詳細情報が表示されます。

以下に、各ポイントの簡単な説明を記載します。
アクティベーション
この設定を有効にする (Deploy plugin …) 必要があります。 ここでは、たとえば、ルール継承を使用して、上位レベルのフォルダでデフォルトを設定し、必要に応じて個々のホスト/フォルダでこれを上書きすることができます。
サーバー情報の更新
エージェントアップデータ―を Checkmk サーバーに接続するためのオプションの設定データを入力できます。 この項目を設定していない場合は、エージェントアップデータ―を登録する際に、後で情報を入力する必要があります。
使用状況
セントラルセットアップによる分散監視の場合、エージェントアップデータ―は、デフォルトで、接続先の Checkmk サイトから関連するアップデートサーバーを取得します。 このオプションを使用すると、ここで入力したアップデートサーバーを常に使用し、自動アップデートサーバーを無視するように設定できます。
更新サーバーの DNS 名または IP アドレス
ここでは、いくつかの例外を除き、このルールを現在設定しているサーバーの名前を入力します。
この方法の例外は、対象ホストを別の Checkmk サーバーに「移動」する場合です。 この状況では、ここで 1 回だけ別のサーバーを入力してください。 以下の「適用シナリオ」もご参照ください。 Checkmk サーバーにアクセスできる DNS 名を入力します。 ここで重要なのは、監視対象のホストがこの DNS 名を解決でき、Checkmk でホストとして設定されていることです。 HTTPS を使用する場合は、証明書の名前がホストが認識する Checkmk サーバーの名前と一致していることを確認してください。
更新サーバーの Checkmk サイトの名前
ここでは、いくつかの例外を除き、このルールを現在設定しているサイトの名前を入力します。 この方法の例外は、影響を受けるホストを別の Checkmk サイトに「移動」する場合です。 その場合は、1 回だけ、ここに別のサイトを入力してください。 以下の「アプリケーションのシナリオ」も参照してください。 セントラルセットアップによる分散監視では、登録するサイトが、このルールが設定されているセントラルサイトと異なる場合もあります。
更新を取得するためのプロトコル
推奨通り HTTPS を使用する場合は、エージェントアップデータ―も接続を検証するための CA 証明書を利用できることを確認してください。
重要:サーバーの設定によっては、HTTPS(HTTP から HTTPS への転送を含む)の使用が強制される場合があります。その場合、このルールを HTTP に設定しても効果はありません。
HTTPS 認証用の証明書
ここで設定された CA または自己署名証明書は、HTTPS 接続の認証のためにエージェントアップデータ―で使用できます。 あるいは、セントラルセットアップによる分散監視の場合、Checkmk サイトからエージェントアップデータ―に証明書を提供することもできます。 または、コマンドラインパラメータを使用して、接続中に直接インポートすることもできます。
重要:サーバーの証明書チェーンが公的 CA によって署名されている場合、通常、インポートした証明書がなくても接続を検証できます。 ただし、上記のソースからインポートした証明書がエージェントアップデータ―で使用可能になると、他のすべての CA 認証機関は無視されます。HTTPS の設定に問題がある場合は、以下の FAQ を参照してください。
更新チェックの間隔
ここでは、エージェントアップデータ―が、設定された 監視サーバーに更新があるかどうかを照会する間隔を指定します。指定した 間隔が経過しない限り、ネットワークの負荷をできるだけ抑えるため、キャッシュされた呼び出しが返されます。 通常、間隔は 10 分以上 に設定することをお勧めします。それより短い間隔に設定すると、Checkmk エージェントの数が多 い場合、ネットワークに非常に大きな負荷がかかる危険性があります。 ここに値を設定しない場合、デフォルト値の 1 時間が適用されます。
プロキシ設定
このルール設定も同様にオプションです。 エージェントアップデータ―は、プロキシ設定が構成されている場合でも、ターゲットホスト上の Checkmk サーバーに直接接続されていると想定し、すべてのローカルプロキシ設定を無視します。 これが望ましい動作である場合は、このルール設定は省略できます。 それ以外の場合は、プロキシ設定を手動で入力するか、ホストの既存の環境変数を使用してください。
実行可能形式 (Linux)
プラグインをエージェントインストールパッケージに追加する方法をオプションで指定できます。 ルールのデフォルトの動作は、ターゲットシステムによって異なります。
Linux (deb、rpm、tgz): これらのシステムでは、手動で何も編集する必要はありません。エージェントアップデータ―は 64 ビットバイナリとして渡されます。 オプションで、レガシーシステム用に 32 ビットバイナリ、または古い Python スクリプトを選択することもできます。 重要:バイナリには、glibcパッケージ(最低 2.5 バージョン)が必要です。 Linux ディストリビューションは、2006 年以降、一般的にこの要件を満たしています。
Windows: Windows ホストの場合、Checkmk は常に 32 ビットの実行ファイルをデプロイします。 したがって、このルールはデフォルトでは無視されます。 注:Windows ホストで 64 ビットのエージェントアップデータ―バイナリが見つかった場合、そのバージョンは古いバージョンの Checkmk であり、最新情報ではありません。
Solaris: ここでも何も変更する必要はありません。 64 ビットバイナリでデフォルト値のままにしておいても、Checkmk は Python スクリプトを使用します。
その他のアーキテクチャ: arm や ppc などの他のアーキテクチャ用のパッケージがある場合は、このオプションをPython に手動で設定してください。Checkmk はこれを自動的に検出しませんし、これらのプラットフォーム用のバイナリは提供されていません。
それでも古い Python スクリプトを使用する必要がある場合は、システムに以下の要件が適用されます。
Python3 バージョン 3.4 以降
Pythonモジュールリクエスト、PySocksおよびpyOpenSSL
エージェントが受け入れる署名キー
エージェントアップデータ―が受け入れる署名のキーを 1 つ以上選択してください。 オプションで複数のキーを指定することもできます。これは、たとえば、古いキーを使用不能にしたい場合などに 有用です。このためには 、その間、ホストのエージェントアップデータ―が両方のキーを受け入れるように設定する必要があります。
この最後の設定が完了すると、ルールは次のスクリーンショットのようになります。
すべての設定を保存するには、Save をクリックしてください。

1.3. エージェントのベイクと署名
次に、この方法で設定したエージェントを、1 つの操作で即座にベイクおよび署名することができます。 これは、新しく作成およびカスタマイズしたルールは、再度作成/ベイクするまでインストールパッケージには見つからないためです。Setup > Agents > Windows, Linux, Solaris AIX に移動し、Bake and sign agents をクリックします。 使用するキーのパスフレーズを入力する必要があります。Bake and sign をクリックすると、ベイク手順がバックグラウンドプロセスとして開始されます。 このプロセスが完了すると、次のようなメッセージが表示されます。

この方法で署名されたすべてのエージェントは、対応する 記号に割り当てられます。 複数のキーを作成した場合は、追加のキーで個別に署名してください。
重要:新しいパッケージが、エージェントアップデータ―が認識しているキーのいずれかで署名されている場合、監視対象のホスト上のエージェントアップデータ―だけで十分です。
1.4. エージェントアップデータ―の登録
次のステップでは、Checkmk サーバーで監視するホストを登録します。 新しいホストは Checkmk サーバーによってまだ信頼されておらず、サーバーはホストを自動的に更新すべきであることをまだ認識していないため、エージェントはホストに手動で(1 回だけ)インストールする必要があります。
これを行うには、まずSetup > Agents > Windows, Linux, Solaris, AIX にアクセスし、エージェントベーカリーからホストに適したパッケージをダウンロードします。 パッケージにエージェントアップデータ―プラグインが確実に含まれていることを確認してください。
Linux でエージェントアップデータ―を登録する
次に、エージェントパッケージをホストにコピーし、rpm またはdpkg (Linux パッケージインストール) でインストールします。
インストール後、エージェントアップデータ―プラグインは、/usr/lib/check_mk_agent/plugins/3600/cmk-update-agent ディレクトリにあります。3600 のサブディレクトリの値は、更新チェックの間隔(秒単位)を表します(ここではデフォルト値の 1 時間)。
同じ名前のスクリプトも/usr/bin/ に保存されているため、cmk-update-agent コマンドも使用できます。
次に、register 引数でエージェントアップデータ―を呼び出します。
必要な情報を順番に入力してください。
次のコマンドで、Linux ホストからエージェントアップデータ―を登録します。
root@linux# cmk-update-agent register -v
-------------------------------------------------------------------
| |
| Check_MK Agent Updater v2.1.0 - Registration |
| |
| Activation of automatic agent updates. Your first step is to |
| register this host at your deployment server for agent updates. |
| For this step you need a user with the permission |
| "Register all hosts" on that Checkmk site. |
| |
-------------------------------------------------------------------
Our host name in the monitoring:
myhost
User with registration permissions:
cmkadmin
Password:
Going to register agent at deployment server
Successfully registered agent of host "myhost" for deployment.
You can now update your agent by running 'cmk-update-agent -v'
Saved your registration settings to /etc/cmk-update-agent.state.
Hint: you can do this in scripts with the command:
cmk-update-agent register -s myserver.example.com -i mysite -H myhost -p https -U cmkadmin -P * -vまたは、コマンドラインオプションで必要なデータを入力して、非対話モードで登録を行うこともできます。
Linux では、ここでcmk-update-agent register --help を呼び出すと、設定可能なオプションが表示されます。
Windows でエージェントアップデータ―を登録する
次に、エージェントパッケージをホストにコピーし、msiexec (Windows パッケージのインストール)でインストールします。
インストールが完了すると、エージェントアップデータ―は Windows エージェントのC:\Program Files (x86)\checkmk\service\check_mk_agent.exe に統合されます。
アップデータ―自体は、check_mk_agent.exe updater コマンドで制御できます。
register 引数でエージェントアップデータ―を呼び出します。
Windows では、管理者権限のあるコマンドプロンプトで実行する必要があります。
必要な情報を順番に入力します。
Windows ホスト用のエージェントアップデータ―はエージェント自体に統合されているため、登録用のコマンドは次のようになります。
C:\WINDOWS\system32> "C:\Program Files (x86)\checkmk\service\check_mk_agent.exe" updater register
Using previous settings from C:\ProgramData\checkmk\agent\config\cmk-update-agent.state.
Our host name in the monitoring:
mywindowshost
User with registration permissions:
cmkadmin
Password:
Successfully registered agent of host "mywindowshost" for deployment.または、コマンドラインオプションで必要なデータを入力して、非対話モードで登録を行うこともできます。 登録用の完全なコマンドは、次のとおりです。
C:\WINDOWS\system32> "C:\Program Files (x86)\checkmk\service\check_mk_agent.exe" ^
updater register -s myserver.example.com -i mysite -H mywindowshost -p https -U cmkadmin -P mycmkadminpassword -v一時的な登録と一般的な情報
ワンタイム登録は、オートメーションユーザーを介して行うこともできます。
この場合、コマンドラインで、ユーザーは-U/--user 、オートメーションパスワードは-S/--secret として渡されます。
登録に関する注意事項:
登録時には、プラグインは監視で認識されるホスト名も必要です。 これは、必ずしもコンピュータのホスト名と同じである必要はありません。 ホスト名は、キーとともにローカルに保存されます。
HTTPS を使用するには、監視サーバーでも HTTPS を設定する必要があります。 HTTP の方がはるかに簡単ですが、通信の暗号化は提供されません。 エージェントにはパスワードが含まれる可能性があるため、HTTPS を使用することをお勧めします。 ただし、エージェントの信頼性は、署名によって独立して保証されます。
Checkmk 管理者としてログインするのは 1 回のみです。 登録時に、エージェントとサーバーは、このホストのみに知られる秘密鍵 (ホストシークレット) を合意します。 Checkmk 管理者のパスワードはどこにも保存されません。
対話モードでは、まだ設定されていないフィールドのみポーリングされますが、非対話モードでは、ヘルプに表示されているすべてのフィールドを設定することができ、この呼び出しに対して最優先されます。
cmk-update-agent.stateにのみ保存されているオプションは上書きされますが、cmk-update-agent.cfgのオプションは上書きされません。 詳細については、以下の「ローカル設定の表示」をご覧ください。
登録が正常に完了すると、ホストのシークレットはエージェントの/etc/cmk-update-agent.state ファイルに保存されます。
サーバーでは、~/var/check_mk/agent_deployment/myhost に保存されます。
この時点から、ホストはパスワードを入力しなくても、サーバーから自分のエージェントをダウンロードできるようになります。
他のホストからエージェントをダウンロードすることはできません。他のホストのエージェントには、機密データが含まれている可能性があるためです。
1.5. マスタースイッチ
これで、すべての条件が満たされたはずです。 まだ満たされていない場合は、Master switch でをクリックして有効にしてください。Prerequisites テーブルは、次のように表示されます。

これ以降、エージェントは、設定された更新間隔の終了時にレポートを行い、エージェントの新しいバージョンを 探します。 新しいバージョンが利用可能で、署名されている場合は、自動的にダウンロードされ、インストールされます。
同時に、Master switch は、更新プロセスをグローバルに無効にする方法のひとつでもあります。
Checkmk Conference #3 (2017) で公開されたビデオでも、手順を順を追って説明しています。 これは最新バージョンではありませんが、基本的な手順は変更されていません。 新しいエージェントの自動アップデート
1.6. ホストの自動更新を無効にする
ホストを自動更新から除外する場合は、Agent updater (Linux, Windows, Solaris) ルールセットを使用して、その設定を調整し、アップデートプラグインを無効にしてください。 次回、定期的なアップデートが実行されると、エージェントは自身のアップデータ―を削除します。
もちろん、その後、更新を再度有効にするには、新しいエージェントパッケージを手動でインストールする必要があります。 ただし、登録はそのまま残りますので、更新する必要はありません。
2. 特定のホストへの更新を制限する
新しいエージェントを多数のホストに展開する前に、まず少数のホストで試してみたいと思うでしょう。 この重要な手順により、重大なミスを防ぐことができます。
この機能を使用するには、[Automatic agent updates ] ページの真ん中のボックスを使用します。

条件には論理和 (AND) が適用されます。選択したすべての条件に一致するホストのみが更新を受け取ります。 ここでホストを選択するための条件を設定したら、[Test hostname before activation ] フィールドを使用して個々のホスト名を入力し、これらのホストの更新が有効になっているかどうかをチェックできます。
重要:まだ自動アップデートが提供されていないホストでは、インストールされているパッケージにエージェントアップデータ―プラグインが含まれていてはなりません。プラグインが含まれていると、ホストがまだ登録されていないことを示す警告が定期的に表示されます。
3. 診断
すべての更新が意図したとおりに機能しているかどうかを診断するための情報源はいくつかあります。
3.1. エージェント展開の統計

この概要では、エージェントアップデートの個々のホストの動作を示しています。 インラインヘルプでさらに詳しい説明があります。 をクリックすると、個々のホストの詳細リストが表示されます。 また、Monitor > System > Agent update status ビューから、登録されているすべてのホストの完全なリストを表示することもできます。 そこで、個々のホストを検索することができます。

このリストには、エージェントのハッシュの開始方法、ホストに対応するエージェント (Target Agent)、 ホストから最後にダウンロードされたエージェント (Downloaded Agent)、 ホストに現在インストールされているエージェント (Installed Agent) に関するドキュメントも表示されます。 これにより、仕様が満たされているかどうか、またはプロセスが現在どの段階にあるかを常に確認することができます。 ここで注意すべき点は、ステータス情報はエージェントベーカリーとエージェントアップデータ―間の通信で左側に直接表示されますが、Update Check およびUpdate Check Output フィールドは、ホストのエージェントを照会する際にエージェントアップデータ―プラグインから取得されるものであり、キャッシュ(照会間隔で定義)により、これらの情報は別のタイミングで更新される場合があることです。
3.2.Check_MK Agent サービス
エージェントにエージェントアップデータ―プラグインをインストールしている場合、プラグインは、監視データのフォームで、アップデートの現在のステータスを定期的に出力します。 サービスディスカバリーは、ホスト上にCheck_MK Agent という名前の新しいサービスを生成します。 これも、アップデートの現在の状態を反映しています。 これにより、アップデートに関する問題が発生した場合に通知を受けることができます。

このサービスは、更新の状況を通知します。サービスの状態は、署名キーの状態の評価結果などを示します。
WARN: 署名キーの証明書が破損しているか、有効期限が切れているか、または 90 日以内に無効になります。
CRIT: 署名キーの有効な証明書がないか、証明書が 30 日以内に無効になります。
3.3. ローカル設定のビュー
エージェントアップデータ―の動作は、cmk-update-agent.cfg およびcmk-update-agent.state の 2 つのファイルによって制御されています。.cfg ファイルで定義された値は、.state ファイルで定義された値よりも常に優先されます。
エージェントアップデータ―が予期しない動作をした場合は、設定を確認してみてください。
コマンドラインからエージェントアップデータ―を直接呼び出す場合、便利な機能があります。
root@linux# cmk-update-agent show-config
Showing current configuration...
Configuration from config file (/etc/check_mk/cmk-update-agent.cfg):
server: myserver
site: mysite
protocol: http
certificates: []
ignore_update_url: False
interval: 3600
proxy: None
signature_keys: ['-----BEGIN CERTIFICATE-----\n [...] \n-----END CERTIFICATE-----\n']
use_proxy_env: False
Configuration from state file (/etc/cmk-update-agent.state):
last_error: None
host_secret: zqscykkqfdkpwnwenqfibdksqvuamblstbtmpasbhnlbubmncgmrqxvakasittxw
host_name: myhost
user: cmkadmin
last_check: 1660750511.8183599
pending_hash: None
installed_aghash: 94b60c8ef40c4900
last_update: 1660750584.85276533.4. メッセージのログ
問題が発生した場合は、監視対象のホストでアップデートのログデータも確認できます。
Linux では、cmk-update-agent は、警告やエラーなどの重要な情報を syslog に記録します。
Jul 02 13:59:23 myhost [cmk-update-agent] WARNING: Missing config file at ./cmk-update-agent.cfg. Configuration may be incomplete.
Jul 02 13:59:23 myhost [cmk-update-agent] ERROR: Not yet registered at deployment server. Please run 'cmk-update-agent register' first.より詳細なログファイルcmk-update-agent.log (デバッグ出力およびトレースバックを含む)は、Linux および Windows で確認できます。
2021-07-02 17:58:18,321 DEBUG: Starting Check_MK Agent Updater v2.0.0p9
2021-07-02 17:58:18,322 DEBUG: Successfully read /etc/cmk-update-agent.state.
2021-07-02 17:58:18,322 DEBUG: Successfully read /etc/check_mk/cmk-update-agent.cfg.
pass:q[...]
2021-07-02 17:58:18,387 INFO: Target state (from deployment server):
2021-07-02 17:58:18,387 INFO: Agent Available: True
2021-07-02 17:58:18,387 INFO: Signatures: 1
2021-07-02 17:58:18,387 INFO: Target Hash: 081b6bcc6102d94a
2021-07-02 17:58:18,387 INFO: Ignoring signature #1 for certificate: certificate is unknown.
2021-07-02 17:58:18,388 DEBUG: Caught Exception:
Traceback (most recent call last):
File "/build/enterprise/agents/plugins/cmk_update_agent.py", line 1733, in main
File "/build/enterprise/agents/plugins/cmk_update_agent.py", line 714, in run
File "/build/enterprise/agents/plugins/cmk_update_agent.py", line 1372, in _run_mode
File "/build/enterprise/agents/plugins/cmk_update_agent.py", line 1071, in _do_update_as_command
File "/build/enterprise/agents/plugins/cmk_update_agent.py", line 1150, in _do_update_agent
File "/build/enterprise/agents/plugins/cmk_update_agent.py", line 1221, in _check_signatures
Exception: No valid signature found.どちらのシステムでも、コマンドラインオプション--logfile LOGFILE を使用して、ログファイルの代替パスを指定することができます。
4. アプリケーションのシナリオ
4.1. ホストの自動更新を無効にする
ホストを自動更新から削除する場合は、その設定をAgent updater (Linux, Windows, Solaris) ルールセットで変更し、アップデート プラグインを無効にしてください。次回の定期アップデート時に、エージェント 自体が独自のアップデータ―を削除します。
もちろん、更新を再度有効にするには、新しいエージェントパッケージを手動でインストールする必要があります。 登録は保持されますので、更新する必要はありません。 4.2. 新しい監視サイトへの移行
4.2. 新しい監視サイトへの移行
サーバーに登録されているホストを失うことなく、シングルサイト設定で新しい Checkmk サイトに移行したい 場合は、エージェントの 更新プロセスを正常に実行するには、サーバーとホストに関する以下の情報が一致している必要があります。
ホストが監視および登録されている名前。
ホストのシークレット。これは、登録時に自動的に割り当てられます。
エージェントの署名に使用される署名。
これを行うには、次の手順に従ってください:
まず、新しいサイトに移行する登録情報を持つすべてのホストを監視に追加します。新しいサイトのホストが、同じ名前で監視されていることを確認してください。次に、
~/var/check_mk/agent_deploymentフォルダを古い監視サイトから新しい監視サイトにコピーします。ホストにインストールされているエージェントが受け入れる署名キーをエクスポートします。署名キーは、Setup > Agents > Windows, Linux, Solaris, AIX > Agents > Signature keys を使用してエクスポートおよびインポートできます。
新しい監視サイトの手順 2 で、これらの署名キーをインポートします。
指示に従って、新しい監視サイトでエージェントアップデータ―のルールを設定し、インポートした署名キーでベイクしたエージェントに署名します。
最後に、古いサイトのエージェントアップデータ―ルールで、更新サーバーと新しい監視サイトに準拠した Checkmk サイトの名前に関するフィールドを設定し、エージェントを再度ベイクします。注:エージェントを再度ベイクする前に、すべてが正しく指定されていることを確認してください。
次の自動更新がホストに適用されると、古い監視サイトはロックアウトされます。 その時点から、監視対象のホストは新しい Checkmk サーバーにのみ応答するようになります。 2 回目の自動更新が完了すると、新しい Checkmk サーバーによってエージェントがインストールされます。
4.3. 自動インストーラとしてのエージェントアップデータ―
注意:これはエージェントアップデータの公式機能ではありません。 したがって、この手順は主に経験豊富なユーザーを対象としています。 ホストに Checkmk エージェントをインストールする公式な方法は、システムに適した エージェントパッケージをダウンロードして実行することです。ただし、エージェントアップデータ―はスタンドアロンプログラムとしても機能するため、 Checkmk エージェントを最初にエージェントアップデータ―でインストールすることも可能です。
以下の手順に従ってください:
cmk-update-agent バイナリまたは
cmk_update_agent.pyスクリプトを、監視するホストにコピーします(どちらも、Checkmk サーバーの~/share/check_mk/agents/pluginsにあります)。cmk-update-agent registerを呼び出して、Checkmk サーバーにホストを登録します。ここでは、必要な登録情報をコマンドラインから直接渡すのが望ましいです。特に、インストールスクリプトを使用する場合はそうです。対応するオプションは、cmk-update-agent register --helpを呼び出すと表示されます。最後に、エージェントアップデータ―プラグインを呼び出して、監視するホストのすべての設定詳細とともにエージェントをインストールします。ただし、ローカル設定がないため(エージェントアップデータ―にも対応する警告が表示されます)、ダウンロードするエージェントパッケージの署名がないため、
cmk-update-agent --skip-signaturesをもう一度呼び出して、ダウンロードしたパッケージを明示的に信頼してください。エージェントアップデータ―によるインストールには、もちろん、エージェントベーカリーが Checkmk サーバー上にターゲットホストに適したエージェントパッケージを用意していることが前提条件となります。
5. 分散監視におけるエージェントの更新
Checkmk2.0.0 以降、リモートサイト経由でベイクドエージェントを分散することも可能になりました。 この機能を利用するには、セントラルセットアップによる分散監視 と、リモートサイトから HTTP/HTTPS 経由でセントラルサイトに接続できる接続が必要です。
このような分散監視は、特に一時的な場合、異なる Checkmk バージョンでも実行できます。 これにより、大規模なシステムを新しい Checkmk バージョンに順次切り替えることが可能になります。 ただし、この場合は、分散監視における混合バージョン監視環境に関する注意事項を必ずお読みください。
5.1. 機能
技術的には、リモートサイトでの更新要求はセントラルサイトに転送されるように実装されています。これにより、エージェントのベーキングだけでなく、構成全体もセントラルサイトでのみ行われます。 リモートサイトで既に要求されたエージェントパッケージは、リモートサイトにキャッシュされます(有効である限り)。これにより、パッケージをセントラルサイトから再度ダウンロードする必要がなくなります。さらに、要求されたデータはリモートサイトで整合性がチェックされるため、セントラルサイトへの不要な接続が回避されます。
シングルサイトセットアップとは異なり、ホストに適したアップデートサーバーは、エージェントアップデータ―のルールセットからだけ決定されるのではなく、連絡先の Checkmk サイトから要求元のエージェントアップデータ―に通知されます。 このプロセスでは、ホストは、監視元のサイトからサーバーが提供されます。したがって、Checkmk サーバーの指定は、分散監視システム全体で、ホストからアクセス可能な任意のサイト(理論的には)で 1 回だけ登録すれば済みます。 自動的に決定されたサーバーへの接続に失敗した場合は、以前に保存されたサーバー(ルール設定から、または登録時に入力した手動設定)がフォールバックとして使用されます。
5.2. 設定
リモートサイト経由のエージェントパッケージの配布は、個別に有効化する必要はありません。各リモートサイトは状況を自動的に認識し、それに応じてセントラルサイトおよび要求元のエージェントアップデータ―と通信します。 エージェントが更新について明示的にセントラルサイトのみにレポートするように 設定する場合は、エージェントアップデータ―のルールセットで 固定の更新サーバーを指定してください。
ただし、分散監視でエージェントのアップデートを実際に機能させるには 、セントラルサイトでいくつかの設定を行う必要があります。 これらの設定はすべて、Setup > General > Global Settings > Automatic Agent Updates にあります。 リモートサイトごとに設定が異なる場合は、Setup > General > Distributed monitoring > (Site specific global settings) で編集できます。
中央エージェントベーカリーへの接続
この時点で、リモートサイトからセントラルサイトにアクセスするための URL を、プロトコルと文字列check_mk を含めて指定する必要があります。
たとえば、https://myserver.org/mysite/check_mk などです。
Checkmk サイトは、他のすべての欠落している設定を自動的に識別しようとしますが、この URL の指定は必須です。
そうしないと、セントラル構成の場合、この接続方向が確立されません。プロトコルが HTTPS の場合、
リモートサイトは、接続の認証にセットアップで利用可能な CA または自己署名証明書を
自動的に使用します。Setup > General > Global Settings > Site management > Trusted certificate authorities for SSL 。
リモートサイトでは、セントラルサイトにログインするために、事前に作成されたオートメーションユーザーも必要です。
これは、ここで選択することもできます。何も指定されていない場合、
リモートサイトは「Automation」という名前のオートメーションユーザーを検索します。
リモートエージェントベーカリーへの接続
リモートサイトは、必ずしも各監視対象ホストからセントラルサイトと同じ URL でアクセスできるとは限りません。そのため、この目的のために URL をここで設定することができます。この URL は、Checkmk サイトへの接続時に、ホスト(または要求元のエージェントアップデータ―)に自動的に通知されます。 ここでは、サイト固有のグローバル設定として設定することが特に有効です。 URL が指定されていない場合、リモートサイトは、セントラルサイトと監視対象ホストの両方から同じ URL でアクセスできるものとみなされます。HTTPS 接続の場合は、適切な証明書をホストに自動的に提供することもできます。このためには、セントラル CA ストアを使用することはできないため、この時点で適切な証明書を指定しておく必要があります。 あるいは、エージェントアップデータ―のルールで証明書を指定することもできます。
6. HTTPS を使用する場合
この記事では、HTTPS による各接続のセキュリティ確保について何度か言及しています。 ここでは、HTTPS による接続を完全にセキュリティで保護するために必要な手順の概要をもう一度説明します。 リモートサイトからセントラルサイトへの接続、およびホストから Checkmk サイトへの接続は、TLS、つまり HTTPS を使用してセキュリティで保護することができます。 これは、単一のサイトセットアップか分散監視かには関係ありません。
6.1. HTTPS の設定
HTTPS 経由で Checkmk サイトに接続するには、まず監視サーバーを HTTPS 用に設定する必要があります。 これは、たとえば、システム Apache を適切に構成するか、最も簡単な方法として、Checkmk アプライアンスの HTTPS 設定で実現できます。
Checkmk サーバーが HTTP または HTTPS 経由でアドレス指定されるかどうかは、それぞれ設定された URL によって決まります。
URL がhttps:// で始まる場合、サーバーはポート 443 を使用して HTTPS プロトコル経由でアドレス指定されます。
これは、[ Update server information設定で設定したプロトコルにも適用されます。
原則として、Apache 側で HTTP から HTTPS への転送を強制し、その際に個々のパスを(最初は)除外することができます。
設定の詳細については、mod_rewrite およびmod_redirect モジュールに関する Apache のドキュメントを参照してください。
6.2. 証明書の提供
HTTPS 接続を確立するには、接続先のサーバーの証明書チェーンまたは自己署名証明書(サーバーの設定に応じて)を検証できる必要があります。 適切な CA 証明書または自己署名証明書を提供することで、これを実現できます。
ホストから Checkmk サーバーへの接続
エージェントアップデータ―は、常に HTTPS 接続の認証を試み、認証できない場合は接続を終了します。 認証用の証明書は、エージェントアップデータ―が以下のソースから入手できます。
エージェントアップデータ― デフォルトでは、エージェントアップデータ―には、必要なモジュールを含む Python ランタイム環境が付属しています。 また、Mozilla プロジェクトの証明書コレクションに基づくCertifi モジュールの証明書バンドルも付属しています。 これにより、オペレーティングシステムの更新がペンディングの場合でも、公開 CA がエージェントアップデータ―にタイムリーに認識されます。
エージェントベーカリー経由の証明書: 次のいずれかの方法で 1 つ以上の証明書がインポートされると、Certifi モジュールに含まれる証明書は無視されます。 次のソースからの証明書は、ホストにローカルに保存され、エージェントアップデータ―のみによって使用されます。
設定を使用する場合 Certificates for HTTPS verificationを使用すると、証明書をエージェントパッケージにベイクすることができ、インストール (またはアップデート) 後にエージェントアップデータ―が使用できるようになります。
Setup > General > Global settings > Automatic agent updates > Connection to remote agent bakery を使用してリモートサイトへの接続を設定する場合、それぞれのリモートサイトへのHTTPS接続の検証に使用できる証明書を指定することができます。 これは、設定時にどのホストがどのサイトに割り当てられるかがまだ明確でない場合に特に便利です。 このインポートオプションを使用すると、それぞれのアップデートサーバー用の正しい証明書をホストごとに個別に設定する必要がないため、焼き込むエージェントの数を減らすこともできます。
証明書ストア:
エージェントアップデータ―は、エージェントアップデータ―が、付属の Python ランタイム環境ではなくSystem-Pythonを使用するように設定されており、System-Python に Certifi モジュールが設定されていない場合にのみ、オペレーティングシステムの証明書ストアを使用できます。
インストールパラメータや_PIP_STANDALONE_CERT 環境変数など、多くの要因が関係するため、このような設定は公式にはサポートしておりません。
コマンドラインによる証明書 - 証明書のインポート:
コマンドライン引数--trust-cert を使用して、エージェントアップデータを呼び出すこともできます。
これにより、サーバー証明書が取得され、インポートされます。
これは、証明書のタイプに関係なく行われます。
自己署名証明書、公開証明書チェーンの末尾にある証明書、内部 CA で署名された証明書など、チェーンの可能性についてさらにチェックを行うことなく、証明書は信頼されます。
|
コマンドラインによる証明書 - 証明書を無視:
エージェントアップデータ―が有効な証明書をまったく使用できない場合、呼び出しにコマンドライン引数--insecure を使用することで、証明書検証をバイパスすることができます。
これは、有効な証明書が次の接続でサーバーから取得されるのを待っているが、
この証明書がないためにエージェントアップデータ―が「ロックアウト」されている場合に役立ちます。
これにより、この呼び出しに対する証明書チェックが完全に無効になります。 通信は引き続き暗号化されたフォームで行われるため、この引数を使用することは「何もしないよりもまし」です。 |
リモートサイトからセントラルサイトへの接続
リモートサイトからセントラルサイトに接続する場合、セットアップ手順をまったく実行する必要がないため、証明書の配布が簡単になります。 リモートサイトは、Global settings > Site management > Trusted certificate authorities for SSL にある Checkmk 証明書ストアを使用できます。 したがって、必要に応じて、セントラルサイトが複数の URL でアクセス可能な場合は、Site specific global settings 経由で証明書をインポートするだけで十分です。
証明書の交換手順
独自の認証インフラストラクチャを使用している場合は、有効期間が非常に長く、関連付けられているキーが中間証明書の作成に定期的に使用されるルート証明書を使用するのが理想的です。これらの証明書は、サーバー証明書の署名に使用されます。 この場合、中間証明書は、Checkmk サーバーに証明書チェーンとして展開されます。 自動エージェントアップデートを受信するホストには、ルート証明書のみを認識させる必要があります。
新しいサーバー証明書に新しいルート証明書が必要かどうか不明な場合は、次のコマンドを使用してください。 このコマンドを使用して、サーバー証明書の署名に使用されるルートキーの識別子を特定します。
root@linux# openssl x509 -noout -text -in cert.pem | grep -A1 'X509v3 Authority Key'
X509v3 Authority Key Identifier:
14:2E:B3:17:B7:58:56:CB:AE:50:09:40:E6:1F:AF:9D:8B:14:C2:C6表示された識別子が新旧の証明書で同じであれば、それ以上の操作は必要ありません。 このルート証明書を信頼するホストは、証明書チェーンが変更されても、そのチェーンがシステム Apache に正しく保存されていれば、引き続き更新を取得できます。
これまで自己署名証明書または内部 CA の有効期間が短いルート証明書を使用していた場合、または内部 CA のいずれかの以前のルートキーが不正に取得された場合、証明書を置き換える際には、次のようにしてください。
Certificates for HTTPS verification パラメータ(Agent updater (Linux, Windows, Solaris) ルール内)を使用して、新しい証明書を追加します。
エージェントパッケージを再作成し、監視対象のすべてのホストを更新します。 この更新がすべてのホストで実行されていることを確認してから、次の手順に進んでください。
次に、サーバー証明書を置き換えます。
失敗した場合に手動でエージェントを再インストールしやすいホストをいくつか選択して、新しい証明書を使用して再度更新できるかどうかをテストします。
前の手順 (4) が正常に実行できた場合(証明書の有効期限が切れる場合、または鍵が漏洩した場合)、古い証明書を削除して、エージェントの更新を再度実行してください。
7. トラブルシューティング
7.1. 一般的なエラーとその解決方法
Check_MK Agent サービスで既に修正されているエラー
エージェントアップデータ―は、実際には更新間隔内に 1 回だけ実行されます。 そのため、プラグインを手動で呼び出すか、次の間隔がペンディングになるまで、エラーが継続的に表示されます。 手動で再インストールした後、エージェントが登録されない
Checkmk エージェントを手動で再インストールすると、登録に失敗します
エージェントアップデータ―は、独自のステータスファイルcmk-update-agent.state を独立して作成します (Linux/Unix では/etc 、Windows ではconfig フォルダ)。
このファイルは、アンインストール後もホストに残り、レジストリ情報が失われることを防ぎます。
新しいインストールでは、このファイルが検出され、引き続き使用されます。
この状況が望ましくない場合は、アンインストール後にcmk-update-agent.state ファイルを手動で削除してください。
自動更新が有効になっていないホストのステータスを更新する
Monitor > System > Agent Update Status ページには、監視対象であり、Checkmkサーバーにステータスファイルが存在するすべてのホストが表示されます。
ホストが実際にCheckmkサーバーに自動更新をレポートしているかどうかは関係ありません。
ここで予期しないホストが表示された場合は、/omd/sites/mysite/var/check_mk/agent_deploymentフォルダを確認してください。おそらく、古いレジストリまたは誤って作成されたレジストリが原因であると考えられます。
SSL/TLS による接続が機能しません
エージェントアップデータ―は、通常、Agent updater (Linux, Windows, Solaris) の HTTPS 設定で指定されている証明書のみを明示的に信頼するように設計されています。 特に、ローカルにインストールされた証明書は無視されます。 また、ブラウザから Checkmk サーバーにアクセスできるにもかかわらず、 設定が間違っているためにエージェントアップデータ―が接続できない場合もあります。
エージェントアップデータ―の HTTPS 設定では、Checkmk サーバーへの接続を検証できるルート証明書 を指定する必要があります。 つまり、Checkmk サーバーの サーバー証明書に含まれる証明書チェーンは、ここで指定した証明書で検証できる必要があります。 多くの場合、サーバー証明書がここに指定されていますが、これは この目的には適していません。
OpenSSLツールを使用して、Checkmk サーバーの証明書チェーンを確認してください。
チェーンが長いので、わかりやすくするために、ここでは関連するセクションのみを表示し、省略したセクションは[...]
root@linux# openssl s_client -connect mymonitoring.example.net:443
[...]
subject=/CN=mymonitoring.example.net
issuer=/C=DE/O=Deutsche Telekom AG/OU=T-TeleSec Trust Center/CN=Deutsche Telekom Root CA 2
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3832 bytes and written 302 bytes
Verification: OK
---
[...]最後のエントリ(この例ではsubject=/CN=mymonitoring.example.net)には、有効なルート
証明書が必要です。これは、この例のように、必ずしも証明書の発行者である必要はありません。
通常、発行者のチェーンになります。
次に、使用されている証明書を確認します。ここでも、長さを考慮して 上記の例のように短縮しています。
root@linux# openssl x509 -text -noout -in myca.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 38 (0x26)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C = DE, O = Deutsche Telekom AG, OU = T-TeleSec Trust Center, CN = Deutsche Telekom Root CA 2
Validity
Not Before: Jul 9 12:11:00 1999 GMT
Not After : Jul 9 23:59:00 2019 GMT
Subject: C = DE, O = Deutsche Telekom AG, OU = T-TeleSec Trust Center, CN = Deutsche Telekom Root CA 2
[...]
X509v3 extensions:
[...]
X509v3 Basic Constraints:
CA:TRUE, pathlen:5
[...]上記の抜粋にある最上位の証明書は、他の証明書に依存することはできません。
発行者
(Issuer) と項目 (Subject) が同一であり、CA:TRUE オプションが含まれていることがわかります。さらに、オブジェクトを認証する発行者のチェーンは
、最後のエントリまで一貫している必要があります。
したがって、最後の証明書の発行者が CA でない場合は、すべての中間証明書も必要になります。
エラーメッセージ:self cmk-update-agent またはアーカイブ cmk-update-agent.pkg を開けません。
エラーメッセージ:自己 cmk-update-agent またはアーカイブ cmk-update-agent.pkg を開けません
一部の Linux システムでは、Prelinkプログラムがインストールされており、クーロンジョブ
が起動して、システム上のすべてのバイナリファイルを定期的に検査し
、必要に応じてプログラムを高速化するためにそれらを適応させます。しかし、エージェント
アップデータ―プラグインは、このような動作と互換性のないPyInstallerプログラムでパッケージ化されているため
、破損しています。そのため、Checkmk
には deb/rpm パッケージのブラックリストエントリが/etc/prelink.conf.d に保存されており、prelink が存在する場合、既存の/etc/prelink.conf ファイルにエントリを設定します。この問題は処理が難しいため
、これらの対策が有効にならない場合があります。特に、prelink を後でセットアップした場合に発生しやすいです。
そのため、prelink を後でインストールする場合は、エントリを自分で設定し、 次のコマンドで次の行をファイルに追加してください。
root@linux# echo "-c /etc/prelink.conf.d/cmk-update-agent.conf" >> /etc/prelink.confエラーメッセージ cmk-update-agent: 共有ライブラリのロード中にエラーが発生しました: libz.so.1: 共有オブジェクトからのセグメントのマッピングに失敗しました
このエラーメッセージは、/tmp ディレクトリがnoexec フラグでマウントされている場合に発生します。この問題を解決するには、
フラグを削除するか、または、意図的に
フラグを設定して要求している場合は、CheckmkサーバーのSetup でAgents > Windows, Linux, Solaris, AIX > Agents > Agent rules > Installation paths for agent files (Linux, Unix)
ここで、Directory for storage of temporary data (set TMPDIR environment variable)オプションで tmp ディレクトリを自分で定義できます。これにより、エージェントアップデータ―プラグインは、今後、定義したディレクトリに一時ファイルを
書き込みます。これは、/usr/bin/cmk-update-agent
Red Hat Enterprise Linux/CentOS で RPM のインストールが失敗する
特に Red Hat/CentOS システムで、自動アップデートによってトリガーされるrpm の呼び出しが繰り返し失敗し、cmk-update-agent を手動で呼び出すとプロセスは正常に実行されるという現象が時折発生していました。この問題の原因は
、rpm がxinetd の子プロセスによって呼び出された場合に、エラーのない呼び出しを
SELinux ポリシーが禁止していたためでした。この問題
は、SELinux ログを分析して原因を突き止め、audit2allow ツールを使用してポリシーを適宜調整することで解決できます。
エラーメッセージ: 有効な署名が見つかりません
Check_MK Agent サービスが警告「No valid signature found 」を表示した場合、エージェントベーカリーでホスト用に指定されているエージェントパッケージが、承認されたキーのいずれかで 署名されていないことを意味します。

最も単純なケースでは、エージェントベーカリーの「Sign agents 」機能を使用して、Signature keys the agent will accept に表示されているキーのいずれかでエージェントに署名するだけで済みます。

エージェントアップデータ―が影響を受けるホストから Checkmk サーバーに次のレポートを送信し、サービスのキャッシュ間隔が経過すると、警告は表示されなくなります。
ただし、ホストに Checkmk サーバーにある単一の署名キーがない(またはなくなった)場合は、ベイクを繰り返し、 Signature keys the agent will accept に表示されているキーで署名してから、ベイクしたエージェントを影響を受けるホストにコピーして再インストールする必要があります。
影響を受けたホストで、cmk-update-agent -v またはcheck_mk_agent.exe updater -v を実行すると、このエラーの詳細を確認できます。
詳細なエラーメッセージには、エージェントアップデータ―プラグインの設定ファイルにある、Checkmk サーバーで受け入れられている(つまり、設定されている)対応するキーがない署名が明示的にリストされます。
Ignoring signature #1 for certificate: certificate is unknown.
No valid signature found.8. ファイルおよびディレクトリ
8.1. Checkmk サーバー上のファイルパス
| ファイルパス | 説明 |
|---|---|
|
ベイクされたエージェントが含まれます。まず、オペレーティングシステムごとにサブディレクトリに分類され (例: |
|
登録されているホストの名前を含むファイルが含まれます。そのうちの 1 つのファイルには、最後の登録時刻とホストの秘密鍵が含まれます。 |
8.2. 監視対象の Linux/Unix ホスト上のファイルパス
| ファイルパス | 説明 |
|---|---|
|
エージェントアップデータ―プラグイン。バイナリまたはスクリプトで、設定に応じて実行可能形式です。サブディレクトリ |
|
エージェントアップデータ―プラグインを呼び出し、コマンド |
|
エージェントアップデータ―プラグインの設定ファイルで、Agent updater (Linux, Windows, Solaris) ルールの設定が含まれています。このファイルは、インストールおよびアップデート時に書き込まれるため、編集しないでください。 |
|
ホストシークレットを含むレジストリ情報を含むファイル |
|
DEBUG メッセージを含む詳細なログファイル |
8.3. 監視対象の Windows ホスト上のファイルパス
| ファイルパス | 説明 |
|---|---|
|
Python ファイルとしてのエージェントアップデータ―プラグイン |
|
コマンドでエージェントを登録するエージェントプログラム |
|
エージェントアップデータ―プラグインの設定ファイル |
|
ホストシークレットを含むレジストリ情報を含むファイル |
|
DEBUG メッセージを含む詳細なログファイル |
|
エージェントベーカリーによって作成される設定ファイル。更新チェックの間隔などを定義します。 |
