51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Docker 部署 Zabbix + Grafana

两年前在服务器上放了一套 Grafana + Zabbix + Prometheus 的监控系统,当时是照着文档和网上各路教程一个一个编译的,插件和配置文件丢得七零八落,很难维护,故这几天借迁移服务器的机会,改用 Docker 安装,基本只用一个配置文件,今后随时可以一键部署。目前写好了 MySQL + Grafana + Zabbix-Server + Zabbix-Agent 的配置,Prometheus(以前主要用来监控 MySQL)暂时还没做,以后补上。


grafana.png grafana.png


安装 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.1localhost 是无效的!

保存以上配置文件为 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 了!
docker.png docker.png


配置 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 你的面板了!

Q.E.D.

赞(3)
未经允许不得转载:工具盒子 » Docker 部署 Zabbix + Grafana