多服务器正向心跳php程序

写给自己用的,防止自己哪个服务器崩了自己都不知道。需要配合至少一个报警api使用(例如用带api的酷Q报警、调用TG机器人的api、调用阿里云api市场的短信api等)。而且使用这个程序时,如果手上的服务器遍布国内国外,链路有好有坏,就需要放在一台网络优秀的机子上或者加大超时时间、加大请求频率,否则会出现大规模诈死现象。

Github↓

https://github.com/Mmx233/VPS-Broker

线程更大更智能更精准支持更多平台的Golang版:

多服务器双向心跳Go语言探针

部署

直接扔进有php环境的服务器就行,可以放在任意目录。

放进去之后,需要编辑config.php文件,根据注释修改密钥、超时时间和通知函数的代码。

使用

Ⅰ、添加监控

以默认值为例,添加新服务器进入监控时,需要在新服务器上设定定时任务。默认超时时间是150s,推荐定时任务设置为每分钟执行一次。想要调高精度的话,可以把两者调小(crontab最高分钟级,需要使用一些特殊手段提高频率),但是超时时间一定要比任务执行周期长。

如果使用宝塔面板的话,可以添加定时访问URL,URL为

http(s)://demo.mmxblog.com/VPS-Broker/?key=Mmx_demo&point=name

色部分为放置程序的域名和路径,蓝色部分为config.php中声明的key,色部分为为该服务器起的别名。设定好执行时间后即可。

宝塔添加定时任务

也可以直接使用crontab添加。

编辑crontab文件

vi /etc/crontab

然后按i编辑,插入一行代码,以每分钟执行为例。需要更大或更小的周期请自行搜索。

* * * * * root curl http(s)://demo.mmxblog.com/VPS-Broker/?key=Mmx_demo&point=name

然后按Esc,输入:wq以保存。若任务没有生效,可以重新加载crontab:/etc/init.d/cron reload

添加任务

Ⅱ、修改辨识方式

默认以ip辨识,若需以别名作为辨识主机的方式(适用于动态ip主机),可以修改config.php,把

$s1='health_checker/'.$ip;
$s2='health_locker/'.$ip;

改为

$s1='health_checker/'.$point;
$s2='health_locker/'.$point;

多台主机别名相同时,如果前者为$point,后者为$ip,那么所有同别名主机超时才会触发警报,任何一台主机恢复都会触发恢复提示。即只要有一台是ok的就ok。我寻思能用到这个的大概都是大佬。

Ⅲ、暂停监控

需要在health_checkerhealth_locker目录下将相应的文件删除(默认为ip,否则为别名,详参第二点),同时删除或暂停或注释掉被监控服务器上的定时任务。

Ⅳ、通知函数的可用变量

$message:完整的通知内容,可通过修改worker.php修改内容。


*以下变量需在函数内声明全局变量后方可使用(global $xxx,$xxx2;

$ip:被监控主机的ip。

$point:被监控主机别名。

$tmessage:若为恢复通知,则为宕机时间(格式化了的字符串),否则为null。

$btime:若为恢复通知,则为宕机时间(整数,秒),否则为null。

效果截图

异常
恢复

另外不建议使用人名做别名,否则可能有奇妙的诅咒效果。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注