日志解析同步工具

来自海致BDP帮助中心、帮助文档
跳转至: 导航搜索

日志小程序简介

互联网服务器以及设备每天都会产生大量的日志文件,这些日志文件一般是非结构化的,如果直接拿来进行统计和分析是不现实的。为了解决这个问题,使得日志文件能在BDP进行统计和分析,BDP推出了日志小程序beta版,可以实现对日志文件的解析处理和同步到BDP,为了更容易的使用日志小程序,日志小程序内置了nginx,csv,apache的解析规则,可以直接拿来使用。

日志小程序使用介绍

部署环境以及面向的用户人群

日志小程序目前只支持Linux操作系统,部署在想要分析的日志的服务器上。面向的使用人群主要是运维或是技术人员,需要对日志以及日志解析相关内容有一定的了解。

日志小程序获取和安装

点击可以直接下载#日志小程序,下载完成后,执行解压命令unzip,将安装包解压,即可完成安装,在解压目录下会有lognoah,lognoah即是我们的日志小程序。

日志小程序处理流程

日志小程序部署在生产日志的服务器上,会自动将日志解析成结构化数据,并且将解析后的的数据自动同步到BDP。如果需要去解析和同步多种类型的日志文件时,日志小程序引入了agent的概念,一个agent对应一种类型的日志。现在日志小程序还是beta版,只支持通过命令行来进行使用。

日志1.png

日志2.png

日志小程序使用命令

查看日志小程序相关的运行状态

  • 启动服务: ./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    

添加/查看/启动/停止agent命令说明

 ./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.