监控URL

之前在写调研笔记的时候,测试了PING监控和TCP探测监控,调研笔记在 这里 这个章节主要给大家讲解域名URL探测。直接上测试配置:

  1. [[inputs.http_response]]
  2. urls = ["https://www.baidu.com", "http://ulricqin.io/ping"]
  3. response_timeout = "5s"
  4. method = "GET"
  5. fielddrop = ["result_type"]
  6. tagexclude = ["result", "status_code"]

https://www.baidu.com 显然是通的,http://ulricqin.io/ping 这个是个假的URL,不通,我们测试一下输出的内容:

  1. [root@10-255-0-34 telegraf-1.20.3]# ./usr/bin/telegraf --config etc/telegraf/telegraf.conf --input-filter http_response --test
  2. 2021-12-13T04:16:43Z I! Starting Telegraf 1.20.3
  3. > http_response,host=10-255-0-34,method=GET,server=https://www.baidu.com content_length=227i,http_response_code=200i,response_time=0.028757521,result_code=0i 1639369003000000000
  4. > http_response,host=10-255-0-34,method=GET,server=http://ulricqin.io/ping result_code=5i 1639369003000000000

这里有个字段是result_code,用这个字段配置告警即可,正常可以访问的URL,result_code是0,不正常就是非0,告警规则里可以配置如下promql:

  1. http_response_result_code != 0

或者直接在夜莺的告警规则页面导入这条告警规则JSON:

  1. [
  2. {
  3. "name": "有URL探测失败,请注意",
  4. "note": "",
  5. "severity": 1,
  6. "disabled": 0,
  7. "prom_for_duration": 60,
  8. "prom_ql": "http_response_result_code != 0",
  9. "prom_eval_interval": 15,
  10. "enable_stime": "00:00",
  11. "enable_etime": "23:59",
  12. "enable_days_of_week": [
  13. "1",
  14. "2",
  15. "3",
  16. "4",
  17. "5",
  18. "6",
  19. "0"
  20. ],
  21. "notify_recovered": 1,
  22. "notify_channels": [
  23. "email",
  24. "dingtalk",
  25. "wecom"
  26. ],
  27. "notify_repeat_step": 60,
  28. "callbacks": [],
  29. "runbook_url": "",
  30. "append_tags": []
  31. }
  32. ]

如果想对域名返回的statuscode或者response body的内容做判断,Telegraf也是支持的,使用response_status_code和response_string_match这些字段配置,配置文件里有样例,大家可以自行参考下。