返回

GitHub Actions:看门狗在线监测网站健康状况

开发工具

在数字化时代,网站就是企业的名片,网站是否在线直接关系到企业的形象和收益。面对网络的不稳定性和服务器的故障,传统的人工监测方式效率低下且容易出现疏忽,而使用脚本化或第三方服务进行监控则需要投入大量的时间和精力。

GitHub Actions,作为GitHub提供的持续集成和持续交付(CI/CD)服务,可以通过创建自动化工作流来简化和加快软件开发过程。利用GitHub Actions,我们能够轻松创建自动化任务,其中包括监测网站是否在线。

本指南将向您展示如何使用GitHub Actions设置一个简单的工作流,它会定期检查您的网站是否在线,并在网站宕机时通知您。

设置工作流

  1. 创建GitHub Actions工作流文件: 在您的项目根目录中创建一个名为.github/workflows/website-monitor.yml的文件。
  2. 添加工作流配置: 将以下配置添加到.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,您可以轻松创建自动化工作流来监控您的网站是否在线。该工作流将定期检查您的网站,并在出现问题时通知您。这有助于确保您的网站始终在线并可供访问,从而保护您的企业形象和收入。