1. 首页
  2. 大数据

利用GitHub Actions 监控网站- Upptime

利用GitHub Actions 监控网站- Upptime

前阵子在网络上看到一个很酷的开源项目: Upptime

每隔一段时间用GitHub Actions 看网站能否访问,若不能访问就用GitHub Issues 回报异常事件,使用GitHub Pages 产生服务状态的页面.

GitHub Actions 简介

GitHub Actions是GitHub上的一个自动化服务,你可以把脚本放到上面,当特定事件发生时,自动执行你的脚本。

以Upptime来说,预设是每隔五分钟访问你的网站一次(实际上由于GitHub的限制,间隔可能会更长),同时也会记录每次的response time,让你在页面上看历史纪录等等。

这些动作都写在Actions的脚本中,机器都会自己执行,完全不用动到一根指头。

介绍完之后,就来开始部署Upptime吧。

创建GitHub Repo

  1. 进入Upptime的repo
  2. 点击 Use this template
    6cb62aa4a1020cc95f1a142ad6463f8a
  3. 创建repo
    * 输入repo name
    * 勾选 Include all branches
    * 点击 Create repository from temple
    1624168745412-1
    等一阵子后,就会复制一样的repo到你的帐号下

设置GitHub Pages

  1. 到你的repo,点击 Settings

    利用GitHub Actions 监控网站- Upptime

  2. 往下找到GitHub Pages 的Source
  • Branch 设为 gh-pages
  • 点击 Save
    1624168860771-1

设置Repository Secret

为了让Upptime有commit和publish网页的权限,需要设定Personal Access Token

  1. 点击自己的Profile picture > Settings
    1624168921775-2
  2. 点击左侧的Developer settings > Personal access tokens > Generate new token
    1624168964700-1
  3. 新增token
    • Note: upptime
    • Select scopes:勾选repo和workflow
    • 点击 Generate token
      1624169013442-2
  4. 复制token
    07929b0fcc5d4c234d8d0c1df028dfe6

  5. 返回repo >Settings
    点击左侧Secrets> Add a new secret > New repository secret
    1624169066911-1
  6. 设定repo 的token
  • Name: GH_PAT
  • Value: 贴上刚刚复制的 token
  • 点击 Add secret
    1624169109524-1

更新YAML文件

Upptime使用.yml来做“集中式设置”,只要更改这个文件的设置,所有相关代码就会一起修改。

  1. 到你的repo,点击Code > .upptimerc.yml
    1624169199844
  2. 点击铅笔按钮编辑文件
  3. 按照以下模版修改此文件:(方括号内是需要修改的内容,修改完之后请删除方括号)
#你的GitHub username 
owner: 【GitHub username】
#你的GitHub repo name 
repo: 【repo name】
#加入要监控的网站名称与URL ,可以添加多个网站
sites: 
  - name: 【网站名称】
    url: 【URL】
#没有域名的按照以下模版填写
status-website: 
    #cname: demo.upptime.js.org (移除) 
    baseUrl: /upptime
#有域名的按照以下模版填写
status-website: 
    cname: 【你的域名】
    
#自定义状态页面的navbar名称与链接
navbar: 
    - title: 【名称】
      href: 【链接】
YAML

查看GitHub Actions

设定好.upptimerc.yml后,Actions就会自动开始运行(黄圈在转)。运行成功会显示绿色的勾,运行失败会显示红色的叉。

利用GitHub Actions 监控网站- Upptime

 

如果发现Actions没运行,或是想要让它马上执行,就点击左侧的Setup CI> Run workflow > Run workflow

利用GitHub Actions 监控网站- Upptimecb231f8e508e37682abf88b422aab7b8

 

查看Status Website

你的状态页面URL是:https://【user_name】.github.io/【repo_name】/
或是可以到repo > Settings > GitHub Pages查看URL

点击URL后,我们来到了状态页面,页面分成三个区块。

Active Incidents 显示目前的异常事件,Past Incidents 显示过去的异常事件,Live Status 可以切换五种response time 图形。

利用GitHub Actions 监控网站- Upptime

 

进阶操作

自定义运行时间

Upptime有七个Workflows,只要把下面这段粘贴到.upptimerc.yml,就可以自定义Workflow的时间点

workflowSchedule: 
  graphs: "0 0 * * *" 
  responseTime: "0 23 * * *" 
  staticSite: "0 1 * * *" 
  summary: "0 0 * * *" 
  updateTemplate: "0 0 * * *" 
  updates: " 0 3 * * *" 
  uptime: "*/5 * * * *"
