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. 監視は介入すべきか?

監視システムはイベントに介入すべきではないことは当然のことであると考えられます。 そして、それをそのままにしておくのがおそらく良い考えでしょう。

しかし、問題を確実に特定できるシステムが、自動的に機能すれば、その問題を修正することも可能であるというのは、確かに魅力的な考えです。

いくつかの適切な例は容易に想像できます:

  • クラッシュしたサービスの再起動。

  • Java-VM のメモリが不足した場合に、廃品回収業者を起動する。

  • VPN チャンネルが確実に切断された場合の VPN チャンネルの再構築。

これを容認できるのであれば、監視について別の考え方が必要になります。 単に監視するだけの、運用には「必要のない」システムから、段階的なプロセスを経て、監視はデータセンターに欠かせない器官へと変化していきます。

しかし、監視は、問題を発見した場合に自動的に問題を修正するだけではありません。 障害発生時に追加の診断データを収集することも、非常に有用であり、かつ無害です。 アラートハンドラーを起点として活用できる問題は、他にも数多くあるでしょう。

1.2. Checkmk のアラートハンドラー

アラートハンドラーは、ご自身で作成するスクリプトで、問題が発生した場合、より正確にはホストまたはサービスのステータスが変化した場合に、Checkmk によって実行されます。 アラートハンドラーは通知とよく似ており、設定も同様ですが、いくつかの重要な違いがあります。

アラートハンドラーは通知とよく似ており、設定も同様ですが、 いくつかの重要な違いがあります。

  • アラートハンドラーは、スケジュールダウンタイム、通知期間、承認、および同様の制御とは無関係です。

  • アラートハンドラーは、最初の再試行(複数のチェックの試行が設定されている場合)によってアクティブになります。

  • アラートハンドラーは、ユーザーおよび連絡先グループとは無関係です。

  • アラートハンドラーは、商業版でのみ利用可能です。

アラートハンドラーは「非常に低レベル」であるとも言えます。 ホストまたはサービスのステータスが変更されると、設定されたアラートハンドラーが即座にアクティブになります。 このようにして、アラートハンドラーは、実際のアラートが生成される前に、修復を正常に実行することさえ可能です。

Checkmk では、いつものように、ルールを使用して、特定のハンドラーを実行する条件を定義することができます。 その方法およびアラートハンドラーに関するその他の情報については、この記事をご覧ください。

Checkmk Rawユーザー向けのヒント: 監視によってアクションを自動的に実行することもできます。 このためには、Nagios の「イベントハンドラ」を使用します。~/etc/nagios/conf.d/ で、Nagios 構文の手動設定ファイルを使用して設定してください。 イベントハンドラについては、詳細なドキュメントがあります。 情報はGoogle で簡単に見つけることができます。

2. アラートハンドラーの設定

2.1. スクリプトを正しいディレクトリに保存する

アラートハンドラーは、Checkmk サーバーで実行されるスクリプトです。 これらは、~/local/share/check_mk/alert_handlers/ ディレクトリに保存する必要があり、Linux でサポートされている言語(BASH、Python、Perl など)で記述することができます。chmod +x でスクリプトを実行可能にすることを忘れないでください。

