我是运行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:
谢谢!
答案 0 :(得分:0)
我明白了。配置是正确的,AFAICT。问题是我根本没有刷新Kibana UI中索引中的字段列表。
管理 - &gt;索引模式 - &gt;刷新字段列表(刷新图标)
完成此操作后,该字段开始出现在可聚合术语列表中,并且我能够创建必要的可视化。