安装数据库

安装mariadb,略。参考https://yanyong.cc/post/docker-example-list/#mariadb

安装zabbix

参考https://www.zabbix.com/documentation/current/manual/installation/containers

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
sudo docker network create --subnet 172.19.0.0/16 --gateway 172.19.0.1 zabbix-net

sudo docker run --name zabbix-java-gateway \
      --network zabbix-net \
      --ip 172.19.0.2 \
      --restart unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-5.0-latest

sudo docker run --name zabbix-server-mysql \
      -e DB_SERVER_HOST="172.17.0.1" \
      -e DB_SERVER_PORT="3306" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="1234" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      -e ZBX_JAVAGATEWAY_ENABLE="true" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      -e ZBX_JAVAGATEWAYPORT="10052" \
      -e ZBX_STARTJAVAPOLLERS="5" \
      -v /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
      -v /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
      --network zabbix-net \
      --ip 172.19.0.3 \
      -p 10051:10051 \
      -e TZ='Asia/Shanghai' \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-5.0-latest

sudo docker run --name zabbix-web-nginx-mysql \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e ZBX_SERVER_PORT="10051" \
      -e DB_SERVER_HOST="172.17.0.1" \
      -e DB_SERVER_PORT="3306" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="1234" \
      -e PHP_TZ="Asia/Shanghai" \
      --network zabbix-net \
      --ip 172.19.0.4 \
      -p 8080:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest

如果配置MYSQL_ROOT_PASSWORD则会尝试创建用户和数据库,也可以手动创建用和数据库则无需配置MYSQL_ROOT_PASSWORD

1
2
3
mysql -h 127.0.0.1 -P 3306 -u root -p'123456' -e "create user zabbix@'%' identified by '1234';"~~
mysql -h 127.0.0.1 -P 3306 -u root -p'123456' -e "create database zabbix character set utf8 collate utf8_bin;"
mysql -h 127.0.0.1 -P 3306 -u root -p'123456' -e "grant all on zabbix.* to zabbix@'%';flush privileges;"

安装zabbix agent

zabbix agent部署在被监控目标上,zabbix server主机上也要安装zabbix agent因为主机也需要被监控,不建议容器安装zabbix agent

zabbix agent版本最好与zabbix server版本一致

zabbix agent下载地址

下载并解压

1
2
3
4
5
mkdir ~/zabbix && cd ~/zabbix

wget https://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.11/zabbix_agent-5.0.11-linux-3.0-amd64-static.tar.gz

tar zxf zabbix_agent-5.0.11-linux-3.0-amd64-static.tar.gz

修改并查看agent配置文件。zabbix server容器的地址为172.19.0.3,主机地址为10.20.70.113,Server为允许访问agent的主机,ServerActive配置后启用主动模式,以下示例为zabbix server上安装的agent配置文件,主动模式时Hostname必须与server端创建主机时的名字一致配置文件官方文档

1
2
3
sed -i 's/^Server=.*/Server=172.19.0.3/' ~/zabbix/conf/zabbix_agentd.conf
sed -i 's/^ServerActive=.*/ServerActive=10.20.70.113:10051/' ~/zabbix/conf/zabbix_agentd.conf  # 可选项
sed '/^#\|^ *$/d' ~/zabbix/conf/zabbix_agentd.conf  # 显示非注释且非空行
LogFile=/tmp/zabbix_agentd.log
Server=172.19.0.3
ServerActive=10.20.70.113:10051
Hostname=Zabbix server

启动zabbix agent,默认监听端口10050

1
~/zabbix/sbin/zabbix_agentd -c ~/zabbix/conf/zabbix_agentd.conf

关闭zabbix agent

1
ps -ef|awk '/zabbix_agent[d] -c/{print $2}'|xargs -i kill {}

可选步骤,开启防火墙

  • agent安装在zabbix server本机时
1
sudo iptables -A INPUT -s 172.19.0.0/16 -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
  • agent安装在其它被监控机器时
1
sudo iptables -A INPUT -s 10.20.70.113 -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT

可选步骤,加入开机自启动

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#echo "sudo -u $USER $HOME/zabbix/sbin/zabbix_agentd -c $HOME/zabbix/conf/zabbix_agentd.conf" | sudo tee -a /etc/rc.local
#sudo chmod +x /etc/rc.local


#2022.6.22更新
##Debian系统
sudo tee /etc/rc.local << EOF
#!/bin/bash -e
sudo -u $USER $HOME/zabbix/sbin/zabbix_agentd -c $HOME/zabbix/conf/zabbix_agentd.conf
exit 0
EOF
sudo chmod +x /etc/rc.local
sudo systemctl restart rc-local

##CentOS系统,开头也必须指定#!/bin/bash,可以不用exit 0
echo "sudo -u $USER $HOME/zabbix/sbin/zabbix_agentd -c $HOME/zabbix/conf/zabbix_agentd.conf" | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
sudo systemctl restart rc-local

监控zabbix server主机

主机IP:10.20.70.113,访问http://10.20.70.113:8080,nginx反向代理配置一个域名访问也可以,默认用户名密码:Admin/zabbix

图片走丢了,请联系管理员

默认已经添加zabbix server主机(agent被动模式),因为zabbix server是容器安装的,所以默认的127.0.0.1:10050是找不到zabbix agent的,需要改成主机地址10.20.70.113或docker网桥地址172.17.0.1

图片走丢了,请联系管理员