MailVSR MailVSR 三分鐘搞定你的企業網站

操作日誌

操作日誌是管理後台的稽核軌跡,記錄「哪個管理員、從哪個來源 IP、在什麼時候、做了什麼動作、改了哪些欄位」。當您要追查某個設定是什麼時候被誰改掉的、想確認有沒有非預期的帳號異動,或需要向主管/客戶提出「這段期間沒有人動過這個設定」的證明時,就從這一頁找答案。

什麼時候會用到這一頁:

  • 有人反映「某個帳號怎麼不見了」,要查出是誰刪的、什麼時候刪的
  • 系統行為突然改變(例如某項服務被關掉),要確認是不是有人改了設定
  • 要確認某段時間內有沒有人登入過管理介面(例如連續假期間)
  • 稽核要求提供「設定變更歷程」,需要匯出成檔案留存
  • 管理介面本身出現錯誤(白畫面、500 錯誤),需要看 Web 介面的錯誤日誌

同一頁也存放 Web 介面本身的存取與錯誤日誌,因此除了「誰做了什麼」,也能查到「管理介面被打開了哪些頁面、發生過什麼錯誤」。

記錄的內容

每一筆記錄就是一行,內容由「操作者與來源 IP」、「模組/動作」、「動詞與目標」以及「欄位異動」組成。

  • 身分:格式為 [帳號@來源IP];由系統背景自動執行的動作沒有來源 IP,身分記為 [SYSTEM]
  • 動詞:新增、修改、刪除類的動作統一為 CREATE、UPDATE、DELETE、SAVE;特殊動作保留原名,例如 RESEND、CLEAR、UNBAN、RESTART、UPLOAD、REGISTER、CHARGE、KILL
  • 登入相關:成功登入記為 LOGIN OK、登出記為 LOGOUT、雙重驗證記為 TOTP VERIFY OK 或 TOTP VERIFY FAILED user=xxx
  • 欄位異動:UPDATE 與 SAVE 會附上實際變更的欄位,巢狀欄位以路徑表示(例如 preset.quota:5120→8192 代表配額從 5120 改成 8192);密碼、金鑰、權杖等敏感欄位的值一律以 *** 代替,過長的值會被截斷
  • 失敗記錄:動作失敗時記為「動詞 目標 FAILED」,與成功動作區分

記錄範圍只包含有副作用的動作(登入登出、新增修改刪除、設定變更、執行類操作)。單純瀏覽頁面或查詢資料不會留下記錄,所以看到「沒有記錄」不代表沒人開過那一頁。

日誌項目與檔案

「記錄」分頁上方有兩層選擇器:

  • 日誌項目(共 4 項)
    • 操作日誌 (webadmin.log):本頁的主角,也就是上面說明的稽核軌跡,位於 /var/log
    • Web界面操作日誌 (access.log):管理介面的 HTTP 存取記錄,位於 /var/log/webadmin
    • Web界面錯誤日誌 (error.log):管理介面的錯誤記錄(例如 500、PHP 錯誤),位於 /var/log/webadmin
    • Web核心日誌 (php8.4-fpm.log):PHP 處理程序的日誌,位於 /var/log
  • 日誌檔案:該項目目前的檔案,以及輪替後的舊檔(含 .gz 壓縮檔)。切換日誌項目時,系統會自動選取該項目的第一個檔案,您不必手動挑

找到操作日誌之後,平常只需要看 webadmin.log 這一個檔;輪替舊檔是當 webadmin.log 到達輪替條件(週期或大小上限)時被切出來的歷史檔。

日誌檔名規則可以幫您判斷新舊:沒有編號的是現役檔(正在寫入),有 .1、.2 這種編號的是輪替舊檔,加上 .gz 表示已壓縮。編號越大通常越舊。

列表與查詢

表格只有「日誌內容」一欄,一列就是一行日誌。

  • 預設順序:由新到舊,可點欄位標題切換排序方向
  • 每頁筆數:預設 50 筆,資料量大時請用搜尋縮小範圍
  • 搜尋:即時全文檢索,符合的關鍵字會在結果中反白,方便快速掃描
  • 搜尋語法(三個日誌頁以上都共用同一套規則)
    • 關鍵字1,關鍵字2 → OR:任一個關鍵字命中就列出
    • 關鍵字1+關鍵字2 → AND:兩個關鍵字都要命中才列出
    • 逗號與加號不要混用:一旦混用(例如 a,b+c),整串會被當成一個關鍵字原樣比對,通常什麼都搜不到
    • 關鍵字前後的空白會自動忽略
  • 沒有資料時顯示「暫無管理介面日誌資料」

實際好用的搜尋範例:

  • 查某個管理員做過什麼:搜尋 admin(或實際帳號),再搭配 LOGIN、DELETE 等動詞
  • 查某個設定被改過幾次:搜尋 preset.quota 這類欄位路徑
  • 查某個 IP 的活動:直接搜尋該 IP(例如 192.0.2.10)
  • 同時要兩個條件:搜尋 admin+DELETE(只看 admin 的刪除動作)
  • 想同時看兩種動作:搜尋 DELETE,UPDATE

匯出與刪除

日誌檔案選擇器旁有兩個共用按鈕:

匯出

