首页  /  监控  /  正文

Grafana 接入 Zabbix 与连通性排错

监控 2026-10-02📖 12 分钟👁 —
📊 监控 · Zabbix + Grafana第 3 / 3 页123📖 完整导航 →

一、Grafana 是什么

Go 语言写的开源应用,专门做大数据的可视化展现。

Zabbix 自己也有图形界面,但是翻起来不方便,所以展示这一层换成 Grafana。

思路是在 Zabbix Server 那台机器上装 Grafana,启动服务,然后访问它的 Web 界面(云服务器的安全组和系统防火墙都要打开)。

中文镜像站:https://grafana.org.cn/docs/grafana/latest/setup-grafana/installation/

装之前先看一眼机器够不够。Grafana 官方给了个小型部署的最低配置:

小型部署的最低要求:2 核 CPU、2-4 GB 内存、10-20 GB SSD、1 个实例

浏览器这边也有要求,注意得开 JavaScript:

Grafana 支持的浏览器:Chrome/Chromium、Firefox、Safari、Microsoft Edge,都要用最新版本

二、在 Ubuntu 上装 Grafana

Ubuntu 的安装文档:https://grafana.org.cn/docs/grafana/latest/setup-grafana/installation/debian/

1. 先认清四个包的对应关系

从 APT 仓库装的话,apt-get update 的时候 Grafana 会跟着自动更新。哪个版本对应哪个包、哪个仓库,先看这张表:

Grafana Enterprise / 企业版 Beta / OSS / OSS Beta 分别对应 grafana-enterprise、grafana 两个包和 stable、beta 两个仓库

2. 安装必备软件包

sudo apt-get install -y apt-transport-https wget gnupg

3. 导入 GPG 密钥

这一步是确认软件包确实来自官方、没被篡改:

sudo mkdir -p /etc/apt/keyrings
# 指定下载文件保存的文件名和路径
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc
目录和文件的权限是怎么算出来的:4 读、2 写、1 执行、0 没有任何权限

644 就是属主 4+2 可读可写、属组和其他人只读,密钥文件这个权限刚好。

4. 添加稳定版仓库

echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

# 如果太慢需要把官方源换成国内镜像源
sudo sed -i 's|https://apt.grafana.com|https://mirrors.tuna.tsinghua.edu.cn/grafana/apt|' /etc/apt/sources.list.d/grafana.list
# 确认一下
cat /etc/apt/sources.list.d/grafana.list

# apt-get update后缓存了软件包的清单,需要刷新一下才能下载
apt-get update

# 如果update错误,可能是GPG密钥是镜像源的换成对应的
sudo wget -O /etc/apt/keyrings/grafana.asc https://mirrors.tuna.tsinghua.edu.cn/grafana/apt/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc
sudo apt-get update

换镜像源之后如果 update 报错,多半是密钥还是官方那份,换成镜像站对应的就行(上面最后两行)。

5. 刷新软件包清单

# Updates the list of available packages
sudo apt-get update

到这里准备动作就基本完成了。

6. 装 Grafana

OSS 版:

# Installs the latest OSS release:
sudo apt-get install -y grafana

企业版:

# Installs the latest Enterprise release:
sudo apt-get install grafana-enterprise

如果还想加 beta 仓库,注意apt 自动升级时会跟着升到 beta 版,可能不稳定:

echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

7. 启动服务

systemctl start grafana-server
root@VM-0-12-ubuntu:~# sudo systemctl enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /lib/systemd/system/grafana-server.service.

查一下状态,插件在陆续加载:

systemctl status grafana-server,active (running),下面一串 grafana-*-datasource 插件在加载

8. 开放端口

sudo ufw allow 3000/tcp
sudo ufw reload
sudo ufw status

默认用户名和密码都是 admin,安全组和防火墙都要放行 3000,然后访问 http://IP:3000。

第一次登录会弹出来让你改密码,我改成了自己常用的。进去之后的首页长这样:

Grafana 首页,Recent dashboards 是空的,中间是 Create your first dashboard

三、配置 Zabbix 数据源

界面是英文的,实在懒得看可以用浏览器的右键翻译对付一下。

先建一个仪表盘(dashboard):

新建仪表盘的 panel 编辑界面:右边红框选展示形式,下面红框配数据来源

Grafana 默认就集成了不少数据源(Prometheus、Zabbix、MySQL 等),插件页里能看到:

Grafana 的插件页 Administration → Plugins and data → Plugins,数据源插件都在这里看版本

