【问题标题】:Logstash output csv specific rowsLogstash 输出 csv 特定行
【发布时间】:2021-07-26 15:39:57
【问题描述】:

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

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

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"]
 }
}

这工作得很好,即使它为每个 syslog 条目生成标题,但现在没什么大不了的。我在这里真正想要实现的是,我不希望将 all syslog 写入 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,如果可能的话,我想节省硬盘空间

非常感谢你们

【问题讨论】:

    标签: logstash logstash-grok logstash-configuration


    【解决方案1】:

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

    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"]
        }
    }
    

    【讨论】:

    • 非常感谢。那行得通。你太棒了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多