ハードウェアからサーバ・アプリまでワンストップで開発

Raspberry Pi(reTerminal)にZabbix6.4 をインストールする

Zabbixをソースコンパイルして入れた時のメモ

  SBC

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のクライアントの状態が緑になっていれば、サーバーからエージェントを見つけられています。

おわり

あとは、監視したいホストを順次登録していくだけです。

パッケージのままどうにか簡単にインストールできないかと調べまわりましたが、調べている時間よりもソースコンパイルでインストールした時間の方が短かった気がします。単に運が良かっただけかもしれないですが、用意されたパッケージが微妙な場合は試してみても良いかもしれません。

最近のエントリー

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル

LED行燈の試作(1)