【问题标题】:Custom json body in Grafana alertsGrafana 警报中的自定义 json 正文
【发布时间】:2023-03-08 16:50:01
【问题描述】:

如果触发警报,我正在尝试让 grafana 在 ServiceNow 中自动提出票证。

我正在考虑为此使用 webhook 警报通道,但问题是为了能够做到这一点,我需要发送一个包含一些硬编码值的自定义正文,否则 servicenow 会拒绝调用。

有没有办法自定义使用 webhook 发送的正文?

【问题讨论】:

    标签: grafana grafana-alerts


    【解决方案1】:

    如果您使用 webhook 路由平台(例如 Pipedream 或同等产品),这很容易做到。您创建一个端点来接受来自 Grafana 的 webhook 请求,修改正文并将请求转发到您的 ServiceNow 端点。

    我创建了一个example pipeline,向您展示了它是如何工作的。它采用一个示例事件(我在 grafana docs 中找到了一个),并使用一些 Node.js 代码来修改正文,然后将请求转发到另一个 HTTP 端点。

    这里是示例事件:

    {
      "title": "My alert",
      "ruleId": 1,
      "ruleName": "Load peaking!",
      "ruleUrl": "http://url.to.grafana/db/dashboard/my_dashboard?panelId=2",
      "state": "alerting",
      "imageUrl": "http://s3.image.url",
      "message": "Load is peaking. Make sure the traffic is real and spin up more webfronts",
      "evalMatches": [
        {
          "metric": "requests",
          "tags": {},
          "value": 122
        }
      ]
    }
    

    我正在使用 RequestBin URL,因此您可以看到正在修改的正文 (here is the bin)。

    这是事件的差异:

    {
        body:{
           "new_data": "NEW VALUE HERE",
        },
    }
    

    如果您点击上面的管道,它应该会生成一个特定于您的管道的自定义 URL。它将提供一个端点 URL,您最终将其设置为 Grafana 的 webhook 接收器,您应该会开始看到新事件的出现。

    这假设您的 ServiceNow Webhook URL 是可公开访问的。 Pipedream 管道的所有代码都是公开的,因此如果您想保持端点私有,您可以创建一个环境变量并在 Node.js 代码中引用它,将 RequestBin URL 替换为该环境变量的值。

    例如,我可能会创建一个名为 SERVICENOW_ENDPOINT 的环境变量并替换:

    网址:'https://en1lkcjsapobv.x.pipedream.net'

    网址:process.env.SERVICENOW_ENDPOINT

    如果这有帮助或者您有任何其他问题,请告诉我。

    【讨论】:

    • 嗨,谢谢。它看起来正是我需要的那种东西。唯一的问题是我们将传输一些敏感数据,因此 infosec 不允许我们使用托管解决方案。你知道可以在 Kubernetes 中使用的东西吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 2022-08-19
    相关资源
    最近更新 更多