之前在写调研笔记的时候,测试了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这些字段配置,配置文件里有样例,大家可以自行参考下。