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

Linux やその他の Unix 系システムではなくFreeBSDを使用する理由は数多くあります。 たとえば、2000 年から利用可能な「Jails」コンテナ機能、重い I/O 負荷下でも高いパフォーマンスを発揮すること、UFS2 ファイルシステムの堅牢性、最新の ZFS トランザクションファイルシステムの優れたサポートなどが挙げられます。 Checkmk は、Linux 用のエージェントをベースに、コマンドラインツールの出力形式やパス規則など、FreeBSD エンティティに合わせて調整した FreeBSD 用のエージェントを提供しています。 ただし、Agent Bakery によるパッケージングやデプロイはサポートされていないため、インストールと機能テストは大部分を手動で行う必要があります。

他の BSD システムに関する注意:この記事では、FreeBSD用のエージェントのインストールとセットアップについて説明しています OpenBSDおよびNetBSD用のエージェント も利用可能です。 これらのインストールは、ここで説明しているものと同様です。 DragonFly BSD をお使いの場合は、FreeBSD エージェントのテストおよびパッチのご提案をお待ちしております。

FreeBSD エージェントの基本的な構造は、Linux エージェントで説明したものと同様です。 これは純粋なシェルスクリプトであり、インターネットのスーパーサーバー (inetd またはxinetd) または SSH トンネルを介して実行できるため、軽量で安全です。

この記事では、読者が Linux または Solaris についてある程度の知識を持っていることを前提としています。そのため、ここでは主に違いについて重点的に説明します。

2. インストール

2.1. 事前準備

Checkmk エージェントが監視に有用なすべての情報を読み込めるようにするには、追加のツールをインストールする必要があります。

  • sysutils/ipmitool

  • devel/libstatgrab

  • shells/bash

  • lang/python3

  • ftp/wget

Python はこの時点ではオプションですが、多くのエージェントプラグインには必ず必要です。 エージェントスクリプトは、FreeBSD Bourne Shell と互換性のない構文を使用しているため、bash が特別な機能となります。 ハードウェア情報を読み込むには、ipmitool が必要です。

これらのツールはすべて、次のコマンドでインストールできます。

root@bsd:/root # pkg install ipmitool libstatgrab bash python3 wget

2.2. FreeBSD ポートによるインストール

FreeBSD ポートには、Mark Peek によってメンテナンスされているCheckmk エージェント用のポートが含まれています。このポートには、エージェントを新しい FreeBSD-STABLE バージョンと互換性があるようにするためのパッチが含まれている場合があります。 FreeBSD ポートで入手できるこの Checkmk エージェントのバージョン (2.3.0 など) が、現在使用している Checkmk バージョンと同じか、1 つ前のメジャーバージョンである場合は、このエージェントをインストールできます。

root@bsd:/root # cd /usr/ports/net-mgmt/check_mk_agent
root@bsd:/usr/ports/net-mgmt/check_mk_agent # make install

2.3. 手動インストール

FreeBSD ポートで入手できるバージョンが、Checkmk サーバーのバージョンよりも古い場合は、GitHub リポジトリから最新のエージェントをインストールしてください。 新しい FreeBSD バージョンへのカスタマイズは、古い Checkmk バージョンのエージェントには必ずしもバックポートされるとは限らないため、通常は最新の開発ブランチからインストールすることをお勧めします。

root@bsd:/root # wget -O /usr/local/bin/check_mk_agent https://checkmk.io/3EjKJlt
root@bsd:/root # chmod 0700 /usr/local/bin/check_mk_agent

他の BSD システム用のエージェントをお探しの場合、または開発ブランチを特定の Checkmk バージョンに設定したい場合は、Github でエージェントフォルダを見つけてください。

2.4. コマンドラインでテスト

コマンドラインでエージェントを呼び出し、ページャーで出力をざっと確認してください。

root@bsd:/root # check_mk_agent | more
<<<check_mk>>>
Version: 2.1.0i1
AgentOS: freebsd
Hostname: fbsd13
AgentDirectory: /etc/check_mk
DataDirectory:
SpoolDirectory: /var/spool/check_mk_agent
PluginsDirectory: /usr/local/lib/check_mk_agent/plugins
LocalDirectory: /usr/local/lib/check_mk_agent/local

何も出力がない場合は、前提条件、特に Bash が/usr/local/bin にインストールされていることを再度チェックしてください。

3. ネットワーク経由のアクセス設定

3.1. FreeBSD の inetd

エージェントにアクセスする最も簡単な方法は、FreeBSD に付属のinetd を使用することです。 あるいは、Linux のxinetd を、FreeBSD Ports のsecurity セクションから入手することもできます。 その設定は、Linux エージェントの記事で説明したものとまったく同じです。inetd は、エージェントの出力をTCPポート6556にバインドし、必要に応じて、特定のCheckmkサーバーへのアクセスを制限します。

まず、/etc/services にポート 6556 のエントリがすでに存在するかチェックしてください。

root@bsd:/root # grep 6556/ /etc/services

このエントリがない場合は、Checkmk をサービスとして識別する必要があります。そのためには、次の行を追加してください。

/etc/services
checkmk-agent 6556/tcp #Checkmk monitoring agent

次に、/etc/inetd.conf 設定ファイルに次の行を追加します:

/etc/inetd.conf
checkmk-agent stream tcp nowait root /usr/local/bin/check_mk_agent check_mk_agent

