文档章节

使用mmnormalize解析nginx-error日志

MrYx3en
 MrYx3en
发布于 2015/11/04 14:43
字数 539
阅读 106
收藏 0

liblognorma:   Welcome to Liblognorm!

nginxerr.rulebase :

$ [root@10.10.10.254 test]# cat nginxerr.rulebase 
rule=A: %date:char-to:\x20% %time:time-24hr% [%level:char-to:\x5D%] %f1:char-to::%: %f2:char-to:\x20% %errmsg:char-to:,%, client: %client:ipv4%, server: %server:rest%"

#B和C不能同时存在一个rulebase文件中,否则会导致误解析。
rule=B: %date:char-to:\x20% %time:time-24hr% [%level:char-to:\x5D%] %f1:char-to::%: %f2:char-to:\x20% %errmsg:char-to:,%, client: %client:ipv4%, server: %server:char-to:,%, request: "%verb:word% %urlpath:char-to:\x3F%?%urlparam:char-to:\x20% HTTP/%httpversion:char-to:\x22%", upstream: %upstream:char-to:,%, host: %host:rest%

rule=C: %date:char-to:\x20% %time:time-24hr% [%level:char-to:\x5D%] %f1:char-to::%: %f2:char-to:\x20% %errmsg:char-to:,%, client: %client:ipv4%, server: %server:char-to:,%, request: "%verb:word% %urlpath:char-to:\x20% HTTP/%httpversion:char-to:\x22%", upstream: %upstream:char-to:\x2C%, host: %host:rest%

rule=D: %date:char-to:\x20% %time:time-24hr% [%level:char-to:\x5D%] %f1:char-to::%: %f2:char-to:\x20% %errmsg:char-to:,%, client: %client:ipv4%, server: %server:char-to:,%, request: "%verb:word% %urlpath:char-to:\x3F%?%urlparam:char-to:\x20% HTTP/%httpversion:char-to:\x22%", host: %host:rest%

rule=F: %errmsg:rest%

\\

liblognormalizer命令解析:

$ lognormalizer -r nginxerr.rulebase -e json -T < test0.log > normalized.log

\\

解析后的格式(Json):

$ [root@10.10.10.254 test]# head -n 3 normalized.log 
{ "host": "\"api.weibo.cn\"", "httpversion": "1.1", "urlparam": "gsid=_2A257MJvbDeTxGeRG4loS9yrEzj-IHXVWZ6gTrDV6PUJbrdANLWT1kWpTgI6SCDQQPwBgknJMn2cCApowHA..&wm=3333_2001&i=9130105&b=1&from=1055093010&c=iphone&v_p=24&skin=default&v_f=1&s=3c44f071&lang=zh_CN&ua=iPhone8,1__weibo__5.5.0__iphone__os9.0&sflag=1", "urlpath": "\/2\/client\/addlog_batch", "verb": "POST", "server": "api.v5.weibo.cn", "client": "118.189.6.88", "errmsg": "client intended to send too large body: 9742073 bytes", "f2": "*48466998", "f1": "21852#0", "level": "error", "time": "19:45:10", "date": "2015\/11\/01", "event.tags": [ "D" ] }
{ "host": "\"api.weibo.cn\"", "httpversion": "1.1", "urlparam": "gsid=_2A257MZL9DeTxGeRP41MZ8i3MzzuIHXVWZqE1rDV6PENPuNIMGlKVlGgHwPxa1DkwlDmCgLaR9Sntltky&wm=3333_2001&i=1db5f43&b=0&from=1055093010&c=iphone&v_p=24&skin=default&v_f=1&s=2e61a91e&lang=en_US&ua=iPhone7,2__weibo__5.5.0__iphone__os9.1&sflag=1", "urlpath": "\/2\/client\/addlog_batch", "verb": "POST", "server": "api.v5.weibo.cn", "client": "124.213.122.214", "errmsg": "client intended to send too large body: 35119444 bytes", "f2": "*48594758", "f1": "41204#0", "level": "error", "time": "19:50:03", "date": "2015\/11\/01", "event.tags": [ "D" ] }
{ "host": "\"api.weibo.cn\"", "httpversion": "1.1", "urlparam": "gsid=_2A257MKPHDeTxGeRI7VsY9ijIyDmIHXVWZ7APrDV6PUJbrdAKLW_FkWp8DjDOdVlsqU29TOw80hZnkvFfwA..&wm=3333_2001&i=5bb2307&b=1&from=1054093010&c=iphone&v_p=22&skin=default&v_f=1&s=0af1f487&lang=en_US&ua=iPhone7,2__weibo__5.4.0__iphone__os9.1&sflag=1", "urlpath": "\/2\/client\/addlog_batch", "verb": "POST", "server": "api.v5.weibo.cn", "client": "125.34.2.67", "errmsg": "client intended to send too large body: 19501344 bytes", "f2": "*48323317", "f1": "839#0", "level": "error", "time": "19:52:43", "date": "2015\/11\/01", "event.tags": [ "D" ] }

