一、Zabbix介绍
1.1 Zabbix简介
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
1.2 Zabbix的优点
-
自动发现服务器和网络设备
-
底层自动发现(如自动发现多实例mysql、tomcat进程等)
-
分布式的监控体系和集中式的web管理
-
支持主动监控和被动监控模式
-
支持多种操作系统linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD等
-
高效的Agent支持linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,windows NT4.0,window2000等
-
无Agent监控等多种监控方法(如:用SNMP协议监控路由或交换机、IPMI检测硬件温度等)
-
安全的用户认证模式
-
灵活的用户权限设置
-
基于web的管理方法,支持自由的定义事件和邮件发送
-
高水平的业务视图监控资源,支持日志审计
1.3 Zabbix各组件介绍
Zabbix-server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
Zabbix-mysql:专用于存储所有配置信息,以及由zabbix收集的数据;
Zabbix-web:zabbix的GUI接口,通常与server运行在同一台主机上;
Zabbix-proxy:可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往Server端;
Zabbix agent:部署在被监控主机上,负责收集本地数据并发往server或proxy端。
1.4 Zabbix架构图
Zabbix的各组件如下图所示,Zabbix各组件组成一个强大的监控系统。
二、grafana介绍
2.1 grafana简介
Grafana是一个开源的度量分析与可视化套件。经常被用作基础设施的时间序列数据和应用程序分析的可视化,它在其他领域也被广泛的使用包括工业传感器、家庭自动化、天气和过程控制等。Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。
2.2 grafana特点
- 灵活丰富的图形化选项
- 可以混合多种风格
- 支持白天和夜间模式
- 多数据源
三、实践环境规划
实践环境规划
- 宿主机操作系统版本
hostname | IP地址 | 系统版本 |
---|---|---|
jeven | 192.168.3.166 | centos 7.6 |
- zabbix各组件版本
容器名称 | 角色 | 版本 | docker内部地址 | 宿主机地址 |
---|---|---|---|---|
mysql-server | zabbix数据库 | 8.0 | 172.66.10.11 | 192.168.3.166 |
zabbix-server-mysql | zabbix服务端 | 6.2.7 | 172.66.10.12 | 192.168.3.166 |
zabbix-agent | zabbix-agent | 6.2.7 | 172.66.10.20 | 192.168.3.166 |
zabbix-web-nginx-mysql | zabbix的web服务 | 6.2.7 | 172.66.10.13 | 192.168.3.166 |
zabbix-java-gateway | 监控java进程 | 6.2.7 | 172.66.10.10 | 192.168.3.166 |
- grafana版本
容器名称 | 角色 | 版本 | docker内部地址 | 宿主机地址 |
---|---|---|---|---|
zabbix-grafana | grafana | 9.3.2 | 172.66.10.50 | 192.168.3.166 |
四、检查本地docker环境
4.1 检查操作系统版本
[root@jeven zabbix]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
4.2 检查docker版本
检查本地docker版本
[root@jeven zabbix]# docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:05:12 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:03:33 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
4.3 检查docker服务状态
检查docker服务是否正常启动
[root@jeven zabbix]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2023-03-13 17:43:40 CST; 1 weeks 1 days ago
Docs: https://docs.docker.com
Main PID: 117974 (dockerd)
Tasks: 64
Memory: 282.2M
4.4 检查docker compose版本
检查dockercompose版本
[root@jeven zabbix]# docker compose version
Docker Compose version v2.6.0
五、下载Zabbix相关镜像
在docker hub拉取Zabbix各组件镜像,如果镜像下载过慢,则检查下Docker的镜像加速是否配置。
docker pull mysql:8.0
docker pull zabbix/zabbix-server-mysql:centos-6.2.7
docker pull zabbix/zabbix-agent:centos-6.2.7
docker pull zabbix/zabbix-web-nginx-mysql:centos-6.2.7
docker pull zabbix/zabbix-java-gateway:centos-6.2.7
docker pull grafana/grafana:9.3.2
六、部署Zabbix+grafana监控系统
6.1 创建docker网络
单独创建一个docker网络,后面的zabbix各组件会在此Docker网络中。
docker network create --driver bridge --subnet 172.66.10.0/24 --gateway 172.66.10.1 zabbix
6.2 创建部署目录
创建一个zabbix的部署目录,用于存放docker-compose.yaml文件,以及作为zabbix各组件的数据挂载目录。
mkdir -p /data/zabbix/ && cd /data/zabbix
6.3 编辑docker-compose.yaml文件
docker-compose.yaml部署文件内容如下:
version: "3"
services:
mysql-server:
image: mysql:8.0
hostname: mysql-server
container_name: mysql-server
expose:
- 3306
command:
- mysqld
- --character-set-server=utf8
- --collation-server=utf8_bin
restart: always
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=admin
- MYSQL_ROOT_PASSWORD=admin
- TZ="Asia/Shanghai"
volumes:
- /data/zabbix/mysql:/var/lib/mysql
networks:
zabbix:
ipv4_address: 172.66.10.11
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-6.2.7
container_name: zabbix-java-gateway
restart: always
# volumes:
# - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
networks:
zabbix:
ipv4_address: 172.66.10.10
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:centos-6.2.7
container_name: zabbix-server-mysql
restart: always
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
# - /etc/timezone:/etc/timezone:ro
- /data/zabbix/zabbix:/usr/lib/zabbix
- /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
environment:
- DB_SERVER_HOST=mysql-server
- MYSQL_DATABASE=zabbix
- MYSQL_USER=root
- MYSQL_PASSWORD=admin
- MYSQL_ROOT_PASSWORD=admin
- ZBX_JAVAGATEWAY=zabbix-java-gateway
- TZ=Asia/Shanghai
depends_on:
- mysql-server
- zabbix-java-gateway
links:
- mysql-server:mysql
ports:
- 10051:10051
networks:
zabbix:
ipv4_address: 172.66.10.12
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-6.2.7
container_name: zabbix-web-nginx-mysql
restart: always
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
environment:
- PHP_TZ=Asia/Shanghai
- DB_SERVER_HOST=mysql
- MYSQL_DATABASE=zabbix
- MYSQL_USER=root
- MYSQL_PASSWORD=admin
- MYSQL_ROOT_PASSWORD=admin
- TZ=Asia/Shanghai
- ZBX_SERVER_HOST=zabbix-server-mysql
- ZBX_SERVER_PORT=10051
- ZBX_SERVER_NAME=zabbix-server-mysql
expose:
- 8080
- 8443
links:
- mysql-server:mysql
- zabbix-server-mysql:zabbix-server-mysql
- zabbix-java-gateway:zabbix-java-gateway
depends_on:
- mysql-server
- zabbix-java-gateway
- zabbix-server-mysql
ports:
- 8080:8080
- 8443:8443
networks:
zabbix:
ipv4_address: 172.66.10.13
zabbix-agent:
image: zabbix/zabbix-agent:centos-6.2.7
environment:
- ZBX_HOSTNAME=zabbix-agent
- ZBX_SERVER_HOST=172.66.10.12
- ZBX_SERVER_PORT=10051
# volumes:
# - /data/zabbix/zabbix_agentd.d/:/etc/zabbix/zabbix_agentd.d/
# - /data/zabbix/scripts/:/etc/zabbix/scripts/
expose:
- 10050
networks:
zabbix:
ipv4_address: 172.66.10.20
grafana:
image: grafana/grafana:9.3.2
container_name: zabbix-grafana
environment:
TZ: Asia/Shanghai
GF_INSTALL_PLUGINS: alexanderzobnin-zabbix-app
volumes:
- grafana-data:/var/lib/grafana
- grafana-conf:/etc/grafana
ports:
- "3000:3000"
networks:
zabbix:
ipv4_address: 172.66.10.50
restart: always
networks:
zabbix:
external: true
name: zabbix
volumes:
grafana-data:
grafana-conf:
编辑docker-compose.yaml文件,一键部署Zabbix+grafana平台。
[root@jeven zabbix]# docker compose up -d
[+] Running 8/8
⠿ Volume "zabbix_grafana-data" Created 0.0s
⠿ Volume "zabbix_grafana-conf" Created 0.0s
⠿ Container zabbix-grafana Started 0.8s
⠿ Container zabbix-zabbix-agent-1 Started 0.7s
⠿ Container mysql-server Started 0.7s
⠿ Container zabbix-java-gateway Started 0.7s
⠿ Container zabbix-server-mysql Started 1.2s
⠿ Container zabbix-web-nginx-mysql Started 1.5s
6.4 检查Zabbix各容器状态
检查Zabbix各容器状态,确保zabbix的各组件容器正常启动。
[root@jeven zabbix]# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
mysql-server "docker-entrypoint.s…" mysql-server running 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
zabbix-grafana "/run.sh" grafana running 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
zabbix-java-gateway "docker-entrypoint.s…" zabbix-java-gateway running 10052/tcp
zabbix-server-mysql "/usr/bin/tini -- /u…" zabbix-server-mysql running 0.0.0.0:10051->10051/tcp, :::10051->10051/tcp
zabbix-web-nginx-mysql "docker-entrypoint.sh" zabbix-web-nginx-mysql running 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, :::8080->8080/tcp, :::8443->8443/tcp
zabbix-zabbix-agent-1 "/usr/bin/tini -- /u…" zabbix-agent running 10050/tcp
七、访问Zabbix的web页面
7.1 访问Zabbix首页
访问地址:http://192.168.3.166:8080/
默认账号:Admin/zabbix
7.2 设置zabbix-server地址
- 打开 Zabbix 的配置界面,在 Configuration > Hosts > Zabbix server
找到 Agent interfaces 编辑部分,将 IP 地址改为 172.66.10.20,点击 Update 保存修改。返回 Hosts 列表页面,过几分钟后刷新页面。
检查 Zabbix server 的 Availability 标签,如果看到 ZBX 变成绿色,说明 zabbix-server + zabbix-agent 部署成功。
八、grafana配置
8.1 登录grafana的web界面
访问地址:http://192.168.3.166:3000/login
默认账号密码:admin/admin
8.2 设置系统中文
点击admin账号,进入账号系统配置界面,Language选择简体中文,保存即可。
8.3 安装zabbix插件
docker-compose文件中已在grafana中部署好zabbix插件,如未安装,可以进入插件管理页面。
在插件管理页面,搜索框内输入zabbix,可以看到zabbix插件。
点击zabbix插件,选择“enable”选项启动。
8.4 创建数据源
进入数据源创建界面,添加数据源,进行zabbix数据源配置:
name:zabbix
URL :http://192.168.3.166:8080/api_jsonrpc.php
账号密码:zabbix的账号密码填写即可。
8.5 查找grafana官方模板
访问地址:https://grafana.com/grafana/dashboards/,查找自己需要的zabbix模板。
8.6 配置监控模板
仪表盘配置中,导入grafana官方模板编号,这里选择7877和8677等模板,进行测试。
九、查看grafana仪表盘效果
查看Zabbix的grafana仪表盘效果,这里使用是7877模板。