zabbix监控日志文件的实现原理


1. 日志文件监控原理

通过zabbix agentd程序按照zabbix server上配置的item更新时间间隔和规则去检索指定的日志文件,找出与定义的模式(pattern)相匹配的字符串(行),然后将其送给zabbix server进行分析处理,zabbix
server根据预先设置的trigger及时提供预警信息。 不对日志信息进行过滤直接送给zabbix server也行,但明显不合适。

2. 监控日志文件的相关细节

监控日志文件的要点:

  • 当使用logrt时,zabbix server和agent会对日志文件的大小和最后修改时间进行追踪,分别对应不同的counter。
    • agent内部在Unix/GNU/Linux中使用inode number,在MS Windows中使用文件索引,以及日志文件的前512字节的MD5 sum值来追踪文件。文件在切割时这些信息会改变。
  • 在Unix/GNU/Linux系统中会假定文件的inode number可以用来追踪文件。
  • 在Windows系统上不同的文件系统使用不同的追踪方式。
    • NTFS文件系统上使用64位的文件索引。
    • ReFS(Windows Server 2012)上使用128位的文件ID。
  • 日志文件的inode number,文件索引和MD5 sum都只由zabbix agent收集,它们不会传递给server,当zabbix_agentd停止的时候,它们会丢失。
  • 不要使用touch指令修改日志文件的最后修改时间, do not copy a log file with later restoration of the original name,其实就是不要对日志文件进行一些会改变其inode number的操作。否则会导致agent重新开始分析文件,会导致告警重复。
  • 如果有多个匹配的日志文件,zabbix agent只会分析最新的一个匹配的日志文件,如果最新的日志文件被删除了,会产生告警信息。
  • agent会从它上次停止的时间点开始读取日志文件。
  • server会将已经分析过的日志文件的字节数(the size counter)和最后的修改时间(the time counter)存储到zabbix database中,在agent刚启动或者收到某item之前是禁用或者不支持现在启用了时,发送给agent便于它从指定位置开始读取日志文件。
  • 无论何时当日志文件的大小变得比agent知道的要小时,the size counter会重置为0,然后agent会根据the time counter的记录开始读取日志文件。
  • 如果有多个匹配的文件,它们的最后修改时间相同时,agent会分析所有的文件,并避免跳过数据,或者分析相同数据2次。
  • zabbix agent按照定义的Update interval seconds时间间隔分析日志文件的新记录。
  • zabbix agent会一秒最多发送key中定义的maxlines行的日志文件给server,这个参数会覆盖agnetd配置文件中的MaxLinesPerSecond参数的配置。
  • 默认情况下,agent在一次检测中最多可以分析80条日志文件记录,并且发送最多20条匹配的记录给server。maxlines可以增加到4000,这样可以一次检测时发送1000条日志记录给server。
  • log和log.count的值总是被限制在agent send buffer size的50%。所以maxlines会被一次发送完成,agent的BufferSize参数最少为maxlines x2。
  • 日志文件记录超过了256kB时,剩下的部分将会被忽略。(应该是文件的增量?)
  • logrt匹配置日志文件名时,其路径不能使用正则表达式匹配,只能用正则表达式匹配文件名。
  • logr[] item找不到的日志文件,不会标示item为NOTSUPPORTED。读取日志文件发生错误会以警告信息记录到agent的日志中,但也不会标示这一item为NOTSUPPORTED。
  • zabbix agent的日志文件,对查找log[]或logrt[] item变得NOTSUPPORTED时很有帮助。只要agent日志文件不设置在Debuglevel=4时,zabbix可以监控agent日志文件。被标示为NOTSUPPORTED的item在item中查看会有显示,在Latest data中查看时该item会显示为灰色。
  • 如果server(proxy)和agent的通信中断,对于日志文件的检测将会停止,但通信恢复后,检测也会恢复,同时继续从之前检测过的位置开始检测,不会漏掉匹配的信息,只不过会延后。
  • server(proxy)和agent通信中断,agent它也会保持和日志文件的联系。
  • maxdelay如果保持默认(maxdelay=0),当server和agent通信中断恢复后,agent会将之前log.count和logrt.count计数和新匹配的计数一起发送给server。
  • maxdelay如果大于0,且log file没有行被跳过,则和上面一样将新旧count一起发送给server,如果log file有行被跳过,则之前的count结果将会被丢弃。

3. 日志文件监控类型

3.1 常用的日志监控item key类型

  • log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]
  • logrt[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]
  • log.count[/path/to/file/file_name,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>]
  • logrt.count[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>]

3.2 key参数的含义

  • /path/to/file/file_name表示日志文件的绝对路径。
  • regexp表示用于匹配特定字符串的正则表达式,如果留空会将整个日志文件记录发给server。
  • encoding表示日志文件记录的编码格式,一般留空,使用日志文件的默认格式。
  • maxproclines表示agent一次可以发送最多多少条日志记录给server。
  • output表示只将与正则表达式匹配的字符串发给server,而非整行记录。
  • maxdelay这一参数用于允许跳过日志中一些陈旧的记录,以找到最新的日志记录,这个跳过时长即为maxdelay。这有可能会导致忽略了一些重要日志。所以谨慎使用,一般保持默认值0即可。
  • mode表示处理数据的模式,默认为all,也可以是skip,表示跳过老数据。

3.3 监控不同类型的日志文件

  • log用于监控日志文件名称不会变化的场景。
  • logrt用于监控日志文件名会变化的场景,如会自动切割的带有日期的文件名。
  • count用于统计相应日志文件中含有匹配字符的日志行数。

4. 日志文件监控item参数选择及含义

字段 选择及含义
Type Zabbix agent(active),让agentd主动上报信息
Type of information log和logrt时选择Log,log.count和logrt.count时选择numeric(unsigned)
Update interval in sec 定义agnet检测日志文件的间隔时长,检测出日志文件的变化
Log time format 用字母yMdhms分别表示年月日时分秒,用字符p和:代表占位符,当日志的时间戳有空格或者其它item里表示不出来的时间日期时可以用它们代替,如表星期的Mon,直接用ppp代替即可

5. 小结

使用zabbix监控日志文件,把握两个要点:

  • 确保zabbix对要监控的日志文件有读取权限。
  • 监控item配置正确。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 7,935评论 0 37
  • 依赖环境准备: 因Zabbix的部署需要LAMP环境,因此先准备相关的依赖:(su 到 root 用户下执行) r...
    UMF_士弘阅读 1,653评论 1 5
  • 操作环境CenOS6.8,软件版本zabbix3.0前提条件:Zabbix-Agent必须运行,且工作模式为主动模...
    黑球君阅读 10,411评论 0 4
  • 当自己对自己的事都不上心时,所说的话全都显那么地苍白无力……
    彩玲123阅读 147评论 0 0
  • 法定代表人是指依法代表法人行使民事权利,履行民事义务的主要负责人(如:工厂的厂长、公司的董事长、总裁、CEO、首席...
    8c739858403d阅读 347评论 2 0