两年前在服务器上放了一套 Grafana + Zabbix + Prometheus 的监控系统,当时是照着文档和网上各路教程一个一个编译的,插件和配置文件丢得七零八落,很难维护,故这几天借迁移服务器的机会,改用 Docker 安装,基本只用一个配置文件,今后随时可以一键部署。目前写好了 MySQL + Grafana + Zabbix-Server + Zabbix-Agent 的配置,Prometheus(以前主要用来监控 MySQL)暂时还没做,以后补上。
安装 Docker
照文档安装即可,不再赘述。
Dockers 部署
version: '1.0'
services:
# zabbix-server 容器配置
server:
image: zabbix/zabbix-server-mysql:latest
container_name: zabbix-server
depends_on:
- mysql
- agent
environment:
TZ: Asia/Shanghai
DB_SERVER_HOST: "mysql"
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "zabbix_pwd"
MYSQL_ROOT_PASSWORD: "root_pwd"
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
links:
- mysql:zabbix-mysql
- agent:zabbix-agent
user: root
networks:
zabbixbr:
ipv4_address: 172.20.0.6
restart: always
# zabbix-agent 容器配置
agent:
image: zabbix/zabbix-agent:latest
container_name: zabbix-agent
privileged: true
ports:
- "10050:10050"
volumes:
- /etc/localtime:/etc/localtime:ro
user: root
networks:
zabbixbr:
ipv4_address: 172.20.0.5
restart: always
# zabbix web 环境容器配置
web:
image: zabbix/zabbix-web-nginx-mysql:latest
container_name: zabbix-web
depends_on:
- mysql
- server
environment:
TZ: Asia/Shanghai
DB_SERVER_HOST: "mysql"
ZBX_SERVER_HOST: "server"
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "zabbix_pwd"
MYSQL_ROOT_PASSWORD: "root_pwd"
volumes:
- /etc/localtime:/etc/localtime:ro
links:
- mysql:zabbix-mysql
- server:zabbix-server
ports:
- "90:80"
user: root
networks:
zabbixbr:
ipv4_address: 172.20.0.4
restart: always
# mysql 容器配置
mysql:
image: mysql:5.7
container_name: zabbix-mysql
command: --character-set-server=utf8 --collation-server=utf8_general_ci
environment:
TZ: Asia/Shanghai
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "zabbix_pwd"
MYSQL_ROOT_PASSWORD: "root_pwd"
networks:
zabbixbr:
ipv4_address: 172.20.0.3
volumes:
# 数据库 volume 路径:/home/data,根据自己需求调整
- /home/data/zabbix/database/mysql:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
restart: always
# Grafana 容器配置
grafana:
image: grafana/grafana:latest
container_name: zabbix-grafana
environment:
TZ: Asia/Shanghai
# 下面填写你想安装的插件,多项逗号分隔,当然也可以直接把插件上传到下面的 volume 中
GF_INSTALL_PLUGINS: alexanderzobnin-zabbix-app
# 挂载储存用的 volume,映射到宿主目录 /var/lib/docker/volumes 下
volumes:
# 插件和 Grafana 的用户配置数据放这里面
- grafana-storage:/var/lib/grafana
# grafana.ini 配置文件在里面
- grafana-etc:/etc/grafana
ports:
- "3000:3000"
networks:
zabbixbr:
ipv4_address: 172.20.0.2
restart: always
# 创建 stack 内用的容器
volumes:
grafana-storage:
grafana-etc:
# stack 内网配置
networks:
zabbixbr:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
# 内网网关
gateway: 172.20.0.1
把整套系统部署到一个 stack 中,所有组建间通信通过内网完成,注意容器内访问使用各自的内网 IP 172.20.0.x
,容器内使用 127.0.0.1
和 localhost
是无效的!
保存以上配置文件为 docker-compose.yml
。
现在先 pull 要用到的镜像:
docker pull mysql:5.7
docker pull zabbix/zabbix-server-mysql:latest
docker pull zabbix/zabbix-agent:latest
docker pull zabbix/zabbix-web-nginx-mysql:latest
docker pull grafana/grafana:latest
然后运行 docker compose:
docker-compose up -d
docker-compose ps
看到下面的输出就 OK 了!
配置 Zabbix
之后访问 http://你的公网IP或者localhost:90/
配置 Zabbix,登陆 ID:Admin、密码:zabbix。
依次打开 Configuration > Hosts > Zabbix server,Agent interfaces 中 IP 改为 172.20.0.5
,Update 即可,返回 Hosts 列表,过几分钟刷新,看到 Zabbix server 的 Availability 标签 ZBX
变成绿色就说明 zabbix-server + zabbix-agent 部署成功了。
配置 Grafana
访问 http://你的公网IP或者localhost:3000/
,登陆 ID:admin、密码:admin。
启用 Zabbix,然后创建 Zabbix 数据源(data source),URL 填写 http://你的公网IP或者localhost:90/api_jsonrpc.php
,账号密码是刚刚的 Zabbix 账号密码,保存之后测试通过就说明 Grafana 已经连上 Zabbix 了,之后就可以 DIY 你的面板了!
「樱花庄的白猫」原创文章:《Docker 部署 Zabbix + Grafana》,转载请保留出处!https://2heng.xin/2019/09/10/docker-zabbix-grafana/
Q.E.D.
Comments | 16 条评论
博主 A01
大佬!!!
emm先丢收藏吃灰
(〜 ̄△ ̄)〜
以后再做
( ̄▽ ̄)
博主 Georgie
(`・ω・´)
膜拜大佬博主 起床困难户
爱了爱了,这么优秀的网站为啥才发现
博主 起床困难户
爱了爱了
博主 凡
不登录也能评论吗
博主 「轉身
compose 的容器怎么迁移到其他机器
博主 黑水町的租客
为什么部署完成,3000端口能访问,但是90端口访问不了呢(安全组防火墙之类的都开放了) netstat -lnp|grep 90也能看到90端口是listen状态。
博主 toolbox
@黑水町的租客 同问 ,我也是这个问题
博主 toolbox
@黑水町的租客 知道问题了 是8080端口 不是80
博主 帆
aze
博主 无理
博主 T G
想知道页面的文章列表是怎么加的。。。页面编辑里没有啊
博主 repostone
非技术的路过。
博主 Ekkles
看来双十一收获颇丰啊 。
服务器转到哪里啦
博主 Mashiro
@Ekkles Azure新加坡
博主 Mashiro
已知问题:eth0 为容器内网卡,agent 无法挂载到宿主网卡。。