Chinaunix首页 | 论坛 | 博客
  • 博客访问: 314715
  • 博文数量: 61
  • 博客积分: 365
  • 博客等级: 一等列兵
  • 技术积分: 611
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-04 11:39
文章分类

全部博文(61)

文章存档

2017年(15)

2016年(13)

2015年(19)

2014年(12)

2013年(2)

我的朋友

分类: LINUX

2016-08-24 16:10:29

这个问题,讲多了都是泪,反正我踩过的坑,都要记下来(谁让我是固执的线下日志一族,总是想着法的虐自己)
线上的日志,我个人觉得没有什么大的问题需要改动时间,网上爆得最多的就是相差8小时的问题,其实这也不叫什么问题

我的问题是“kibana上分析的时间是系统当前时间,而不是日志产生的时间”(当然你生产线上的不要拿来探讨,跟当前时间相差无几,除非你有很大延迟或者拥塞),当然我是追求解决问题的方式,就是让日志产生时间,变成kibana分析时间(在分析旧日志相当有效,不然你丫开个10线程,一天分析十天的旧日志,统计一些数据就会出现很大偏差,你会发现,挖槽,日pv几十亿,不得了拉)

扯回来,怎么做:
其实也就是在filter中,和grok并列多加一行date,来处理即可

点击(此处)折叠或打开

  1. input {
  2.     file {
  3.         type => "nginx_access"
  4.         path => ["/data/logs/*.log"]
  5.         start_position => beginning
  6.         ignore_older => 0
  7.     }
  8. }
  9. filter {
  10.     grok {
  11.         match => {
  12.             "message" => "%{IPORHOST:client_ip} (%{USER:ident}|-) (%{USER:auth}|-) \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} (%{NOTSPACE:request}|-)(?: HTTP/%{NUMBER:http_version})?|-)\" (%{NUMBER:response}|-) (?:%{NUMBER:bytes}|-) \"(%{NOTSPACE:referrer}|-)\" (%{QS:agent}|-) \"(%{WORD:x_forword}|-)\"\"(?<upstream_cache_status>\S+)\""
  13.         }
  14.     }
  15.     date {
  16.         match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  17.     }
  18.     geoip {
  19.         source => "client_ip"
  20.     }
  21. }
  22. output {
  23.     elasticsearch {
  24.         hosts => ["172.16.105.153:9200"]
  25.         index => "logstash-nginx-access"
  26.        workers => 2
  27.        flush_size => 1
  28.        idle_flush_time => 1
  29.        template_overwrite => true
  30.    }
  31. }

继续跑起来,你会发现,一切都是你想要的

阅读(11417) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~