日志解析同步工具
日志小程序简介
互联网服务器以及设备每天都会产生大量的日志文件,这些日志文件一般是非结构化的,如果直接拿来进行统计和分析是不现实的。为了解决这个问题,使得日志文件能在BDP进行统计和分析,BDP推出了日志小程序beta版,可以实现对日志文件的解析处理和同步到BDP,为了更容易的使用日志小程序,日志小程序内置了nginx,csv,apache的解析规则,可以直接拿来使用。
日志小程序使用介绍
部署环境以及面向的用户人群
日志小程序目前只支持Linux操作系统,部署在想要分析的日志的服务器上。面向的使用人群主要是运维或是技术人员,需要对日志以及日志解析相关内容有一定的了解。
日志小程序获取和安装
点击可以直接下载#日志小程序,下载完成后,执行解压命令unzip,将安装包解压,即可完成安装,在解压目录下会有lognoah,lognoah即是我们的日志小程序。
日志小程序处理流程
日志小程序部署在生产日志的服务器上,会自动将日志解析成结构化数据,并且将解析后的的数据自动同步到BDP。如果需要去解析和同步多种类型的日志文件时,日志小程序引入了agent的概念,一个agent对应一种类型的日志。现在日志小程序还是beta版,只支持通过命令行来进行使用。
日志小程序使用命令
查看日志小程序相关的运行状态- 启动服务: ./lognoah start
- 停止服务: ./lognoah stop
- 查看服务最近状态: ./lognoah status
./lognoah
使用规则: lognoah [OPTIONS] COMMAND [ARGS]...
对应的Options:
-V, --version Show the version and exit.
-h, --help Show this message and exit.查看使用命令帮助
对应的Commands:
添加/查看/启动/停止agent: agent
查看/编辑规则:rule
启动服务:start
服务状态:status
停止服务:stop
./lognoah agent
使用规则: lognoah agent [OPTIONS] COMMAND [ARGS]
对应的Options:
-h, --help Show this message and exit.查看使用命令帮助。
对应的Commands:
添加数据解析agent:add
列出全部解析agent:list
启动agent:start
停止agent:stop
所有的日志解析规则都会附在rule文件中,如果有新的解析规则直接在rule文件中进行添加。初始的rule文件中会自带nginx,csv和apache的日志解析规则,可直接拿来进行使用。
./lognoah rule
使用规则: lognoah rule [OPTIONS] COMMAND [ARGS]...
Options:
-h, --help Show this message and exit.
Commands:
编写规则:edit
查看规则库:list
首先以一个nginx日志解析规则的demo进行说明:
[nginx] #指定日志解析规则模块,包含完整的nginx日志解析规则
type#regex #指定下面的解析类型为正则
rule#(?P<remote_addr>(((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))) (?P<mark>.*?) (?P<remote_user>.*?) \[(?P<time_local>\d{2}/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/\d{4}:\d{2}:\d{2}:\d{2} \+\d{4})\] "(?P<request>(?P<method>(OPTIONS|HEAD|GET|POST|PUT|DELETE|TRACE|CONNECT)) (?P<path>.*?) (?P<version>.*?)|.*?)" (?P<status>\d+?) (?P<body_bytes_sent>.*?) "(?P<http_referer>.*?)" "(?P<http_user_agent>.*?)" #设置具体的正则匹配规则
fields#{"status": "status", "remote_user": "remote_user", "http_referer": "http_referer", "remote_addr": "remote_addr", "request": "request", "version": "version", "http_user_agent": "http_user_agent", "path": "path", "method": "method"} #设置表字段名,通过字典来映射
subrules#{"body_bytes_sent": "nginx_bytes_sent", "time_local": "nginx_time"} #设置子规则
[nginx_bytes_sent] #制定日志解析下的子规则,将此字段类型设置为数值
type#type
rule#number #指定字段类型
fields#{"body_bytes_sent": "0"}
[nginx_time] #指定日志解析下的子规则,将此字段类型设置为日期
type#type
rule#date #指定字段类型
fields#{"time_local": "0"}
然后下面这个是csv解析的demo:
[csv_module] #指定日志解析规则模块,包含完整的csv解析规则
type#csv #指定下面解析类型为csv
rule#{"delimiter":",", "quotechar":"\""} #设置解析规则,设置分隔符和引用。delimiter参数是设置分隔符,quotechar参数是设置引用符
fields#["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] #设置表字段名,通过位置来映射
具体的语法规则说明:
1、在rule中新增一种解析规则,以[xxx]为开头;
2、设置type的类型,目前type支持regex,form,split,type,kv,csv,encode,decode。分别代表的含义如下:
regex主要用于使用正则来解析字符,目前只支持python标准。
form主要应用于类似于表格的日志,比如日志的形式是[xxx],[xxxxx],.....,使用例子:type#form,rule#{"opener": "[", "closer": "]"}。
split主要用于切分字符,使用例子:type#split,rule#{"separator": ","},表示是通过","来进行隔开,类似于分隔符。
type用于转化类型,可以转化为日期,数值,文本类型,使用例子:type#type,rule#number。
kv用于处理key:vlaue形式的日志,使用例子:type#kv,rule#{"separator": "&", "linker": "#"},separator表示分隔符,linker表示连接符;
csv用于解析csv类型,可以通过指定分隔符来解析csv。
encode用于编码,支持GBK,UTF-8,urlquote等多种编码,使用例子:type#encode,rule#GBK。
decode用于解码,支持GBK,UTF-8,urlquote等多种解码,使用例子:type#decode,rule#GBK。
3、如果通过一种规则解析不了,或是需要多次才能处理的,可以通过设置子规则来进行解决。
添加数据源,数据表以及设置agent命令操作比如要把解析后的日志文件同步到BDP的日志数据源下的日志数据表
./lognoah agent add --path /var/log/nginx/access.log --name test --rule nginx --token XXXXXXXX --ds_name 日志数据源 --tb_name 日志数据表
path参数设置的日志的路径,这里可以使用通配符,设置通配符后,匹配的日志都会自动解析和增量同步到BDP。
rule参数指定的是解析这类日志的规则
name参数指定的是这个agent的名字,方便查看,开启和关闭对应的agent
token是BDP账号的token,可以直接在开发者中心获取到
ds_name是将解析后的日志数据同步到BDP的哪个数据源下,如果不存在,会自动创建
tb_name是将解析后的日志数据同步到BDP的哪个工作表下,如果不存在,会自动创建
设置同步频次
在启动日志小程序的时候可以通过设置同步频次,默认同步频次是6小时。目前最高支持的同步频次是小时级。如果用户想要测试解析后的结构化数据是否符合预期,可在本地通过test命令来查看,如果想要在BDP工作表处进行查看,可通过commit命令来进行查看。
启动设置同步频次命令说明
./lognoah start --help
Usage: lognoah start [OPTIONS]
Options:
--hours INTEGER 提交数据时间间隔, 单位: 时
--minite INTEGER 提交数据分针
-h, --help Show this message and exit.
通过commit命令提交数据,在BDP预览解析后的数据
./lognoah agent commit --help
Usage: lognoah agent commit [OPTIONS]
Options:
--name TEXT 名称
-h, --help Show this message and exit.