前言
Uptime Robot 链接 是一款非常好用的网站监控工具,而且大部分功能是免费的
其中一个功能就是在网站宕机/恢复的时候通知你,但是不支持微信,不是特别方便。
利用PHP写个WebHook接收器即可曲线救国。
本项目开源:链接
服务器设置
首先在自己的服务器上创建一个WebHook接收器
在你的网站合适的位置新建一个PHP文件,写入以下内容:
也可以从GitHub下载:
wget https://raw.githubusercontent.com/chr233/uptime-robot-to-ftqq/master/index.php
<?php
/*
*一个很简单的微信推送的api,用来对接uptime robot的webhook功能
*author: Chr_
*email: [email protected]
*website: https://blog.chrxw.com
*
*token:
*用于验证身份,不需要的话留空即可
*设置以后需要以http:/xx.com?token=xxx的格式访问
*token错误会直接返回404,防止被恶意使用
*
*skey:
*用于方糖气球微信推送
*访问https://sc.ftqq.com/?c=code登录获取
*/
$token = '';
$skey = '';
if ($_GET && $_GET['token'] == $token) {
if ($_GET['alertType'] == 1) { //down
$text = '服务器下锅啦';
$desp = '### 名称: ' . $_GET['monitorFriendlyName'] . "\n";
$desp.= '#### 网址: [' . $_GET['monitorURL'] . '](' . $_GET['monitorURL'] . ')' . "\n";
$desp.= '#### 状态: 故障' . "\n";
$desp.= '#### 时间: ' . date('Y-m-d H:i:s', (int)$_GET['alertDateTime']) . "\n";
$desp.= '#### 详情: ' . $_GET['alertDetails'];
} elseif ($_GET['alertType'] == '2') { //up
$text = '服务器捞起来啦';
$seconds = (int)$_GET['alertDuration'];
if ($seconds > 3600) {
$hours = intval($seconds / 3600);
$minutes = $seconds % 3600;
$time = $hours . "小时" . gmstrftime('%M分钟%S秒', $minutes);
} else {
$time = gmstrftime('%H小时%M分钟%S秒', $seconds);
}
$desp = '## 名称: [' . $_GET['monitorFriendlyName'] . ']' . "\n";
$desp.= '#### 网址: [' . $_GET['monitorURL'] . '](' . $_GET['monitorURL'] . ')' . "\n";
$desp.= '#### 状态: 运行中' . "\n";
$desp.= '#### 时间: ' . date('Y-m-d H:i:s', (int)$_GET['alertDateTime']) . "\n";
$desp.= '#### 持续: ' . $time . "\n";
$desp.= '#### 详情: ' . $_GET['alertDetails'];
} else {
abort(500);
}
$opts = array('http' => array('method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query(array('text' => $text, 'desp' => $desp))));
$context = stream_context_create($opts);
$result = file_get_contents('https://sc.ftqq.com/' . $skey . '.send?', false, $context);
echo $result;
} else {
abort(404);
}
?>
第17行自己设个token,第18行填入方糖气球的SKEY 获取方式
然后记下访问的URL,还有token,拼成URL?token=‘你的token’
的形式,下一步要用
比如访问URL为
https://t.tt/webhook/index.php
,token 设为1314
那么拼合后为https:/t.tt/webhook/index.php?token=1314
Uptime Robot对接
没有Uptime Robot账户的可以先去注册一个 链接
登陆后点最上面一排的My Settings
,界面如图
在最右边,如果屏幕窄的话可能会在下面,先在对应位置添加一个Webhook
填URL的时候记得在最后加个&
填完了在最下面点Create Alert Contact
保存
点编辑按钮进入WebHook设置
勾选Send default variables as a query string
然后点Save Changes
保存
最后别忘了在监视器设置里启用刚刚创建的WebHook通知器
本文链接:https://blog.chrxw.com/archives/2019/12/02/794.html
转载请保留本文链接,谢谢