Configure network map data
Elastic Cloud Serverless projects are autoscaled environments, fully managed by Elastic and available on Elastic Cloud. Availability This functionality is generally available and ready for production usage. The Elastic Stack includes Elastic's core products such as Elasticsearch, Kibana, Logstash, and Beats. Availability This functionality is generally available and ready for production usage. Unless stated otherwise on the page, this functionality is available when your Elastic Stack is deployed on Elastic Cloud Hosted, Elastic Cloud Enterprise, Elastic Cloud on Kubernetes, and self-managed environments. This documentation corresponds to the latest patch available for each minor version. If you're not using the latest patch, check the release notes for changes.
Serverless Security
Generally available
Stack
Generally available
Depending on your Kibana setup, to display and interact with data on the Network page’s map you might need to:
To see source and destination connections lines on the map, you must configure source.geo and destination.geo ECS fields for your indices.
To view the map in Elastic Stack, you need a role with at least Read privileges for the Maps feature. In serverless, you need the appropriate predefined user role or a custom role with at least Read privileges for the Maps feature.
To display map data, you must define a Kibana data view that includes one or more of the indices specified in the securitysolution:defaultIndex field. To view those indices, find Stack Management in the navigation menu or by using the global search field, then go to Advanced Settings → securitysolution:defaultIndex.
For example, to display data that is stored in indices matching the index pattern servers-europe-* on the map, you must use a Kibana data view whose index pattern matches servers-europe-*, such as servers-*.
When the ECS source.geo.location and destination.geo.location fields are mapped, network data is displayed on the map.
If you use Beats, configure a geoIP processor to add data to the relevant fields:
Define an ingest node pipeline that uses one or more
geoIPprocessors to add location information to events. For example, use the Console in Kibana to create the following pipeline:JSON PUT _ingest/pipeline/geoip-info{ "description": "Add geoip info", "processors": [ { "geoip": { "field": "client.ip", "target_field": "client.geo", "ignore_missing": true } }, { "geoip": { "field": "source.ip", "target_field": "source.geo", "ignore_missing": true } }, { "geoip": { "field": "destination.ip", "target_field": "destination.geo", "ignore_missing": true } }, { "geoip": { "field": "server.ip", "target_field": "server.geo", "ignore_missing": true } }, { "geoip": { "field": "host.ip", "target_field": "host.geo", "ignore_missing": true } } ] }In this example, the pipeline ID is
geoip-info.fieldspecifies the field that contains the IP address to use for the geographical lookup, andtarget_fieldis the field that will hold the geographical information."ignore_missing": trueconfigures the pipeline to continue processing when it encounters an event that doesn’t have the specified field.TipAn example ingest pipeline that uses the GeoLite2-ASN.mmdb database to add autonomous system number (ASN) fields can be found here.
In your Beats configuration files, add the pipeline to the
output.elasticsearchtag:YAML output.elasticsearch: hosts: ["localhost:9200"] pipeline: geoip-info- The value of this field must be the same as the ingest pipeline name in step 1 (
geoip-infoin this example).
- The value of this field must be the same as the ingest pipeline name in step 1 (
If you want to add your network’s internal IP addresses to the map, define geo location fields under the processors tag in the Beats configuration files on your hosts:
processors:
- add_host_metadata:
- add_cloud_metadata: ~
- add_fields:
when.network.source.ip: <private/IP address>
fields:
source.geo.location:
lat: <latitude coordinate>
lon: <longitude coordinate>
target: ''
- add_fields:
when.network.destination.ip: <private/IP address>
fields:
destination.geo.location:
lat: <latitude coordinate>
lon: <longitude coordinate>
target: ''
- For the IP address, you can use either
privateor CIDR notation.
You can also enrich your data with other host fields.