跳到內容
繁體中文

指令與語句紀錄

錄影回答「發生過什麼」,但沒辦法搜尋。指令紀錄是為了搜尋與定位而存在的索引: 跨會話找一條指令,然後跳回原始的那場連線與那個時刻。

紀錄的來源有兩種。命令列的內容重組自終端輸出,錄影才是事實來源; 查詢主控台的語句在送出時直接登記,本身就是事實來源。

「指令稽核」頁跨會話搜尋,篩選條件:

  • 關鍵字,對指令內容做子字串比對。
  • 來源:查詢主控台或命令列。
  • 目標資料庫。
  • 結果狀態(可多選)與目標端錯誤碼。
  • 使用者、資產、時間範圍。

列表上的操作可以直接跳到那場連線,並把回放定位到該筆紀錄的時刻。

單一會話的指令列表在連線詳情頁,區塊上有註記說明內容重組自按鍵流、以錄影回放為準; 主控台會話的註記則說明語句在送出時登記。

伺服器的輸出流餵進一個虛擬終端螢幕,使用者按 Enter 時擷取當前行。 這個做法會正確反映退格、Tab 補全與歷史召回,因為它讀的是終端上真正出現的內容。 SSH、資料庫命令列與容器 exec 用的是同一套重組器。

MySQL 與 PostgreSQL 會話裡,跨續行的一句 SQL 會累積成一筆完整的紀錄, 遇到分號或元命令才結算,所以 SELECT\n1 AS\nx; 是一筆而不是三筆。 元命令與其後的查詢各自獨立。Redis 與 SSH 維持逐行。 SQL Server 以批次終止符切分,提示符不會混進指令文字。

每個執行單位配一個唯一的事件識別碼,並帶結果事實欄位: 目標資料庫、結果狀態、原因碼、回傳列數、影響列數、結果集數、目標端錯誤碼、耗時、是否截斷。 結果狀態的取值由資料庫約束釘住,涵蓋執行中、成功、錯誤、阻斷、已取消、逾時、部分生效、結果未知。

可見回顯的輸入會留下可搜尋指令或明確標記的降級紀錄;無回顯輸入不留指令文字紀錄。錄影是文字會話的事實來源。agent 被規則阻斷而未送達目標的指令留在錄影與工具帳本,不進一般指令紀錄。無法可信重組時,產生的是明確標記的降級紀錄, 裡面不含任何推測出來的文字。介面會逐筆標示「此輪內容無法還原」並提供跳到該時段錄影的入口, 區塊上方另有橫幅說明這段期間有幾筆無法還原、以及關鍵字搜尋不會涵蓋它們。

降級本身可以觸發告警,在告警頁以獨立的類別呈現。

指令文字是索引,連線錄影是事實來源。兩者不一致時以錄影為準。 主控台的語句紀錄是例外:它本身即事實來源,轉錄錄影是它的派生物, 兩者以事件識別碼對應,衝突時以結構化的紀錄為準。

  • 每筆紀錄含序號、指令或語句原文、執行時間、所屬會話、使用者與資產。
  • 主控台的紀錄另含前述的結果事實欄位,跨會話搜尋可以直接用這些欄位篩選。
  • 降級紀錄明確標記,數量在介面上可見。
  • 證據包的指令 CSV 涵蓋這些欄位,文字終端的紀錄在結果欄位留空,見取證包與事件報告。