《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.11.Uptime (中) https://developer.aliyun.com/article/1228364
配置 Heartbeat
上边讲解了安装 Heartbeat 和 Uptime 的整体流程,本小节详细解决一下 Heartbeat 的配置,也就是 heartbeat.yml 文件的配置。
heartbeat.yml 文件一般有两部分组成:
l 监控器配置 heartbeat.monitors,配置要监控的目标和监控的方式;
l 输出配置 output.elasticsearch,配置数据上报的 Elasticsearch 的地址,用户名和密码。
比如说,上一小节我们启动 docker 时指定的 heartbeat.yaml 文件如下所示:
heartbeat.monitors: - type: http # 使用http方式监控,还可以使用 TCP 和 ICMP schedule: '@every 5s' # 每 5s 抓取一次 urls: # 需要监控的 url 地址 - https://cn.aliyun.com/ - https://www.taobao.com/ output.elasticsearch: hosts: '${ELASTICSEARCH_HOSTS:http://es-cn-n6w24fib900797tgz.public.elasticsearch.aliyuncs.com:9200}' username: '${ELASTICSEARCH_USERNAME:111}' password: '${ELASTICSEARCH_PASSWORD:111}'
为了使 Heartbeat 知道要检查的服务,它需要一个 URL 列表。
heartbeat.yaml 中的 heartbeat.monitors 中指定了此配置。 如上的 heartbeat.yaml 配置文件,对 cn.aliyun.com 和 www.taobao.com 两个网址每隔 5s 进行一次 HTTP 检查。
除了 HTTP 监视器,Heartbeat 还可以进行 TCP 和 ICMP 类型的检查。
heartbeat.monitors: - type: icmp schedule: '@every 5s' hosts: - http://cn.aliyun.com/ - http://www.taobao.com/ - type: tcp schedule: '@every 5s' hosts: - 127.0.0.1:8080
此外,它还支持定义不同的检查语句,例如,使用 HTTP 监视器,可以检查响应代码(code)、正文(body)和标头(header)。 使用 TCP 监视器,能定义端口检查和字符串检查。
heartbeat.monitors: - type: http schedule: '@every 5s' urls: - https://cn.aliyun.com/ # request details: check.request: method: GET check.response: body: "aliyun"
如上的配置, Heartbeat 会每 5s 使用 GET 调用一次 https://cn.aliyun.com/ ,并在其
Response 的 Body 中寻找字符串 aliyun。如果没有找到这个字符串,则本次检查未通过。
创作人简介:
程序员历小冰,专注于探讨后端生态的点点滴滴,包括微服务、分布式、数据库、性能调优和各类中间件源码分析。
其他更加详细的配置,你可以参考 heartbeat.reference.yml 文件。