菜单
开源

geoip

注意

Promtail 已被弃用,并将持续长期支持 (LTS) 到 2026 年 2 月 28 日。Promtail 将于 2026 年 3 月 2 日达到生命周期结束 (EOL)。您可以在此处找到迁移资源。

geoip 阶段是一个解析阶段,它读取一个 IP 地址并使用 geoip 字段填充标签集。查找使用 Maxmind 的 GeoIP2 数据库

City 数据库的填充字段

  • geoip_city_name
  • geoip_country_name
  • geoip_continent_name
  • geoip_continent_code
  • geoip_location_latitude
  • geoip_location_longitude
  • geoip_postal_code
  • geoip_timezone
  • geoip_subdivision_name
  • geoip_subdivision_code

ASN(自治系统号)数据库的填充字段

  • geoip_autonomous_system_number
  • geoip_autonomous_system_organization

Schema

yaml
geoip:
  # Path to the Maxmind DB file
  [db: <string>]

  # IP from extracted data to parse.
  [source: <string>]

  # Maxmind DB type. Allowed values are "city", "asn"
  [db_type: <string>]

带有 City 数据库的 GeoIP 示例

对于给定的处理管道

yaml
- regex:
    expression: "^(?P<ip>\S+) .*"
- geoip:
    db: "/path/to/GeoIP2-City.mmdb"
    source: "ip"
    db_type: "city"

以及日志行

"34.120.177.193 - "POST /loki/api/push/ HTTP/1.1" 200 932 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6"

regex 阶段解析日志行并提取 ip。然后将提取的 ip 值作为 source 提供给 geoip 阶段。geoip 阶段对 ip 执行查找并填充以下标签:

  • geoip_city_name: 堪萨斯城
  • geoip_country_name: 美国
  • geoip_continent_name: 北美洲
  • geoip_continent_code: NA
  • geoip_location_latitude: `"39.1027
  • geoip_location_longitude: -94.5778
  • geoip_postal_code: 64184
  • geoip_timezone: America/Chicago
  • geoip_subdivision_name: 密苏里州
  • geoip_subdivision_code: MO

如果只需要这些标签的一个子集,可以将上述处理管道与 labeldroplabelallow 阶段链式连接。

labelallow 示例

yaml
- regex:
    expression: "^(?P<ip>\S+) .*"
- geoip:
    db: "/path/to/GeoCity.mmdb"
    source: "ip"
    db_type: "city"
- labelallow:
  - geoip_city_name
  - geoip_country_name
  - geoip_location_latitude
  - geoip_location_longitude

只有 labelallow 下列出的标签才会发送到 Loki。

labeldrop 示例

yaml
- regex:
    expression: "^(?P<ip>\S+) .*"
- geoip:
    db: "/path/to/GeoCity.mmdb"
    source: "ip"
    db_type: "city"
- labeldrop:
  - geoip_postal_code
  - geoip_subdivision_code

除了 labeldrop 下列出的标签外,所有标签都将发送到 Loki。

带有 ASN(自治系统号)数据库的 GeoIP 示例

yaml
- regex:
    expression: "^(?P<ip>\S+) .*"
- geoip:
    db: "/path/to/GeoIP2-ASN.mmdb"
    source: "ip"
    db_type: "asn"

以及日志行

"34.120.177.193 - "POST /loki/api/push/ HTTP/1.1" 200 932 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6"

regex 阶段解析日志行并提取 ip。然后将提取的 ip 值作为 source 提供给 geoip 阶段。geoip 阶段对 ip 执行查找并填充以下标签:

  • geoip_autonomous_system_number: 396982
  • geoip_autonomous_system_organization: GOOGLE-CLOUD-PLATFORM

有关更多信息和实际示例,请参阅保护 PII 并添加地理位置数据:使用 Grafana 监控旧系统,其中包含如何在仪表盘中注入地理位置数据的实际示例。