返回
GitHub Actions:看门狗在线监测网站健康状况
开发工具
2023-12-23 10:33:33
在数字化时代,网站就是企业的名片,网站是否在线直接关系到企业的形象和收益。面对网络的不稳定性和服务器的故障,传统的人工监测方式效率低下且容易出现疏忽,而使用脚本化或第三方服务进行监控则需要投入大量的时间和精力。
GitHub Actions,作为GitHub提供的持续集成和持续交付(CI/CD)服务,可以通过创建自动化工作流来简化和加快软件开发过程。利用GitHub Actions,我们能够轻松创建自动化任务,其中包括监测网站是否在线。
本指南将向您展示如何使用GitHub Actions设置一个简单的工作流,它会定期检查您的网站是否在线,并在网站宕机时通知您。
设置工作流
- 创建GitHub Actions工作流文件: 在您的项目根目录中创建一个名为
.github/workflows/website-monitor.yml
的文件。 - 添加工作流配置: 将以下配置添加到
.github/workflows/website-monitor.yml
文件中:
name: Website Monitor
on:
schedule:
- cron: '0 */5 * * *' # 每5分钟检查一次网站
jobs:
monitor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install dependencies
run: npm ci
- name: Run website monitor
env:
URL: 'https://www.example.com' # 替换为您要监测的网站URL
run: node index.js
工作流详解
- 事件触发器:
on.schedule
指定工作流在特定时间安排下触发,在本例中,工作流每5分钟触发一次。 - 任务定义: 工作流包含一个名为
monitor
的任务,该任务在ubuntu-latest
虚拟机上运行。 - 任务步骤:
monitor
任务由以下步骤组成:- 签出代码: 将代码签出到虚拟机。
- 安装依赖项: 安装用于监控网站的依赖项。
- 运行网站监控: 运行自定义的Node.js脚本(index.js)来检查网站是否在线。
自定义脚本
index.js
脚本负责向指定的URL发送HTTP请求并检查响应状态。以下是示例脚本:
const axios = require('axios');
const url = process.env.URL;
async function monitorWebsite() {
try {
const response = await axios.get(url);
if (response.status !== 200) {
throw new Error(`Website is down! Status code: ${response.status}`);
} else {
console.log('Website is online!');
}
} catch (error) {
console.error(error.message);
process.exit(1);
}
}
monitorWebsite();
通知
如果index.js
脚本检测到网站宕机,它将在控制台中打印错误消息,您也可以在此基础上添加通知功能,例如发送电子邮件或Slack消息。
结论
通过利用GitHub Actions,您可以轻松创建自动化工作流来监控您的网站是否在线。该工作流将定期检查您的网站,并在出现问题时通知您。这有助于确保您的网站始终在线并可供访问,从而保护您的企业形象和收入。