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

Wazuh Dashboard 讀取 CDB list 逾時的調整

Jason Cheng 發布
Wazuh Dashboard 讀取 CDB list 逾時的調整
本文目錄
  1. 兩層逾時
  2. Wazuh Dashboard 的 timeout
  3. Wazuh Server API 的 request_timeout
  4. 調整建議
  5. 清單太大的根本處理
  6. 結論
  7. 參考資料

Wazuh 的 CDB list 越放越大之後,在網頁介面打開清單會一直轉圈圈,最後跳出逾時錯誤:

timeout of 20000ms exceeded

原因是 Dashboard 要透過 Wazuh Server API 讀取清單內容,清單太大、API 回得太慢,就被逾時切斷了。這個逾時有兩個地方會卡住,這篇整理調整方式。

兩層逾時

位置設定單位預設
Wazuh Dashboard 等待 API 回應timeout(wazuh.yml)毫秒20000(20 秒)
Wazuh Server API 處理請求intervals.request_timeout(api.yaml)秒10

錯誤訊息是 timeout of 20000ms exceeded,代表是 Dashboard 等了 20 秒沒等到,要先調第一個;調了之後還是失敗,再看 API 這一層。

Wazuh Dashboard 的 timeout

編輯 /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml:

timeout: 60000

單位是毫秒,上面是 60 秒。官方文件說明低於 1500 的值會被忽略,改用預設值。

systemctl restart wazuh-dashboard

這個設定也可以在網頁介面「Dashboard management → App Settings → Configuration」直接修改,不用登入主機。

Wazuh Server API 的 request_timeout

編輯 /var/ossec/api/configuration/api.yaml:

intervals:
  request_timeout: 120

單位是秒。API 處理任何請求超過這個時間就會中止,所以 Dashboard 的 timeout 調得再長,API 這邊先切斷也沒用。

systemctl restart wazuh-manager

注意:兩個設定的單位不同,Dashboard 是毫秒、API 是秒,很容易填錯。另外 Dashboard 的等待時間應該大於或等於 API 的處理時間,否則 API 還在處理,Dashboard 就先放棄了。

調整建議

清單規模建議
幾萬行以內通常預設值就夠
數十萬行Dashboard 60000、API 60 左右
數百萬行調整逾時只能治標,建議拆分清單

不要一口氣把逾時調到好幾分鐘。逾時的用意是避免一個慢請求把資源一直佔著,設太長,真的出問題時反而要等更久才知道。

清單太大的根本處理

Wazuh 的 GitHub 上也有人回報過,請求非常大的 CDB list 時 API 會逾時甚至當掉。清單大到一定程度,調逾時只是延後問題:

  • 拆分清單:依類別或來源拆成多個 CDB list,每一份維持在合理大小
  • 不在網頁上開大清單:大清單直接以檔案方式放在 manager 的 /var/ossec/etc/lists/,用腳本更新,網頁介面只拿來看小清單
  • 只放需要比對的資料:外部取得的情資清單,先篩選出和自己環境有關的部分再匯入

上傳大清單時遇到的大小限制,可以參考〈Wazuh 上傳 CDB list 的檔案大小限制〉。

結論

timeout of 20000ms exceeded 是 Dashboard 的 20 秒等待時間,調 wazuh.yml 的 timeout;API 那邊的 request_timeout 也要一起放寬,而且注意單位。清單真的很大的話,拆分清單比一直調大逾時更實際。

參考資料

Jason Cheng

Jason Cheng

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

關於作者 →

延伸閱讀