スクリプトの 2 行目にコメント(# ハッシュ)を挿入すると、そのコメントがルールの選択リストにスクリプト名として表示されます。

~/local/share/check_mk/alert_handlers/myhandler
#!/bin/bash
# Foobar handler for repairing stuff
...

2.2. 試してみるための簡単なアラートハンドラー

通知と同様に、スクリプトはホストまたはサービスに関するすべての情報を環境変数として取得します。これらの変数はすべて、ALERT_ というプレフィックスで始まります。

スクリプトにどの環境変数が表示されるかを正確にテストするには、次のアラートハンドラーを使用してテストしてください。

~/local/share/check_mk/alert_handlers/debug
#!/bin/bash
# Dump all variables to ~/tmp/alert.out

env | grep ^ALERT_ | sort > $OMD_ROOT/tmp/alert.out
  • env すべての環境変数を出力します。

  • grep ^ALERT_ ALERT_ で始まるものを選択します。

  • sort 結果のリストをアルファベット順に並べ替えます。

2.3. アラートハンドラーのアクティブ化

ハンドラーの有効化は、Setup > Events > Alert handlers を使用して行います。

以下の手順に従ってください:

  1. スクリプトを~/local/share/check_mk/alert_handlers/debug に保存します。

  2. chmod +x debug で実行可能にしてください。

  3. Setup > Events > Alert handlers から設定ページを呼び出します。

  4. そこで、Add rule で新しいルールを定義します。

アラートハンドラーを選択するフォームに直接アクセスでき、スクリプトの 2 行目に記録されるタイトルが表示されます。 さらに、テキストフィールドに引数を入力して追加することもできます。 これらは、スクリプトのコマンドライン引数として解釈されます。 シェルでは、$1$2 などでアクセスできます。

alert handler arguments

重要: ルールを保存すると、アラートハンドラーはすぐにアクティブになり、ホストまたはサービスのステータスが変更されるたびに実行されます。

2.4. テストと故障診断

テストするには、Fake check resultsCRIT に手動で設定します。 これで、変数を含むファイルが作成されます。 その最初の 20 行は次のとおりです。

OMD[mysite]:~$ head -n 20 ~/tmp/alert.out
ALERT_ALERTTYPE=STATECHANGE
ALERT_CONTACTNAME=check-mk-notify
ALERT_CONTACTS=
ALERT_DATE=2016-07-19
ALERT_HOSTADDRESS=127.0.0.1
ALERT_HOSTALIAS=myserver123
ALERT_HOSTATTEMPT=1
ALERT_HOSTCHECKCOMMAND=check-mk-host-smart
ALERT_HOSTCONTACTGROUPNAMES=all
ALERT_HOSTDOWNTIME=0
ALERT_HOSTFORURL=myserver123
ALERT_HOSTGROUPNAMES=check_mk
ALERT_HOSTNAME=myserver123
ALERT_HOSTNOTESURL=
ALERT_HOSTNOTIFICATIONNUMBER=1
ALERT_HOSTOUTPUT=Packet received via smart PING
ALERT_HOSTPERFDATA=
ALERT_HOSTPROBLEMID=0
ALERT_HOSTSHORTSTATE=UP
ALERT_HOSTSTATE=UP

アラートハンドラーの実行(または非実行)に関するログファイルは、~/var/log/alerts.log に保存されます。 ハンドラーdebug の実行に関するセクションは、 ホストmyserver123のサービスFilesystem / について、 次のように表示されます。

~/var/log/alerts.log
2016-07-19 15:17:22 Got raw alert (myserver123;Filesystem /) context with 60 variables
2016-07-19 15:17:22 Rule ''...
2016-07-19 15:17:22  -> matches!
2016-07-19 15:17:22 Executing alert handler debug for myserver123;Filesystem /
2016-07-19 15:17:22 Spawned event handler with PID 6004
2016-07-19 15:17:22 1 running alert handlers:
2016-07-19 15:17:22 PID: 6004, object: myserver123;Filesystem /
2016-07-19 15:17:24 1 running alert handlers:
2016-07-19 15:17:24 PID: 6004, object: myserver123;Filesystem /
2016-07-19 15:17:24 Handler [6004] for myserver123;Filesystem / exited with exit code 0.
2016-07-19 15:17:24 Output:

いくつかの追加の役立つヒント:

  • アラートハンドラーによって標準出力に生成されたテキストは、Output: とともにログファイルに表示されます。

  • スクリプトの終了コードも (exited with exit code 0) に記録されます。

  • アラートハンドラーは、ターゲットホストでコマンドを実行する場合に非常に役立ちます。 Checkmk は、Linux 用の既製のソリューションを提供しています。これについては後で説明します。

3. ルールベースの構成

導入例の例で示したように、アラートハンドラーをトリガーするイベントは、ルールによって定義されます。 この機能は、通知とまったく同じですが、多少簡略化されています。 この例では、条件を指定していませんが、実際には、このような条件は現実的ではありません。 次の例は、特定ホストおよびサービスに対してアラートハンドラーが定義する条件を示しています。

alert handlers rule condition

アラートハンドラーは、

  • myhost123 およびmyhost124 のホストに対してのみ、

  • サービスJVM CaramKern Memory

  • OK またはWARN の状態がCRIT に変更された場合、

  • そして 2 回目のチェックの試行でのみチェックします。

この例でハンドラをトリガーするには、ルールMaximum number of check attempts for service を使用して、チェックの試行回数の最小値を 2 に設定する必要があります。 廃品回収業者が正常に動作した場合に通知を抑制するには、この値を 3 に設定する必要があります。これは、2 回目の試行後にハンドラが問題を直接解決できる場合、3 回目の試行ではOK 状態が検出されるため、それ以上の通知は必要ないからです。

注:Checkmk の他の場所とは異なり、条件が一致する場合、すべてのアラートハンドラールールが実行されます。 同じハンドラーを呼び出す 2 つのルールがある場合でも、これらのハンドラーは実際に 2 回実行されます。 アラートヘルパー(次の章で説明)は、同じハンドラーを同時に複数回実行してはならないため、エラーメッセージを表示して 2 回目の実行を抑制します。 ただし、このケースが発生しないようにルールを設定することをお勧めします。

4. アラートハンドラーの実行方法

4.1. 非同期実行

アラートハンドラーは、SSH またはその他のプロトコルを使用して、影響を受けたマシンにリモートでログインし、そこでスクリプト制御のアクションを実行するために頻繁に使用されます。 このマシンは問題が発生しているため、接続に時間がかかる、あるいはタイムアウトになる可能性も排除できません。

監視が停止したり、その間に他のアラートハンドラーが停止したりすることがないように、アラートハンドラーは原則として非同期で実行されます。 この機能は、補助プロセスであるアラートヘルパーが担当し、CMC によって起動されます。 オーバーヘッドを削減するため、これは、少なくとも 1 つのアラートハンドラールールが作成されている場合にのみ発生します。cmc.log に、次の行が表示されます。

~/var/log/cmc.log
2016-07-19 15:17:00 [5] Alert handlers have been switched on

ホストまたはサービスの状態が変化するたびに、アラートヘルパーは CMC から、イベントに関連するすべての情報を含む通知を受け取ります。 その後、すべてのアラートルールを評価し、ハンドラーを起動すべきかどうかを判断します。 起動すべき場合、適切なスクリプトが起動され、外部プロセスとしてバックグラウンドで実行されます。

4.2. 監視コアの停止

CMC を停止すると (omd stop 、または監視サーバーをシャットダウンするなど)、実行中のすべてのアラートヘルパーが中止されます。 これらは後で繰り返されることはありません。なぜなら、「後で」がいつになるかは誰にもわからないからです。 サービスを再起動するなどすると、有益というよりもむしろ有害になる可能性があります。

4.3. タイムアウト

エラー状況において、あまりにも多くのプロセスが起動されるのを防ぐため、アラートハンドラーの実行中は 60 秒(設定可能)のタイムアウトが有効になります。 この時間が経過すると、ハンドラーは停止します。 具体的には、タイムアウトが終了すると、シグナル 15(SIGTERM )がハンドラーに送信されます。 これにより、ハンドラーは正常に停止することができます。 さらに 60 秒 (2 倍のタイムアウト) 経過すると、シグナル 9 (SIGKILL) によって最終的に「終了」されます。

4.4. オーバーレイ

Checkmk は、同じホスト/サービスに適用され、同じパラメータで同じスクリプトを実行するアラートヘルパーが同時に実行されることを防止します。 このような状況は、最初のアラートハンドラーがまだ実行中であり、同じハンドラーの 2 つ目のコピーを起動しても意味がないことを示しています。2 つ目のハンドラーは即座にキャンセルされ、「失敗」と識別されます。

4.5. 終了コードと出力

アラートハンドラーの出力および終了コードは確実に評価され、コアに返送されて監視ヒストリーに保存されます。 さらに、通知をトリガーすることもできます(以下を参照)。

4.6. グローバル設定

アラートハンドラーを実行するためのグローバル設定がいくつかあります。

alert handlers options

Alert handler log level は、アラートヘルパーのログファイル(~/var/log/alerts.log )へのログ記録に影響します。

4.7. マスターコントロール

alert handlers master control off

Master control スナップインをクリックすると、アラートハンドラーをグローバルに無効にすることができます。 現在実行中のハンドラーは影響を受けず、完了まで実行されます。

できるだけ早く小さなスイッチを緑色に戻すことを忘れないでください。 そうしないと、監視によってすべてが修正されているという誤った安心感に惑わされる可能性があります。


5. ヒストリーのアラートハンドラー

アラートハンドラーは、監視ヒストリーにエントリを作成します。 これにより、alerts.log ログファイルだけの場合よりも追跡性が向上します。 エントリは、アラートハンドラーが起動するとすぐに作成され、終了すると別のエントリが作成されます。

したがって、アラートハンドラーは、一般的な監視プラグインと同じように扱われます。つまり、1 行のテキストを生成し、4 つの終了コード 0 (OK)、1 (WARN)、2 (CRIT)、3 (UNKNOWN) のいずれかを返す必要があります。 ハンドラの実行を最初から妨げるすべてのエラー (重複実行による中止、スクリプトの欠落、タイムアウトなど) は、自動的にUNKNOWN でフラグが付けられます。

例えば、この非常にシンプルなハンドラーを呼び出す場合…​

~/local/share/check_mk/alert_handlers/dummy
#!/bin/bash
# Dummy handler for testing

sleep 3
echo "Everything is fine again"
exit 0

... を呼び出すと、関連するサービスのヒストリーに上記のような結果が表示されます (いつものように、最新のメッセージが上に表示されます)。

alert handler history

また、Monitor > System > Alert handler executions という汎用ビューもあり、実行中のすべてのアラートハンドラーをグローバルに表示します。

6. アラートハンドラーによる通知

アラートハンドラーの実行、より正確には実行の完了は通知をトリガーするイベントです。 これにより、ハンドラーがタスクを完了したことを知ることができます。 通知ルールでフィルタリングできるイベントには 2 種類あります。

alert handler notif condition

これにより、正常に実行されたハンドラー(終了コード 0 -OK )と失敗(その他のすべてのコード)を区別することができます。 Checkmk からの電子メール通知には、チェックの結果は表示されず、アラートハンドラーの結果が表示されます。

7. チェック実行ごとのアラートハンドラー

アラートハンドラーは通常、ホストまたはサービスの状態が変化した場合(または問題の処理中に再試行を試みた場合)にのみ呼び出されます。 状態の変化を伴わない単純なチェックの実行では、アラートハンドラーはトリガーされません。

Global settings > Alert handlers > Types of events that are being processed > All check executions! を使用すると、まさにそれを実現することができます。 チェックの実行は、すべてアラートハンドラーをトリガーする可能性があります。 たとえば、この機能を使用して、アクティブな監視から他のシステムにデータを転送することができます。

この設定にはご注意ください。 プロセスの起動やスクリプトの呼び出しは、CPU リソースを大量に消費します。 Checkmk は 1 秒間に 1000 件のチェックを簡単に実行できますが、Linux は 1 秒間に 1000 件のアラートハンドラースクリプトを処理することはできません。

これを実用的に可能にするため、Checkmk では、アラートハンドラーをPython 関数として記述し、プロセスを作成せずにインラインで実行するためのオプションが用意されています。 このようなインラインハンドラーは、通常のハンドラースクリプトと同じディレクトリに保存することができます。 以下の動作例は、インラインハンドラーの構造を示しています。

~/local/share/check_mk/alert_handlers/foo
#!/usr/bin/python
# Inline: yes

# Do some basic initialization (optional)
def handle_init():
    log("INIT")

# Called at shutdown (optional)
def handle_shutdown():
    log("SHUTDOWN")

# Called at every alert (mandatory)
def handle_alert(context):
    log("ALERT: %s" % context)

このスクリプトには中心的な機能はなく、3 つの関数を定義しているだけです。 ただし、必要なのはhandle_alert() 関数だけです。 これは、すべてのチェックの実行後に呼び出され、引数としてcontext は、"HOSTNAME""SERVICEOUTPUT" などの変数を含む Python 辞書を受け取ります。 これらは、通常のハンドラも受け取る環境変数ですが、ここではALERT_ プレフィックスは付きません。 上記の例は、context の内容を表示するために使用できます。

log() 補助関数によって生成されたすべての出力は、~/var/log/alert.log に保存されます。 グローバル変数omd_root およびomd_site は、それぞれホームディレクトリと Checkmk サイトの名前に基づいています。

handle_init() およびhandle_shutdown() 関数は、監視コアの起動または停止時にCheckmkによって呼び出され、データベースへの接続の確立など、初期化を有効にします。

追加情報:

  • 2 行目の# Inline: yes に注意してください。

  • スクリプトを変更した場合は、必ずコアを再起動してください (omd restart cmc)。

  • import コマンドは使用できます。

  • Checkmk アラートヘルパーは、関数を同期して呼び出します。 待機状態が発生しないことを確認してください。

8. Linux でのリモート実行

8.1. 基本原則

すべての Checkmk バージョンには、監視対象の Linux システム上でスクリプトを確実に実行するためのアラートハンドラーがビルトインされています。 このソリューションの最も重要な機能は次のとおりです。

  • スクリプトは、コマンド制限付きの SSH を使用して呼び出されます。

  • 任意のコマンドは使用できず、ユーザーが定義したコマンドのみ使用できます。

  • これはすべて、エージェントベーカリーを使用して実装できます。

Linux リモートアラートハンドラーは、以下の個々のエレメントで構成されています。

  • Checkmk サーバー上の「Linux via SSH 」というタイトルのlinux_remote アラートハンドラー。

  • ターゲットシステム上のmk-remote-alert-handler スクリプト。

  • ターゲットシステムにユーザーが作成したスクリプト(「リモートハンドラ」)。

  • ターゲットシステム上でそれらを実行するユーザーに関する.ssh/authorized_keys へのエントリ。

  • Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Linux Agent > Remote alert handlers (Linux) 内の SSH キーを生成するルール。

  • linux_remote を呼び出すアラートハンドラールール。

8.2. 設定

プロセス FOOサービスがクリティカルになったときに (これはすでに設定済みです)、myserver123 Linux システムで/etc/init.d/foo restart スクリプトを実行したいとします。 次のように進めます。

リモートハンドラーのコーディング

次に、ターゲットシステムで実行するスクリプトを作成します。 エージェントベーカリーを使用しているので、スクリプトはCheckmk サーバー(ターゲットシステムではない!)インストールします。 正しいディレクトリは~/local/share/check_mk/agents/linux/alert_handlers です。 ここでも、2 行目のコメントはユーザーインターフェースでの選択用のタイトルになります。

~/local/share/check_mk/agents/linux/alert_handlers/restart_foo
#!/bin/bash
# Restart FOO service

/etc/init.d/foo restart || {
    echo "Could not restart FOO."
    exit 2
}

スクリプトを実行可能にしてください。

OMD[mysite]:~$ cd local/share/check_mk/agents/linux/alert_handlers
OMD[mysite]:~$ chmod +x restart_foo

この例のスクリプトは、エラーが発生した場合にコード 2 で終了し、アラートハンドラーがそれをCRIT と評価するように作成されています。

ハンドラを含むエージェントパッケージの準備

ここでは、エージェントベーカリーを使用した手順について説明します。 手動でインストールする場合のヒントは、この後の説明をご覧ください。

Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Linux Agent > Remote alert handlers (Linux) でルールを定義します。 プロパティには、先ほど定義したリモートハンドラRestart FOO service が表示されます。 これをインストール用に選択します。

alert handlers install remote

保存すると、リストにルールが表示されます。 ハンドラを呼び出すための SSH キーペアが自動的に生成され、そのフィンガープリントがルールに表示されます。 フィンガープリント自体は、このスクリーンショットの幅に合わせて短縮されています。

alert handlers install remote2

公開鍵はエージェント用です。 秘密鍵は、この方法でインストールされたスクリプトをパスワードを入力せずに呼び出すために、後で Checkmk サーバーで必要になります。

root として別のユーザーを利用することもできます。もちろん、そのユーザーには必要なアクションを実行するための適切な権限が与えられている必要があります。 Checkmk エージェントは、このユーザーがすでに存在するシステムにのみ SSH キーをインストールします。

エージェントのベイク

次に、で新しいエージェントをベイクします。 準備完了のエージェントのリストに、リモートハンドラーと SSH キーが表示されたエントリが表示されます。 このスクリーンショットも短縮されています。今回は、ダウンロード可能なパッケージの数だけ短縮しています。

alert handlers baked handler

エージェントのインストール

次に、ターゲットシステムに RPM または DEB パッケージをインストールします (TGZ アーカイブをインストールしても SSH キーは設定されないため、インストールは不完全になります)。 インストールすると、次のことが行われます。

  • リモートハンドラースクリプトがインストールされます。

  • mk-remote-alert-handler 補助プログラムがインストールされます。

  • 選択したユーザー(ここではroot )について、authorized_keys に、ハンドラの実行を有効にするエントリが作成されます。

  • .ssh ディレクトリおよびauthorized_keys ファイルが、必要に応じて作成されます。

DEB によるインストールでは、次のような表示になります。

root@myserver123:~# dpkg -i check-mk-agent_2016.07.19-9d3ab34905da4934_all.deb
Selecting previously unselected package check-mk-agent.
(Reading database ... 515080 files and directories currently installed.)
Preparing to unpack ...check-mk-agent_2016.07.19-9d3ab34905da4934_all.deb ...
Unpacking check-mk-agent (2016.07.19-9d3ab34905da4934) ...
Setting up check-mk-agent (2016.07.19-9d3ab34905da4934) ...
Reloading xinetd...
 * Reloading internet superserver configuration xinetd                            [ OK ]
Package 9d3ab34905da4934: adding SSH keys for Linux remote alert handlers for user root...

root のSSH設定を確認すると、次のような内容になります:

root@myserver123:~# cat /root/.ssh/authorized_keys
command="/usr/bin/mk-remote-alert-handler restart_foo",no-port-forwarding,no-x11-forwarding,no-agent-forwarding ssh-rsa  AAAAB3NzaC1yc2EAAAADAQABAAACAQCqoDVNFEbTqYEmhSZhUMvRy5SqGIPp1nE+EJGw1LITV/rej4AAiUUBYwMkeo5aBC6VOXkq78CdRuReSozec3krKkkwVbgYf98Wtc6N3WiljS85PLAVvPadJiJCkXFctbxyI2xeF5TQ1VKDRvzbBjXE9gjTnLWbPy77RC8SVXLoOQgabixpWQquIIdGyccPsWGTRgeI7Ua0lgWZQUJt7OIKQ0X7Syv2VHKJNqtW28IWu8y2hBEY/TERip5EQoNT/VclhHqjDG2y3F45PswcXD5in6y30EnfHGcwk+PD6fgp7jPGbO2+QBUwYgW67GmRpbaVQ97CqXFJvORNF+C6+O8DNweyH3ogspjfKvM7eN+M4NIJzjMRyNBMzqF3VmrMeqpzRjfFj2BS/8UbXGgHzZRapwrK3+GXX1pG49n77cIs+GWos9xb1DxX1pEu2tgQwRBBhYcTkk2eKkH18LKzFUyObxtQmf40C24cdQOp6USbwzsniqehsLIHH2unQ7bW6opF/GiaEjZamGbgsPOe8rmey5Vcd//e8cS+OsmcPZNybsTJpBeHpes+5bw0e1POw9GD9qptylrQLYIO5R467Ov8YlRFgYKyaDFHD40j5/JHPzmtp4vjH8Si7YZZOzvTRgBYEoEgbLS5dgdr/I5ZMRKfDPCpRUbGhp9kUEdGX99o5Q== mk-remote-alert-handler-9d3ab34905da4934

お使いのシステムでは、root としての SSH アクセスが一般的に不可能になっている場合がありますのでご注意ください。 その場合は、別のユーザーでログインし、sudo を使用してください。このファイルは、パスワードを入力しなくても目的のコマンドを実行できるように設定されています。

ルールを使用してハンドラを呼び出す

これで、ほぼ目標に到達しました。 エージェントの準備は完了です。 あとは、アラートハンドラーを実際に呼び出すルールを設定するだけです。 手順は、この記事の冒頭で説明したとおりで、適切なルールを作成することで実現できます。 今回は、ハンドラーとして「Linux via SSH 」を選択し、SSH キーをインストールするユーザーを入力し、リモートハンドラーを選択します。

alert handlers rule foo

また、ルールに適切な条件を設定してください。そうしないと、サービスアラートが発生するたびにSSH 接続が試みられます。

テスト

たとえば、関連するサービスを「CRIT 」に手動で設定すると、サービスのヒストリーにすぐに次のようなメッセージが表示されます。

alert handlers foo failing

当然のことながら、foo サービスが存在しない場合、/etc/init.d/foo restart も機能しません。 ただし、このコマンドが処理され、エラーステータスが正しくレポートされていることがわかります。 同様に、Checkmk がアラートハンドラーによって停止された通知をトリガーしたこともわかります。

ちなみに、「Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts. 」というメッセージは、ホストとの最初の連絡時にのみ表示される、無害なメッセージです。 時間のかかるホストキーの手動交換を回避するため、SSH は「-o StrictHostKeyChecking=false 」で呼び出されます。 最初の接続時に、キーは将来の使用のために保存されます。

8.3. エージェントベーカリーを使用しない設定

もちろん、エージェントを手動で準備することも可能です。 その場合は、テストシステムでエージェントベーカリーの手順を実行し、関連データを調べて、ご自身のシステムに手動で複製することをお勧めします。 ファイルパスのリストは、こちらでご覧いただけます。

この場合、エージェントベーカリーでリモートハンドラーをインストールするためのルールを作成することも重要です。このルールでは、アクセス用およびアラートハンドラーで使用するための SSH キーが生成されるからです。authorized_keys にインストールするための公開キーは、~/etc/check_mk/conf.d/wato/rules.mk 設定ファイル (またはrules.mk のサブフォルダ) にあります。

9. ファイルおよびディレクトリ

9.1. Checkmk サーバー上のパス

パス 機能

~/var/log/alerts.log

アラートハンドラーに関連するすべてのイベントを含むログファイル (アラートヘルパーによって記録されます)。

~/var/log/cmc.log

コアのログファイル。一部のアラートハンドラー情報もここに保存されます。

~/local/share/check_mk/alert_handlers/

自分で作成したアラートハンドラーをここに保存します。

~/var/check_mk/core/history

監視ヒストリーのログファイルが保存され、コアによって評価されます。

~/local/share/check_mk/agents/linux/alert_handlers/

Linux システムで実行されるリモートアラートハンドラー。

9.2. 監視対象の Linux ホスト上のパス

パス 機能

/usr/bin/mk-remote-alert-handler

リモートハンドラを実行するための補助スクリプト。

/usr/lib/check_mk_agent/alert_handlers/

ご自身で作成したリモートハンドラー。

/root/.ssh/authorized_keys

root ユーザーの SSH 設定。

~harri/.ssh/authorized_keys

harri ユーザー用の SSH 設定。

このページでは