一.简介
Zabbix 监控的基本原理:通过 Zabbix Agent获取监控数据,然后将数据发送到 Zabbix Server,或通过 Zabbix Proxy收集数据,再将数据统一发送到 Zabbix Server,数据存到Zabbix DB中,Zabbix Server 分析数据,最后通过Zabbix Web展示数据,也可以使用Grafana数据可视化工具展示数据。
二.Zabbix6.4部署
官方文档参考:https://www.zabbix.com/documentation/6.4/zh/manual/installation/containers
基础环境准备: CENTOS7 docker server 20.10.24 docker-compose version 1.28.5 宿主机IP:192.168.77.130
1.创建自定义网络zabbix-net
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
2.启动空的MySQL服务器实例 端口3306不暴露
docker run -td \
--name mysql-server \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
--restart unless-stopped \
mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3.启动Zabbix Java网关实例 端口10052不暴露
docker run -td \
--name zabbix-java-gateway \
--network=zabbix-net \
--restart unless-stopped \
zabbix/zabbix-java-gateway:alpine-5.4-latest
4.启动Zabbix server实例,并将其关联到已创建的MySQL server实例 端口10051暴露
docker run -td \
--name zabbix-server-mysql \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
zabbix/zabbix-server-mysql:alpine-5.4-latest
5.启动Zabbix Web界面,并将其关联到已创建的MySQL server和 Zabbix server实例 端口80暴露
docker run -td \
--name zabbix-web-nginx-mysql \
-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_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
6.测试
http://ip:80 默认账号和口令 Admin/zabbix
设置时区和切换到中文 User settings---Profile---Language---选Chinese(zh_CN)---Update
中文显示不全乱码替换字体
上传电脑上msyh.ttc字体包到宿主机
#a309是zabbix-server的容器ID前几位
docker cp msyh.ttc a309:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
7.镜像打包,方便以后docker-compose使用本地镜像部署
#打标签,是前后一样,避免docker load -i后是<none>,不显示tag
docker tag mysql:8.0 mysql:8.0
docker tag zabbix/zabbix-java-gateway:alpine-5.4-latest zabbix/zabbix-java-gateway:alpine-5.4-latest
docker tag zabbix/zabbix-server-mysql:alpine-5.4-latest zabbix/zabbix-server-mysql:alpine-5.4-latest
docker tag zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
#打包
docker save -o Zabbix6.4.tar \
zabbix/zabbix-java-gateway:alpine-5.4-latest \
zabbix/zabbix-server-mysql:alpine-5.4-latest \
zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
#拷贝到主机,需要使用时导入
docker load -i Zabbix6.4.tar
8.docker-compose文件编写
官方下载地址https://github.com/zabbix/zabbix-docker
cat > docker-compose.yml <<EOF
version: '3'
services:
mysql-server:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
networks:
- zabbix-net
command: ["--character-set-server=utf8", "--collation-server=utf8_bin", "--default-authentication-plugin=mysql_native_password"]
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:alpine-5.4-latest
restart: always
networks:
- zabbix-net
zabbix-server:
depends_on:
- mysql-server
image: zabbix/zabbix-server-mysql:alpine-5.4-latest
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
ZBX_JAVAGATEWAY: zabbix-java-gateway
networks:
- zabbix-net
ports:
- "10051:10051"
zabbix-web-nginx-mysql:
depends_on:
- zabbix-server
image: zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest
ports:
- "80:8080"
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
networks:
- zabbix-net
networks:
zabbix-net:
EOF
三.Grafana部署
基础环境准备: CENTOS7 docker server 20.10.24 宿主机IP:192.168.77.130
官方文档参考:https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/
1.docker-compose.ym编写
#创建目录
mkdir -p /opt/grafana
cd /opt/grafana
#docker-compose.yml文件
cat > docker-compose.yml <<EOF
version: '3.9'
services:
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"
environment:
- TZ=Asia/Shanghai
networks:
- grafana
volumes:
- ./grafana:/var/lib/docker/volumes/grafana
networks:
grafana:
driver: bridge
EOF
#启动
docker-compose up -d
2.测试
http://ip:3000 默认账号和口令 admin/admin
3.添加zabbix插件
Configuration---Plugins---搜索zabbix---点击Zabbix图标install---Enable
Configuration---Add data source---搜索zabbix---Select
4.添加grafana到zabbix的认证信息
zabbix的API地址 http://192.168.77.130/api_jsonrpc.php 一般后半部分api_jsonrpc.php不需要修改
Username/Passwor 我这里使用登录zabbix默认的账号口令Admin/zabbix 一般只需要读权限的账号即可
Save&test 不报错即可
5.granfana添加监控模板
Add a new panel
官方模板载地址https://grafana.com/grafana/dashboards/
可搜索
选一个 复制ID或JSON,等会粘贴到grafana
Copy ID to clipboard
Download JSON