前回は Cacti を FreeBSD 上で動かしてみました。今回はその続きとして Zabbix を動かしてみたいと思います。Cacti のポーツは /usr/ports/net-mgmt/cacti しかありませんでしたが、Zabbix ではご覧の様にいくつものバージョンが用意されています。zabbixXX-server は Zabbix の本体で、マスタサーバが入れられています。Web インターフェースやデータベース、zabbix プロキシ、zabbix エージェントはこの本体につながっていることになります。バグがあるから古いバージョンを好む場合があるのか、バージョンにより特徴があるのかは知りませんが、私が行うのは常に同じです。最新版を使いたいので、zabbix64-xxxxx を使用することにします。
zabbix versions

実際にビルドする前にどのモジュールを使うかをコントロールするために make.conf ファイルをいじっておきます。Cacti とほぼ同じですね 🙂 ということはほぼ同じソフトウェア構成ということでになろうかと思います。

compiling zabbix server
では zabbix64 のサーバーから作ってゆきましょう。

おや、脆弱性があるようで、コンパイルさせてくれません。

ならば、脆弱性を承知でコンパイルしてみます。

これらの脆弱性はしばらくしたら修正されたバージョンの登場でなくなるとは思いますが、今は大人の理由で待っていられないのでとりあえず動かしてみます 🙂

いつものように出力されたメッセージには目を通すようにしましょう。この zabbix リリースのステータスのアナウンスです。

資料関係の情報です。

デフォルトの管理者アカウントの情報です。FreeBSD では nmap を一般ユーザで実行することはできないので、どうすればよいかが書かれています。

メッセージに従って何があるか見てみましょう。このディレクトリにはデータベースのテーブル作成関係の SQL 文が置かれているようです。

database creation
次はこれらのファイルの使い方が書かれているページに飛んできました。

使用しているデータベースは mysql 互換の mariadb なので、mysql での方法に従ってデータベースやテーブルを作ります。ディレクトリ内のファイルの数と実行すべき mysql コマンドの数がちょっと異なりますが、気にしないでおきます。動かなかったら調べることとしましょう。

Cacti と同様にリモートサーバからの接続を受け付けるようにしないといけないことを思い出してください。

ドキュメント通りの mysql コマンドにデータベースサーバのホスト名を付け加えます。

指定通り変数を元に戻しておきます。

zabbix frontend compilation
さて、これで本体とデータベースは使えるようになったと思います。続いてフロントエンドを作ってゆきます。

こんな感じで終わっていれば OK と思われます。

php 関連で何がインストールされたか見てみます。

php extension モジュールがなさそうなので、コンパイルします。

エラーが無ければこんな感じで終了します。

apache24 compilation
そして apache24 をコンパイルします。

重要なメッセージはなさそうです。

apache24 configuration
Zabbix のマニュアルページから apache24 の設定を行います。基本的には php を使っているので、Cacti と非常によく似た設定となります。

はぁ?

mod_php compilation
素の php スクリプトが見えてしまいました 🙂 Apache24 の php モジュールを入れましょう。

そして、apache24 の再起動を行います。

modifying php parameters
おっ?動いた?

Cacti の様にアカウントごとの言語変更ではなく、ログイン時のサイトとしての言語を変更できるようです。

まずは Cacti 同様、php 関連のパラメータの調整から行うようです。Fail となっている個所を OK となるように /usr/local/etc/php.ini ファイルをいじります。

インストール直後 php.ini ファイルは無いので、php.ini-production をコピーして使いましょう。

Fail となっている個所の説明を読めば何を修正すればよいのかは一目瞭然と思います。

修正して apache24 を再起動して再度確認します。

よさげであれば、次はデータベースの接続情報を入力します。必要があれば TLS にて暗号化できるようにもできます。当然のことながらデータベースサーバ側でも行う必要があります。ここでは暗号化なしで進めてゆきましょう。

次はタイムゾーンの設定のようです。

サーバ名とタイムゾーンを指定します。

これで OK ならば設定を保存しましょう。

fixing file/directory permissions
設定ファイルを作れなかったようです。取り得るオプションとして、このページが表示されないようにディレクトリのパーミッションを修正するか、設定をダウンロードして手動でファイルを作るかのいずれかとなります。

zabbix ユーザが zabbix のディレクトリにファイルを作れないのは根本的におかしいと思うので、ディレクトリのオーナーとモードを変更します。Cacti 同様 www ユーザも zabbix のフォルダに書き込める必要があるので、グループファイルを確認しておきます。今は NIS を使用していますので、ypmatch で確認しておきます。

これで一つ戻って、同じことを行います。すると、設定ファイルを保存することができたとお喜びになっておられます 🙂

設定ファイルを見てみると、www ユーザのファイルとなっています。パスワードなどが入っているので、少なくとも other グループからは見えないようにしておきましょう。

login to zabbix
これで Finish を押して完了すると、ログインできるようになります。

思い出してください。zabbix サーバをインストールしたときにデフォルトの管理者アカウントの情報が表示されていました。

因みに admin ではなく、Admin でないとログインできません。大文字小文字を識別するようです。

