Я импортировал файл журнала IIS, и данные были перемещены через Logstash (1.4.2) в ElasticSearch (1.3.1), а затем отображаются в Kibana.
Мой раздел фильтров выглядит следующим образом:
filter {
grok {
match =>
["message" , "%{TIMESTAMP_ISO8601:iisTimestamp} %{IP:serverIP} %{WORD:method} %{URIPATH:uri} - %{NUMBER:port} - %{IP:clientIP} - %{NUMBER:status} %{NUMBER:subStatus} %{NUMBER:win32Status} %{NUMBER:timeTaken}"]
}
}
При использовании панели «Условия» в Kibana и использовании «uri» (одно из моих захваченных полей из Logstash) она сопоставляет токены в URI. Следовательно, это такие элементы, как:
- 'Скрипты'
- '/'
- 'EN
В: Как мне отобразить «Популярные URL-адреса» в их полной форме?
Вопрос: Как сообщить ElasticSearch, что это поле «not_analysed». Я не против иметь 2 поля, например:
- uri - токенизированный URI
- uri.raw - полностью сформированный URL.
Можно ли это сделать на стороне Logstash или это сопоставление, которое необходимо настроить в ElasticSearch?
Отображение выглядит следующим образом:
//http://localhost:9200/iislog-2014.10.09/_mapping?pretty
{
"iislog-2014.10.09" : {
"mappings" : {
"iislogs" : {
"properties" : {
"@timestamp" : {
"type" : "date",
"format" : "dateOptionalTime"
},
"@version" : {
"type" : "string"
},
"clientIP" : {
"type" : "string"
},
"device" : {
"type" : "string"
},
"host" : {
"type" : "string"
},
"id" : {
"type" : "string"
},
"iisTimestamp" : {
"type" : "string"
},
"logFilePath" : {
"type" : "string"
},
"message" : {
"type" : "string"
},
"method" : {
"type" : "string"
},
"name" : {
"type" : "string"
},
"os" : {
"type" : "string"
},
"os_name" : {
"type" : "string"
},
"port" : {
"type" : "string"
},
"serverIP" : {
"type" : "string"
},
"status" : {
"type" : "string"
},
"subStatus" : {
"type" : "string"
},
"tags" : {
"type" : "string"
},
"timeTaken" : {
"type" : "string"
},
"type" : {
"type" : "string"
},
"uri" : {
"type" : "string"
},
"win32Status" : {
"type" : "string"
}
}
}
}
}
}