我已导入 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"
}
}
}
}
}
}