我已导入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中的标记。因此匹配项目如下:
问:如何显示'热门网址'他们的完整形式?
问:如何通知ElasticSearch该字段未被分析'。我不介意有两个字段,例如:
这可以在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"
}
}
}
}
}
}
答案 0 :(得分:1)
在您的Elasticsearch映射中:
url: {
type: "string",
index: "not_analyzed"
}
答案 1 :(得分:0)
问题是iislog-
不符合logstash-
格式,因此没有选择模板:
我的索引格式为iislog-YYYY.MM.dd
,这并没有使用Logstash的开箱即用映射。使用logstash-
索引格式时,Logstash将为字符串创建2对字段。例如uri
是:
uri
(出现在Kibana)uri.raw
(不会出现在Kibana中)请注意,uri.raw
不会出现在Kibana中 - 但它是可查询的。
因此,使用替代指数的解决方案是:
logstash-%{+YYYY.MM.dd}
在file
输入中添加“type”,以帮助您过滤Kibana中的正确日志(使用logstash-
索引格式时)
input {
file {
type => "iislog"
....
}
}
OR
如果您确实 确实需要不同的索引格式:
iislog-template.json
在output ==> elasticsearch
中引用配置文件,如下所示:
output {
elasticsearch_http {
host => localhost
template_name => "iislog-template.json"
template => "<path to template>"
index => "iislog-%{+YYYY.MM.dd}"
}
}