跳到主要內容
節省工具箱Jason Tools
經驗分享

Wazuh 叢集節點連線紀錄查詢方式

Jason Cheng 發布 瀏覽 1 次
Wazuh 叢集節點連線紀錄查詢方式
本文目錄
  1. 查詢叢集記錄
  2. 查詢 agent 的節點歸屬
  3. 查詢順序建議
  4. 結論
  5. 參考資料

Wazuh 叢集有時候會遇到這種狀況:某個 worker 節點已經移除、甚至整台重灌了,事後被問「這台 node2 以前到底有沒有加入過叢集?」。設定目錄已經被清掉,能拿來證明的就只剩下記錄檔與資料庫了。

這篇整理幾個查詢方法,從最直接的叢集記錄開始,一路到 agent 的節點歸屬紀錄。

查詢叢集記錄

Wazuh 叢集的連線紀錄會寫在 master 節點的記錄裡。最簡單的方法是一行指令遞迴整個記錄目錄,包含已經輪替封存的年月子目錄:

grep -rHi "node2" /var/ossec/logs/
  • -r:遞迴所有子目錄
  • -H:印出命中的檔名,方便看是哪一天的記錄
  • -i:不分大小寫

叢集相關的訊息集中在 /var/ossec/logs/cluster.log,只想查叢集記錄的話可以縮小範圍:

grep -i "node2" /var/ossec/logs/cluster.log

命中的話,就代表 node2 曾經連上過 master,記錄裡會有它連線、同步的時間。

已經輪替的舊記錄會依年月壓縮存放在 /var/ossec/logs/ 底下的子目錄,壓縮檔要改用 zgrep:

find /var/ossec/logs/ -name "*.gz" -exec zgrep -Hi "node2" {} +

注意:Wazuh 的記錄會依設定輪替並清除舊檔,如果時間已經很久,記錄可能早就被清掉了,這時就要靠下面的 agent 歸屬紀錄佐證。

查詢 agent 的節點歸屬

如果記錄已經清掉,剩下的間接證據是 agent 的歸屬紀錄:曾經連到 node2 的 agent,會留下它所連接的節點名稱。

叢集還在運作時,用官方的 cluster_control 查最方便,它會列出每個 agent 連在哪個節點:

/var/ossec/bin/cluster_control -a

順便確認目前叢集裡有哪些節點:

/var/ossec/bin/cluster_control -l

如果要查歷史資料,可以直接查 master 上的全域資料庫,找出節點名稱是 node2 的 agent:

sqlite3 /var/ossec/queue/db/global.db \
  "SELECT id, name, node_name FROM agent WHERE node_name LIKE '%node2%';"

注意:直接查資料庫請只做查詢,不要修改任何內容,避免影響 Wazuh 的運作。執行前也可以先把 global.db 複製一份出來查。

查詢順序建議

  1. 先跑 grep -rHi,通常就有答案了
  2. 沒有命中的話,用 zgrep 查已經壓縮的舊記錄
  3. 記錄都清掉了,再查 agent 的節點歸屬紀錄

結論

節點移除之後,設定目錄是最先消失的,但記錄與資料庫通常還會留一段時間。這類「事後追查」的需求,最好的做法其實是平常就把 Wazuh 自己的記錄也送到 Graylog 這類集中記錄平台保存,就不用擔心記錄被輪替清掉、找不到證據了。

參考資料

Jason Cheng

Jason Cheng

企業開源技術顧問,專注架構規劃與實務導入

關於作者 →

延伸閱讀