代码之家  ›  专栏  ›  技术社区  ›  Andrew

如何修改logstash.conf以获得所需的字段?

  •  0
  • Andrew  · 技术社区  · 6 年前

    我使用ELK+Filebeat,所有版本都是6.4.3,操作系统是Windows10

    我在filebeat.yml中添加了自定义字段,键名是log_type,log_type的值是nginx access

    enter image description here

    logstash.conf的内容是:

    input {
        beats { 
           host => "0.0.0.0"
           port => "5544"
      } 
    } 
    
    filter {
    
    mutate { 
      rename => { "[host][name]" => "host" } 
    }   
    
    if [fields][log_type] == "nginx-access" {
        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]}\" \"%{DATA:[nginx][access][x_forwarded_for]}\" %{NUMBER:[nginx][access][request_time]}"] }
                }
    
    mutate {
         copy => { "[nginx][access][request_time]" => "[nginx][access][requesttime]" }
      }
    
    mutate {
          convert => {
          "[nginx][access][requesttime]" => "float"
        }
      }
    }
    }
    
    output {
          stdout { 
           codec => rubydebug { metadata => true }
          }
    
          elasticsearch { 
            hosts => ["localhost:9200"] 
          } 
        }
    

    logstash.bat  -f  logstash.conf
    

    输出为:

    enter image description here

    上面红色框中的字段是“requesttime”和“request_time”,我想要的是nginx.access.requesttime和nginx.access.request_time不是requesttime和request_time如何修改logstash.conf以实现我的目标?

    问题2:

    当我使用上面的logstash.conf时,kibana管理界面的字段只是“request_time”字段。

    图为: enter image description here

    如果我希望“nginx.access.requesttime”字段也出现在Kibana管理界面的字段中,我应该如何修改logstash.conf?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Gal S    6 年前

    问题1:

    我相信你要找的是

    mutate {
       copy => { "[nginx][access][request_time]" => "nginx.access.requesttime" }
    }
    

    问题2:

    是否存在关键字由Elasticsearch中的模板字段映射确定。尝试上述选项,查看问题是否已解决。

    This issue in elastic forum 我可以帮你。