Logstash 输出 csv 特定行

Logstash output csv specific rows

我有一个问题在过去几天一直困扰着我,我和我尝试了不同的方法,但似乎没有任何效果。

我正在尝试在本地磁盘上的 css 文件中写入一些系统日志输出。所以按照文档我设置了这个输出:

output {
  elasticsearch {
     hosts => ["localhost:9200"]
         index => "logstash_index"
 }
  stdout {
    codec => rubydebug
 }
  csv {
    path => "path-to-file\syslogs-%{+yyyy.MM.dd}.csv"
    csv_options => {
        "write_headers" => true
    "headers" => ["timestamp", "message", "count"]
}
    fields => ["@timestamp", "message", "count"]
 }
}

这工作得很好,即使它为每个系统日志条目生成 headers,但现在不是什么大问题。我真正想在这里实现的是,我不希望 all 将系统日志写入 css,而只希望写入特定行。

这里举个例子来说明。

假设我有这个数据结构

timestamp.   message     id.      count
13.05.       hello 1.    01.        2
10.05        hello 2.    02.     
13.05.       hello 3.    03.  

在我的本地 css 文件中,我想保存 only 包含计数字段的行,如果 count 为空,则忽略不保存。

谁能帮助我了解解决此问题的最佳方法是什么?因为现在,输出保存了所有的 long,如果可能的话,我想在我的硬盘上保存 space

非常感谢你们

您可以在输出部分使用条件...

if [count] {
    csv {
        path => "path-to-file\syslogs-%{+yyyy.MM.dd}.csv"
        csv_options => {
            "write_headers" => true
        "headers" => ["timestamp", "message", "count"]
        }
        fields => ["@timestamp", "message", "count"]
    }
}