装数据源插件的时候选最新兼容的版本,装完 Enable 启用。

1. 添加数据源

从 Connections 进去,加一个新的数据源,或者看已经配好的:

Connections 页,左边红框是入口,右边可以看已经配置过的数据源

2. 配 URL

URL 这一项照它给的示例改,改成自己 Zabbix 的地址:

Zabbix 数据源的 Connection 设置,URL 里填的示例地址报 Please enter a valid URL

关键点:Zabbix 和 Grafana 装在同一台机器上,所以这里访问的是内网 IP —— 是 Grafana 去访问,不是浏览器去访问:

http://127.0.0.1:8888/zabbix/api_jsonrpc.php

填好再回到这个页面配置数据源。

3. 配用户名密码并测试

认证方式选 User and password,用户名填 Zabbix 的 Admin,密码填 Zabbix 的登录密码:

Zabbix Connection:Auth type 选 User and password,Username 填 Admin,Password 已配置

点 Save & test 测一下:

测试通过,返回 Zabbix API version 7.0.30

看到 Zabbix API version 7.0.30 就说明通了。

4. 建仪表盘

配完之后在这里就能直接建仪表盘了:

数据源列表里选中刚才那个 zabbix 数据源,右边是 Build a dashboard 和 Explore 两个入口

四、集成数据演示和排障

到这一步已经拿到两台主机的数据了:

两台主机的汇总:agent-02 和 Zabbix server,Availability 都是 ZBX 绿色

1. Agent 连不上 Server 怎么查

如果 agent 的 10051 主动端口连不上 server,很可能是 server 的防火墙和安全组没放行:

云服务器安全组规则:10051 只放行 10.1.0.0/16(备注 zabbix-agent02),3000 放行全部 IPv4(备注 grafana)
# server执行
ufw allow from 10.1.0.0/16 to any port 10051 proto tcp

两个端口到底谁监听、谁主动连,一张表记牢:

10050 由 Agent 监听、Server 主动来连,用于被动模式和存活检查;10051 由 Server 监听、Agent 主动来连,用于主动模式和 zabbix_sender

2. 一条条命令确认

root@VM-4-16-ubuntu:/etc/zabbix# grep -E '^(Server|ServerActive|Hostname)' /etc/zabbix/zabbix_agent2.conf
Server=10.1.0.12
ServerActive=10.1.0.12:10051
Hostname=agent-02
# 这个配置告诉agent服务器,数据给哪个IP哪个端口

# 在server查看监听10051的服务
root@VM-0-12-ubuntu:~# lsof -i :10051
COMMAND       PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
zabbix_se 3221008 zabbix   10u  IPv4 452186409      0t0  TCP *:zabbix-trapper (LISTEN)
zabbix_se 3221008 zabbix   11u  IPv6 452186410      0t0  TCP *:zabbix-trapper (LISTEN)
zabbix_se 3221013 zabbix   10u  IPv4 452186409      0t0  TCP *:zabbix-trapper (LISTEN)
zabbix_se 3221013 zabbix   11u  IPv6 452186410      0t0  TCP *:zabbix-trapper (LISTEN)
# 有大量的进程监听,用于获取agent的数据

# 在agent上测试server连通性
root@VM-4-16-ubuntu:/etc/zabbix# nc -zv 10.1.0.12 10051
Connection to 10.1.0.12 10051 port [tcp/zabbix-trapper] succeeded!

# 如果卡住,就是不通

nc 这几个参数顺便记一下:

nc 的 -z 是零 I/O 模式只探端口不发数据,-v 是显示详细结果,后面跟目标 IP 和端口

3. 用仪表盘判断连没连上

Zabbix 仪表盘的 Current problems 里如果冒出告警,那就是没连上主机,用上面的命令去探测:

Global view 仪表盘:Host availability 有 1 台 Available、1 台 Unknown,Current problems 红框里是空的

这里啥也没有就是连上了。也可以看 Hosts 页面:Availability 是绿色的就是连上了,红色和灰色都不算。

Hosts 列表里 agent-02 和 Zabbix server 的 ZBX 都是绿色,说明两台都连上了

4. 配分组、主机和监控指标

最后是在 Grafana 里按 Zabbix 的分组、主机、监控项取数:

Grafana 的 Query 配置:Query type 选 Metrics,Group 选 Zabbix servers,Host 选 agent-02,Item 选 CPU utilization

一个遗留问题:不知道为什么,Zabbix 自己能拿到 server 的数据,但 Grafana 这边只能拿到 agent 的数据。先这样吧,回头再研究。