比较理想的解析方式是预解析和后解析相结合,目前市场上只有少量产品支持这种特性 。这种特性结合了两者的优点,缺点又相对能接受,可以达到一个比较好的平衡 。但这种方式为什么市场上用的少呢?据我分析,主要的原因是这种模式过于复杂 。
首先是操作复杂,这种模式要求使用者掌握一些相关技能;其次是技术复杂,目前应用较广的大数据平台技术,对关联查询的支持不是特别理想,比如Elasticsearch目前对关联查询就非常繁琐 。但是这种预解析和后解析相结合的方式在应用上优势明显,是日志解析未来的发展趋势 。
其他问题可以通过特殊手段来解决,比如:可以把繁琐的操作封装在产品中,隐藏在操作的后台;如果用关系数据库,倒是容易解决后处理的问题,但是多数关系数据库的处理能力和目前的大数据平台还是有较大差距,可以在日志数量不大的时候使用 。
文章插图
2.2 自定义解析的灵活性通过前面的分析得知,日志标准化解析在这类产品中的地位举足轻重 。如何把日志解析的能力提供出来,就显得尤为重要,目前自定义解析的方式主要有几种方式:
- 通过编码实现 。直接在代码中处理,编译发布,这种方式对厂家来说最灵活,但对使用者来说最麻烦,因为几乎没有办法进行调整;
- 通过配置文件实现 。比如logstash中配置input,filter,output等,这种方式解决了用户不能直接调整的问题,非常方便 。但这种情况只能登录后台查看配置文件,如果安装的比较多,调整修改起来会稍显繁琐;
- 通过工具生成 。比如之前版本的symantec的ssim平台,通过他们提供的工具实现进行配置,继而导出他们产品能识别的安装包,最后安装到平台中 。这种方式本质上是前面两种解析方式的结合,比较灵活 。唯一的缺点,是解析查看的时候需要借助工具,如果有修改或者添加的操作,需要重新部署一遍;
- 通过脚本实现 。脚本实现其实可以归于编码实现的一个特例,只是大多数脚本不用编译,可以直接运行 。这种解析方式的优点是比较灵活,缺点是对使用者要求较高,同样调整修改起来较为麻烦;
- 通过界面配置的方式实现 。就是在平台上直接进行配置,比如splunk、secilog等,这种方式的优点是比较灵活,从界面上配置非常方便 。
文章插图
根据上面的分析可以得知,通过界面配置的方式最优,其次是通过配置文件,最劣的是通过代码实现 。
2.3 自定义解析支持的灵活性下面介绍自定义解析的具体关键点,主要包括存储结构、语法支持、函数支持、多为支持、内置分析、字典支持、数据补全、上下文关联、外接知识库等内容 。
- 存储结构:
常用的解析语法主要包括XML、配置文件、数据库存储,这几种存储结构可以满足大多数的场景需求,提供XML的存储结构的大多是通过工具进行生成 。 - 语法支持:
目前解析语法大多用的是grok或者类似grok语法的结构,大多都支持正则表达式、函数等方式,从大的方面都支持,要对比解析的优劣主要依靠细节 。 - 函数支持:
- 字符串:字符串提取,比如想在字符串123-445-789-012中提取445-789是否方便;字符串拼接,比如两个字段拼接成一个字段,add(sourceIp,eventId);字符串替换,比如把字符串中的-替换成空格,replaceAll (“-”,””);
- IF函数:比如很多日志中可能是0表示成功,if(“0”,”success”,”fail”);
- 多维度支持:
比如日志源IP信息,在解析的时候需要添加到目标IP和日志源IP中; - 内置分析:
比如http请求中的useragent,这里面含有大量的信息,是否能把里面的浏览器、操作系统、版本等分析出来; - 字典支持:
在日志中有很多数据是有含义的,尤其是业务日志,但在日志保存的时候很多日志存储的是编码,这个时候需要通过字典把编码对应的名称添加进来; - 数据补全:
在日志中有直接含义也有间接含义的数据,比如日志源IP,需要知道这个IP是哪个人在用,属于哪个部门的;比如日志中有账号信息,需要了解这个账号的部门,姓名等信息; - 上下文关联:
有很多日志会存在不一致的地方,比如sftp登录日志中有账号信息,但操作日志中没有账号信息,这个时候需要在操作日志中把登录的账号补全进来,这样才有利于进一步的分析;
推荐阅读
- 斗记红玉斗的身世,今年必看的斗记茶业漫画大事件
- 选购茶饮料 必看茶多酚含量
- Linux 常用运维脚本
- “后浪”日志框架logback的使用和配置文件详解
- 避免被diss,务必记住这些正确打日志的方式
- 定了!驾照记分规则有重大调整,有驾照的必看
- 茶人必看的启蒙课,宋代的茶发展茶叶茶课
- CentOS7下部署滴滴云开源运维监控系统-Nightingale
- java简单日志打印规范小记
- 社保断交麻烦大!税局公布:打工人正确离职指南!上班族必看