返回

Zabbix 自定义窗口小部件:如何从仪表盘设置中获取时段选择器周期?

php

利用 Zabbix 自定义窗口小部件的时段选择器

作为一名程序员,我经常使用 Zabbix 仪表盘来监控和管理我的基础设施。自定义窗口小部件是仪表盘中一种功能强大的工具,它允许我创建满足我特定需求的个性化视图。本文将深入探讨如何从仪表盘设置中获取时段选择器周期,以便在自定义窗口小部件中使用。

时段选择器

时段选择器是 Zabbix 仪表盘顶部的一个关键元素,它允许用户过滤特定时间范围内的数据。通过选择不同的周期(例如,最近 1 小时或过去 24 小时),我可以快速查看我感兴趣的时间段内的关键指标。

从仪表盘设置中获取时段选择器周期

要从仪表盘设置中获取时段选择器周期,我们需要使用 Zabbix API。以下步骤将引导你完成该过程:

  1. 获取窗口小部件 ID: 首先,通过将鼠标悬停在仪表盘上的自定义窗口小部件上来获取其 ID。你会看到一个弹出窗口,其中包含窗口小部件 ID。
  2. 使用 Zabbix API: 使用 Zabbix API 令牌向 Zabbix 服务器发送 POST 请求,并包含仪表盘 ID 作为参数。
  3. 解析响应: Zabbix 服务器将返回仪表盘详细信息的 JSON 响应。使用特定的 JSON 路径来获取时段选择器周期(以秒为单位)。
  4. 转换秒数: 将时段选择器周期从秒转换为人类可读的格式(小时和分钟)。

在自定义窗口小部件中使用周期

获取时段选择器周期后,就可以在自定义窗口小部件中使用了。Zabbix 提供了广泛的模块,用于开发自定义窗口小部件。通过使用这些模块,可以将时段选择器周期作为输入参数,并根据仪表盘的设置过滤数据。

代码示例

以下 Python 代码示例展示了如何使用 Zabbix API 从仪表盘设置中获取时段选择器周期:

import requests

# 设置 Zabbix 服务器 URL 和凭据
zabbix_url = "https://你的Zabbix服务器地址/api_jsonrpc.php"
username = "你的用户名"
password = "你的密码"

# 生成 API 令牌
params = {"user": {"username": username, "password": password}}
response = requests.post(zabbix_url, json=params)
token = response.json()["result"]

# 获取仪表盘详细信息
params = {
    "jsonrpc": "2.0",
    "method": "dashboard.get",
    "params": {"dashboardid": "你的仪表盘ID"},
    "auth": token,
}
response = requests.post(zabbix_url, json=params)
dashboard_data = response.json()["result"]

# 获取时段选择器周期
timeshift = dashboard_data["widgets"][0]["timeshift"]

# 将秒数转换为小时和分钟
hours = timeshift // 3600
minutes = (timeshift % 3600) // 60

# 输出时段选择器周期
print("时段选择器周期:{}小时 {}分钟".format(hours, minutes))

结论

通过利用 Zabbix API,我们可以从仪表盘设置中轻松获取时段选择器周期。这使我们能够创建动态的自定义窗口小部件,根据仪表盘的时段选择设置过滤数据。通过这种方法,我们可以更有效地监控和管理我们的基础设施。

常见问题解答

  1. 如何生成 Zabbix API 令牌?
    使用 Zabbix API 令牌生成器(https://www.zabbix.com/documentation/4.0/manual/api/auth)生成令牌。

  2. 如何识别仪表盘 ID?
    将鼠标悬停在仪表盘上的自定义窗口小部件上。仪表盘 ID 将显示在出现的弹出窗口中。

  3. 时段选择器周期可以为负值吗?
    是的,时段选择器周期可以为负值,表示从当前时间向后偏移。

  4. 我可以使用时段选择器周期过滤哪些指标?
    你可以使用时段选择器周期过滤所有支持历史数据查询的指标。

  5. 自定义窗口小部件是否有限制?
    自定义窗口小部件的数量和类型取决于你的 Zabbix 安装和许可证。