docker-compose部署zabbix
前期准备工作
新建必要文件夹
mkdir -p zabbix/{etc,fonts}
准备字体文件
存放在 ./zabbix/fonts/
下就可以
不过名字必须叫DejaVuSans.ttf
可以根据自己的需求,在windows的字体库里找到想要的ttf格式的字体,修改成上面的名字就可以。
准备mysql的配置文件
存放位置: ./zabbix/etc/
名称就是my.cnf
范例配置文件(可以根据实际情况自行优化)
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
symbolic-links=0
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
#最大连接数
max_connections = 4000
#最大错误数
max_connect_errors = 6000
#单用户最大连接数
max_user_connections=1000
#独立表空间
innodb_file_per_table = 1
#5.7版本 单位天
#expire_logs_days=7
#8版本 单位秒
binlog_expire_logs_seconds=604800
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
docker-compose文件部分
---
version: '3'
services:
mysql:
image: mysql:8.0.31
container_name: mysql
restart: always
environment:
#数据库root用户密码
MYSQL_ROOT_PASSWORD: root8943
#允许空密码
#MYSQL_ALLOW_EMPTY_PASSWORD: yes
#新建数据库
MYSQL_DATABASE: zabbix
#数据库对应的用户
MYSQL_USER: zabbix
#用户对应的密码
MYSQL_PASSWORD: zabbix
volumes:
#将数据保存在宿主机上
- ./zabbix/db:/var/lib/mysql
#映射配置文件
- ./zabbix/etc/my.cnf:/etc/my.cnf
#同步时间
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
ports:
- 3306:3306
networks:
- zabbix-net
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
- --collation-server=utf8_bin
zabbix-snmptraps:
image: zabbix/zabbix-snmptraps:centos-6.2.4
container_name: zabbix-snmptraps
restart: always
ports:
- 162:162/udp
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- snmptraps:/var/lib/zabbix/snmptraps:rw
- mibs:/var/lib/zabbix/mibs
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-6.2.4
container_name: zabbix-java-gateway
restart: always
networks:
- zabbix-net
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
ports:
- 10052:10052
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:centos-6.2.4
container_name: zabbix-server-mysql
restart: always
networks:
- zabbix-net
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
#脚本存放目录
- ./zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- snmptraps:/var/lib/zabbix/snmptraps
#数据卷存放zabbix配置文件
- zabbix-conf:/etc/zabbix
- mibs:/var/lib/zabbix/mibs
ports:
- 10051:10051
environment:
#数据库地址,因为同在容器中,只需要设置成容器名
DB_SERVER_HOST: mysql
DB_SERVER_PORT: 3306
#数据库用户
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
#使用的数据库
MYSQL_DATABASE: zabbix
#root用户密码
MYSQL_ROOT_PASSWORD: root8943
#开启snmp
ZBX_ENABLE_SNMP_TRAPS: true
#起始主动收集数据的进程
ZBX_STARTPOLLERS: 10
#起始负责处理Agentd推送过来的数据的进程
ZBX_STARTTRAPPERS: 100
#起始自动发现的进程
ZBX_STARTDISCOVERERS: 3
#其实ping的进程
ZBX_STARTPINGERS: 10
#开启java网关
ZBX_JAVAGATEWAY_ENABLE: true
#指定java网关的地址
ZBX_JAVAGATEWAY: zabbix-java-gateway
#端口
ZBX_JAVAGATEWAYPORT: 10052
#缓存的大小
ZBX_CACHESIZE: 1024M
#缓存数值项的大小
ZBX_VALUECACHESIZE: 1024M
ZBX_VMWARECACHESIZE: 256M
#删除数据相关设置
ZBX_HOUSEKEEPINGFREQUENCY: 6
ZBX_MAXHOUSEKEEPERDELETE: 10000
#历史缓存索引
ZBX_HISTORYINDEXCACHESIZE: 1024M
#历史缓存
ZBX_HISTORYCACHESIZE: 1024M
depends_on:
- mysql
- zabbix-java-gateway
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-6.2.4
container_name: zabbix-web-nginx-mysql
restart: always
networks:
- zabbix-net
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- ./zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
environment:
DB_SERVER_HOST: mysql
DB_SERVER_PORT: 3306
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix
ZBX_SERVER_HOST: zabbix-server-mysql
PHP_TZ: Asia/Shanghai
ZBX_SERVER_PORT: 10051
MYSQL_DATABASE: zabbix
ZBX_SERVER_NAME: admin
ports:
- 8080:8080
depends_on:
- mysql
- zabbix-server-mysql
networks:
zabbix-net:
volumes:
snmptraps:
zabbix-conf:
mibs:
zabbix-proxy-conf:
运行文件
这里没有把agent也放在里面,是因为,agent一般是不运行在容器中的,因为还需要监控docker,放在容器中运行反而复杂了,在宿主机上运行agent来监控宿主机,更方便。
监控docker,只需要给zabbix用户加入到docker组就可以了
usermod -aG docker zabbix
然后重启服务就好了
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17052988.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通