55dcccd146bf1e6b02d2a94cdac0cacc

自定义状态页面

Status Website预设是英文的,如果你想要改成其他语言,可以把要修改的部分粘贴到.upptimerc.yml

例如:

i18n:
  activeIncidents: 活动事件
  allSystemsOperational: 所有系统都可以正常运行
  incidentReport: "事件 #$NUMBER 报告 →"
  activeIncidentSummary:  $DATE 打开,有 $POSTS 个帖子
  incidentTitle: 事件 $NUMBER 的详细信息
  incidentDetails: 事件详细信息
  incidentFixed: 已修复
  incidentOngoing: 正在进行
  incidentOpenedAt: 开始于
  incidentClosedAt: 结束于
  incidentSubscribe: 订阅更新
  incidentViewOnGitHub:  GitHub 上查看
  incidentCommentSummary:  $AUTHOR  $DATE 发布
  incidentBack:  返回所有事件
  pastIncidents: 过去的事件
  pastIncidentsResolved: $POSTS 个问题在 $MINUTES 分钟内得到解决
  liveStatus: 实时状态
  overallUptime: "总体正常运行时间: $UPTIME"
  overallUptimeTitle: 总体正常运行时间
  averageResponseTime: "平均响应时间: $TIMEms"
  averageResponseTimeTitle: 平均响应时间
  sevelDayResponseTime: 7 天响应时间
  responseTimeMs: 响应时间(毫秒)
  ms: 毫秒
  loading: 加载中
  navGitHub: GitHub
  footer: gd1214b保留所有权利。 Copyright © 2021 gd1214b. All Rights Reserved.
  rateLimitExceededTitle: 超出速率限制
  rateLimitExceededIntro: 您已超过一小时内可以执行的请求数,因此您必须等待才能再次访问此网站。或者,您可以添加 GitHub 个人访问令牌以继续使用本网站。
  rateLimitExceededWhatDoesErrorMean: 这个错误是什么意思?本网站使用 GitHub API 访问有关我们网站状态的实时数据。默认情况下,GitHub 允许每个 IP 地址每小时 60 个请求,您已经消耗了这些请求。
  rateLimitExceededErrorHowCanFix: 我该如何解决?
  rateLimitExceededErrorFix: 您可以再等一个小时,您的 IP 地址限制将恢复。或者,您可以添加您的 GitHub 个人访问令牌,这将为您提供每小时额外 5,000 个请求。
  rateLimitExceededGeneratePAT: 了解如何生成个人访问令牌
  rateLimitExceededHasSet: 您有一个个人访问令牌集。
  rateLimitExceededRemoveToken: 删除令牌
  rateLimitExceededGitHubPAT: GitHub 个人访问令牌
  rateLimitExceededCopyPastePAT: 复制并粘贴您的令牌
  rateLimitExceededSaveToken: 保存令牌
  errorTitle: 发生错误
  errorIntro: 尝试获取最新状态详细信息时出错。
  errorText: 您可以稍后再试。
  errorHome: 转到主页
  pastScheduledMaintenance: 过去的预定维护
  scheduledMaintenance: 定期维护
  scheduledMaintenanceSummaryStarted:  $DATE 开始,持续 $DURATION 分钟
  scheduledMaintenanceSummaryStarts:  $DATE 开始,持续 $DURATION 分钟
  startedAt: 开始在
  startsAt: 开始于
  duration: 持续时间
  durationMin: $DURATION 分钟
  incidentCompleted: 已完成
  incidentScheduled: 已预定
  url: "链接"
  status: "状态"
  history: "历史"
  responseTime: "响应时间"
  uptime: "正常运行时间"
  up: "🟩 正常运行"
  degraded: "🟨 运行缓慢"
  down: "🟥 停机"
  responseTimeGraphAlt: "响应时间图像"
  responseTimeDay: "24 小时响应时间"
  responseTimeWeek: "7 天正常运行时间"
  responseTimeMonth: "30天的正常运行时间"
  responseTimeYear: "1年的正常运行时间"
  uptimeDay: "24 小时正常运行时间"
  uptimeWeek: "7 天正常运行时间"
  uptimeMonth: "30天的正常运行时间"
  uptimeYear: "1年的正常运行时间"
  liveStatusHtmlComment: "<! -实时状态- >"
  degradedPerformance: "🟨 性能降低"
  completeOutage: "🟥 全部停机"
  partialOutage: "🟧 部分停机"
 

参考资料

发表评论

邮箱地址不会被公开。