よく見てみると、最下行に zabbix サーバが動いていませんとメッセージが表示されています。

launching zabbix server
ならば動かしましょう。/etc/rc.conf をいじって、起動スクリプトを実行します。

動いたようです 🙂 サーバの設定を行いましょう。

基本的にはデータベースの接続情報の変更のみが必要です。

サーバは OK となったようです。しかし、まだ怒りが収まりません。zabbix エージェントが見つからないとのことです。

launching zabbix agent
ということで、zabbix エージェントをコンパイルして実行します。

特段重要事項の表示はなさそうです。

/etc/rc.conf ファイルを編集して zabbix エージェントを起動します。

おぉ、CPU の状況が見えるようです。このページ全体を見渡すと、とても平和に見えます 🙂

では、モニタする対象を見てみます。zabbix さんが zabbix エージェントからのレポートを使用することができたとして、ZBX の文字が緑色になっています。これが赤色だと問題があるということになります。

グラフを見てみましょう。

zabbix エージェントから得られた情報でグラフが表示されています。

adding snmp nodes
1つ追加してみましょう。右上の Create Host で追加できます。

これは Cisco スイッチなので、zabbix エージェントは利用できません。ですので、snmp を使用して情報を得ます。interface 部分に snmp を追加します。Cacti では snmp v2c を使用しましたが、約束通り Zabbix では snmp v3 を使用します。設定した通りにユーザ名やパスワード、暗号化のパスフレーズ、それらの方式を間違いなく入力します。

しばらく待ってみます。

snmp の文字が緑色になったらうまく動いたということになります。ならなければ入力に間違いがないか確認します。もしかしたらスイッチ側の入力間違いかもしれませんので両方確認しましょう。

しばらく待っていると情報を基にしたグラフが出来上がってきます。

Cacti 同様にネットワークをスキャンすることができます。

snmp の共通の情報を入力しておきます。

お好みに応じてアドレスのままが良いのか、ホスト名がよいのかなどを指定します。

スキャンするネットワークはいくつでも指定できます。大きな会社組織でお勧めなのは、オフィスに1台 zabbix プロキシを置いて、プロキシにスキャンさせると WAN に大きな負荷なくパラレルに実行できます。

スキャンが終了すると、見つかったデバイスを見ることができます。

見つかったデバイスはテンプレート毎にデータのグラフ化や問題点の表示を行ってくれます。

ただ、中にはナニコレ?と思わせるデータをグラフ化してくれることもあります。何が表示されるのかワクワクしながら待っていたのですが、一向に表示は変わりませんでした 🙂

nmap
最後に、zabbix ユーザでは実行できない nmap の設定を行います。Linux ではおなじみの sudo を使います。いろいろなコマンドが /usr/local/bin や /usr/local/sbin にあるので、そこへ sudo のパスを通しておきます。そして、zabbix ユーザが /usr/local/bin/nmap をパスワードなしで root の権限で実行できると書いておきます。

これにて基本的な zabbix の設定は終了で、AES256 を使用したスイッチ myhome03 からもデータを得ることができています。ここで、Cacti と Zabbix の大きな違いを見つけました。Cacti では php-snmp が必須で、net-snmp もインストールされました。これは Zabbix でも同じなのですが、Cacti では php-snmp を snmp のメインのエンジンとして使用しているようで、256 ビット OK の AES をサポートした net-snmp が入っているにもかかわらず、192 ビットや 256 ビットの AES を使用すると php-snmp からエラーが出力されて使用できませんでした。逆に Zabbix は net-snmp をメインエンジンとして使っているようで、AES 256 ビットをサポートすることができました。以前にご紹介した quick hack をなくした net-snmp に作り直すと、このように怒られます。AES 256 ビットをサポートせずにコンパイルした net-snmp を使用してコンパイルした Zabbix なら再起動できたのだと思いますが、AES 256 ビットサポートの net-snmp を使用してコンパイルした Zabbix だと足りないシンボルがライブラリ中にあると文句を言います。Cacti で AES256 をサポートするオプションですが、php-snmp を AES256 対応するか、php-snmp なしでビルドすることができると net-snmp の AES256 が生きてくるのではないかと想像します。が、php-snmp 抜きで Cacti をインストールできなかったので何とも断定的なことを言うことはできません。

2023-04-03 追加情報
php-snmp を使わないようにできないかどうか Cacti のソースコードとしばらくにらめっこしてみましたが、これが可能であるということがわかりました。Cacti の config.php ファイルの 64% あたりに $php_snmp_support = false; という設定がコメントアウトされた状態で存在します。このコメントを外すことで aes256 ビットのデバイスを作るときに出ていたエラーは出なくなり、FreeBSD や Linux 上の net-snmp で作った aes256 ビットのパスフレーズを持つユーザを使うことができました。ですので、AES256 ビットが使えないという情報は修正する必要があります。ただ、Zabbix のように AES192C や AES256C などの Cisco Extension はソースコードに含まれていないようで、Cisco スイッチ myhome03.home.jf3vqb.net 上の AES256 ビットを使用したユーザを使用してデータを読み出すことはこれまでのところできていません。
以下広告





コメント