rsyslog配置文件:

$ [root@10.10.10.254 test]# cat nginx-error.conf 
template(name="nginxerrorTemplate" type="list")
{
    constant(value="{\"@timestamp\":\"")    property(name="timereported" dateFormat="rfc3339")
    constant(value="\","\"fromhost\":\"")   property(name="hostname")
    constant(value="\","\"programname\":\"")    property(name="programname")
    constant(value="\",")    property(name="msg" position.from="2")
}
ruleset(name="forwardRulesetlocal7nginxerror")
{
    action(
        type="mmnormalize"
        ruleBase="nginx-error-1.rulebase"
    )
    action(
        type="omfile"
        file=""
        template="nginxerrorTemplate"
    )
}
#request中不包含urlparam
ruleset(name="forwardRulesetlocal7nginxerror-nourlparam")
{
    action(
        type="mmnormalize"
        ruleBase="nginx-error-1.rulebase"
    )
    action(
        type="omfile"
        file=""
        template="nginxerrorTemplate"
    )
}
if ($syslogfacility-text == "local6" and $programname == "nginx-error") then
{
    if ($msg contains ["?"]) then
    {
        call forwardRulesetlocal7nginxerror
    } else {
        call forwardRulesetlocal7nginxerror-nourlparam
    }
}


© 著作权归作者所有

共有 人打赏支持
MrYx3en
粉丝 9
博文 132
码字总数 30598
作品 0
宝鸡
系统管理员
使用goaccess解析nginx日志

由于我指定了安装路径为/usr/local/goaccess 因此运行主程序在该路径的bin目录下,配置文件在etc下 使用方法: 直接解析 在nginx日志目录下运行 /usr/local/goaccess/bin/goaccess -f access...

erichd
2016/08/12
350
0
rsyslog 8.6.0 (v8-stable) 发布

Rsyslog 是一个 syslogd 的多线程增强版。 rsyslog 8.6.0 (v8-stable) 发布,此版本是新发布版本周期的第一个稳定版本。 新版本周期和新模式详情请看这里: http://www.rsyslog.com/rsyslog...

oschina
2014/12/03
499
0
Filebeat收集json格式的nginx日志传给logstash

本文转自:http://blog.joylau.cn/2018/05/08/Filebeat-Nginx/ Filebeat 版本为 5.3.0 之所以使用 beats 家族的 Filebeat 来替代 Logstash 是因为 Logstash 实在太消耗资源了(服务器资源充足...

蓝叶子Sheep
08/22
0
0
nginx配置+虚拟主机+负载均衡+反向代理

nginx启动+控制+配置文件 /usr/local/nginx/nginx #启动 /usr/local/nginx/nginx -s reload #重新加载配置文件,不需重启nginx进程 nginx.conf配置文件详解 nginx的配置文件相比apache,比较...

jalyzjs
2017/09/04
0
0
使用Python解析nginx日志文件

项目的一个需求是解析nginx的日志文件。 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: 其中一条真实记录样例如下: 其中,客户端型号信息用...

_Zhao
08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7安装rsync及两台机器进行文件同步

centos7安装rsync及两台机器进行文件同步 2017年12月21日 11:17:46 码农下的天桥 阅读数:2210 标签: centosrsync同步 更多 个人分类: 后端 所属专栏: 研发模式及运维 版权声明:本文为博...

linjin200
7分钟前
0
0
jpg、jpeg、png... 的区别

jpg、jpeg、png... 的区别 对于做设计这一行的人来说,这几个图片格式是最常用的,也是最常见的,几乎每一天都要与他们打交道。 刚刚入门的新人通常不知道在什么地方如何使用他们或者说如何更...

DemonsI
26分钟前
2
0
白话SpringCloud | 第十章:路由网关(Zuul)进阶:过滤器、异常处理

前言 简单介绍了关于Zuul的一些简单使用以及一些路由规则的简单说明。而对于一个统一网关而言,需要处理各种各类的请求,对不同的url进行拦截,或者对调用服务的异常进行二次处理等等。今天,...

oKong
31分钟前
1
0
Character的static方法

基本类型char的包装类是Character,使用的比较多,大家是比较熟悉的。 我只是觉得里面有很多static方法,平时不怎么用,学习一下怎么实现的,或许日后就用到了。 static int compare(char x,...

woshixin
44分钟前
1
0
正则介绍_sed

10月17日任务 9.4/9.5 sed sed工具 匹配打印 -n 只打印匹配行,不然其他行也会打印出来 p 打印(配合-n使用) [root@centos7 tmp]# sed -n '/root/'p passwd root:x:0:0:root:/root:/bin/ba...

robertt15
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部