NRI-FLEX集成无法返回正确表头问题求助
NRI-FLEX集成解析curl命令输出异常的解决方法
问题背景
我在创建NRI-FLEX集成时,通过命令curl -s -i https://example.com/meta/availability | grep -E 'HTTP|Availability Check'过滤服务可用性信息,但当前配置在New Relic中查询时输出异常——仅将表头首字符作为标题,其余内容作为结果。期望输出包含状态码和可用性检查结果的结构化表格数据。使用的Agent版本1.50.0,Integration版本1.10.0。
解决方案
问题出在配置的几个细节上,调整后即可得到预期的结构化输出:
关闭
return_headers配置return_headers: true用于解析API请求的响应头,而此处命令输出是过滤后的文本行,并非HTTP响应头,需将其设置为false(或直接移除该配置)。开启逐行处理
命令输出为两行独立内容,需添加line_by_line: true让NRI-FLEX逐行解析每行内容,避免将两行文本作为整体处理导致解析异常。修正正则匹配的Key命名
避免使用带空格和特殊字符的Key名称(如HTTP/1.1、Availability Check),这类名称会导致New Relic属性解析异常,改用简洁的标识符(如status_code、availability_status)。优化正则表达式
添加行首锚定确保正则准确匹配目标行内容,避免误匹配其他字符串:- 匹配HTTP状态行:
^HTTP/1.1 (\d+) - 匹配可用性检查行:
^Availability Check (\w+)
- 匹配HTTP状态行:
修改后的完整配置
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' line_by_line: true regex_matches: - expression: ^HTTP/1.1 (\d+) keys: [status_code] - expression: ^Availability Check (\w+) keys: [availability_status] custom_attributes: Url: https://example.com/meta/availability
验证查询
在New Relic中使用以下NRQL查询即可得到结构化结果:
SELECT status_code, availability_status FROM Example_Availability TIMESERIES
输出会以表格形式展示状态码和可用性检查结果,符合预期。
内容的提问来源于stack exchange,提问作者Rev84
相关产品推荐
相关产品推荐

