Business News

Business News 数据源已经被官方所淘汰了,所以需要迁移至 Grafana Infinity 数据源。前者用来获取 RSS 或是 Atom 都很方便,后者设置起来稍微复杂一点,不过也就稍微一点点。

Infinity 是一个通用的数据源插件,它不仅能替代 Business News 读取 XML/RSS,还能处理 JSON、CSV、GraphQL 等各种数据。

那就先从 Hetzner Status (Atom) 开始。

Prerequisite

  1. 安装插件:确保 Grafana 中已经安装了 Infinity Data Source
  2. 目标 URL:本例使用 https://status.hetzner.com/en.atom

设置数据源

设置 Infinity Datasource

Authentication 选择 No Auth,因为链接公开未设置身份验证。

请输入图片描述

URL, Headers & Paarams 添加数据源,Base URL 填写 https://status.hetzner.com/en.atom

测试合适的话,再设置 Provisioning,未来迁移时不必再次建立,如以下示例

apiVersion: 1

datasources:
  - name: Hetzner Status Atom
    type: yesoreyeram-infinity-datasource
    access: proxy
    url: https://status.hetzner.com/en.atom
    jsonData:
      allowedHosts:
        - https://status.hetzner.com/en.atom

设置面板

新建一个 Panel,选择 Visualization 为 Table,Data source 选择 Infinity。

基础查询配置

  1. 在查询编辑器(Query Editor)中:
  • Method: GET(默认值)
  • URL: https://status.hetzner.com/en.atom(非必要)
  • Type: 这里的默认值通常是 JSON,必须手动改为 XML

设置Type为XML

  1. 解析 XML 结构 (Rows/Root)

这是最关键的一步。Atom/RSS XML 文件通常是层级嵌套的。

打开 Parsing options & Result fields 折叠项:

  • Rows/Root: 输入 feed.entry

Rows/Root 结构

查看原始 XML 文件(如下仅为部分)

<?xml version="1.0" encoding="utf-8"?>

  <feed xmlns="http://www.w3.org/2005/Atom">
      <title>Hetzner Online GmbH - Status-Webseite</title>
      <id>https://status.hetzner.com/</id>
      <link href="https://status.hetzner.com/en.atom" rel="self" type="application/atom+xml" />
      <link href="https://status.hetzner.com" rel="alternate" type="text/html" />
      <icon>https://status.hetzner.com/favicon.ico</icon>
      <updated>2025-12-03T10:19:30+00:00</updated>
      <author>
        <name>Hetzner Online GmbH</name>
      </author>
  
  <entry>
    <id>https://status.hetzner.com/2e715748-fddd-427b-a07b-b34a5a9edee3/0</id>
    <updated>2025-04-09T11:20:09+00:00</updated>
    <link href="https://status.hetzner.com/incident/2e715748-fddd-427b-a07b-b34a5a9edee3" />
    <title>Phishing emails stealing logins and credit card data</title>
    <category term="General"/>
  
  <content type="xhtml">
    <div xmlns="http://www.w3.org/1999/xhtml">
      <p>Start: 2024-07-05T06:00:00+00:00</p>

发现所有的事件都包裹在 <feed> 下的 <entry> 标签中,即 <feed> 中包含多个 <entry> 节点,每一个 <entry> 代表一个具体的维护事件故障通知。设置这个路径后,Infinity 就会把每一个 <entry> 当作表格中的一行。

提取字段

有了“行”之后,我们需要定义“列”。在 Parsing options 下方点击 Add Columns,依次添加需要的信息:

原始字段 (Selector)显示名称 (As)说明
titleTitle事件标题
updatedUpdated更新时间
category.-termCategory分类信息
link.-hrefLink原始链接,稍后将会作为超链接 override

Add Columns

配置完成后,一张包含标题、时间、分类和链接的原始表格就形成了。

其余设置

配置 Data Link

利用 Grafana 的 Data links 功能,将 Link 字段的值赋予 Title

  1. 在右侧属性栏底部处找到 Add field overrides (覆盖),亦可通过 Visualizion 右侧的筛选图标直达。
  2. 点击 + Add field override -> Fields with name -> 选择 Title
  3. 点击 + Add override property -> Data links -> Add link
  4. Title 输入 ${__data.fields.Title} (鼠标悬停时显示的文字)。
  5. URL: 输入 ${__data.fields.Link}

配置 Data Link (数据链接)

隐藏多余的 Link 列

现在 Title 已经可以点击跳转了,原本的 Link 列就显得多余了。

~~1. 切换到查询编辑器上方的 Transformations (转换) 标签页。

  1. 搜索并添加 Organize fields
  2. 在列表中找到 Link,点击眼睛图标将其隐藏。~~

使用 Transformations 这种方法会导致 Data Link 的 override 失效,因此还是用 override 进行配置

  1. 点击 + Add field override -> Fields with name -> 选择 Link
  2. 点击 + Add override property -> Hide in table -> 切换设置隐藏 Link 列。

隐藏多余的Link列

格式化时间

默认抓取下来的时间是字符串格式。为了让 Grafana 能识别它并按时间排序:在 Columns 配置中,找到 Updated 这一列,将 format asString 改为 Time。这样可以自动根据时区调整显示格式。

格式化时间

开启表格分页

  • 在右侧属性栏 (Panel options) 找到 Table 选项卡。
  • 开启 Enable pagination 开关。
  • 现在表格底部会出现翻页按钮,版面更加整洁。

开启列过滤

方便快速查找特定分类(如只看 "Support" 相关的公告):

  • 同样在右侧属性栏的 Table 选项卡中。
  • 开启 Column filter 开关。
  • 现在每个表头旁边都会出现一个小漏斗图标,点击即可筛选内容。

参考资料

Infinity data source plugin for Grafana | Grafana Plugins documentation

XML 教程 - W3Schools 中文教程

最后修改:2025 年 12 月 07 日
如果觉得我的文章对你有用,请随意赞赏