如何在Kibana中配置自定义字段以进行聚合?

时间:2017-12-15 22:16:36

标签: elasticsearch logstash visualization kibana elastic-stack

我是运行ELK堆栈的新手。我已将Logstash配置为将我的webapp日志提供给Elasticsearch。我正在尝试在Kibana中设置一个可视化,它将显示由user_email字段给出的唯一用户数,该字段是从某些日志行中解析出来的。

我很确定我想要使用唯一计数聚合,但我似乎无法让Kibana在我可以汇总的字段列表中包含user_email

这是我的Logstash配置:

filter {
  if [type] == "wl-proxy-log" {
    grok {
      match => {
        "message" => [
          "(?<syslog_datetime>%{SYSLOGTIMESTAMP}\s+%{YEAR})\s+<%{INT:session_id}>\s+%{DATA:log_message}\s+license=%{WORD:license}\&user=(?<user_email>%{USERNAME}\@%{URIHOST})\&files=%{WORD:files}",
        ]
      }
      break_on_match => true
    }
    date {
      match => [ "syslog_datetime", "MMM dd HH:mm:ss yyyy", "MMM  d HH:mm:ss yyyy" ]
      target => "@timestamp"
      locale => "en_US"
      timezone => "America/Los_Angeles"
    }
    kv {
      source => "uri_params"
      field_split => "&?"
    }
  }
}

output {
  elasticsearch {
    ssl => false
    index => "wl-proxy"
    manage_template => false
  }
}

以下是Elasticsearch中的相关映射:

{
  "wl-proxy" : {
    "mappings" : {
      "wl-proxy-log" : {
        "user_email" : {
          "full_name" : "user_email",
          "mapping" : {
            "user_email" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        }
      }
    }
  }
}

有谁能告诉我我错过了什么?

BTW,我使用以下版本运行CentOS:

  • Elasticsearch版本:6.0.0,版本:8f0685b / 2017-11-10T18:41:22.859Z,JVM:1.8.0_151
  • Logstash v.6.0.0
  • Kibana v.6.0.0

谢谢!

1 个答案:

答案 0 :(得分:0)

我明白了。配置是正确的,AFAICT。问题是我根本没有刷新Kibana UI中索引中的字段列表。

管理 - &gt;索引模式 - &gt;刷新字段列表(刷新图标)

完成此操作后,该字段开始出现在可聚合术语列表中,并且我能够创建必要的可视化。