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

Unix 系のオペレーティングシステムを使用している場合は、おそらくいわゆるクーロンジョブに慣れているでしょう。 しかし、cron は実際にはディーモンであり、バックグラウンドで繰り返しプロセスを管理し、それらがあらかじめ定義された間隔で確実に実行されるようにします。 もちろん、これはcron プログラムによって実行する必要はありません。これは、Linux、および同様に AIX や Solaris で繰り返しジョブを確実に自動化する最も一般的な方法にすぎません。

これらのジョブの中には、安全な運用に不可欠なものもあるため、ホストの監視に含める必要があります。 Checkmk では、mk-job スクリプトを使用してこれを実現できます。 この小さなスクリプトは、実際のジョブの前に配置され、このタスクを実行します。 そのプロセスで、mk-job はさまざまな測定データを記録し、Checkmk に送信します。 最も重要な測定データには、ジョブが最後に実行された時刻、およびジョブが正常に実行されたかどうかが含まれます。

スクリプトmk-job は、Checkmk でよく使用される、いつでもチェックできるシンプルなシェルスクリプトです。 そのため、ホスト上の重要なジョブについても、常に最大限の透明性と制御を確保できます。

2. プラグインの設定

2.1. mk-job プログラムの設定

まず、監視対象のホストに、このスクリプトを使用できるように小さなスクリプトを設定します。 最も簡単な方法は、wget を使用して Checkmk サーバーからプログラムを直接取得し、実行可能にする方法です。以下の例は、Linux サーバーの場合です。

root@linux# wget -O /usr/local/bin/mk-job https://myserver/mysite/check_mk/agents/mk-job
root@linux# chmod +x /usr/local/bin/mk-job

AIX または Solaris にスクリプトをインストールする場合は、代わりにmk-job.aix またはmk-job.solaris をロードしてください。wget プログラムが利用できない場合は、scp を使用してコピーするなど、別の方法でファイルをダウンロードすることもできます。

2.2. 最初のジョブの監視

最初のジョブを監視するために、再びcron を一般的な例として取り上げます。 次のようなクーロンジョブがあるとします。

/etc/cron.d/backup
5 0 * * * root /usr/local/bin/backup >/dev/null

このバックアップジョブは、ユーザー IDroot で毎日午前 12:05 に実行されます。 このジョブを監視するには、信頼できるエディタを使用して、行のコマンドの前にスクリプトmk-job と名前を追加します。 この名前は後で Checkmk のサービス名として使用されるため、このホストでは一意である必要があります。

/etc/cron.d/backup
# Syntax:
# <minute> <hour> <day> <month> <day of week> <user> mk-job <service name> <command>
5 0 * * * root mk-job nightly-backup /usr/local/bin/backup >/dev/null

新しく定義したクーロンジョブを実行すると、mk-job は測定結果を/var/lib/check_mk_agent/job/root ディレクトリに保存しようとします。job ディレクトリもユーザーroot に属しているため、mk-job がユーザーディレクトリroot がまだ存在しない場合は、このディレクトリを作成しても問題はありません。

エージェントは、呼び出しごとに/var/lib/check_mk_agent/job/ 以下のディレクトリを検索し、それらを出力に追加します。

その結果は、次のように表示されます。ここでは、わかりやすくするために、エージェントの出力の関連部分のみを表示しています。

<<<job>>>
==> nightly-backup <==
start_time 1613509201
exit_code 0
real_time 2:06.03
user_time 0.62
system_time 0.58
reads 200040
writes 35536
max_res_kbytes 28340
avg_mem_kbytes 0
invol_context_switches 1624
vol_context_switches 2086

3. Checkmk にサービスを追加する

Checkmk では、ジョブが実行され、結果が適切に保存されると、そのサービスが自動的に検出されます。 したがって、通常どおり、サービスディスカバリーに移動して、サービスを有効にしてください。

discover mkjob

一方では、上記のすべての測定ポイントがメトリックとして、また定義済み時系列グラフとして表示されます。 他方では、サービスの概要および詳細にも測定ポイントが表示されます。

service mkjob

4. 権限のないユーザーのジョブの監視

root 以外のユーザーのジョブも監視したい場合は、job ディレクトリ/var/lib/check_mk_agent/job/ にユーザーディレクトリを作成し 、適切なユーザーに権限を割り当てます。以下のコマンド例では、ユーザーmyuser に権限を割り当てています。

root@linux# cd /var/lib/check_mk_agent/job/ && mkdir myuser && chown myuser:myuser myuser

これにより、mk-job がユーザーに代わってこのディレクトリに結果を保存することが可能になります。

5. 診断オプション

設定が機能しない場合は、問題の原因を特定するためのいくつかの方法があります。 基本的には、チェーンの開始点から始めて、最初のステップで説明したように「mk-job」スクリプトが正しく含まれているかどうかをまずチェックしてください。

エラーの原因として考えられるのは以下の通りです。

  • mk-job cron によって認識されないため、 によって認識されないパスに保存されている。 この場合、 へのフルパスを指定してください。cron mk-job

  • サービス名にスペースが含まれており、引用符 (") で囲まれていない。

  • ジョブは、結果を保存するための独自のディレクトリをまだ持っていないユーザーで実行されています。

測定結果が正しく記録および保存されている場合は、Checkmk サーバーで、エージェントによって結果が正しく渡されているかどうかを確認してください。

次のコマンドでエージェントの出力を表示し、その出力をless コマンドに転送することができます。

OMD[mysite]:~$ cmk -d myhost | less

通常、関連するセクション<<job>> は出力のかなり下の方にあります。

あるいは、 監視でホストのサービスリストを開き、サービス「Check_MK 」とその列「Icons 」に移動します。 そこで、メニューエントリ「Download agent output 」を選択すると、エージェントの出力全体を含むテキストファイルを取得できます。

ここで結果が表示されない場合は、エージェントが対応するファイルを読み込むために必要な許可を持っていない可能性があります。 これは、たとえば、ユーザー「root」でエージェントを呼び出していない場合などに発生しますが、他のユーザーも結果を読み取ることができない可能性があります。

root@linux# ls -l /var/lib/check_mk_agent/job/myUser/
total 5
-rw-rw---- 1 myUser   myUser   186 Jul 21 11:58  nightly-backup

このような場合は、すべてのユーザーに結果の読み取り許可を追加してください。

root@linux# chmod 664 /var/lib/check_mk_agent/job/myUser/nightly-backup

または、グループを作成し、このグループをすべてのジョブファイルに割り当てます。 次のコマンドでは、グループの認可のみを変更します。 コロン前に何も入力しないと、所有者は変更されません。

root@linux# chown :myJobGroup /var/lib/check_mk_agent/job/myUser/nightly-backup

事前にグループを作成し、そのメンバーとしてエージェントが呼び出されるユーザーを追加していることを確認してください。

6. ファイルとディレクトリ

パス 意味

/usr/local/bin/

スクリプト「mk-job 」は、簡単に呼び出せるようにこのディレクトリに配置してください。

/var/lib/check_mk_agent/job/

通常、ユーザーごとに結果が保存されるディレクトリです。AIXではパスが異なりますのでご注意ください:/tmp/check_mk/job/

このページでは