什么是数据解析
数据解析,也称为数据泛化,目的是提取出数据中关键的,有意义的信息,将非结构化或半结构化的数据转换为结构化的数据。通俗来讲,日志数据解析的目的是取数据之精华,去数据之糟粕。
举个例子,下面是linux的登录日志:
May 22 17:13:01 10-9-83-151 sshd[17422]: Accepted password for secisland from 129.74.226.122 port 64485 ssh2
从这个日志中就可以看到很多的信息,比如:
- 登录时间:May 22 17:13:01;
- 主机名:10-9-83-151;
- 进程名:sshd;
- 进程ID:17422;
- 登录用户:secisland;
- 源ip:129.74.226.122;
- 端口:64485;
- 协议:ssh2。
通过上面分析后,把每个字段存储到数据库中,这样日志的信息就很丰富了,为后续的统计分析、关联分析、告警、机器学习等打下了坚实的基础。那么如何把日志解析能力提供出来,就显得尤为重要,目前解析的方式主要有几种:
通过编码实现。直接在代码中处理,编译发布,这种方式对使用者来说最麻烦,因为几乎没有办法进行调整;
通过配置文件或者脚本实现。这种方式解决了用户不能直接调整的问题,相对方便。但写脚本、写配置文件还是复杂,而且这种情况只能登录后台查看,如果文件比较多,调整修改会相当繁琐;下面是截取的开源工具logstash配置文件,复杂程度不言而喻:
通过界面配置的方式实现。在平台页面上直接进行配置,这种方式即灵活又简单,对使用者来说是首选方案。
秒云日志分析系统即采用界面配置方式实现数据解析。前端提供web页面,用户通过鼠标点选,轻松实现数据识别,字段提取,字段转换等需求,后端内置高速解析引擎,实现数据0延时处理。
下面让我们从前端、后端两个视角来看一看秒云日志数据解析功能。
简单灵活的前端配置页面
秒云数据解析只需简单的5步即可完成:选择样本->选择特征->提取字段->字段转换->保存。
1、选择样本
可以通过复制粘贴或者搜索IP、搜索关键字过滤来选择要泛化的日志数据样本。
2、选择特征
特征是用于识别一类日志的关键字,匹配特征的日志将使用当前配置的泛化规则。我们提供鼠标划词的方式选择日志特征。这里我们选择sshd作为该条日志的特征。
2.3 提取字段
同样,通过鼠标划词点选实现关键字段的提取。以提取登录用户名为例:
- 登录时间:May 22 17:13:01;
- 主机名:10-9-83-151;
- 进程名:sshd;
- 进程ID:17422;
- 事件类型:登录(这个是根据内容分析出来的);
- 登录用户:secisland;
- 源ip:129.74.226.122;
- 端口:64485;
- 协议:ssh2。
从样本日志中划词选择“secisland”,给字段命名“登录用户”。
同样的方式,从样本日志中选取“登录时间”、“主机名”、”进程ID”等字段。
完成后,点击下一步,此时选择的字段已经被提取出来,转换为如下的结构化数据。
4、字段转换
如果提取出的字段还不能满足最终的需求,可对提取的字段进行加工,这里的字段加工我们称之为字段转换。字段转换支持:提取KV对、字符串分割、字段重命名、清除首尾字符等。
5、保存
最后点击保存,泛化规则配置完成。
高效并发的后端解析引擎
秒云日志自研解析引擎,设计之初充分考虑性能问题,采用流式处理、批量解析并使用go语言编写。经过测试,单台设备解析引擎处理能力超过100KEPS(而相同环境下logstash的性能不到7KEPS,性能相差近20倍。)。不仅如此,解析引擎支持横向扩展,启动多实例引擎即可线性提升数据处理能力。高性能、多进程并发,能够轻松应对海量数据实时处理的场景。
总结
秒云日志分析系统提供引导式的界面配置方式,帮助用户从繁杂的数据中提取出有用的信息,提取的过程即灵活又简单。后端数据处理层面,有了数据解析引擎加持,即使面对海量、高速数据流,亦可满足实时性的苛刻要求,做到0延时处理。简单、灵活、高效---这就是秒云日志数据解