把目前選取的日誌檔下載為檔案:

  • 純文字檔以 text/plain 下載;.gz 檔維持壓縮格式(application/gzip)下載,請自行解壓
  • 下載檔名會自動加上下載時間戳,避免覆蓋舊檔。純文字檔接在尾端(webadmin.log → webadmin.log_20260824-161832);.gz 插在副檔名前(syslog.2.gz → syslog.2_20260824-161832.gz)
  • 按下「匯出」時畫面會先顯示「匯出中…」
刪除

刪除行為依檔案類型而不同,這是刻意的保護設計:

  • 輪替舊檔(有 .1、.2.gz 這類編號):整檔刪除。確認視窗顯示「確定要刪除日誌檔案「:file」嗎?」
  • 現役檔(檔名後面沒有編號):只清空內容、保留檔案。因為檔案正在被寫入,直接刪除會讓寫入中的程序出錯。確認視窗會明確告知:「此為目前正在寫入的日誌,刪除將僅清空其內容(檔案保留)。確定要清空「:file」嗎?」
  • 操作日誌的現役檔 webadmin.log 受保護,完全不可刪除、也不可清空。刪除按鈕會停用並提示「操作日誌現役檔不可刪除」。這是為了保住最近的稽核記錄,請勿用其他方式(例如登入終端機)繞過
  • 執行成功後顯示「日誌檔案「:file」內容已清空」或「日誌檔案「:file」已刪除」;失敗時顯示「刪除日誌檔案失敗」
  • 刪除或清空日誌檔的動作本身也會寫入操作日誌,所以「誰把日誌刪掉了」同樣查得到

設定(輪替)

「設定」分頁的輪替參數由操作日誌與 Web 介面這 4 支日誌檔共用同一組設定:

  • 記錄週期:每週(預設)或每天;週期到達就結算輪替
  • 保留天數/保留週數:依上面選的週期決定是填「天」還是「週」,超過保留份數的舊檔會被清掉
  • 單檔大小上限(MB):即使還沒到週期,單檔超過這個大小也會提前輪替。用意是防止某個時段大量日誌把單一檔案撐爆,導致查詢變慢
  • 壓縮 rotate 檔:輪替後的舊檔以 gzip 壓縮成 .gz,可省下大量磁碟空間,代價是檢視時需要解壓(本頁會自動處理)

調整後按「儲存設定」,成功顯示「logrotate 設定已儲存」,失敗顯示「logrotate 設定儲存失敗」。

空間使用

「空間使用」分頁會依日誌項目分別列出相關檔案(含輪替檔與壓縮檔)的:

  • 檔案名稱
  • 最後修改時間
  • 空間占用

並在下方列出「總計(N 個檔案)」,方便您判斷哪一支日誌吃掉最多空間。清單依時間倒序(新→舊)。若該項目還沒有任何檔案,顯示「目前沒有日誌檔。」;讀取失敗時顯示「讀取失敗」。

實務上最常需要處理的是 access.log 與 php8.4-fpm.log——網站被大量掃描或被搜尋引擎爬取時,這兩支會長得特別快。若發現某一支異常肥大,可以先縮短保留份數,或把「單檔大小上限」調小。

欄位名稱語系

操作日誌中「欄位異動」清單裡的欄位名稱,可在「系統設定 / 偏好設定」的「操作日誌欄位語系」決定:

  • 程式欄位名(建議):一律寫程式內部的英文欄位名,便於用搜尋或 grep 稽核,不受介面語系影響
  • 依操作者語系:依當時操作的管理員介面語言翻譯欄位名(換了語系看起來會不同,追溯時較易混淆)
  • 固定:語系:不論操作者語系,一律使用指定的語言

若您需要長期稽核,建議選「程式欄位名」,欄位名稱才會穩定一致。

常見情境與判讀

  • 「這個帳號是誰刪的?」:搜尋該帳號名稱,找 DELETE 那一行,行首的 [帳號@來源IP] 就是操作者與他的來源 IP
  • 「昨天有人改過系統設定嗎?」:搜尋 SAVE 或 UPDATE,並搭配 192.0.2.(您的管理網段)過濾來源
  • 「這台機器半夜有被登入嗎?」:搜尋 LOGIN OK,比對時間欄位;若出現非預期的來源 IP,請立即改密碼並檢查「系統設定 / 偏好設定」的登入保護設定
  • 「某個動作明明失敗了,為什麼沒有記錄?」:失敗的動作會記為 ... FAILED,請搜尋 FAILED
  • 「有 [SYSTEM] 開頭的記錄是什麼?」:那是系統背景自動執行的動作(例如排程、授權檢查、自動刪除過期帳號),沒有來源 IP,不是有人登入操作

注意事項

  • 操作日誌的現役檔(webadmin.log)受保護,刪除按鈕會停用並提示「操作日誌現役檔不可刪除」;只有輪替舊檔可以刪除
  • 刪除或清空日誌檔的動作本身也會寫入操作日誌
  • 系統背景動作以 [SYSTEM] 身分記錄,沒有來源 IP,看到時不必誤以為是登入者所為
  • 這一頁是稽核依據,建議定期匯出備份,並確保只有必要人員能登入管理介面
  • 管理介面登入失敗的防護(失敗間隔、每分鐘上限、臨時驗證碼)是在登入階段就擋下,相關設定在「系統設定 / 偏好設定」;被擋下的嘗試不一定會留下操作日誌,若要追查暴力嘗試請看「系統日誌 / 阻斷記錄」
  • 想確認「某封信為什麼沒寄出去」不屬於本頁範疇,請改看「系統日誌 / SMTP日誌」