不要急,总有办法的

ELK6.2.3 nginx acess日志分析,url部分取不出来

Logstash | 作者 S0Easy | 发布于2018年04月26日 | 阅读数:3178

  grok {
        match => { "message" => ["%{IPORHOST:[nginx][access][remote_ip]} - %{DATA:[nginx][access][user_name]} \[%{HTTPDATE:[nginx][access][time]}\] \"%{WORD:[nginx][access][method]} %{DATA:[nginx][access][url]} HTTP/%{NUMBER:[nginx][access][http_version]}\" %{NUMBER:[nginx][access][response_code]} %{NUMBER:[nginx][access][body_sent][bytes]} \"%{DATA:[nginx][access][referrer]}\" \"%{DATA:[nginx][access][agent]}\""] }
      }
      mutate {
        add_field => { "read_timestamp" => "%{@timestamp}" }
      }
      date {
        match => [ "[nginx][access][time]", "dd/MMM/YYYY:H:m:s Z" ]
        remove_field => "[nginx][access][time]"
      }
      useragent {
        source => "[nginx][access][agent]"
        target => "[nginx][access][user_agent]"
        remove_field => "[nginx][access][agent]"
      }

     kv {
      source => "[nginx][access][url]"
      prefix => "url_"
      value_split => "="
      field_split => "&?"
     }
 

想把[nginx][access][url] 前面的部分 类似 /www/app?testid=110&t=1524478227973的  /www/app这部分取出来. 各种求大神解决啊,差了N多文档  官方文档ruby部分也是简单的很 实在搞不定啊
 
已邀请:

strglee

赞同来自: S0Easy

%{URIPATHPARAM:request}

result:
{
"request": [
[
"/www/app?testid=110&t=1524478227973"
]
],
"URIPATH": [
[
"/www/app"
]
],
"URIPARAM": [
[
"?testid=110&t=1524478227973"
]
]
}

typuc - 80后IT男,乒乓球爱好者

赞同来自:

你nginx 日志格式有问题,nginx 内置两个变量 $request_uri 和$uri ;日志格式中配置上这2个字段,$uri就是你要的。
 

要回复问题请先登录注册