Skip to content

helloint/monitor

Repository files navigation

Monitor: 数据文件监控和记录器

English Doc (Generated by DeepSeek)

简介

此工具采用了程序(Monitor)和数据(Data)分离的模式,最初是为了绕过GitHub Action的收费策略,另外也满足了监控内容和数据存储的保密需求。

Monitor

Monitor是Public的,所以Action的执行不计费。

需要在Monitor的Action Secrets里配置若干参数,获取读写数据仓库的权限。具体请看Actions参数说明

数据仓库

数据仓库需要单独创建。使用时,需要自己配置一个数据仓库,建议取名:monitor-data,可以设置成private,也可以是public的。

只需要在根目录下创建监控配置文件config.json,格式请参考./config.json完整参数说明。 数据文件会保存在/data目录下。

定时的说明

可以用GitHub Action的schedule:

schedule:
    - cron: '*/1 * * * *'

但它的轮询间隙是无法保证的,有时候甚至一小时才会触发一次。所以,对于定时的准确度,如果要求高,就不要用schedule,可以改用其他定时器通过workflow_dispatch的方式来触发Action。

比如Linux的cron,example:

*/1 * * * * root curl 'https://api.github.com/repos/[YOUR_ORG]/[YOUR_REPO]/actions/workflows/detect.yml/dispatches' -H 'authorization: Bearer [GITHUB_PAT]' -d '{"ref":"master"}'

配置示例

定时轮询数据文件. 仅当文件内容发生改变时,保存一份下来.

{
	"id": "simple_get",
	"url": "https://dummyjson.com/test"
}

当文件内容符合特定条件时,发送消息通知 (目前暂只支持群晖Synology Chat)

{
	"id": "livescore",
	"url": "https://match.uefa.com/v5/livescore?matchId=2036177",
	"format": true,
	"filters": [
		"hash",
		"minute"
	],
	"condition": "length",
	"notify": true,
	"notifyCondition": ".length > 0"
}

完整参数说明

Configuration Instruction Default Required
id 任务的唯一标识 Yes
url 需要轮询的数据文件地址 Yes
options fetch的options No
every 每隔几分钟执行一次,默认每次执行 1 No
random 执行时间(秒)是否加入随机Delay False No
randomMin 是否在随机分钟时执行,需配合perDay使用 No
perDay 每天随机运行的总次数,需配合randomMin使用 No
enable 是否启用 True No
record 是否保存 True No
filters 文件差异比较时,需要忽略的属性 No
condition 文件差异比较时,需满足的额外条件 No
format 保存时是否格式化 False No
notify 是否启用通知 False No
notifyCondition 通知的额外条件 No
errorCondition 异常条件,满足时会记录以及发送消息通知 No

Actions参数说明

Repository secrets Instruction Required
DATA_REPO 数据仓库 Yes
DATA_REPO_PAT 访问数据仓库的PAT Yes
NOTIFY_SERVER 通知服务的请求URL No
NOTIFY_TOKEN 通知服务的Token No

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published