0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker上にZabbixをたててUbuntuを監視する

Posted at

この記事の対象読者

  • Zabbixサーバをたてて、Linuxのホストを監視してみたい人
  • 仕事でZabbixを使っているけど、家でも触りたい人

自宅でサーバを立てるのは大変なので、Dockerを使ってサクっと試しましょう。

この記事では

前提として、Docker環境がつかえることです。

DockerにZabbixサーバをたてます。
公式に詳しいマニュアルが載っているので、サクッとサーバをたてることができます。

つづけて、同じくDocker内にUbuntuサーバをたてます。
そのサーバにZabbixエージェントをインストールして、実際に監視してみます。

Zabbixサーバを構築する

Zabbix Dockerコンテナの利用例2に沿ってZabbixサーバ群を構築する。

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

いくつかのコンテナが協同することで、Zabbixの機能が提供される。
こちらのQiita記事に分かりやすい図がある。

作成されたコンテナを確認する

Dockerデスクトップアプリの画面キャプチャ

image.png

4つのコンテナが起動している

コンテナ名 役割 localhostに空いているポート Dockerネットワーク内のIPアドレス
zabbix-server-pgsql Zabbixエージェントからの通信を受け付ける Zabbix監視受信用(tcp10051) 172.20.240.2
postgres-server DBサーバ。とくに意識する必要はない。 なし ***
zabbix-web-nginx-pgsql WEBサーバ。ここにログインして監視対象の状態を確認する。 HTTP(tcp80), HTTPS(tcp443) ***
zabbix-snmptraps SNMPトラップ通信を受け付ける。Zabbixエージェントソフトをインストールできない通信機器やNASからの通信を受け付ける。 SNMPトラップ受信用(udp162) ***

IPアドレスについては、docker network inspect zabbix-netを打つとわかる。

Dockerのコンテナは起動するごとにIPアドレスが自動的に割り当てされるので
たとえばDockerを動かしているパソコンを再起動した場合などは
IPアドレスの割りあてが変わるためZabbixエージェント側の設定にも影響があることに注意する!!

WindowsであればTest-NetConnection localhost -Port 10051でコンテナと疎通確認できる。
WEBサーバであればlocalhost:80にアクセスしてログイン画面が表示されるはず。
ログインしたらまずは設定画面から日本語設定にすべし。

【ログインした画面】 ※日本語設定済み

image.png

Ubuntu Linuxホストを作成する

ubuntu-1というホストを作成する。(コンテナ名であって、ホスト名ではない)

# コンテナをつくる
docker run --name ubuntu-1 -it --network=zabbix-net -d ubuntu
# コンテナの中に入る
docker container exec -it ubuntu-1 bash

インストーラを選定するために、OSのバージョンを確認しておく。
2024/9時点で最新のUbuntuコンテナイメージは24.04バージョンらしい。

root@7830d9ef2faa:/# cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

docker network inspect zabbix-netで調べると、"ubuntu-1"のIPアドレスは"IPv4Address": "172.20.240.5/16"であることが分かった。

Ubuntu にZabbixエージェントをインストールする

Zabbix公式の手順に沿ってZabbixエージェントをインストールする

image.png

コンテナイメージだと必要なコマンドが足りない場合があるので、適宜インストールする

# wgetコマンドを入手
apt install wget -y
# ついでに vim や netcat もインストールしておくと、あとで便利

# リポジトリアップデート
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-6+ubuntu24.04_all.deb
dpkg -i zabbix-release_6.0-6+ubuntu24.04_all.deb
apt update

# Zabbixエージェントをインストール
apt install zabbix-agent2 zabbix-agent2-plugin-* -y

Zabbix コンフィグファイルを書き換える

vi /etc/zabbix/zabbix_agent2.confでコンフィグファイルを書き換える
書き換える箇所は3か所

  • ServerActive=172.20.240.2
  • Server=172.20.240.2
  • Hostname=ubuntu-1

Serveは監視サーバ→ホストに対する監視用
ServerActiveはホスト→サーバに対する監視用
ホスト名は監視サーバでホストを登録したときのホスト名を合わせておく

巻末にも載せるが、こちらの記事がわかりやすかった。

Zabbixサービスを起動する

インストール直後はサービスが起動していないので、手動でサービスを起動する

root@7830d9ef2faa:/# service --status-all
 [ - ]  procps
 [ - ]  zabbix-agent2
 root@7830d9ef2faa:/# service zabbix-agent2 start
 * Starting Zabbix agent zabbix_agent2                                                                           [ OK ]
root@7830d9ef2faa:/# service --status-all
 [ - ]  procps
 [ + ]  zabbix-agent2

Ubuntu の監視設定

Zabbixサーバ(zabbix-server-pgsql)からの疎通確認 tcp10050

image.png

ホストからZabbixサーバに疎通確認 tcp10051
zabbix-server-pfsqlしか許可されていないことがわかる

root@7830d9ef2faa:/# nc -vz 172.20.240.1 10051
zabbix-web-nginx-pgsql.zabbix-net [172.20.240.1] 10051 (zabbix-trapper) : Connection refused
root@7830d9ef2faa:/# nc -vz 172.20.240.2 10051
zabbix-server-pgsql.zabbix-net [172.20.240.2] 10051 (zabbix-trapper) open
root@7830d9ef2faa:/# nc -vz 172.20.240.3 10051
zabbix-snmptraps.zabbix-net [172.20.240.3] 10051 (zabbix-trapper) : Connection refused
root@7830d9ef2faa:/# nc -vz 172.20.240.4 10051
postgres-server.zabbix-net [172.20.240.4] 10051 (zabbix-trapper) : Connection refused

※前述のとおり、これらのサーバのIPアドレスはコンテナの起動順序などに左右されるため変動する可能性があることに注意する!!

image.png

Linux by Zabbix agent active という点について、パッシブかアクティブかを選べるらしい。参考
image.png

アクティブにすると、「エージェントの状態」が白抜きになっている。アクティブにしない(無印)にすると、同箇所が緑色になっている。

image.png

監視状況確認

Zabbixサーバにログインして、ホストの状況を確認する
ちゃんと時系列ログに値が出ているので、なんとなく監視はできていそうですね

image.png

おわりに

ホストの登録まで完了したので、次回はもっと詳しくZabbixでできることを確認しようとおもいます

トラブルシューティング

Zabbixサーバとエージェントが通信できていない

ncコマンドで疎通確認

Zabbixエージェントのログを確認
下記のようなエラーログが出ていたら、エージェントのコンフィグファイルのServer=ServerActive=で指定しているサーバのIPアドレスが違う可能性が高い(あるいはファイアウォールなどによる疎通遮断)

2024/09/16 20:28:02.434677 failed to accept an incoming connection: connection from "172.20.240.2" rejected, allowed hosts: "172.20.240.3"

2024/09/16 20:29:22.662566 [101] cannot connect to [172.20.240.3:10051]: dial tcp :0->172.20.240.3:10051: connect: connection refused
2024/09/16 20:29:22.662604 [101] active check configuration update from host [ubuntu-1] started to fail

参考記事

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?