关键词:
【中文标题】解析 Nginx 日志时的 Logstash _grokparsefailure【英文标题】:Logstash _grokparsefailure when parsing Nginx logs 【发布时间】:2017-07-07 14:52:10 【问题描述】:我正在尝试使用 Logstash 解析 nginx 日志,一切看起来都很好,除了使用包含 Nginx $remote_user 的行获取此 _grokparsefailure
标记。当 $remote_user 为 '-'(未指定 $remote_user 时的默认值)时,Logstash 会完成这项工作,但使用像 user@gmail.com
这样的真正 $remote_user 会失败并放置一个 _grokparsefailure
标签:
127.0.0.1 - - [17/Feb/2017:23:14:08 +0100] "GET /favicon.ico HTTP/1.1" 302 169 "http://training-hub.tn/trainer/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, 像 Gecko) Chrome/56.0.2924.87 Safari/537.36"
=====> 工作正常
127.0.0.1 - jemlifathi@gmail.com [17/Feb/2017:23:14:07 +0100] “GET /trainer/templates/home.tmpl.html HTTP/1.1”304 0 "http://training-hub.tn/trainer/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36(KHTML,像 Gecko)Chrome/56.0.2924.87 Safari/537.36"
=====>_grokparsefailure
标签和解析日志行失败
我正在使用这个配置文件:
input
file
path => "/home/dev/node/training-hub/logs/access_log"
start_position => "beginning"
sincedb_path => "/dev/null"
ignore_older => 0
type => "logs"
filter
if[type] == "logs"
mutate
gsub => ["message", "::ffff:", ""]
grok
match=> [
"message" , "%COMBINEDAPACHELOG+%GREEDYDATA:extra_fields",
"message" , "%COMMONAPACHELOG+%GREEDYDATA:extra_fields"
]
overwrite=> [ "message" ]
mutate
convert=> ["response", "integer"]
convert=> ["bytes", "integer"]
convert=> ["responsetime", "float"]
geoip
source => "clientip"
target => "geoip"
database => "/etc/logstash/GeoLite2-City.mmdb"
add_field => [ "[geoip][coordinates]", "%[geoip][longitude]" ]
add_field => [ "[geoip][coordinates]", "%[geoip][latitude]" ]
mutate
convert => [ "[geoip][coordinates]", "float"]
date
match=> [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
remove_field=> [ "timestamp" ]
useragent
source=> "agent"
output elasticsearch hosts => "localhost:9200"
【问题讨论】:
【参考方案1】:在使用许多值测试输出后,我意识到 Logstash 无法解析包含此类 $remote_user
的日志行,因为它不是有效的用户名(电子邮件地址),所以我添加了一个 mutate gsub
过滤器以删除 @并且邮件地址的其余部分具有有效的$remote_user
。
gsub => ["消息", "@(?:(?:a-z0-9?.)+a-z0-9?|[(?:(?:25[0-5]|2[0-4][0-9]| [01]?[0-9][0-9]?).)3(?:25[0-5]|2[0-4][0-9]|[01]?[0- 9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\ x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)]) [", " ["]
现在,它工作正常
【讨论】:
logstash2.2以上版本,nginx错误日志切割
网上nginx错误日期切分的版本各式各样,能用的没几个,踩过很多坑,特意记录下:if[type]=="xx_app_nginx_error_log"{grok{patterns_dir=>"/etc/logstash/conf.d/patterns"match=>{"message"=>"%{NGINXERROR_1}"}}mutate{#避免日期报错gs 查看详情
在fluentd中解析nginx入口日志
...】:我想在Kubernetes中使用fluentd解析入口nginx日志。这在Logstash中很容易,但我对流畅的语法感到困惑。现在我有以下规则:<source>typetailpath/var/log/containers/*.logpos_fil 查看详情
elasticsearch-logstash-kibana(三)配置优化
...,nginx日志格式往往使用的是自定义的格式,我们需要把logstash中的message结构化后再存储,方便kibana的搜索和统计,因此需要对message进行解析。本文采用grok过滤器,使用match正则表达式解析,根据自己的log_format定制。nginx日志格... 查看详情
logstash解析日志实例
配置Filebeat输出到LogstashLogstash中配置Filebeat输入使用GrokFilter插件解析日志使用Geoip插件丰富数据将数据索引到Elasticsearch多个输入输出插件配置介绍来自为知笔记(Wiz) 查看详情
logstash语法常用案例解析
摘要此篇主要讲Filter插件,已经对nginx日志的各种处理实例接着上篇继续说插件1,Filter插件Grok:正则捕获Date:时间处理Mutate:数据修改Geoip:查询归类JSON:编解码Grok:解析和结构化任何文本。http://grokdebug.herokuapp.com/patterns# ... 查看详情
logstash解析系统的messages日志(代码片段)
logstash解析系统日志的写法,output中的stdout为调试,生产可以移除inputredishost=>"192.168.1.181"port=>6379db=>"0"data_type=>"list"key=>"815"filtergrokmatch=>"message"=>"%SYSLOGLINE"mutaterem 查看详情
elk之logstash系统日志和nginx日志收集-4(代码片段)
logstash常用参数 1path 是必须的选项,每一个file配置,都至少有一个path 2exclude 是不想监听的文件,logstash会自动忽略该文件的监听。配置的规则与path类似,支持字符串或者数组,但是要求必须是绝对路径。 3start_... 查看详情
logstash的过滤插件及其应用
一、Logstash的过滤插件数据从源传输到存储库的过程中,Logstash过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便进行更强大的分析和实现商业价值。Logstash能够动态地转换和解析数据,不... 查看详情
logstash5.4.1解析日志报错处理
下载最新的logstash5.4.1打开把之前的配置文件加入进去,启动logstash提示报错了,未使用geoip插件的配置文件正常启动。按照提示发现是maxmind的数据库解析出错,重新至maxmind(http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz)... 查看详情
sqlserver压缩数据库日志文件的方法解析
SqlServer日志_log.ldf文件太大,数据库文件有500g,日志文件也达到了500g,占用磁盘空间过大,且可能影响程序性能,需要压缩日志文件,下面小编给大家讲解下SqlServer压缩数据库日志文件的方法,感兴趣的朋友一起看看吧SqlServer日志... 查看详情
Logstash 应该只记录 grok 解析的消息
】Logstash应该只记录grok解析的消息【英文标题】:Logstashshouldlogonlygrokparsedmessages【发布时间】:2017-01-1609:54:07【问题描述】:目前我有一个ELK堆栈,其中的日志由filebeat传送,在logstash中的一些过滤器之后,它被转发到ES。由于有... 查看详情
elk日志平台之logstash
一、ELKStack简介Elstaicsearch:存储和搜索logstash:收集kibana:展示650)this.width=650;"src="http://s2.51cto.com/wyfs02/M02/86/A1/wKioL1fGN-_z8_S3AABPgVmad_U461.jpg-wh_500x0-wm_3-wmp_4-s_606178705.jpg"title="QQ图片20160 查看详情
centos7安装logstash(代码片段)
CentOS7安装LogstashLogstash工作原理安装Logstash下载解压修改配置文件验证配置文件设置数据源日志输出启动Logstash输出日志到ElasticsearchLogstash收集Nginx日志验证配置文件配置Nginx日志启动LogstashLogstash工作原理Logstash使用管道方式进行... 查看详情
使用 Grok for Logstash 解析 Apache2 错误日志
】使用GrokforLogstash解析Apache2错误日志【英文标题】:ParseApache2ErrorlogswithGrokforLogstash【发布时间】:2013-06-2406:32:12【问题描述】:我正在尝试解析我的apache2错误日志,但遇到了一些麻烦。它似乎与过滤器不匹配。我很确定时间戳... 查看详情
logstash切割日志,分隔符是中文逗号解析不了怎么办?
logstash切割日志,分隔符是中文逗号解析不了怎么办?参考技术A通常日志管理是逐渐崩溃的——当日志对于人们最重要的时候,也就是出现问题的时候,这个渐进的过程就开始了。日志管理一般会经历一下3个阶段:初级管理员将... 查看详情
logstash笔记-----grok插件的正则表达式来解析日志
(一)简介: 丰富的过滤器插件的存在是logstash威力如此强大的重要因素。名为过滤器,其实提供的不单单是过滤的功能,它们扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的logs... 查看详情
elk深度解析
上面的两张图是elk的一个架构下面是对logstash分析:如下图可以看出 logstash的一个角色shipper,(是通过配置文件来决定logstash是shipper还是indexer)注意:logstash共有两个角色一个是shipper,另一个是indexershipper:是日志收集者。负责监控... 查看详情
logstash:日志解析的grok模式示例(代码片段)
...和分析工具中解析日志数据。在这里查看我的Grok教程“Logstash:Grokfilter入门”。但是用Grok解析日志可能会很棘手。本博客将研究一些Grok模式示例,这些示例可以帮助你了解如何解析日志数据。什么是grok?最初的术语实际... 查看详情