Zabbix7.4 + Grafana 天蝎(Zabbix 官方插件数据源)完整配置 + 解决 412 报错

问题说明

访问 http://zabbixip/api_jsonrpc.php 出现 HTTP ERROR 412 ,同时网页解析失败,该地址为Zabbix的JSON-RPC API接口地址

412 状态码含义

HTTP 412(前置条件失败):服务器未满足请求头中设置的前置条件,拒绝处理当前请求。

常见原因&排查方向

  1. 请求头缺失/异常

    Zabbix API 要求携带合法请求头(如 Content-Type: application/json-rpc、认证相关头信息),直接用浏览器裸访问接口,缺少规范请求头,触发412报错。

  2. Zabbix 服务端配置限制

    • 接口开启了跨域、IP白名单限制,当前访问IP未被允许;
    • Zabbix 前端/API 模块配置异常、服务未完全启动。
  3. 请求格式错误

    该接口仅接收标准JSON-RPC格式的POST请求,浏览器默认GET请求不符合接口规范,也会触发报错。

简易解决建议

  1. 该地址并非可视化网页 ,是程序调用接口,不要用浏览器直接打开 ,需通过代码、接口测试工具(Postman、curl)以 POST + JSON 格式调用。
  2. 调用时务必添加请求头:Content-Type: application/jsonapplication/json-rpc
  3. 检查访问客户端IP是否在Zabbix服务器的访问白名单内。
  4. 确认Zabbix服务、Web服务(Nginx/Apache)运行正常。

一、前置说明

  1. 天蝎数据源 = alexanderzobnin/zabbix-app 官方Zabbix插件,是Grafana对接Zabbix标准数据源;
  2. 你访问api_jsonrpc.php412 Precondition Failed 核心根源:浏览器GET访问、缺少Content-Type: application/json请求头,Zabbix API只接收POST+标准JSON请求,浏览器直接打开必然412,不代表接口不可用;
  3. Zabbix7.4 完全兼容该插件,无需修改Zabbix底层API逻辑。

二、第一步:Zabbix服务端前置检查(解决412关键)

1. 验证API可用性(用curl测试,排除服务端问题)

Grafana服务器执行(替换你的Zabbix IP):

bash 复制代码
curl -X POST -H "Content-Type: application/json" -d '{
    "jsonrpc":"2.0",
    "method":"apiinfo.version",
    "id":1
}' http://zabbixip/api_jsonrpc.php

正常返回示例:

json 复制代码
{"jsonrpc":"2.0","result":"7.4.0","id":1}
  • 返回版本号=API正常,412只是浏览器访问限制;
  • curl也412:检查Nginx/Apache、防火墙、Zabbix账号权限。

2. 创建Zabbix专用只读账号(最小权限)

  1. Zabbix前端 → 管理 → 用户 → 创建用户
    • 用户名:grafana_ro,设置密码
    • 媒体随便填,不要勾选「禁用前端访问」(勾选会同步禁用API)
  2. 用户权限:添加只读用户组,授予所有主机组、监控项、触发器只读权限;
  3. 禁止直接用Admin账号对接Grafana。

3. Web服务(Nginx)兼容配置(规避代理/跨域412)

若Zabbix用Nginx反向代理,在location ~ \.php$内添加头支持:

nginx 复制代码
location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # 关键:允许JSON请求头,解决API 412
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods POST,OPTIONS;
    add_header Access-Control-Allow-Headers Content-Type;
}

重载nginx:nginx -s reload

4. 放行防火墙

bash 复制代码
# firewalld示例
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

三、Grafana安装&启用天蝎Zabbix插件

1. 在线安装插件

bash 复制代码
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server

2. Grafana页面启用插件

  1. 左侧菜单 Connections → Plugins
  2. 搜索 Zabbix,进入插件详情;
  3. 点击 Enable 启用插件(必须启用才能添加数据源)。

