Uptime Robot使用微信通知

2019-12-02T18:40:00

前言

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:
 *用于方糖气球微信推送
 *访问http://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);
}
?>

Uptime Robot对接

没有Uptime Robot账户的可以去注册一个

登陆后界面如图

在最右边,如果屏幕窄的话可能会在下面,先添加一个Webhook

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »