Beatsで収集したログをそのままlogstashに送信できない

filebeat,winlogbeatで収集したログを、logstashがインストールされているログ管理サーバに送信して、ログの管理を行いたいです。

filebeat,winlogbeatで収集したログを、logstashに受信できたと思ったのですが、生ログではなく、ログの情報(該当ログファイルのパス、ログファイルの作成日時等)が送られてきます。

filebeat,winlogbeatで収集したログを、生ログのままlogstashに受信するにはどのような設定をすれば良いのでしょうか?

宜しくお願い致します。

なお、生ログを整形されないよう以processorsは全てコメントアウトしています。

# ================================= Processors =================================
#processors:
#  - add_host_metadata:
#      when.not.contains.tags: forwarded
#  - add_cloud_metadata: ~
#  - add_docker_metadata: ~
#  - add_kubernetes_metadata: ~

余計なメタデータのフィールドが邪魔ということでしたら、こちらの投稿が参考になるのではないでしょうか。

ご返信ありがとうございます。

参考にさせて頂き、"message"以外の情報をdropする設定をしましたが、出力結果は全く変わらなかったです。

processors:
   -drop_fields:
      fields: ["@timestamp", "tags", "log.file.path", "offset","input.type","host.name","ecs.version","type","agent.name.id.ephemeral_id.version.hostname.type","@version"]
#  - add_host_metadata:
#      when.not.contains.tags: forwarded
#  - add_cloud_metadata: ~
#  - add_docker_metadata: ~
#  - add_kubernetes_metadata: ~

filebeat test configでOKと出てるので、confに問題はなさそうです。
他に問題ありそうな箇所、もしくは他の対策ご存じでしたらご教示願います💦

宜しくお願い致します。

logstash.confの内容を以下のように指定した結果、余計なフィールドの削除ができました。

filter {
  mutate {
    remove_field => ["@timestamp","log","host","agent", "offset","input","type","ecs","@version"]
 }
}

しかし、出力すると、フィールド名("message")や{}が入ってしまいます。
また、tagsも不要なのですが、複数ファイルの受信をして、tagsでif文を作成して振り分けをしているため、情報として必要ではあります。ただ、出力結果には不要なんです・・。
filterした後で、フィールド名や、tagsによる振り分け後にtagsを削除する方法をご存じでしたらご教示願います💦

出力結果は以下
{"message":"Feb 23 11:56:33 rhel8 logstash[10927]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.","tags":["messages","beats_input_codec_plain_applied"]}

outputのif文は以下
output {
  if "filebeat" in [tags] {
    file {
    path => "/var/tmp/logstash/localhost1/filebeat.log"
     }
  }
  else if "secure" in [tags] {
     file {
      path => "/var/tmp/logstash/localhost1/secure.log"
   }
}
  else if "messages" in [tags] {
     file {
      path => "/var/tmp/logstash/localhost1/messages.log"
   }
}

複数のファイルを読み取って if 文で振り分けているのであれば、ファイルごとにpipelineを作ってタグなど全て削除した上でoutputしたほうがシンプルかもしれません。

振り分けに使ったtagをoutput前に削除するのは難しそうです。

codecで出力フィールドと、そのフォーマットを指定する手はありそうです(これならパイプラインひとつでいいですね)。

ご返信ありがとうございます。

tagをアウトプット前に削除するのは難しそうですよね・・・。

後者のやり方も良さそうですね。実機で検証してみます。

ご丁寧な返信ありがとうございました。
助かりました。

宜しくお願い致します。

1 Like

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.