今回やること
- DockerにZabbixサーバーをたてる
- ラズパイにZabbixエージェントを入れる
- Zabbixサーバにエージェント(ラズパイ)を登録する
前提
- Windowsでやる
- WindowsにはDocker Desktopがインストールされている
- Windowsとラズパイが同一ネットワークに存在する
- 今回は
192.168.10.0/24
ネットワーク
- 今回は
検証環境
Zabbixサーバー
- Windows 11 Home 22H2
- Docker version 20.10.21, build baeda1f
- IP: 192.168.10.101
zabbix_server -V
zabbix_server (Zabbix) 6.2.5
Revision c6d01ae 28 November 2022, compilation time: Nov 28 2022 18:35:47
Zabbixエージェント
- Raspberry Pi 3 Model B+
- IP: 192.168.10.107
zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 6.0.11
Revision 17788cd2098 28 November 2022, compilation time: Nov 28 2022 09:19:03
DockerにZabbixサーバーをたてる
Zabbixの使用例を参考に、例2 PostgreSQL データベースを使ってインストールする
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
docker run --name postgres-server -t -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix_pwd" -e POSTGRES_DB="zabbix" --network=zabbix-net --restart unless-stopped -d postgres:latest
docker run --name zabbix-snmptraps -t -v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw -v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro --network=zabbix-net -p 162:1162/udp --restart unless-stopped -d zabbix/zabbix-snmptraps:alpine-6.0-latest
docker run --name zabbix-server-pgsql -t -e DB_SERVER_HOST="postgres-server" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix_pwd" -e POSTGRES_DB="zabbix" -e ZBX_ENABLE_SNMP_TRAPS="true" --network=zabbix-net -p 10051:10051 --volumes-from zabbix-snmptraps --restart unless-stopped -d zabbix/zabbix-server-pgsql:alpine-6.0-latest
docker run --name zabbix-web-nginx-pgsql -t -e ZBX_SERVER_HOST="zabbix-server-pgsql" -e DB_SERVER_HOST="postgres-server" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="zabbix_pwd" -e POSTGRES_DB="zabbix" --network=zabbix-net -p 443:8443 -p 80:8080 -v /etc/ssl/nginx:/etc/ssl/nginx:ro --restart unless-stopped -d zabbix/zabbix-web-nginx-pgsql:alpine-6.0-latest
http://192.168.10.101:80
にアクセスして、ログイン画面が出たら成功
80番ポートを他のサービスが使用していると、Dockerの起動に失敗する
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e664e4f5023 zabbix/zabbix-web-nginx-pgsql:alpine-6.2-latest "docker-entrypoint.sh" 5 days ago Up 2 days 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp zabbix-web-nginx-pgsql
7251684fec13 zabbix/zabbix-server-pgsql:alpine-6.2-latest "/sbin/tini -- /usr/…" 5 days ago Up 2 days 0.0.0.0:10051->10051/tcp zabbix-server-pgsql
74a3b475aa9f zabbix/zabbix-snmptraps:alpine-6.2-latest "/usr/sbin/snmptrapd…" 5 days ago Up 2 days 0.0.0.0:162->1162/udp zabbix-snmptraps
ff29d26e827c postgres:latest "docker-entrypoint.s…" 5 days ago Up 2 days 5432/tcp postgres-server
ラズパイにZabbixエージェントをインストールする
インストールするパッケージを選択する
Zabbixのダウンロードサイトへ。
Linuxのいろいろなディストリビューションが選択できるようになっているので
間違えないように、自身のラズパイにあった設定を選択する。
項目 | 値 |
---|---|
zabbix | 6.0 |
os_distribution | raspberry_pi_os |
os_version | 9 |
components | agent |
db | (空) |
ws | (空) |
今回はLTSのバージョン6.0を入れた。
os_version
は下記コマンドから調べる。
db
(データベース)とws
(ウェブサーバー)は、エージェントだから不要っぽい。
lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.13 (stretch)
Release: 9.13
Codename: stretch
Zabbixをインストールするコマンド一覧
設定を選択し終えると、コマンドの一覧が表示されるので
上から順にコピペして入れていく
wget https://repo.zabbix.com/zabbix/6.0/raspbian/pool/main/z/zabbix-release/zabbix-release_6.0-5%2Bdebian9_all.deb
dpkg -i zabbix-release_6.0-5+debian9_all.deb
apt update
apt install zabbix-agent
systemctl restart zabbix-agent
# サービスの自動機能を有効にする
systemctl enable zabbix-agent
# 不要なファイルを削除
rm zabbix-release_6.0-5+debian9_all.deb
インストール後の確認
systemctl status zabbix-agent
でステータスが**active(runnning)**になっていればOK
また、自動起動は下記コマンドで確認する
systemctl list-unit-files | grep zabbix
zabbix-agent.service enabled
enabled
になっていればOK
設定ファイル(zabbix_agentd.conf
)を変更する
vi /etc/zabbix/zabbix_agentd.conf
で設定ファイルを変更する
変更するのはたった2か所。サーバーのIPアドレスと、自身のホスト名だけ変更する。
Server=192.168.10.101
Hostname=pianget
読み取り専用になってしまう場合は、sudo vi (以下略)
として特権モードになって作業する
最後に、設定ファイルの変更を反映するために、systemctl restart zabbix-agent
を再度実行する
疎通確認
サーバー(Win11/Docker)からエージェント(ラズパイ)へ疎通確認する
Dockerのzabbix-server-pgsql
のターミナルからzabbix_get
でラズパイのIPを指定して
ホスト名を取得してみる
zabbix_get -s 192.168.10.107 -p 10050 -k agent.hostname
# 成功時:エージェントのホスト名が返ってくる
pianget
# 失敗例
zabbix_get [234]: Check access restrictions in Zabbix agent configuration
失敗する場合はIPが正しくないか、設定が反映されていない可能性があるので
先のzabbix_agentd.conf
のServer=
右辺を確認・変更し、サービス再起動systemctl restart zabbix-agent
をする
疎通トラブルシューティング
疎通がうまくいかない場合の確認事項
-
ping {サーバIP}
で応答が返ってくるか? -
systemctl reboot
でラズパイ再起動
Zabbixホストにラズパイを登録する
ホストの追加
http://192.168.10.101:80
にアクセスし、左側ペインの設定→ホスト→ホストの作成
下記設定の通り設定を入れる
エージェントの状態が緑になれば成功
糸冬了!!
参考