inetd は常に有効になっている必要があります。これを行うには、/etc/rc.conf ファイルに次の行を追加してください:

/etc/rc.conf
inetd_enable="YES"

アクセス制限が必要な場合は、/etc/hosts.allow ファイルを編集してください。 まず、どこからでもアクセスを許可する行をコメントアウトし、Checkmk サーバーのみアクセスを許可する行を追加します。ここでは、IP アドレス10.2.3.4 を指定しています。 最初のパラメータは、inetd によって実行されるコマンドの名前です。

/etc/hosts.allow
# The rules here work on a "first match wins" basis.
# ALL : ALL : allow
sshd : ALL : allow
check_mk_agent : 10.2.3.4 : allow

設定の変更が完了したら、再起動します。

root@bsd:/root # reboot

これで、監視サーバーからエージェントにアクセスできるはずです。

これをテストする最も簡単な方法は、netcat またはnc を使用することです。 Checkmk サーバーのサイトユーザーとして、次のコマンドを実行して、エージェントへのネットワーク接続をテストします(この例では、IP アドレス10.2.3.5 のホスト)。 コマンドの出力は、最初の行のみを表示するために省略しています。

OMD[mysite]:~$ nc 10.2.3.5 6556
<<<check_mk>>>
Version: 2.1.0i1
AgentOS: freebsd

3.2. セキュリティ

FreeBSD エージェントは現在暗号化をサポートしていないため、転送するデータを保護する必要がある場合は、SSH トンネルを使用することをお勧めします。 その設定方法については、Linux エージェントの記事で説明しています。

4. 監視への組み込み

他のすべてのシステムと同様に、監視への組み込みは自動サービスディスカバリーによって行われます。 サーバーサービスがまだ設定されていない「素の」FreeBSD では、少なくとも 12 のサービスが検出され、ZFS にインストールされている場合は、ファイルシステム情報用に 10 のサービスが追加で検出されます。

List of 12 automatically discovered services.
Checkmk のサービスディスカバリーでは、少なくとも 12 のサービスが検出されます。

5. プラグイン

設定は完全に手動であり、自動配布機能も備わっておらず、Linux とはファイルパスも異なるため、最も重要なプラグインのメカニズムはテストすることをお勧めいたします。 これはMRPEを使用して起動します

5.1. MRPE

/etc/check_mk/mrpe.cfg という名前の設定ファイルを作成し、以下の内容を入力します:

/etc/check_mk/mrpe.cfg
Flux_Comp /bin/echo 'OK - Flux compensator up and running'

これで、エージェントの出力に MRPE セクションが表示されます。

root@bsd:/root # check_mk_agent | grep -A1 '^...mrpe'
<<<mrpe>>>
(echo) Flux_Comp 0 OK - Flux compensator up and running

サービスディスカバリーFlux_Comp に、新しいサービスとして MRPE が表示されます。

List with the newly detected service Flux_Comp.
MRPE プラグインが正常に構成されました

5.2. エージェントプラグイン

エージェントプラグインのインストールは、Linux エージェントの記事で説明したとおりです。 プラグインをインストールする際には、正しいシェバンを使用してください。 Perl および Python は、FreeBSD の/usr/local/bin にインストールされています。Linux の/bin/sh で動作するシェルスクリプトの多くは、実際には FreeBSD の/usr/local/bin/bash にインストールされている Bourne Again シェルを必要とします。

テストには、監視対象のサービスがOKWARNCRIT のいずれであるかを、監視対象のホストで直接評価する、単純なローカルチェックが適しています。 ついでに、2 行のコードで Python インタープリタをテストしてみましょう。 ここでも、Linux とはデフォルトのパスが異なることに注意してください。

/usr/local/lib/check_mk_agent/local/hello.py
#!/usr/local/bin/python3
print("0 \"Hello Beastie\" - Just check paths and Python interpreter!")

スクリプトを実行可能にすることを忘れないでください。

root@bsd:/root # chmod 0755 /usr/local/lib/check_mk_agent/local/hello.py

この場合も、サービスはすぐに検出されます。

List with the newly detected service Hello Beastie.
新しいサービス「Hello Beastie」が見つかりました。

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

6.1. 監視対象のホスト上のファイルパス

ファイルパス 説明

/usr/local/bin/check_mk_agent

ターゲットホスト上の Checkmk エージェントのインストール場所。

/usr/local/lib/check_mk_agent

エージェント拡張機能のベースディレクトリ。

/usr/local/lib/check_mk_agent/plugins

エージェントに追加の監視データを拡張するプラグイン。プラグインは、使用可能な任意のプログラミング言語で記述できます。

/usr/local/lib/check_mk_agent/local

カスタムローカルチェックの保存場所

/var/spool/check_mk_agent

たとえば、クーロンジョブによって作成されたデータが含まれ、独自のセクションがあります。これらは、エージェントの出力にも追加されます。

/etc/check_mk

エージェントの構成ファイルの保存場所。

/etc/check_mk/mrpe.cfg

MRPE の設定ファイル — 従来の Nagios 互換のチェックプラグインを実行するためのものです

注意:FreeBSD では、Linux の/var/lib/check_mk_agent のようなデフォルトのファイルパスは定義されていません。 適切な場所を選択し、エージェントのスクリプトに入力してください。

このページでは