使用 GeoIP 信息丰富事件
编辑使用 GeoIP 信息丰富事件
编辑您可以将 Heartbeat 与 Elasticsearch 中的GeoIP 处理器结合使用,根据 IP 地址导出地理位置信息。然后,您可以使用此信息在 Kibana 中的地图上可视化 IP 地址的位置。
geoip
处理器根据 Maxmind GeoLite2 City 数据库中的数据添加有关 IP 地址地理位置的信息。由于该处理器使用安装在 Elasticsearch 上的 geoIP 数据库,因此您无需在运行 Heartbeat 的机器上安装 geoIP 数据库。
如果您的用例涉及使用 Logstash,您可以使用 Logstash 中提供的GeoIP 过滤器,而不是使用geoip
处理器。但是,当您不需要 Logstash 的额外处理能力时,使用geoip
处理器是最简单的方法。
配置geoip
处理器
编辑配置 Heartbeat 和geoip
处理器
-
定义一个摄取管道,该管道使用一个或多个
geoip
处理器向事件添加位置信息。例如,您可以使用 Kibana 中的控制台创建以下管道:PUT _ingest/pipeline/geoip-info { "description": "Add geoip info", "processors": [ { "geoip": { "field": "client.ip", "target_field": "client.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "client.ip", "target_field": "client.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "source.ip", "target_field": "source.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "source.ip", "target_field": "source.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "destination.ip", "target_field": "destination.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "destination.ip", "target_field": "destination.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "server.ip", "target_field": "server.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "server.ip", "target_field": "server.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "host.ip", "target_field": "host.geo", "ignore_missing": true } }, { "rename": { "field": "server.as.asn", "target_field": "server.as.number", "ignore_missing": true } }, { "rename": { "field": "server.as.organization_name", "target_field": "server.as.organization.name", "ignore_missing": true } }, { "rename": { "field": "client.as.asn", "target_field": "client.as.number", "ignore_missing": true } }, { "rename": { "field": "client.as.organization_name", "target_field": "client.as.organization.name", "ignore_missing": true } }, { "rename": { "field": "source.as.asn", "target_field": "source.as.number", "ignore_missing": true } }, { "rename": { "field": "source.as.organization_name", "target_field": "source.as.organization.name", "ignore_missing": true } }, { "rename": { "field": "destination.as.asn", "target_field": "destination.as.number", "ignore_missing": true } }, { "rename": { "field": "destination.as.organization_name", "target_field": "destination.as.organization.name", "ignore_missing": true } } ] }
在此示例中,管道 ID 为
geoip-info
。field
指定包含用于地理查找的 IP 地址的字段,target_field
是将保存地理信息的字段。"ignore_missing": true
将管道配置为在遇到没有指定字段的事件时继续处理。有关更多选项,请参见GeoIP 处理器。
要了解有关向事件添加主机信息的更多信息,请参见添加主机元数据。
-
在 Heartbeat 配置文件中,配置 Elasticsearch 输出以使用该管道。在
output.elasticsearch
下的pipeline
选项中指定管道 ID。例如:output.elasticsearch: hosts: ["localhost:9200"] pipeline: geoip-info
-
运行 Heartbeat。如果配置文件由 root 拥有,请记住使用
sudo
。./heartbeat -e
如果查找成功,则会使用
geo_point
字段(例如client.geo.location
和host.geo.location
)丰富事件,您可以使用这些字段填充 Kibana 中的可视化。
如果添加的字段尚未在索引模板中定义为geo_point
,请添加映射,以便正确索引该字段。
可视化位置
编辑要可视化 IP 地址的位置,您可以在 Kibana 中创建一个新的坐标地图,并选择位置字段(例如client.geo.location
或host.geo.location
)作为 Geohash。