mayumi
監視システムは以前から導入していたのですが、いろいろあってクラウドからローカル環境(Raspberry Pi:reTerminal)へ引っ越すことになりました。
ZabbixのRaspberryPiOSのパッケージは存在していて、公式の手順通りに問題なくインストールできればよかったのですが、OSが64bitだからなのかパッケージをインストールするだけでは最後までセットアップができませんでした。
$ sudo apt update
(省略)
N: リポジトリ 'https://repo.zabbix.com/zabbix/6.0/raspbian buster InRelease' がアーキテクチャ 'arm64' をサポートしないため設定ファイル 'main/binary-arm64/Packages' の取得をスキップ
最新じゃなくてもいいやと思ってZabbix 4.0LTSも試しましたが、結果は同じでした。
RaspberryPiでZabbixセットアップしたというエントリーはネットで見つかるので、なんとかすればできるのかもしれないし、もしかしたら32bitOSで動かしているのかもしれないし、よくわからないのですが、Zabbixはソースからインストールもできるので、今回はその方法で導入してみました。
環境
ZabbixにはPHPとDB、Webサーバーが必要です。これらは別途インストール済みとします。
Zabbix 6.4(current) 動作要件
導入環境
OS | Raspberry Pi OS 64bit (buster) |
PHP | 8.2 |
Database | PostgreSQL15 |
Webサーバー | Apache 2.4 |
インストールは基本的にZabbix公式サイトの「3 Installation from sources」の通りにすればインストールできます。
Zabbixサーバー
Zabbixは監視するサーバーと、監視されるエージェントで構成されます。まず、監視サーバーをインストールします。
インストール
1.ソースの取得
現在の最新ソース(6.4.5)を取得しました。
# wget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.5.tar.gz
# tar -zxvf zabbix-6.4.5.tar.gz
# mv zabbix-6.4.5 /usr/local/src/.
2. Zabbixアカウント作成
# addgroup --system --quiet zabbix
# adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
3. Zabbixデータベースの作成
データベース上にzabbixユーザーを作りzabbixデータベースを作成します。
# sudo -u postgres createuser --pwprompt zabbix
# sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix
作成したzabbixデータベースにzabbix稼働用のスキーマやデータを入れます。
# cd /usr/local/src/zabbix-6.4.5/database/postgresql
# cat schema.sql | sudo -u zabbix psql zabbix
# cat images.sql | sudo -u zabbix psql zabbix
# cat data.sql | sudo -u zabbix psql zabbix
4. ソースコンパイル
# export CFLAGS="-std=gnu99"
# cd /usr/local/src/zabbix-6.4.5
# ./configure --enable-server --with-postgresql --with-net-snmp
途中でライブラリが足りなくて、ストップされます。
4-1. エラー:net-snmp-configが見つからない
configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
「libsnmp-dev」をインストール。
# apt install libsnmp-dev
4-2. エラー:libeventが使えない
configure: error: Unable to use libevent (libevent check failed)
「libevent-dev」をインストール。
# apt install libevent-dev
無事終わるとお礼を言われます。
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
インストールします。
# make install
サーバーの設定
データベースの接続情報(DBPassword等必要に応じて)を設定します。
# vi /usr/local/etc/zabbix_server.conf
デーモンの起動
# zabbix_server
Webインタフェースの設定
# cd /var/www/html
# mkdir zabbix
# cd /usr/local/src/zabbix-6.4.5/ui
# cp -a . /var/www/html/zabbix
Apacheが起動済みであれば、ブラウザから「http://<ホスト名かホストIPアドレス/zabbix」にアクセスするとZabbixのセットアップ画面になります。
この先はDBの接続情報やPHPのチェック等があって、終わったら設定ファイルが作成されるようになっています。この設定については、「6 Web interface installation」に情報があります。
手元ではPHPの設定がZabbixの要求に満たない部分があったらしく、対応箇所をphp.iniで修正しました。php.iniの設定を反映するには、Apacheの再起動、php-fpmの再起動を行います。(/etc/php/8.2/cli/php.iniを編集してApacheの再起動をしても全く反映されないのでなぜだろうと思ったら、/etc/php/8.2/fpm/php.iniの方を読み込んでいたことが原因でした。現在読み込まれている正確なphp.iniはphpinfo();
をどこかのページに埋め込んで出力させるとわかります。)
# vi /etc/php/8.2/fpm/php.ini
(適宜修正)
# systemctl restart apache2
# systemctl restart php8.2-fpm
最後の「インストール」でも、なぜか設定ファイルの作成に失敗してしまいました。画面の指示通り、ファイルをダウンロードして指定されたパスに配置します。
「完了」を押すとセットアップ終了です。
サービス化
管理しやすいようにzabbix_serverをサービス登録します。
一度、zabbix_serverを止めます。
# view /tmp/zabbix_server.pid
(プロセスIDを確認)
# kill -SIGTERM (プロセスID)
サービスファイルの作成
# cd /etc/systemd/system
# vi zabbix-server.service
中身はこんな感じ↓にしました。
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/etc/zabbix_server.conf"
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
自動起動を有効にする
# systemctl enable zabbix-server.service
サービスを起動する
# systemctl start zabbix-server
Zabbixエージェント
監視システム内の状態も見たいので、Zabbixエージェントをインストールします。
インストール
Zabbixソースがある場所で、コンパイルを行います。
# cd /usr/local/src/zabbix-6.4.5
# ./configure --enable-agent
エージェントは特にエラーもなくコンパイルできました。
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
インストールします。
# make install
設定
IPアドレスやホスト名を設定します。
# /usr/local/etc/zabbix_agentd.conf
これらは、下記設定と一致させておく必要があります。不一致だとZabbixサーバーからエージェントを見つけることができません。
起動
# zabbix_agentd
サービス化
zabbix_serverと同じようにサービス登録します。
一度、zabbix_agentdを止めます。
# view /tmp/zabbix_agentd.pid
(プロセスIDを確認)
# kill -SIGTERM (プロセスID)
サービスファイルの作成
# cd /etc/systemd/system
# vi zabbix-agent.service
中身はこんな感じ↓にしました。
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/etc/zabbix_agentd.conf"
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
自動起動を有効にする
# systemctl enable zabbix-agent
サービスの起動
# systemctl start zabbix-agent
ブラウザから確認した時にZabbix serverのクライアントの状態が緑になっていれば、サーバーからエージェントを見つけられています。
おわり
あとは、監視したいホストを順次登録していくだけです。
パッケージのままどうにか簡単にインストールできないかと調べまわりましたが、調べている時間よりもソースコンパイルでインストールした時間の方が短かった気がします。単に運が良かっただけかもしれないですが、用意されたパッケージが微妙な場合は試してみても良いかもしれません。