news 2026/10/5 5:07:14

minicron API接口参考:如何用API Key自动化管理定时任务与执行记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
minicron API接口参考:如何用API Key自动化管理定时任务与执行记录

minicron API接口参考:如何用API Key自动化管理定时任务与执行记录

【免费下载链接】minicron🕰️ Monitor your cron jobs项目地址: https://gitcode.com/gh_mirrors/mi/minicron

minicron 是一个轻量级的cron 定时任务监控工具,它通过 API 接口让你用API Key就能自动上报定时任务的执行过程,并在 Web 端保留完整的执行记录与历史数据。本文带你快速掌握 minicron 的全部 API 接口、统一响应格式以及最常见的认证方式,5 分钟即可把自己的定时任务接入监控。

1. minicron 是怎么工作的?

minicron 由两部分组成:

组件说明源码位置
服务端(Hub)Web UI + REST API,存储任务、主机与执行记录server/lib/minicron/hub/app.rb
客户端(Client)部署在目标服务器上,执行命令并回传数据client/run/run.go

每次任务运行时,客户端会按「初始化 → 开始 → 上报输出 → 完成 → 退出」的固定顺序调用服务端 API,服务端据此生成一条可查询的执行记录。所有接口定义都集中在 server/lib/minicron/hub/controllers/api/executions.rb 中。

2. 准备工作:获取你的 API Key ⚙️

API Key 的获取非常简单:

  1. 在 Web 端完成注册,系统会自动为你的账号生成一个 64 位的随机密钥(见 server/lib/minicron/hub/controllers/auth.rb 中SecureRandom.urlsafe_base64(48)的生成逻辑);
  2. 登录控制台,在个人资料页面即可查看并复制你的 API Key,该页面由 user/profile/index.erb 渲染;
  3. 密钥在数据库中按用户唯一索引存储,定义见 server/db/schema.rb。

调用任意 API 时,只需在请求头中携带密钥即可:

curl -X POST http://你的服务端地址/api/1.0/execution/init \ -H "X-API-Key: 你的API密钥" \ -H "Content-Type: application/json" \ -d '{"hostname":"web-01","command":"mysqldump db > backup.sql","timestamp":1700000000}'

服务端会校验该请求头:认证逻辑位于 server/lib/minicron/hub/middleware/auth.rb。如果密钥缺失或错误,接口会直接返回401 状态码和{"error": "Invalid API credentials"}。

3. 五个核心接口一览 📋

所有接口均为POST方法,基础路径为/api/1.0/,且都返回统一的 JSON 结构。

接口路径作用
初始化执行/api/1.0/execution/init登记一次新的任务执行,返回执行 ID
开始执行/api/1.0/execution/start记录任务开始时间
上报输出/api/1.0/execution/output逐条上报标准输出,供 Web 端查看
完成执行/api/1.0/execution/finish记录任务结束时间
退出并判定成败/api/1.0/execution/exit上报退出码,失败时自动触发告警

4. 逐个接口详解 🔍

4.1 初始化执行:init

这是每次任务运行的第一步。服务端会做三件事:

  • 自动识别主机:按hostname查找你的主机,不存在则自动创建;
  • 自动识别任务:对命令做哈希,存在则复用,不存在则新建任务;
  • 创建执行记录:自动递增执行编号(第 1 次、第 2 次……),并返回execution_id供后续接口使用。

注意:如果被监控的任务在 Web 端被禁用了,接口会返回 500 并附带Refusing to execute disabled job的提示信息(逻辑见 executions.rb 第 32-35 行)。

4.2 开始执行:start

传入execution_id和 Unix 时间戳,服务端将把任务的started_at字段更新为开始时间,用于后续统计任务时长。

4.3 上报输出:output

这是产生「执行记录」内容的接口。每产生一行输出就调用一次,参数包括:

  • execution_id:所属执行记录;
  • output:该行文本内容;
  • seq:序号;
  • timestamp:产生时间。

Web 端查看历史执行详情时展示的终端风格输出,正是来自这些记录,对应的数据模型为 server/lib/minicron/hub/models/job_execution_output.rb。

4.4 完成执行:finish

上报finished_at时间戳。start与finish两个时间戳之差,就是 Web 端展示的任务耗时。

4.5 退出判定:exit(关键接口)✅

最后一步。上报exit_status(退出码):

  • 退出码 = 0:任务成功,记录为绿色成功状态;
  • 退出码 > 0:任务失败,服务端立即调用告警模块,按你在 Web 端配置的渠道(Email、SMS、Slack、PagerDuty、AWS SNS 等,实现见 server/lib/minicron/alert/)发出失败通知。

