a_hamada/ 2023年 12月 25日/ 技術

こんにちは!濱田です。

今回はまたzabbixについて書いていきます。
これまでzabbixサーバ(docker-compose)が動作しているホストOS上のagent監視が実現できていなかったのですが、先日ようやく実現できたので手順を紹介していきます。

はじめに

まず概要だけ説明してしまうと、やることは大きく分けて下記の3点(場合によっては4点)です。
1.docker-composeのネットワークのzabbixサーバーのコンテナIPを固定する
2.ホストOS上にインストールしたagentのconfファイルのserverIPを1.のIPアドレスに変更
(3.ファイアウォールを設定している場合は、1.のIPアドレスからの10050ポートへのアクセスを開放する)
4.zabbixサーバーのwebインタフェースで監視対象を追加
特に何も難しいことはないのですが、以降でそれぞれ詳細を解説していきます。

docker-composeのネットワーク上でzabbixサーバーのコンテナIPを固定

まずdocker-compose内のネットワーク上で、zabbixサーバーのDockerコンテナのIPアドレスを固定します。
zabbix公式のdocker環境を使っている場合、デフォルトでdocker-compose.yamlにnetworkが設定されています。
docker-compose.yamlのnetoworksセクションのzbx_net_frontendの記載を確認すると、
172.16.238.0/24にサブネットが指定されていると思います。
なので固定するコンテナIPもその範囲内に指定します。
servicesセクションのzabbix-serverセクション配下にnetoworksの指定があり、
そのコンテナでどのネットワークを使用するか指定されています。
デフォルトではzbx_net_backend、zbx_net_frontend両方が指定されていると思います。
zbx_net_frontendセクションの配下には何も設定されていないかと思うので、
その配下に

ipv4_address: "指定するIPアドレス"

を記載します。
今回は「172.16.238.100」を指定します。

services:
 zabbix-server:
            ・
            ・
            ・
  zbx_net_frontend:
   ipv4_address: 172.16.238.100

ホストOSのzabbix_agentd.confのServerIPを変更したIPアドレスに変更

続いてホストOS上にインストールしたzabbix_agentのzabbix_agentd.confの下記項目に、固定したIPアドレスを設定します。
※通常zabbix_agentd.confは/etc/zabbix配下に格納されています。

Server=172.16.238.100
ServerActive=172.16.238.100

zabbixサーバーのIPアドレスからの10050ポートアクセス開放

次に固定したzabbixサーバーのIPアドレスから、ホストOSの10050ポートへのアクセスを開放します。
これは特にzabbixに限った話ではなく、普通にファイアウォールのポート解放のコマンドを叩くだけです。
ubuntuなら下記のコマンドを実行します。

sudo ufw allow from 172.16.238.100 to any port 10050 # ポート開放
sudo ufw reload # ファイアウォールのリロード

webインタフェースで監視対象を追加

監視対象の追加方法の詳細については省きますが、ホストの追加画面の下記項目に値を設定します。
1.ホスト名:zabbix_agentd.confのHostnameに指定した文字列
2.ホストグループ:任意のグループを指定
3.インタフェース:タイプ=エージェント、IPアドレス=ホストOSのIPアドレス、ポート=10050

まとめ

以上がdocker-composeで動作しているzabbixサーバーからホストOS上のagentを監視する際の設定手順になります。
意外と調べても一から上記の手順を解説しているサイトが出てこなかったので、
同じように困っている方がいるかと思い、ブログに書いてみました。
環境構築の一助になれば幸いです。

次回もまだ何について書くか考えていませんが、また書きたいことがあれば書いていこうと思います。
それではまた!

About a_hamada

2020年9月からWebプログラマに転向した半人前 日々勉強することばかり。 最近使っている言語はもっぱらPython