Check out Custom Cluster Map Visualization for a similar visualization for the latest version of Splunk.
This app is licensed under the terms of the Creative Commons license and provided as-is without any warranty. It uses thrird-party components that are licensed differently:
The App provides a flashtimeline-like view which allows you to simply enter a search and display the results on the map. In order to plot search results on the map they have to have some kind of location information attached. This location information has to be included in a field with the name _geo and has to be formatted as "<latitude>,<longitude>". Latitude and Longitude have to be expressed as floating point numbers. As an example "47.11,0.815" would be a valid _geo value. Other notations (like 47°12',...) are not supported.
In most cases you don't have to build the _geo field yourself. The built-in geolocation lookup methods (geoip command and geo lookup) are emitting this field by default. In cases where you already have geolocation information in your results, you can leverage the geonormalize command to build the _geo value for you.
External IP address values can be easily translated to locations by using the built-in geoip command or the geo lookup.
Perform a geolocation lookup for values of the clientip field in access_combined events:
sourcetype=access_combined | geoip clientip
Same as the previous example, but also perform DNS lookups in case when the value of the clientip field is a hostname and not an IP:
sourcetype=access_combined | geoip clientip resolve_hostnames=true
Same as the first example, but using the geo lookup instead of the command
sourcetype=access_combined | lookup geo ip as clientip
In order to perform geolocation lookup on private IP address ranges you have to implement a lookup yourself. Splunk provides multiple ways to achieve this:
Lookups for external and interal IP addresses can be easily combined.
Examples:
sourcetype=access_combined clientip=*
| lookup geoip_internal ip as clientip
| geoip clientip
sourcetype=access_combined clientip=*
| lookup example_geo_internal ip as clientip
| lookup geo ip as clientip OUTPUTNEW _geo geo_info
It's common case that events already contain geo information.
The geonormalize command can detect existing fields containing the geoinformation and normalizes them for the GoogleMaps module. For doing this the command searches for field pairs (a latitude field and a longitude field) matching a name scheme. The values of those fields are then merged and emitted as the _geo field. The following name schemes are supported:
*lat/*lng
*lat/*lon
*latitude/*longitude
So for example when an event has the fields gps_lat=47.11
and gps_lon=0.815
the geonormalize command will detect those fields and emit the _geo field with the value 47.11,0.815
.
Example:
sourcetype=device_tracking device_id=A47C08B13 | geonormalize
If you don't want to use the geonormalize command or if the location fields do not match any naming scheme, you can manually build the _geo field.
Example:
eventtype=phone_activation | eval _geo=phone_loc_1+","+phone_loc_2
(Assuming that phone_loc_1 contains the latitude and phone_loc_2 contains the longitude)
This add-on provides a Splunk UI module called GoogleMaps
. This module can only be using in advanced XML dashboards. The usage of the module is quite similar to any built-in module in Splunk which displays results (like SimpleResultsTable, EventsViewer, etc.).
Example:
<module name="HiddenSearch" layoutPanel="panel_row1_col1" autoRun="true">
<param name="search">sourcetype=access_combined | geoip clientip</param>
<param name="earliest">-24h@h</param>
<module name="GoogleMaps">
<param name="height">500px</param>
<param name="mapType">roadmap</param>
<param name="scrollwheel">off</param>
</module>
</module>
All available options to the module can be found at the module reference at your Splunk instance at http://localhost:8000/modules#Splunk.Module.GoogleMaps
Fixed a problem with distributed search (thanks Anirban)
Updated to latest Maxmind geolite database
Fixed setup rest endpoint
Fixed issue with chrome not loading the API when SSL is enabled
Internal changes
The module now uses the _geo field instead of the _lat and _lng fields to resolve the location. The geoip and the geonormalize command are now emitting this field. It contains the combined latitude/longitude information in the form <lat>,<lng> (eg. 47.11,0.815).
Geolocation Lookup
The geolocation lookup now uses the Maxmind GeoLite City database. The geoip command is now emitting different fields:
<field>_latitude, <field>_longitude, <field>_country_name, <field>_country_code, <field>_region_name, <field>_city, and the _geo field
UI Changes
Drilldown
Google Maps Version 1.0.1
As a Splunkbase app developer, you will have access to all Splunk development resources and receive a 10GB license to build an app that will help solve use cases for customers all over the world. Splunkbase has 1000+ apps from Splunk, our partners and our community. Find an app for most any data source and user need, or simply create your own with help from our developer portal.