過去の主なバージョン履歴は下記の通りです。
Zabbix 1.0 2004年 Zabbix 1.1 2006年 Zabbix 1.4 2007年 Zabbix 1.6 2008年 Zabbix 1.8 2009年 Zabbix 2.0 LTS 2012年 Zabbix 3.0 LTS 2016年 Zabbix 4.0 LTS 2018年10月1日 Zabbix 5.0 LTS 2020年5月12日 Zabbix 6.0 LTS 2022年2月15日
サポート終了予定日は下記を参照してください。
CentOS 8(Rocky Linux)に Podman(Docker) を用いてインストールする例を示します。
# CentOS 8(Rocky Linux) に Podman(Docker)をインストール
# dnf -y install podman podman-docker
# touch /etc/containers/nodocker
Dockerネットワークを作成します。
# Dockerネットワークを作成
# docker network create --subnet 192.168.0.0/24 zabbix-net
DBコンテナを起動します。
# MariaDBを起動
# docker run -d -it --name zabbix-db -h zabbix-db -e MYSQL_ROOT_PASSWORD=root123 \
--net zabbix-net --ip 192.168.0.2 docker.io/mariadb
# cat <<EOF | docker exec -i zabbix-db mysql -h 192.168.0.2 -u root -proot123
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@'%' identified by 'zabbix123';
grant all privileges on zabbix.* to zabbix@'%';
EOF
Zabbixサーバコンテナを起動します。
# Zabbixサーバ用コンテナを起動 # docker run -d -it --name zabbix-server -h zabbix-server \ --net zabbix-net --ip 192.168.0.3 -p 80:80 docker.io/rockylinux/rockylinux /sbin/init # Zabbixサーバコンテナにログイン # docker exec -it zabbix-server /bin/bash # Zabbixサーバをインストール # rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm # dnf clean all # dnf -y install glibc-langpack-en glibc-langpack-ja mariadb \ zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent # DBを構築 # zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -h 192.168.0.2 -u zabbix -pzabbix123 zabbix # コンフィグファイル修正 # cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.org # sed -i 's/# DBHost=localhost/DBHost=192.168.0.2/' /etc/zabbix/zabbix_server.conf # sed -i 's/# DBPassword=/DBPassword=zabbix123/' /etc/zabbix/zabbix_server.conf # cp /etc/nginx/conf.d/zabbix.conf /etc/nginx/conf.d/zabbix.conf.org # sed -i 's/^# *listen/ listen/' /etc/nginx/conf.d/zabbix.conf # sed -i 's/^# *server_name.*/ server_name 192.168.56.116;/' /etc/nginx/conf.d/zabbix.conf # Zabbixサーバ起動 # systemctl restart zabbix-server zabbix-agent nginx php-fpm # systemctl enable zabbix-server zabbix-agent nginx php-fpm # exit
Zabbixエージェントコンテナを起動します
# Zabbixエージェント用コンテナを起動 # docker run -d -it --name zabbix-agent -h zabbix-agent \ --net zabbix-net --ip 192.168.0.4 docker.io/rockylinux/rockylinux /sbin/init # Zabbixエージェント用コンテナにログイン # docker exec -it zabbix-agent /bin/bash # Zabbixエージェントをインストール # rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm # dnf clean all # dnf -y install zabbix-agent # コンフィグファイル修正 # cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.org # sed -i 's/^Server=.*/Server=192.168.0.3/' /etc/zabbix/zabbix_agentd.conf # sed -i 's/^ServerActive=.*/ServerActive=192.168.0.3/' /etc/zabbix/zabbix_agentd.conf # Zabbixエージェント起動 # systemctl restart zabbix-agent # systemctl enable zabbix-agent # exit
初期設定を行うため、ブラウザから下記を行ってください。
まずは監視対象のホストを登録します。Zabbix画面の [設定]-[ホスト]-[ホストの作成] から下記を指定して [追加] します。
host-4 に最もシンプルな icmpping アイテムを追加してみます。[設定]-[ホスト] で対象ホスト host-4 の横の [アイテム]-[アイテムの作成] から下記を指定して [適用] します。
[監視データ]-[最新データ] でホスト host-4 を選択ししばらくすると、最新の値として 1 が表示されます。icmpping は ping で死活監視を行い、監視対象が生きていれば 1、ダウンしていれば 0 を記録します。
利用可能なアイテムタイプは下記を参照してください。
[設定]-[ホスト] で対象ホスト host-4 の横の [トリガー]-[トリガーの作成] から下記を指定して [追加] します。
host-4 を停止すると icmpping の結果が 0 となり、[監視データ]-[ダッシュボード] や [監視データ]-[障害] にアラートが表示されます。
利用可能なトリガー関数は下記を参照してください。
ホストグループは、複数のホストをグルーピングするものです。ホストグループを追加するには [設定]-[ホストグループ]-[ホストグループの作成] から下記を指定して [追加] します。
ホストをホストグループに追加するには、[設定]-[ホスト] でホストをクリックし、[グループ] にホストグループを追加します。
テンプレートはアイテムやトリガーを含みます。ホストにテンプレートを適用することで、あらかじめ用意しておいたアイテムやトリガーをホストに対して適用することができます。テンプレートを追加するには、[設定]-[テンプレート]-[テンプレートの作成] から下記を指定して [追加] します。
テンプレートに対して、アイテムやトリガーを作成することができます。
テンプレートをホストに適用するには、[設定]-[ホスト] から対象ホストをクリックし、[テンプレート] にテンプレートを追加します。
ICMP-ECHO(Ping)を用いて死活監視を行います。Zabbixエージェントがインストールされていなくても監視できます。アイテムには icmpping を指定します。生きていれば 1、ダウンしていれば 0 が記録されます。トリガーには 1回でも応答が無ければアラートとする場合は、 last(/ホスト名/icmpping)=0 を、直近5回連続して応答が無い時にエラーとする場合は、直近5回中0と等しいデータが4個より大きいという意味で count(/ホスト名/icmpping,#5,"eq",0)>4 を指定します。
ICMP-ECHO(Ping) ではなく、Zabbix エージェントに対して接続可能か否かで死活監視します。アイテムには agent.ping を指定します。icmpping では、生きていれば 1、ダウンしていれば 0 でしたが、agent.ping は生きていれば 1、死んでいればデータなしとなるため、トリガーの条件式は last(...)=0 ではなく、nodata(/ホスト名/agent.ping,5m)=1 の様に設定します。
CPUの使用率を監視するにはアイテムに system.cpu.util を指定します。直近5分間のCPU使用率がいずれも80%を上回った場合にアラートを発生させる場合、トリガーには min(/ホスト名/system.cpu.util,5m)>80 を指定します。
メモリ使用率を監視する手段は対象OSによって微妙に異なります。既存のテンプレートを参考にするのがよさそうです。例えば、Windows memory by Zabbix agent というテンプレートでは、アイテムに last(//vm.memory.size[used]) / last(//vm.memory.size[total]) * 100 という式から計算される vm.memory.util という名前のキーを定義し、トリガーに min(/ターゲット/vm.memory.util,5m)>{$MEMORY.UTIL.MAX} を指定しています。また、Linux memory by Zabbix agent というテンプレートでは、メモリの空き率 vm.memory.size[pavailable] の値を 100 から引いた値を vm.memory.utilization という依存アイテムとして定義し、トリガーに min(/ターゲット/vm.memory.utilization,5m)>{$MEMORY.UTIL.MAX} を指定しています。他にもスワップの頻度などを監視しています。
Web監視するには、[設定]-[ホスト] で対象ホストの [Web]-[Webシナリオの作成] から Web監視シナリオを作成します。[ステップ] タブの [追加] から Web監視の対象とする URL を入力してください。
Zabbixサーバから、Zabbixエージェントに対してコマンドラインから要求を行うツールです。
# dnf -y install zabbix-get # zabbix_get -s 192.168.0.4 -p 10050 -k "agent.ping"
Zabbixエージェントから、Zabbixサーバーに対して通知を送信するツールです。
# dnf -y install zabbix-sender # zabbix_sender -z 192.168.0.3 -s "Sender Test" -k db.connections -o 43
Zabbix Proxy は Zabbix Server と Zabbix Agent の中間に位置し、Server から設定情報を受け取り Agent に設定したり、Agent からの情報をキャッシュして Server に一括転送したりします。Server と Agent が直接通信できない場合に Server と Proxy、Proxy と Agent 間の通信さえ確保すれば監視できること、Server の負荷を Proxy に分散できること、通信負荷を減らせることなどのメリットがあります。
Zabbix Proxy から見て、Proxy が Server に接続して設定情報を読み取りに行く アクティブモード と、Server が Proxy に接続して設定情報を受け取る パッシブモード があります。
# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm # dnf clean all # dnf -y install mariadb zabbix-proxy-mysql zabbix-sql-scripts # cat <<EOF | docker exec -i zabbix-db mysql -h 192.168.0.2 -u root -proot123 create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin; create user zabbix_proxy@'%' identified by 'zabbix_proxy123'; grant all privileges on zabbix_proxy.* to zabbix_proxy@'%'; EOF # cat /usr/share/doc/zabbix-sql-scripts/mysql/proxy.sql | \ mysql -h 192.168.0.2 -u zabbix_proxy -pzabbix123 zabbix_proxy # vi /etc/zabbix/zabbix_proxy.conf
コンフィグファイルには下記を設定します。取得周期はお試し用に短い時間(60秒)を指定していますが、本番環境では負荷に応じた適切な値に設定してください。
ProxyMode=0 # プロキシモード(0:アクティブ、1:パッシブ) Server=192.168.0.3 # Zabbixサーバのアドレス Hostname=proxy-6 # プロキシ名 DBHost=192.168.0.2 # DBサーバのアドレス DBName=zabbix_proxy # DBのデータベース名 DBUser=zabbix_proxy # DBユーザ名 DBPassword=zabbix123 # DBパスワード ConfigFrequency=60 # アクティブモードの際の設定情報取得周期
準備ができたらプロキシを起動します。
# systemctl start zabbix-proxy # systemctl enable zabbix-proxy
問題がある場合はログにエラーメッセージが出力されます。
# tail -f /var/log/zabbix/zabbix_proxy.log
Web画面の [管理]-[プロキシ]-[プロキシの作成] からプロキシを登録します。アクティブ、パッシブの選択はプロキシの設定に合わせてください。また、プロキシ名はプロキシ側のコンフィグファイルの Hostname で指定した名前に合わせてください。
また、[設定]-[ホスト] でホストを作成する際に、上記で作成したプロキシを指定してください。
エージェント側は、/etc/zabbix/zabbix_agentd.conf の Server の値を Zabbix Server ではなく Zabbix Proxy のアドレスを指定してください。
監視のための通信負荷を減らすこと、また、整合性の観点から同時に取得すべきデータをまとめて取得することを目的として依存アイテムがサポートされています。マスターとなるアイテムを一度だけ取得し、その値を複数の依存アイテムに分解することで、一度に複数の値を取得することが可能となります。まず、マスターとなるアイテムをひとつアイテムに追加します。もうひとつアイテムを作成する際に、[タイプ] に 依存アイテム を選択し、[キー] には自由なキー名を命名し、[マスターアイテム] にマスターとなるアイテムを指定します。また、[保存前処理] でマスターアイテムの値から依存アイテムの値を取り出す処理を設定します。例えば、JSON から "name" の値を取り出すには JSON Path $.name を指定します。
サーバ・エージェント間は比較的簡単なプロトコルで実装されています。要求側も応答側も、4バイトの固定値("ZBXD")と、1バイトのバージョン番号、8バイトのデータ長、データから構成されます。データ部は "agent.ping" のような文字列でやりとりされます。
Header: 0x5a 0x42 0x58 0x44 ... "ZBXD" Version: 0x01 ... Version 1 Length: 8バイト(BIGエンディアン)のデータ長 Data: 文字列