我想显示使用ElasicSearch,Kibana和Logstash在世界地图中访问应用程序的用户数量。我很新,所以很难有时间。
以下是我的示例日志:
2014-07-16 21:41:04,254 [main] [] [INFO ] [o.a.c.s.f.ReflectionServiceFactoryBean] - Creating Service {http://com/test/matrix/expense}ExpenseService from class com.test.matrix.expense.ExpenseService
这是我的配置文件:
input {
file{
#log.dir is provided from the application
path => "D:/installDir/log/**/*.log"
start_position=>"beginning"
}
}
filter {
multiline {
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => previous
}
grok {
match => ["message", "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:module}-%{DATA:instance}-%{GREEDYDATA:thread}\] \[%{DATA:user}\] \[%{DATA:severity}\] \[%{JAVACLASS:javaClassName}\] - %{GREEDYDATA:shortmessage}"]
}
date {
match => ["timestamp", "ISO8601"]
}
}
output {
elasticsearch_http {
host => "SAKHAN6440.corp.out.com"
port => 9201
}
}
答案 0 :(得分:1)
首先,您的示例日志中似乎没有用户标识符!为了显示在wordl地图上访问应用程序的用户数量,您需要拥有客户端IP。
一旦你得到它,只需将其添加到你的logstash conf:
geoip {
source => "client_ip"
target => "geoip"
fields => ["country_code2"]
database => "your/path/to/db/GeoIP.dat"
}
其中client_ip是包含IP的字段,GeoIP.dat是从here下载的免费数据库。 这将添加一个geoip.country_code2,您可以在Kibana地图中添加它。
然后,您应该可以在应用中看到有关世界不同国家的流量!
再见