0

Kibana-4 ジオマップを ELB ログで動作させようとしています

[検出] タブをクリックすると、[緯度、経度] の値を持つフィールド geoip.location がはっきりと表示されますが、視覚化タブ -> タイル マップ -> 新しい検索 -> 地理座標をクリックすると、エラーが発生します (どこにも表示されません)。私はキバナログもチェックしましたが、何もありません)

要素の検査を確認しました-何もありません

次に、GeoHash を選択しますが、フィールドは空です (クリックすると空白でチェック アイコンが表示されます)。

エラーの内容を確認するにはどうすればよいですか? このマップを機能させるにはどうすればよいですか?

私の設定は:

    input {
  file {
    path => "/logstash_data/logs/elb/**/*"
    exclude => "*.gz"
    type => "elb"
    start_position => "beginning"
    sincedb_path => "log_sincedb"
  }
}

filter {
    if [type] == "elb" {
      grok {
        match => [
          "message", '%{TIMESTAMP_ISO8601:timestamp} %{NGUSERNAME:loadbalancer} %{IP:client_ip}:%{POSINT:client_port} (%{IP:backend_ip}:%{POSINT:backend_port}|-) %{NUMBER:request_processing_time} %{NUMBER:backend_processing_time} %{NUMBER:response_processing_time} %{POSINT:elb_status_code} %{INT:backend_status_code} %{NUMBER:received_bytes} %{NUMBER:sent_bytes} \\?"%{WORD:method} https?://%{WORD:request_subdomain}.server.com:%{POSINT:request_port}%{URIPATH:request_path}(?:%{URIPARAM:query_string})? %{NOTSPACE}"'
        ]
      }

      date {
        match => [ "timestamp", "ISO8601" ]
        target => "@timestamp"
      }

      if [query_string] {
        kv {
          field_split => "&?"
          source => "query_string"
          prefix => "query_string_"
        }
        mutate {
          remove => [ "query_string" ]
        }
      }

      if [client_ip] {
        geoip {
         source => "client_ip"
         add_tag => [ "geoip" ]
        }
      }

      if [timestamp] {
        ruby { code => "event['log_timestamp'] = event['@timestamp'].strftime('%Y-%m-%d')"}
      }
    }
  }
}

output {
  elasticsearch {
    cluster => "ElasticSearch"
    host => "elasticsearch.server.com"
    port => 9300
    protocol => "node"
    manage_template => true
    template => "/etc/logstash/lib/logstash/outputs/elasticsearch/elasticsearch-template.json"
    index => "elb-%{log_timestamp}"
  }

}
4

2 に答える 2

0

マップでは、フィールド geoip.location を指定します。ドキュメントによると、これは geoip フィルターによって自動的に作成されます。

Discover でそのフィールドを確認できますか? そうでない場合は、geoip フィルターを次のように修正してみてください。

if [client_ip] {
  geoip {
     source => "client_ip"
     add_tag => [ "geoip" ]
     target => "geoip"
  }
}

新しいエントリに geoip.location が表示されるかどうかを確認しますか?

関連する geoip フィールドを作成するときに、elasticsearch テンプレートは「geoip」ターゲットを探します。

geoip.location を作成したら、Kibana 4 で次の手順を実行して新しいマップを作成できます。

  1. 視覚化をクリック
  2. Tile Map視覚化タイプのリストから「 」を選択します
  3. 新規検索または保存済みのいずれかを選択します - Apache エントリを除外する保存済み検索を使用していますが、データに geoip.location が含まれている限り問題ありません。
  4. geo coordinates「 」バケット タイプを選択します。この時点でエラーのフラグが立てられます。
  5. 「 」ドロップダウンで、「 」aggregationを選択しますgeohash
  6. 「 」ドロップダウンで、「 」fieldを選択しますgeoip.location
于 2015-03-30T12:13:46.663 に答える