logstash - Kibana 中的 geoip 无法使用 IP 地址显示任何信息

Posted

技术标签:

【中文标题】logstash - Kibana 中的 geoip 无法使用 IP 地址显示任何信息【英文标题】:logstash - geoip in Kibana can not show any information using the IP addresses 【发布时间】:2014-08-21 16:23:57 【问题描述】:

我想使用 ElasticSearch、Kibana 和 Logstash 在世界地图中显示访问我的应用的用户数量。

这是我的日志(Json 格式):


  "device": "",
  "public_ip": "70.90.17.210",
  "mac": "00:01:02:03:04:05",
  "ip": "192.16.1.10",
  "event": 
    "timestamp": "2014-08-15T00:00:00.000Z",
    "source": "system",
    "name": "status"
  ,
  "status": 
    "channel": "channelname",
    "section": "pictures",
    "downlink": 1362930,
    "network": "Wi-Fi"
  

这是我的配置文件:

input 
  file  
    path => ["/mnt/logs/stb.events"]
    codec => "json" 
    type => "event" 
  

filter 
    date    
        match => [ "timestamp", "yyyy-MM-dd HH:mm:ss", "ISO8601" ]
    


filter 
    mutate  
        convert => [ "downlink", "integer" ]
    

filter 
    geoip 
      add_tag => [ "geoip" ]
      database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" 
      source => "public_ip"
      target => "geoip"
      add_field => [ "[geoip][coordinates]", "%[geoip][longitude]" ]
      add_field => [ "[geoip][coordinates]", "%[geoip][latitude]" ]
          
    mutate 
      convert => [ "[geoip][coordinates]", "float" ]
    

output  
  elasticsearch 
    host => localhost
  

在 Kibana 的最后,我只看到一个空的 geoip 标签

谁能帮助我并指出我的错误在哪里?

【问题讨论】:

你能显示 ruby​​debug 输出的输出吗? ` 输出 elasticsearch host => localhost stdout codec => ruby​​debug ` 感谢您的回答。您能否更详细地解释如何运行它,因为我对 Ruby 不太熟悉提前谢谢 只需将您拥有的输出块替换为我之前评论中的输出块 好的,我将它添加到我的logstash配置文件中,之后我重新启动了logstash(它运行正常),我需要寻找什么?提前谢谢你 【参考方案1】:

从 Logstash 1.3.0 开始,您可以使用自动创建的 geoip.location 字段,而不是手动创建坐标字段并将其转换为浮点数。

您的日志中似乎缺少一个大括号,我想这是正确的格式:


    "device": 
        "public_ip": "70.90.17.210",
        "mac": "00:01:02:03:04:05",
        "ip": "192.16.1.10"
    ,
    "event": 
        "timestamp": "2014-08-15T00:00:00.000Z",
        "source": "system",
        "name": "status"
    ,
    "status": 
        "channel": "channelname",
        "section": "pictures",
        "downlink": 1362930,
        "network": "Wi-Fi"
    

在这种情况下,我建议您尝试以下过滤器配置(不带变异):

filter 
    geoip 
        source => "[device][public_ip]"
    

那么您应该可以在地图中使用“geoip.location”。我做了一些研究和调试,发现为了正确解析,嵌套字段在用作源时应该用 [ ] 包围。

【讨论】:

谢谢,我稍后试试

以上是关于logstash - Kibana 中的 geoip 无法使用 IP 地址显示任何信息的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch kibana logstash(ELK)的安装集成应用

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

ELK(elasticsearch+kibana+logstash)搜索引擎: elasticsearch基础教程

CentOS7??????Elasticsearch+ Logstash+kibana??????????????????????????????

Elasticsearch-Logstash-Kibana(三)配置优化

elasticsearch+logstash+kibana部署