站点监控
本篇记录如何自研站点监控
核心:使用 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
自动重定向
运行截图
添加站点监控
监控详情
通知信息
代码流程
- 获取所有已添加的站点信息
- 多线程获取所有站点的性能数据
- 单线程获取单个站点的性能数据
- 根据配置的触发条件判断是否触发告警
- 累加触发次数
- 超过配置的触发告警次数就发送告警通知
- 如果是恢复则发送恢复通知
- 单线程获取单个站点的性能数据