我希望能夠從多個日誌文件中提取數據。提取的數據將被髮送到zabbix。逐步處理日誌文件:提取數據併發送到另一個進程(zabbix)
舉個例子,說一個(巨大)日誌文件包含了諸如
date: processed 566766 lines
date: processed 324523 lines
date: processed 546747 lines
date: processed 005643 lines
我希望能夠將此數據發送到的zabbix信息。
用awk我只想做一些像
cat logfile | awk '/processed \d+ lines/ { system("zabbix command " $3) }'
我的問題是,由於該文件是大的,因爲我不想重複的數據,我需要找到一種方式開始閱讀日誌文件從哪裏,如果是從上次運行
因此,它需要記住它讀取的點直到上一次,並開始處理只有新添加的行。
我試過fetchlog但由於某些原因,它不起作用,它沒有被維護。
你知道一個好的實用程序可以跟蹤日益增長的日誌文件或Pythonic的方法嗎?
我似乎記得syslog-ng或rsyslog有這方面的內容,但我認爲它們只適用於syslog樣式的日誌,而我的並不遵循任何標準。
問候
亞歷山德羅
你有沒有考慮logrotate的日常旋轉日誌?你打算多久將數據發送到監控系統? – jordanm 2012-07-27 15:23:57
每隔幾分鐘。不幸的是,旋轉不是一種選擇。 – Alessandro 2012-07-27 16:46:59
所以感興趣的數據'日期:處理566766行'散落在文件周圍?在任何情況下,考慮到所有限制,我認爲您必須計劃在創建文件時解析文件一次,然後將感興趣的數據發送到可以按照您的日程安排發送給zabbix的進程。閱讀這裏和其他有關mkfifo的地方,可能會有所幫助。但是,你仍然有問題,有一天,該日誌文件將變得太大,操作系統,必須被清零並重新啓動。然後你必須得到新的日誌文件的句柄。祝你好運! – shellter 2012-07-27 18:50:55