我正在尝试创建一个 NRI-FLEX 集成,该集成本质上是通过卷曲服务的可用性页面(https://example.com/meta/availability)来报告天气或特定服务是否启动。常规的curl命令会带来很多不需要的信息,所以我一直在使用以下命令:
curl -s -i example.com/meta/availability | grep -E 'HTTP|Availability Check'
这是我到目前为止所拥有的:
integrations:
- name: nri-flex
interval: 60s
timeout: 10s
config:
name: Example_Availability
apis:
- name: Example_Availability
commands:
- name: ExampleServices-Availability
run: curl -s -i https://example.com/meta/availability | grep -E 'HTTP|Availability Check'
return_headers: true
regex_matches:
- expression: HTTP/1.1 (\d+)
keys:
[HTTP/1.1]
- expression: Availability Check (\w+)
keys:
[Availability Check]
custom_attributes:
Url: https://example.com/meta/availability
当我在 New Relic 中查询时,会产生以下输出: 由于某种原因,它采用标题的第一个字符作为标题,并将其他所有内容显示为结果。 我希望结果看起来更像这样:
状态代码 | 可用性检查 |
---|---|
200 | 通过了 |
200 | 通过了 |
我尝试使用正则表达式并使用我在此处找到的各种示例中找到的一些不同的函数:https://github.com/newrelic/nri-flex/tree/master/examples 但到目前为止还没有任何效果。我要么从屏幕截图中获取输出,要么 Flex 集成停止工作。
代理版本:1.50.0 集成版本:1.10.0
如有任何帮助,我们将不胜感激!
这里是 Flex 的创建者。
您的配置与示例的区别在于您缺少
split_output
,这是为了帮助 Flex 知道何时开始解析以及是否存在连续的相似数据块。
在您的可用性检查表达式中,您还缺少一个冒号,因此这永远不会起作用。
我更新了您的命令以输出更多数据作为示例,并且我的curl 输出也与您的略有不同。
curl -s -i https://example.com/meta/availability | grep -E 'HTTP|Availability Check|accept'
更新配置
根据您的需求/格式进行以下调整
integrations:
- name: nri-flex
interval: 60s
timeout: 10s
config:
name: example
apis:
- name: Example_Availability
commands:
- name: ExampleServices-Availability
run: curl -s -i https://example.com/meta/availability | grep -E 'HTTP|Availability Check|accept'
split_output: HTTP
regex_matches:
- expression: 'HTTP\/1.1 (\d+)'
keys:
[HTTP/1.1]
- expression: 'HTTP\/2 (\d+)'
keys:
[HTTP/2]
- expression: 'Availability Check: (\w+)'
keys:
[Availability Check]
- expression: 'accept-ranges: (\w+)'
keys:
[acceptRanges]