Ich bin neu, den ELK-Stapel zu laufen. Ich habe Logstash konfiguriert, um mein Webapp-Log in Elasticsearch einzubinden. Ich versuche eine Visualisierung in Kibana einzurichten, die die Anzahl der eindeutigen Benutzer anzeigt, die durch das Feld user_email
angegeben werden, das aus bestimmten Protokollzeilen herausgefiltert wird.Wie kann ich ein benutzerdefiniertes Feld so konfigurieren, dass es in Kibana aggregierbar ist?
Ich bin ziemlich sicher, dass ich die Unique Count-Aggregation verwenden möchte, aber ich kann nicht scheinen, Kibana user_email
in die Liste der Felder aufzunehmen, die ich aggregieren kann.
Hier ist meine Logstash Konfiguration:
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
}
}
ist hier die entsprechende Abbildung in 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
}
}
}
}
}
}
}
}
}
Kann mir jemand sagen, was ich fehle?
BTW, ich bin mit CentOS mit den folgenden Versionen:
- Elasticsearch Version: 6.0.0, Build: 8f0685b/2017-11-10T18: 41: 22.859Z, JVM: 1.8.0_151
- Logstash v.6.0.0
- Kibana v.6.0.0
Dank!