这就是 minicron「定时任务失败自动告警」能力在 API 层的入口(见 executions.rb 第 183-191 行)。

5. 统一响应格式 💬

所有接口返回结构一致,解析时先看success字段即可:

{ "body": { "execution_id": 123 }, "success": true, "error": { "message": null } }
  • body:业务数据,仅init接口有值;
  • success:布尔值,true表示调用成功;
  • error.message:失败时给出具体的错误描述,成功时为null。

6. 更省事的方案:直接用 minicron 客户端 🚀

如果你不想自己写代码逐个调用接口,minicron 官方客户端已经封装好了完整流程(封装逻辑见 client/api/api.go),只需一条命令:

minicron --api-key 你的密钥 run 'mysqldump db > backup.sql'

常用全局参数(定义见 client/commands/root.go):

参数简写说明
--api-key-k你的 API 密钥
--api-base-b服务端 API 基础地址
--verbose-v输出详细日志,排查问题必备
--debug-d调试模式

客户端还会自动带上--dry-run干跑模式,方便在不回传服务端的情况下测试命令是否可用。

7. 常见问题 FAQ ❓

Q1:返回 401 Invalid API credentials 怎么办?检查请求头是否为X-API-Key(注意名称区分大小写),并确认密钥在个人资料页复制完整、未包含多余空格。

Q2:为什么 init 接口返回 500?最常见原因是该任务在 Web 端被禁用。到任务编辑页重新启用即可(编辑入口对应 server/lib/minicron/hub/controllers/jobs.rb)。

Q3:执行记录会保留多久?执行记录由服务端持久化存储,支持在 Web 端查看任意历史执行的状态、耗时与完整输出,这也是 minicron 相比原生 cron 的核心优势——原生 cron 的日志往往转瞬即逝。

Q4:时间戳格式是什么?所有timestamp字段均为Unix 秒级时间戳(如1700000000),服务端会将其转换为 UTC 时间存储。

写在最后

至此,minicron 的 API 接口已全部介绍完毕:init登记、start/finish计时、output留痕、exit判定成败并触发告警。配合 API Key 认证,你既可以调用官方客户端一行命令接入,也可以基于这 5 个接口为自己搭建任意语言(Python、Shell、Go 等)的自动化上报脚本,让每台机器上的定时任务都「有记录可查、有失败可警」。

【免费下载链接】minicron🕰️ Monitor your cron jobs项目地址: https://gitcode.com/gh_mirrors/mi/minicron

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 5:05:06

Android音频配置文件核心拆解:路由、属性与焦点实战

做安卓开发这些年,要说哪个问题排查起来最让容易让人头大,音频问题绝对排前三。不是代码难写,而是你写对了代码,声音却可能从别的地方跑出来,或者压根没声。我印象最深的一次,客户报了一个“蓝牙耳机连上后…

作者头像 李华
网站建设 2026/10/5 5:04:34

GRU vs LSTM:股票收益率预测模型搭建与实战避坑指南

简介:量化投资中基于GRU的股票收益率预测模型任务指南,面向具备机器学习尤其是循环神经网络基础、关注量化金融建模的研究生与科研工作者,以Python和PyTorch为工具,解决利用104时序数据预测股票未来收益率的建模问题。任务描述详细…

作者头像 李华
网站建设 2026/10/5 5:03:55

矩阵LED与矩阵按键实战:分时复用与状态机驱动简易电子琴

矩阵LED和矩阵按键,这两个词凑在一起,基本就是单片机入门阶段被点名最多的一组实验工程。我见过不少同学做完独立LED流水灯、独立按键点灯之后,信心满满地想做点带交互的东西,结果一上手就被这两个“矩阵”卡住了。其实它们解决的…

作者头像 李华
网站建设 2026/10/5 5:03:15

电信工单智能Agent:海量工单的轻量化决策架构

1. 项目概述:为什么工单处理成了运营商的“隐形瓶颈”你有没有遇到过这样的情况:报修宽带故障,客服说“已生成工单”,然后就是漫长的等待——三天没回音,七天没进展,十天后突然来电说“问题已解决”&#x…

作者头像 李华
网站建设 2026/10/5 5:02:58

高等数学上下册核心知识框架梳理:从极限、导数到重积分与级数

说实话,高数学习最大的问题从来不是“难”,而是“散”。我当年考完上册觉得挺稳,结果一进下册,多元函数、重积分、曲线曲面积分、级数像约好了一样同时涌过来,前几章的知识还没来得及消化,后面的章节又把它…

作者头像 李华