我希望能够从多个日志文件中提取数据。提取的数据将被发送到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