Skip to content

站点监控

本篇记录如何自研站点监控
核心:使用 curl 来获取站点访问详情

技术要点

主要使用 curl 命令的 -w, --write-out <format> 参数来获取站点的连接访问详情信息:

属性格式含义
%{http_code}HTTP 状态码
%{time_connect}TCP连接时间
%{time_namelookup}DNS解析时间
%{time_pretransfer}从开始到文件传输即将开始所花费的时间
%{time_redirect}重定向时间
%{time_starttransfer}从开始到收到第一个字节所花费的时间
%{time_total}总时间

具体代码如下:

python
_cmd = "curl --connect-timeout 5 -sL -o /dev/null " \
       "-w '%{http_code},%{time_connect}," \
       "%{time_namelookup},%{time_pretransfer},%{time_redirect}," \
       "%{time_starttransfer},%{time_total}' "

cmd = _cmd + site['url']
  • --connect-timeout 配置请求的超时时间
  • -s, --silent 静默模式
  • -L, --location 自动重定向

运行截图

添加站点监控

监控详情

通知信息

代码流程

  1. 获取所有已添加的站点信息
  2. 多线程获取所有站点的性能数据
    1. 单线程获取单个站点的性能数据
      1. 根据配置的触发条件判断是否触发告警
      2. 累加触发次数
      3. 超过配置的触发告警次数就发送告警通知
      4. 如果是恢复则发送恢复通知