You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否在Grafana中按时间维度以百分比形式展示基于Zabbix指标的网站可用性(SLA)?

如何在Grafana中将Zabbix的Web应用可用性指标转为百分比展示(带时间维度)

当然可以实现!这是监控Web服务时非常常见的需求,我之前配置过类似的场景,给你一步步拆解怎么做:

核心逻辑先理清楚

你的指标规则是:0=服务正常(up)1=服务宕机(down)。那可用性百分比的本质就是**「正常运行时间占总时间的比例 × 100」**,我们只需要把原始指标转成这个逻辑就行,同时保留时间维度的趋势。


方式一:Grafana直接计算推荐,无需修改Zabbix配置

这种方式最灵活,不用动Zabbix的采集规则,直接在Grafana查询层处理:

  1. 拉取原始指标
    确保Grafana已经连接好Zabbix数据源,新建面板后选择Zabbix数据源,找到你的两个Web应用可用性指标(比如命名为web_app1_availabilityweb_app2_availability)。

  2. 编写转换查询表达式
    因为原始值0代表正常,我们需要先把它转成「正常占比」,再换算成百分比:

    • 1 - $value把0转为1(100%正常),1转为0(0%正常)
    • rate()函数计算时间粒度内的平均占比,再乘以100得到百分比
    • 最终的查询语句可以写成:
      100 * (1 - rate(web_app1_availability[$__rate_interval]))
      
      这里的$__rate_interval是Grafana的内置变量,会根据面板的时间范围自动适配最佳粒度,比固定写5m10m要智能得多。
  3. 配置面板展示时间趋势

    • 选择「折线图」或「面积图」作为面板类型,这样就能直观看到可用性百分比随时间的波动
    • 在面板的「显示」设置里,把Y轴单位改成「百分比(%)」,数值会自动以百分比格式展示
    • 如果要同时展示两个应用,直接在面板里添加第二个查询,对应第二个指标,再给每个查询设置清晰的图例(比如「Web应用1 可用性」)

方式二:Zabbix预处理指标可选

如果你希望数据源本身就输出百分比值,也可以在Zabbix里创建衍生指标:

  • 在Zabbix中新建一个计算型Item,基于原始的可用性指标,公式设置为:100 - (last("web_app1_availability") * 100)
  • 这样Zabbix会直接采集并存储百分比格式的可用性数据,之后在Grafana里直接拉取这个指标,选折线图就能看到时间维度的趋势了。

额外优化小技巧

  • 若想查看某个时间段的整体平均可用性(比如过去24小时),可以添加一个「统计面板」,用avg()函数计算:
    avg(100 * (1 - rate(web_app1_availability[24h])))
    
  • 可以给面板设置阈值告警:比如当可用性低于99%时,折线或面板背景变红,快速识别异常状态

内容的提问来源于stack exchange,提问作者Infestor

火山引擎 最新活动