HTTPGetJSON
HTTPGetJSON 对指定的 URL 执行 HTTP 请求,并返回 jsonq.JsonQuery 对象以在警报模板中使用。例:
template example {
{{ $ip := 8.8.8.8 }}
{{ $whoisURL := printf "http://whois.arin.net/rest/ip/%s" $ip }}
{{ $whoisJQ := $.HTTPGetJSON $whoisURL }}
IP {{$ip}} owner from ARIN is {{ $whoisJQ.String "net" "orgRef" "@name" }}
}
在这种情况下,$ ip 地址是硬编码的,但在真实的警报中,它通常来自使用类似 {{ $ip := .Group.client_ip}}
的警报标签,其中 client_ip 是标签密钥,其值是 IP 地址。
jsonq 结果类似于 jq JSON 处理器生成的结果,因此你可以使用以下命令在 BASH shell 中进行测试:
$ curl -H "Accept: application/json" http://whois.arin.net/rest/ip/8.8.8.8 | jq ".net.orgRef"
{
"@handle": "GOGL",
"@name": "Google Inc.",
"$": "https://whois.arin.net/rest/org/GOGL"
}