夜鶯 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 操作)。

參考資料

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