しまねソフト研究開発センター(略称 ITOC)にいます、東です。
この記事は、FreeBSD Advent Calendar 2023 の記事です。
FreeBSD14 がリリースされました。以前より、FreeBSD12 で Zabbix version 4 を使った監視システムを運用していましたが、このリリースに合わせて作り直すことにしました。
方針
- 最新の FreeBSD リリース版を使う。
- 最新の Zabbix LTS 版 (version 6) を使う。
- Zabbix Server と Zabbix Frontend は、同じサーバ上へインストールする。
- 現在の Zabbix サーバで監視している台数はたかが知れている & 過去データは必要ないので、現在の登録情報の移行はせず、クリーンインストールしたうえで監視対象も新規登録とする。
OS インストール
FreeBSD ダウンロードサイトから、インストールディスクの iso image をダウンロードし、それを使って普通にインストールします。
パーティションは分けても良いですが、今回は単一パーティションでやってみました。
必要なパッケージを導入
- zabbix6-server
- zabbix6-agent
- zabbix6-frontend-php83
- mysql80-server
- apache24
- mod_php83
- ja-font-ipa-uigothic
以上を、pkg コマンドを使ってインストールします。
MySQL の設定
データベースサーバ MySQL を、以下の通り設定します。
標準で、/var/db/mysql
に MySQL のデータディレクトリが作られます。
my.cnf への設定追加
/usr/local/etc/mysql/my.cnf ファイルがあるので、以下の設定を [client] 欄と、[mysql]欄をみつけて追加します。
[client]
default-character-set = utf8mb4
[mysqld]
skip-networking
character-set-server = utf8mb4
log_bin_trust_function_creators = 1
log_bin_trust_function_creators = 1
は、この後の DB 初期設定にて Zabbix から提供されている初期データをインポートしたときにエラーになったので、その回避のためです。
自動起動設定
/etc/rc.conf
mysql_enable="YES"
手動起動して初期データを投入
起動
/usr/local/etc/rc.d/mysql-server start
DB初期設定
以下のアカウント情報でデータベースを作って初期化します。
データベース名 | zabbix |
ユーザ名 | zabbix |
パスワード | MY_PASSWORD |
mysql -u root
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user 'zabbix'@'localhost' identified by 'MY_PASSWORD';
grant all privileges on zabbix.* to 'zabbix'@'localhost';
quit
cd /usr/local/share/zabbix6/server/database/mysql
mysql -uzabbix -pMY_PASSWORD zabbix < schema.sql
mysql -uzabbix -pMY_PASSWORD zabbix < images.sql
mysql -uzabbix -pMY_PASSWORD zabbix < data.sql
mysql -uzabbix -pMY_PASSWORD zabbix < double.sql
Zabbix Server の設定
以下の設定を追加変更します。
設定ファイル
/usr/local/etc/zabbix6/zabbix_server.conf の DBPassword
行を見つけて、パスワードを追記します。
DBPassword=MY_PASSWORD
自動起動設定
/etc/rc.conf
zabbix_server_enable="YES"
起動
/usr/local/etc/rc.d/zabbix_server start
Zabbix Agentd の設定
Zabbix Agent は動かさなくても良いですが、今回は自分自身を監視するため、同サーバーで Agent も起動します。
設定ファイル
/usr/local/etc/zabbix6/zabbix_agentd.conf の以下の項目を変更します。
ListenIP=127.0.0.1
自動起動設定
/etc/rc.conf
zabbix_agentd_enable="YES"
起動
/usr/local/etc/rc.d/zabbix_agentd start
Zabbix Frontend の設定
Zabbix Frontend のためのウェブサーバ Apache httpd とその周辺を、以下の通り設定します。
httpd 設定
/usr/local/etc/apache24/httpd.conf へ追加します。
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
<Directory "/usr/local/www/zabbix6">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
DocumentRoot "/usr/local/www/zabbix6"
DirectoryIndex index.html index.php
php の設定
/usr/local/etc/php.ini を以下の内容で作成します。
[PHP]
post_max_size = 16M
max_execution_time = 300
[Date]
date.timezone = "Asia/Tokyo"
自動起動設定
/etc/rc.conf
apache24_enable="YES"
起動
/usr/local/etc/rc.d/apache24 start
Frontend 用設定ファイルの生成
以下のURLへアクスして、DBのパスワードなどを入力します。
http://サーバIP/setup.php
最終画面でおそらく「設定ファイルが作成できません」と表示されるので、生成されたファイルをダウンロードして画面の指示に従ってサーバへ保存(コピー)します。
今回対象とした Zabbix6 では、以下のパスに保存する指示でした。
/usr/local/www/zabbix6/conf/zabbix.conf.php
使用フォントの変更
漢字を使用すると、グラフなどGDで生成される画像の文字がトーフになるので、以下の設定を変更して漢字フォント (IPA GUI) に変更します。
/usr/local/www/zabbix6/include/defines.inc.php
define('ZBX_FONTPATH', '/usr/local/share/fonts/ipa-uigothic');
define('ZBX_GRAPH_FONT_NAME', 'ipagui');
Zabbix Frontend (コンソール)の表示
以下のURLへアクスして、ログイン画面を表示します。
http://サーバIP/
デフォルトの管理アカウントでログインします。
ユーザ名 | Admin |
パスワード | zabbix |
この状態ですでに、Zabbix Server 自身の監視ができている状態になっています。
左ペインのメニューから 監視データ
> 最新データ
とクリックします。
右ペイン下部に表示された監視データから、Available memory 行の右端「グラフ」をクリックしてみましょう。
こんな感じで監視データがトレンドグラフで表示されます。
Media Type の追加
Zabbix 標準のメール通知機能は、SMTP サーバアドレスを指定してメールを送るデザインになっています。
以前のバージョンの FreeBSD では、sendmail が常駐して localhost (127.0.0.1) で Listen してくれていたので、SMTP server に 127.0.0.1 を指定してやれば問題ありませんでした。
しかし FreeBSD 14 では sendmail に代わって DragonFly Mail Agent が採用されており、daemon ではなくなっていました。よって、任意のメールアドレスに送りたい場合、別途リレーできる MTA を持っていればそのアドレスを指定してやればよいですが、そうでない場合はひと工夫必要なようです。
独自スクリプトの追加
今回は、独自スクリプトを、以下をを参考に追加します。
https://www.zabbix.com/documentation/6.0/jp/manual/config/notifications/media/script
今回作成したスクリプトは以下です。
/usr/local/etc/zabbix6/zabbix/alertscripts/email_dma.sh
#!/bin/sh
to=$1
subject=$2
body=$3
cat <<EOF | mail -s "$subject" "$to"
$body
EOF
コンソールへ追加
これを Zabbix のコンソールへも登録します。
左ペインのメニューから 管理
> メディアタイプ
とクリックし、右ペイン上部に表示された「メディアタイプの作成」をクリックします。
項目 | 値 |
---|---|
名前 | Email_dma |
タイプ | スクリプト |
スクリプト名 | email_dma.sh |
スクリプトパラメータ | 以下スクリーンショット参照 |
上部「メッセージテンプレート」をクリックして画面を変え、標準の Email メディアタイプを参考に、同じものを5種類追加しておきます。
これで、メール送信スクリプトが Email_dma
という名前で使えるようになりました。
ユーザーの通知にこのスクリプトを利用するよう設定
左ペインのメニューから 管理
> ユーザー
とクリックします。
右ペインに表示されるリストから Admin
> メディア
の順でクリックします。
追加をクリックし、以下の通り先程登録した Email_dma
と送信先 E-mail アドレスを登録します。
これで、任意のメールアドレスに通知が可能になります。
おしまい
FreeBSD14 に Zabbix6 LTS をインストールして使える状態に設定しました。
これから、監視対象のサーバーを登録する作業をしたいと思います。
通知メールの受信サーバーが、何らかの原因で一時的にメールを受け取れない状態になっていた場合、このサーバ内のメールキューにメールが貯まるはずです。本来その再送処理を行わないといけないはずですが、DragonFly Mail Agent を使うのは初めてですので、今後要研究ですね。
なお、この記事は、FreeBSD + KDE のデスクトップ環境を使って書きました