环境说明:
本例假设已有操作系统及docker环境,仅包含环境部署,不含客户端配置。 操作系统:centos7.9 mysql:5.7 zabbix:5.4 grafana:8.4.4 |
一、镜像准备:
1. 下载mysql5.7镜像
docker pull mysql:5.7
2. 下载zabbix-server镜像(本例安装的是支持MySQL数据库的Server镜像,选择的是centos-latest版本)
docker pull zabbix/zabbix-server-mysql:5.4-centos-latest
3. 下载Zabbix-web镜像
这里使用的是基于Nginx web服务器及支持MySQL数据库的Zabbix web接口
zabbix/zabbix-web-nginx-mysql。这里使用的是latest版本,在linux终端使用
docker pull zabbix/zabbix-web-nginx-mysql:5.4-centos-latest
4. 下载grafana镜像
docker pull grafana/grafana:8.4.4
注:Zabbix本身不支持直接监控Java,而是使用zabbix-java-gateway监控jvm/tomcat性能
docker pull zabbix/zabbix-java-gateway:latest (按需)
二、运行容器:
1. 创建一个新的 Docker 网络
需要将后面的zabbix-server、mysql、web等容器都加入到此网络中,方便互相访问
docker network create -d bridge zabbix_net --subnet 172.20.1.0/24 --gateway 172.20.1.1
2. 运行mysql容器
docker run --restart always -dit -p 3306:3306 --name zabbix-mysql \ --network zabbix_net -v /etc/localtime:/etc/localtime \ -v mysql-vol:/var/lib/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" mysql:5.7
创建数据库及授权
docker exec -it zabbix-mysql /bin/bash mysql -uroot -p<password>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by '<password>';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> quit;
4. 运行zabbix-server-mysql后端
docker run --restart always -dit -p 10051:10051 \ -v zabbix-server-vol:/etc/zabbix:ro -v /etc/localtime:/etc/localtime \ -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql \ --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" \ -e ZBX_CACHESIZE="128M" \ zabbix/zabbix-server-mysql:5.4-centos-latest
5. 运行zabbix前端
此处的以下内容与 运行mysql 镜像,创建mysql容器设置的内容要一致
docker run --restart always -dit -p 8080:8080 -v /etc/localtime:/etc/localtime \ --name zabbix-web-nginx-mysql --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql" \ -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" \ -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:5.4-centos-latest
6. 启动 grafana (默认账号密码:adamin/admin)
docker run --restart always -d --network zabbix_net --name=grafana2 -p 3000:3000 \ -v grafana-data:/var/lib/grafana grafana/grafana:8.4.4
7. grafana配置:
#安装 zabbix 插件
docker exec -it -u root grafana2 /bin/bash grafana-cli plugins install alexanderzobnin-zabbix-app #重启容器 docker restart grafana2
备注:
a).在grafana的插件中,出现 zabbix 说明 zabbix 插件安装成功,页面plugins-zabbix-config,点enable。
b). 在grafana的Data Sources中新增Zabbix数据源 .
数据源配置:type=Zabbix、url、Zabbix 的账号、Zabbix 的密码
url格式为:http://ip:8080/zabbix-web-nginx-mysql/api_jsonrpc.php
c). 在
https://grafana.com/dashboards 中提供很多第三方模版 , 使用 Dashboard Servers Linux 这个模版
复制模版id,于grafana中配置模版信息。
8. zabbix浏览
http://ip:8080,默认用户名密码:admin/zabbix
9. grafana浏览
http://ip:3000,默认用户名密码:admin/admin
10.大屏效果展示范例