对题主的问题进行分解,对日志关键字的监控与告警。1.可由运维人员自定义关键字2.能适应不规则新生成的日志文件。 1、自定义关键字,应该是日志中出现某个关键字进行告警,或者不出现某个关键字进行告警,其中包括String类型与Number类型 2、 适应不规则新生成的日志文件,适配所有日志文件,对日志具备初步清洗的功能 目前开源监控中较为常见的是ZABBIX或ELK(也可是EFK)zabbix完全可以实现题主的需求,主要通过匹配关键字实现告警,举个例子,新建项目, 选择类型为zabbix客户端(主动式),键值为 xx_log.log 为日志的绝对路径 connectException 为关键字 ,此处的关键字需根据自己需要定义,如下列配置 DIA3222E日志 log[{#DB2LOGDIR},DIA3222E,,100,skip,] 主机{HOST.NAME}{#DB2LOGDIR}日志产生DIA3222E信息 nodata(5m)=0这种监控方式较为机械,不够灵活,如类型的转换,上下文关联不能够实现,收到告警后需要人工介入进行二次分析,优点是配置简单,技术掌握较为单一,且侵入性较小。elk在监控能力方面较为全面,logstash的grok语法 可以直接使用或应用预定义的表达式名称,并支持把预定义的 grok 表达式 写入到文件中,同样满足题主的需求,相比zabbix来说,更容易实现对关键字进行抓取和搜索,并可以对关键字的类型进行转化和计算。二者都可以 适配所有日志文件,不同的是,elk可以对日志进行预清洗,而zabbix不可以。还有一种思路可以提供参考,可以通过 logstash-output-zabbix插件,让logstash来对日志进行初步的清洗来达到日志的标准化,同样可以对关键字在某种特殊场景下的类型转换和二次计算来让监控指标更加合理, 通过这个插件将Logstash与zabbix进行整合,也就是将Logstash收集到的数据进行过滤,将有错误标识的日志输出到zabbix中,最后通过zabbix的告警机制进行触发、告警,这种方式将zabbix和logstash的优点进行整合,在技术栈在可控范围内进行收窄的同时,更灵活的进行关键字的配置和告警,同时zabbix还可以实现告警后的处理,如重启应用、执行脚本来达到初步的自愈功能。
收起