历史任务

夜莺 v9 自愈脚本历史任务:查询脚本被告警触发或人工临时下发的执行历史,看每台目标机器上的输出、退出码和耗时。

概述

历史任务 = 自愈脚本被触发后的所有执行记录

侧栏路径:告警 → 告警自愈 → 历史任务 Tab,URL /job-tasks

每次「自愈脚本」被触发,平台都会生成一条任务记录:

  • 任务来源(告警触发 / 用户主动 / API 创建的临时任务)
  • 下发到哪些目标机器
  • 每台机器的执行结果(stdout / stderr / 退出码)
  • 执行耗时

适用场景:

  • 自愈脚本"看起来"没生效?查历史看是真的没触发还是触发了但失败;
  • 大规模批量操作完成后,看每台机器的输出确认状态;
  • 一次性的临时运维操作(重启某服务、清磁盘空间),用「创建临时任务」一键下发到一组机器;
  • 合规 / 复盘:谁、什么时候、给哪些机器跑过什么脚本。

列表 & 筛选

页面顶部过滤:

控件 说明
关键字搜索 在任务标题里搜
时间范围 默认最近 7 天,最长不限
只看自己 默认勾上 — 只看当前账号创建的任务;取消勾后看到全业务组的任务
业务组(左侧) 按业务组过滤

列表字段:

含义
ID 任务的数据库主键,跨页定位用
标题 任务标题,告警触发的会显示告警规则名;临时任务显示用户填的标题
操作 点击进入任务详情,看每台目标机的输出
创建人 谁触发的:用户名(手工)/ 告警引擎名(自动)
创建时间 任务下发时间

创建临时任务

页面右上「创建临时任务」按钮 — 在不绑告警规则的情况下一次性下发一个脚本到一组机器。常见用法:

  • 批量重启某服务;
  • 清磁盘空间紧急止血;
  • 一次性的运维巡检(比如收集所有机器的 OS 版本)。

点击后会跳到任务创建表单,主要字段:

  • 标题:方便后续在历史任务列表里识别;
  • 脚本内容:bash/python/PowerShell 等,直接写在编辑器里;
  • 目标机器:从设备列表选,支持按业务组 / 标签筛选;
  • 超时时间:单机执行的最长时间,超时自动 kill;
  • 执行模式:所有机器并发 / 滚动(一批一批)/ 暂停模式(手工 next-step)。

临时任务跑完后任务记录还在,可以重复看输出 — 不会随机器重启或会话过期消失。

任务详情:看每台机器的执行结果

点击列表行进入任务详情:

  • 总览:任务标题、脚本预览、目标机器数、成功/失败计数、执行时间线;
  • 目标机器列表:每台一行,展示当前状态(pending / running / success / failed / killed);
  • 点单行展开该机器的具体输出:
    • stdout:脚本的标准输出
    • stderr:错误输出
    • 退出码:0 = 成功,非 0 = 失败
    • 耗时:单机执行时间
  • 失败的机器:单独可以一键重跑,不需要全任务重新下发。

常见问题

Q1:告警规则配了自愈脚本,但历史任务里没看到执行记录?

A:按这个顺序排查:

  1. 告警是否真的触发了:去 活跃告警 看是否有事件;没事件就不会触发自愈脚本;
  2. 自愈脚本是否绑定到了该告警规则:去告警规则编辑页"自愈"区域确认;
  3. 目标机器是否在线:自愈脚本通过 Categraf 下发,机器无心跳会跳过;
  4. 告警引擎日志:去 告警引擎 看 server 日志,找 job dispatch failed 之类的错误。

Q2:临时任务下发后某些机器一直是 pending 状态?

A:常见原因:

  • 机器无心跳:Categraf 没在线,自然收不到任务下发;
  • Agent 版本太低:很老的 Categraf 不支持任务下发;升级到当前 ent 版本;
  • 并发限流:任务设置了"滚动模式"且前一批未完成,后面的就在排队等待。

Q3:历史任务的数据保留多久?

A:默认长期保留(不参与自动清理)。如果任务量很大,DBA 可以根据需要在 n9e.toml 配置保留天数 + 自动清理。

Q4:脚本里的输出会不会被泄露 / 看到敏感信息?

A:脚本本身和执行输出都完整存数据库 — 不要在脚本里写明文密码、Token 这种敏感信息。建议:

  • 敏感凭证用环境变量从目标机的 /etc/environment 或 vault 拉取;
  • 任务的查看权限通过 角色管理 控制,只给运维角色看;
  • 出 P0 后清理涉及敏感操作的历史记录(需要 DBA 操作)。

参考资料

更新时间 2026-05-19

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云