部署zabbix
https://github.com/zabbix/zabbix-docker/releases
安装说明
https://www.zabbix.com/documentation/current/zh/manual/installation/containers#docker-compose
环境规划
| IP地址 | 版本 | 目录 | 启动方式 |
|--------------|---------|-------------------|------------------------------------------|--------------------------------|
|172.17.0.80 | 7.2.4| 安装目录:/datas/zabbix | docker 启动|
docker 安装忽略
创建网络
docker network create --subnet 172.80.0.0/16 --ip-range 172.80.240.0/20 zabbix-net
root@doris02:/opt/package# docker network ls
NETWORK ID NAME DRIVER SCOPE
a596f409d56d bridge bridge local
772c0cc4f91b host host local
c53a2d3cb863 none null local
e62815794488 zabbix-net bridge local
1. 部署MYSQL
1.1 配置mysql
mkdir -p /datas/zabbix-mysql/conf
cat >/datas/zabbix-mysql/conf/my.cnf<<EOF
[client]
port=3306
[mysqld]
user = mysql
port = 3306
bind-address = 0.0.0.0
character-set-server=utf8mb4
collation-server=utf8mb4_bin
default-storage-engine=innoDB
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
#default_authentication_plugin=mysql_native_password
default_authentication_plugin=caching_sha2_password
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
max_connections = 2000
max_connect_errors = 3000
connect_timeout=10
wait_timeout = 7200
interactive_timeout = 7200
back_log = 300
open_files_limit = 65535
group_concat_max_len=1024000
table_open_cache = 8192
max_allowed_packet = 512M
# 禁用二进制日志
skip-log-bin
#设置临时表大小
tmp_table_size=828M #64M
max_heap_table_size=828M #256M
#表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=1
read_buffer_size = 8M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 64M
thread_cache_size = 64
thread_stack = 512K
ft_min_word_len = 1
skip-external-locking
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 32M
net_retry_count = 100
explicit_defaults_for_timestamp=true
log_bin_trust_function_creators=1
performance_schema= 0
#MGR使用乐观锁,减少锁粒度
transaction-isolation = READ-COMMITTED
#时区
log_timestamps=SYSTEM
##跳过解析
skip-name-resolve
#慢查询
#slow_query_log=0
#long_query_time=2
#log-queries-not-using-indexes = 0
#log_throttle_queries_not_using_indexes=1000
#min_examined_row_limit=1000
#log-slow-admin-statements = TRUE
#innodb setting
innodb_file_per_table = 1
innodb_open_files = 1000
innodb_buffer_pool_size = 2G
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 64M
innodb_log_file_size=2048M
innodb_max_dirty_pages_pct = 85
innodb_lock_wait_timeout = 120
innodb_flush_method=O_DIRECT
innodb_data_file_path = ibdata1:10M:autoextend
innodb_autoinc_lock_mode = 2
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1
innodb_status_file = 1
EOF
1.2 部署mysql
docker run -it -p 3308:3306 --name mysql-server \
-v /etc/localtime:/etc/localtime \
-v /datas/zabbix-mysql/mysql:/var/lib/mysql \
-v /datas/zabbix-mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="Zabbix@Monitor" \
-e MYSQL_ROOT_PASSWORD="Zabbix@2025" \
--network=zabbix-net \
--restart always \
-d --privileged=true registry.iotcloud.wl/library/mysql:8.0.41
1.3 启动 Zabbix Java 网关实例
docker run \
--name zabbix-java-gateway \
--restart=always \
-p 10052:10052 \
-v /etc/localtime:/etc/localtime \
-e ZBX_TIMEOUT=30 \
--network=zabbix-net \
-d registry.iotcloud.wl/zabbix/zabbix-java-gateway:ubuntu-7.2.4
1.4 启动 Zabbix server 实例,并将其关联到已创建的 MySQL server 实例:
docker run --name zabbix-server-mysql -t \
-v /etc/localtime:/etc/localtime \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e DB_SERVER_PORT="3306" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="Zabbix@Monitor" \
-e MYSQL_ROOT_PASSWORD="Zabbix@2025" \
-e ZBX_STARTPOLLERS=160 \
-e ZBX_STARTPOLLERSUNREACHABLE=60 \
-e ZBX_STARTTRAPPERS=60 \
-e ZBX_STARTPINGERS=300 \
-e ZBX_STARTDISCOVERERS=20 \
-e ZBX_STARTVMWARECOLLECTORS=10 \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
-e ZBX_JAVAGATEWAYPORT=10052 \
-e ZBX_JAVAGATEWAY_ENABLE=true \
-e ZBX_STARTJAVAPOLLERS=10 \
-e ZBX_VMWAREFREQUENCY=60 \
-e ZBX_VMWAREPERFFREQUENCY=60 \
-e ZBX_VMWARECACHESIZE=1024M \
-e ZBX_VMWARETIMEOUT=300 \
-e ZBX_CACHESIZE=1024M \
-e ZBX_HISTORYCACHESIZE=1024M \
-e ZBX_HISTORYINDEXCACHESIZE=1024M \
-e ZBX_TRENDCACHESIZE=512M \
-e ZBX_VALUECACHESIZE=512M \
-e ZBX_TRAPPERTIMEOUT=300 \
-e http_proxy=http://172.16.0.101:11080 \
-e https_proxy=http://172.16.0.101:11080 \
--network=zabbix-net \
--restart=always \
-p 10051:10051 \
-v /datas/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
--add-host='cnh01:172.16.0.53' \
--add-host='cnh02:172.16.0.54' \
--add-host='cnh03:172.16.0.55' \
--add-host='cnh04:172.16.0.56' \
-d registry.iotcloud.wl/zabbix/zabbix-server-mysql:ubuntu-7.2.4
1.5 部署 zabbix-web
docker run -it --name zabbix-web-nginx-mysql -uroot \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="Zabbix@Monitor" \
-e MYSQL_ROOT_PASSWORD="Zabbix@2025" \
-e PHP_TZ="Asia/Shanghai" \
--network=zabbix-net \
-p 8088:8080 \
--restart=always \
-d registry.iotcloud.wl/zabbix/zabbix-web-nginx-mysql:ubuntu-7.2.4
1.6 zabbix-agent
wget https://cdn.zabbix.com/zabbix/binaries/stable/7.2/7.2.4/zabbix_agent-7.2.4-linux-3.0-amd64-static.tar.gz
tar xf zabbix_agent-7.2.4-linux-3.0-amd64-static.tar.gz -C /opt/module
useradd zabbix
chown zabbix:zabbix /opt/module/zabbix-agent
cat >/lib/systemd/system/zabbix-agent.service<<EOF
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
#Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
Environment="CONFFILE=/opt/module/zabbix-agent/conf/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
#PIDFile=/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/opt/module/zabbix-agent/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
vim /opt/module/zabbix-agent/conf/zabbix_agentd.conf
Server=172.16.0.80
ServerActive=172.16.0.80
Hostname=172.16.0.79
systemctl start zabbix-agent
systemctl enable zabbix-agent
root@doris02:~# ss -lntu|grep 10050
tcp LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
root@doris02:~# tail -f /tmp/zabbix_agentd.log
710559:20250320:180859.823 agent #3 started [listener #2]
710560:20250320:180859.823 agent #4 started [listener #3]
710561:20250320:180859.823 agent #5 started [listener #4]
710562:20250320:180859.824 agent #6 started [listener #5]
710563:20250320:180859.824 agent #7 started [listener #6]
710564:20250320:180859.824 agent #8 started [listener #7]
710565:20250320:180859.824 agent #9 started [listener #8]
710566:20250320:180859.824 agent #10 started [listener #9]
710567:20250320:180859.824 agent #11 started [listener #10]
1.7 zabbix-agent 方法二
1. 配置源
wget https://repo.zabbix.com/zabbix/7.2/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.2+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_7.2+ubuntu22.04_all.deb
apt update
2. 安装zabbix-agent
apt install zabbix-agent
或
apt install zabbix-agent2
1.8 验证
http://172.16.0.xx:8088/ 默认用户 Admin 密码: zabbix