0

logstash を使用して metricbeat データを取得しようとしています。(入力としての Kafka & 出力としての ElasticSearch)。

input {
  kafka {
    bootstrap_servers => "XX.XX.XXX.XX:9092"
    topics => ["cc-data"]
  }
}
output {
  elasticsearch {
    hosts => ["XX.XX.XXX.XX:9200"]
    index => "metricbeat-%{+YYYY.MM.dd}"
  }
}

出力では、データは次のように表示されます。

     {
        "_index" : "metricbeat-2017.01.18",
        "_type" : "logs",
        "_id" : "AVmzQUytyldhSr4kUaUS",
        "_score" : 1.0,
        "_source" : {
          "@timestamp" : "2017-01-18T20:21:45.324Z",
          "@version" : "1",
          "message" : "{\"@timestamp\":\"2017-01-18T20:21:44.394Z\",\"beat\":{\"hostname\":\"ip-XX-XXX-XX-XXX\",\"name\":\"ip-XX-XXX-XX-XXX\",\"version\":\"5.0.0\"},\"metricset\":{\"module\":\"system\",\"name\":\"process\",\"rtt\":104061},\"system\":{\"process\":{\"cpu\":{\"start_time\":\"2016-08-03T10:10:17.000Z\",\"total\":{\"pct\":0.000000}},\"fd\":{\"limit\":{\"hard\":4096,\"soft\":1024},\"open\":0},\"memory\":{\"rss\":{\"bytes\":0,\"pct\":0.000000},\"share\":0,\"size\":0},\"name\":\"migration/2\",\"pgid\":0,\"pid\":47,\"ppid\":2,\"state\":\"sleeping\",\"username\":\"root\"}},\"type\":\"metricsets\"}"
        }
      }
    ]
  }
}

「メッセージ」フィールドだけは必要ありません..代わりに、そのフィールドのすべてのデータがそのまま表示されるはずです [「メッセージ」フィールド名だけを削除したい - しかし、その内容は表示されるはずです] フィールドを削除するにはどうすればよいですか名前だけで、内容はそのままにしてください。

どうすればこれを達成できるでしょうか?

4

1 に答える 1

0

kafka入力にはplainデフォルトでコーデックがあります。これは、トピックを消費し、コンテンツをプレーンな文字列として解釈することを意味します。代わりに必要なのは、コーデックを変更jsonして、コンテンツを JSON 構造に解析することです。

input {
  kafka {
    bootstrap_servers => "XX.XX.XXX.XX:9092"
    topics => ["cc-data"]
    codec => "json"           # <---- add this
  }
}
于 2017-01-19T05:00:08.920 に答える