elasticsearch - 如何检查logstash是否从suricata接收/解析数据到elasticsearch?

标签 elasticsearch logstash kibana kibana-4 logstash-configuration

尝试在Mac OS X 10.10.3 Yosemite上配置带有ElasticSearch(v1.5.2)-Logstash(v1.4.2)-Kibana(v4.0.2)的suricata v2.0.8。

suricata.yaml:

# Extensible Event Format (nicknamed EVE) event log in JSON format
  - eve-log:
      enabled: yes
      type: file #file|syslog|unix_dgram|unix_stream
      filename: eve.json
      # the following are valid when type: syslog above
      #identity: "suricata"
      #facility: local5
      #level: Info ## possible levels: Emergency, Alert, Critical,
                   ## Error, Warning, Notice, Info, Debug
      types:
        - alert
        - http:
            extended: yes     # enable this for extended logging information
            # custom allows additional http fields to be included in eve-log
            # the example below adds three additional fields when uncommented
            #custom: [Accept-Encoding, Accept-Language, Authorization]
        - dns
        - tls:
            extended: yes     # enable this for extended logging information
        - files:
            force-magic: yes   # force logging magic on all logged files
            force-md5: yes     # force logging of md5 checksums
        #- drop
        - ssh
        #- smtp
        #- flow

logstash.conf:
input {
  file {
    path => ["/var/log/suricata/eve.json"]
    sincedb_path => ["/var/lib/logstash/"]
    codec =>   json
    type => "SuricataIDPS"
    start_position => "beginning"
  }

}

filter {
  if [type] == "SuricataIDPS" {
    date {
      match => [ "timestamp", "ISO8601" ]
    }
    ruby {
      code => "if event['event_type'] == 'fileinfo'; event['fileinfo']['type']=event['fileinfo']['magic'].to_s.split(',')[0]; end;"
    }
  }

  if [src_ip]  {
    geoip {
      source => "src_ip"
      target => "geoip"
      #database => "/usr/local/opt/logstash/libexec/vendor/geoip/GeoLiteCity.dat"
      add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
      add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
    }
    mutate {
      convert => [ "[geoip][coordinates]", "float" ]
    }
    if ![geoip.ip] {
      if [dest_ip]  {
        geoip {
          source => "dest_ip"
          target => "geoip"
          #database => "/usr/local/opt/logstash/libexec/vendor/geoip/GeoLiteCity.dat"
          add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
          add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
          convert => [ "[geoip][coordinates]", "float" ]
        }
      }
    }
  }
}

output {
  elasticsearch {
    host => localhost
    #protocol => http
  }
}

Suricata将所有事件成功记录到 eve.json 中。当我在浏览器中打开kibana时,我看不到任何仪表板或来自suricata的任何信息...因此,我假设Logstash不会从eve.json中读取数据,或者不会将数据解析为elasticsearch(或两者)...有什么方法可以检查正在发生的事情吗?

最佳答案

在logstash中打开调试输出:

output {
   stdout {
      codec = rubydebug
   }
}

另外,请尝试直接对Elasticsearch(curl)而不是对kibana来运行查询。

关于elasticsearch - 如何检查logstash是否从suricata接收/解析数据到elasticsearch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409035/

相关文章:

json - ElasticSearch:在字段中包含字段的日期范围

php - Elasticsearch日期范围不起作用

java - Elasticsearch 日志文件过大导致性能下降

elasticsearch - 在Logstash中提取xpath值以有条件地创建新字段

Elasticsearch 动态字段映射和 JSON 点表示法

elasticsearch - 向 elasticsearch 添加索引并在 Kibana map 中创建术语连接

java - elasticsearch GEO 按距离由近到远搜索顺序

elasticsearch - logstash将数据传输到elasticsearch解析日期错误

elasticsearch - 过滤器不适用于加权搜索

elasticsearch - Kibana 将@timestamp 字段显示为可读格式