Zabbix 不使用日誌更新文件中的值也不用 vfs.file.regexp物品
我正在使用 Zabbix 2.2。
我有一個非常具體的環境,我必須通過腳本生成所需的數據到文件,然後將該文件從主機上傳到 ftp 並從 ftp 下載到 Zabbix 伺服器。
文件下載後,我用日誌檢查它
$$ $$和 vfs.file.regexp$$ $$項目。 我使用這些項目如下:
log[/path/to/file.txt,"C.*\s([0-9]+\.[0-9])$",Windows-1250,,"all",\1] vfs.file.regexp[/path/to/file.txt,"C.*\s([0-9]+\.[0-9])$",Windows-1250,,,\1]
我正在解析的行如下所示:
C: 8195Mb 5879Mb 2316Mb 28.2
我要提取的值是文件末尾的 28.2。
我目前正在嘗試解決的問題是,當我更新文件時(從主機上傳到 ftp,然後從 ftp 下載到 Zabbix 伺服器),值不會更新。
我只嘗試記錄
$$ $$一開始,但我懷疑,那個日誌$$ $$將文件視為真正的日誌文件並且不檢查相同的行(儘管按照文件,它應該具有“all”值),所以我添加了 vfs.file.regexp$$ $$項目太。 日誌
$$ $$過去收到了一個值,但它沒有更新。
vfs.file.regexp$$ $$到目前為止還沒有收到任何價值。
file.txt 已經重新上傳和重新下載了幾次,情況沒有改變。
看來日誌$$ $$僅讀取文件中的新行,如果有任何更改,它不會檢查已擷取的行。 zabbix_agentd.log 文件沒有報告訪問文件的任何問題,也沒有報告正則表達式構造(它確實報告了“不支持”日誌
$$ $$鍵,當我設置錯誤時)。 我對代理使用調試日誌記錄級別 - 我沒有找到任何有關該問題的有趣資訊。
我不知道我可能做錯了什麼,也不知道 Zabbix 如何執行這些檢查。我看到了 2 個解決方案:向文件添加更多行而不是創建新行或創建新文件並使用 logrt 檢查它們
$$ $$,但那些並不能滿足我的願望。
任何幫助是極大的讚賞。
當然,如果需要,我會提供更多資訊——目前我不知道還有什麼有用的。
項目日誌
$$ $$用於逐行增長的文件,因此在您的情況下,正確的方法是堅持使用 vfs.file.regexp$$ $$. 使用 vfs.file.regexp
$$ $$,您所做的一切都是正確的,除了 Zabbix 中存在一個錯誤(報告為ZBX-8248),該錯誤會阻止正則表達式中的“$”符號匹配 Windows 行尾。 因此,為了使其同時工作,您應該從正則表達式中省略“$”。
我沒有嘗試過 Zabbix 的日誌功能,但我的猜測是日誌文件在 Zabbix 代理啟動期間打開一次,然後保持打開狀態。這意味著即使你覆蓋了你的文件,舊的文件句柄仍然保持打開狀態,Zabbix 從那裡讀取數據。
如果是這種情況,我建議您兩種解決方案:
1)以某種方式向 Zabbix 代理髮送 HUP 信號(因此它會重新打開文件以供讀取)
或者
- 使用
External script
Zabbix 中的功能並創建一個解析文件的 shell 腳本。