elk原理看一下,应该可以理解。
从框架整体性看,主要有三步:
1.日志收集
2.日志存储
3.日志查询展示
日志收集,在业务系统产生操作日志或者业务日志时,通过主动发送或者被动收集的方式获取分布式系统的日志,之后日志通过特定的过滤,转化,等等,发送到日志存储系统。这个环节涉及一些组件或者工具,比如elk中的 kafka.flume,或者更轻的工具。
日志存储,通过日志收集组件获取的数据进行物理存储,可以是最简单的关系型数据库,也可是es,或者大数据相关的hdfs等
日志查询显示,这个取决于你获取日志的目的,有的是统计用户行为,有的是技术人员排查问题,目的不同展示形式也不同。同时,底层存储形式不是,上层展示组件选择也不同。
大体上,就是这样的的,其实涉及很多细节问题,日志格式,过滤条件,转换形式等等。
搭建过一套日志采集系统。无非就是3点,日志采集,存储,展示。
当初用到的组件分别是
1. filebeat (主动采集日志的组件,使用时只需要在服务器上配置好日志路径即可主动采集。至于发送到哪里去,同样是配置文件中配置)
2. logstash (处理日志格式的组件,在配置文件中以正则的形式去匹配filebeat发送过来的日志信息,处理完成后继续向后面的组件发送)
3. elstaicsearch (存储logstash过来整理好的日志,配置文件中可以配置与可视化组件共联) 4. kibana (图形可视化组件,开启后,有个默认网页,操作网页可以读取es的数据,还可以把数据作图可视化)
以上就是现在常提到的 elk 三件套,这四个组件都是一个团队开源的,所以在互动性上非常友好,有的组件还可以安装不同的插件。比如安全性的x-pack等。