Heartbeat可以帮你验证服务是否可以正常访问,如果你需要验证内部服务时,他还可以用于其它方案,例如,安全用例
你可以配置Heartbeat来Ping指定主机名的所有DNS可解析的IP地址。从而检查所有的负载均衡服务,是否可用
配置Heartbeat时,可以指定用于监控的hosts。每个监控器按照你设置的监控计划运行。例如,你可以将一个监控器配置为每10分钟运行一次,并且配置不同的监控器在9:00~17:00运行
Heartbeat目前支持通过以下方式检查hosts
Heartbeat检测服务心跳,一般安装在较为稳定的独立服务器上(类似云服务,不断电,不断网)。尽量不要跟被监控的服务放在一个篮子里
deb(Debian/Ubuntu)
rpm(Redhat/Centos/Fedora)
mac
windows
测试阶段可以使用heartbeat.exe-e-fheartbeat.yml
如果已经安装服务,可以使用netstartheartbeat(使用管理员权限的cmd或者powershell或者从服务(Win+R输入services.msc,找到heartbeat服务手动开启)
可以通过编辑heartbeat.yml来配置heartbeat。heartbeat.full.yml里面有所有可用的选项,可以作为参考
监控器名字
Boolean值,指定监控模块是否启用,默认为true
类cron表达式
Boolean值,如果指定了host,是否使用ipv4协议进行pin,默认为true
any或者all,默认为any。如果是any,监控器对指定的主机名只ping一个ip地址。如果是all,则ping所有dns能解析出来的ip地址。对于负载均衡监控很有用
此为实验功能。未来可能更改或删除
这是JSON格式的监控器配置文件。可以包含多个需要监控的对象。Heartbeat定期检查此文件。Heartbeat会合并heartbeat.yml和json中的配置,有新增的则新增监控实例。josn文件中删除实例后,heartbeat会停止监控该实例。
每个监控器用协议,主机,端口等参数作为唯一id。如果存在相同的,则使用合并后的最后一个json定义的设置。(以json中定义的为准)。所以为了不重启heartbeat,建议使用watch.poll_file进行配置,但是需要注意,这个是实验室功能,后期可能会修改或者变更
{"hosts":["myhost:1234"],"schedule":"*/15******"}#1{"hosts":["tls://otherhost:479"],"ssl.certificate_authorities":["path/to/ca/file.pem"]}#2
type设置为icmp时,该项生效。Heartbeat使用ICMP(v4和v6)回显请求来检查配置的主机
需要ping的主机列表
type设置为tcp时,该项生效。通过tcp协议发送或接受自定义内容来验证端点是否可用。
需要ping的主机列表。
如果hosts中没指定端口,则在此需要配置需要ping的端口列表。例如检查80,9200,5044端口
-type:tcpschedule:'@every5s'hosts:["myhost"]ports:[80,9200,5044]
验证发送到主机的有效内容(payload)和预期的响应。如果未指定有效内容(payload),一旦连接成功,则视为可用。如果只指定了发送,未指定接收。接收到任何响应都视为成功。如果只指定接收内容,未指定发送内容。不发送payload,但是在连接中,客户端希望接收到的内容为hellomessage或者banner(原文:Ifreceiveisspecifiedwithoutsend,nopayloadissent,buttheclientexpectstoreceiveapayloadintheformofa“hellomessage”or“banner”onconnect.)
-type:tcpschedule:'@every5s'hosts:["myhost"]ports:[7]check.send:'HelloWorld'check.receive:'HelloWorld'
只可以用socks5代理。
proxy_url:socks5://user:password@socks5-proxy:2233
使用代理时,主机名实在代理服务器上解析,而不是在客户端解析。可以通过设置proxy_use_local_resolver来修改
Boolean值,用于确定主机名是否本地解析还是在代理服务器解析。默认值为false,即在代理服务器解析。
TLS/SSL连接设置。如果check未配置,则监控器将仅检查是否可以建立SSL/TLS连接。此检查可能在TCP级别或在证书验证期间失败
用于连接的URLs列表
选填项。用来请求身份验证的服务。如果验证身份的服务不指定,很可能返回403
选填项。同username
选填项。发送request到远程服务,并接受期望响应response
允许Heartbeat执行的并发IO任务数。如果为0,则没有限制。默认值为0。大多数操作系统文件,将文件描述符限制设置为1024。为了Heartbeat正确运行并且不意外组织输出。应该将limit的值设置低于ulimit
设置时区。默认使用本地实际localtime
如果要测试配置,在heartbeat可执行目录下,运行./heartbeat-configtest-e
deb:
sudo/etc/init.d/start
rpm:
sudo/etc/init.d/heartbeatstart
mac:
sudo./heartbeat-e-cheartbeat.yml-d"publish"
win:管理员权限
netstartheartbeat
Windows默认将log输出在${Heartbeat_home}\Logs文件夹
目前为止,Heartbeat已经开始检查你的服务状态并且发送相应的数据到你定义的输出点了(logstash/elasticsearch)
命令行运行./heartbeat-h查看完整的选项列表
覆盖配置文件中的某个配置例如`./heartbeat-cheartbeat.yml-Ename=mybeat`