四、添加Zabbix天蝎数据源(核心配置)

  1. 左侧 Connections → Data sources → Add data source ,选择 Zabbix

  2. 基础参数填写(重点):

    | 配置项 | 填写说明 |

    |--------|--------|

    | Name | 自定义,如Zabbix7.4 |

    | URL | 完整API地址:http://zabbixip/api_jsonrpc.php

    子目录安装Zabbix则:http://zabbixip/zabbix/api_jsonrpc.php |

    | Access | 固定选 Server(默认) (Grafana服务端转发请求,不能选Browser) |

    | Username | 刚才创建的grafana_ro |

    | Password | 对应账号密码 |

  3. 高级优化(Zabbix7.4必开)

  • ✅ Enable trends:开启(长时间大盘聚合走趋势表,大幅提速)
  • Trends from:填24h(超过1天自动读取趋势数据)
  • Direct DB Connection(可选,性能更强)
    1. 先添加MySQL/PostgreSQL数据源,连接Zabbix数据库;
    2. 勾选Direct DB,选择数据库源,查询海量监控项不会卡顿。
  1. 底部点击 Save & test
  • 出现两个绿色对勾:
    ✅ Zabbix API version:7.4.0
    ✅ Connected to Zabbix API
    代表对接成功。

五、常见报错:访问api_jsonrpc.php HTTP 412彻底解决

原因1:浏览器用GET访问API(你当前问题)

Zabbix API强制要求:POST请求 + Content-Type:application/json

浏览器地址栏直接打开=GET,缺少请求头,服务器直接返回412,不代表接口故障,只用curl/Grafana插件POST调用即可正常。

原因2:Nginx/Apache拦截JSON请求头

按上文Nginx配置添加跨域Header,重载服务。

原因3:Zabbix用户勾选「禁用前端访问」

用户编辑页取消勾选,否则API同步拒绝连接。

原因4:Grafana数据源Access选错Browser

必须选Server模式,Browser模式前端发起请求会跨域+头缺失,持续412。

六、大盘使用简单示例

  1. 新建Dashboard → Add panel → 选择Zabbix;
  2. 数据源选择刚创建的Zabbix7.4;
  3. 筛选主机组、主机、监控项,即可绘制CPU、内存、磁盘监控曲线;
  4. 支持触发器告警、拓扑、监控项多维度聚合图表。

七、补充排错命令

  1. 查看Grafana数据源连接日志
bash 复制代码
tail -f /var/log/grafana/grafana.log
  1. 本地测试API(排除网络拦截)
bash 复制代码
curl -i -X POST -H "Content-Type:application/json" -d '{"jsonrpc":"2.0","method":"apiinfo.version","id":1}' http://127.0.0.1/api_jsonrpc.php
  1. 检查Zabbix php-fpm状态
bash 复制代码
systemctl status php-fpm
相关推荐
gws8135391629 小时前
Hyperf3.1接入服务器监控
grafana·prometheus·hyperf·metrics
骑上单车去旅行12 小时前
openEuler 22.03 离线源码编译 Zabbix 7.0.27 完整最终整合手册
linux·运维·服务器·zabbix
成为你的宁宁13 小时前
【K8S黑盒监控实践:Probe配置、Prometheus验证与Grafana可视化】
kubernetes·grafana·prometheus
人生匆匆14 小时前
部署cadvisor+prometheus+grafana
grafana·prometheus
子慕琴风1 天前
zabbix数据太多,卡顿,分表,存储过程
zabbix
SuperArc19992 天前
Grafana相关数据可视化平台基础教程-序言
运维·信息可视化·数据分析·grafana
风曦Kisaki2 天前
#Linux监控与安全Day02:Zabbix 自动发现,Zabbix 报警机制,Zabbix 主动监控,监控 Nginx 服务
linux·运维·nginx·安全·自动化·云计算·zabbix
梁正雄2 天前
zabbix监控-主机-1
zabbix·监控·zabbix主机指标
小黑蛋学java2 天前
Nginx 接口耗时 Prometheus + Grafana 监控实施方案
运维·nginx·负载均衡·grafana·prometheus