如何在Kibana,Logstash和ElasticSearch中使用IP地址显示世界地图中的计数?

时间:2014-08-07 15:41:19

标签: elasticsearch logstash kibana

我想显示使用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
    }
}

1 个答案:

答案 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地图中添加它。

然后,您应该可以在应用中看到有关世界不同国家的流量!

再见