logstash-output-file-as time based

时间:2018-04-17 13:20:42

标签: logstash filebeat

我的logstash输出定向到名为apache.log的文件。 这个文件需要每小时生成一次。

例如:apache-2018-04-16-10:00.log或类似的内容。

这是我的配置文件:

# INPUT HERE
input {
    beats {
          port => 5044
    }
}

# FILTER HERE
filter {
    if [source]=="/var/log/apache2/error.log"
    {
        mutate {
            remove_tag => [ "beats_input_codec_plain_applied" ]
            add_tag => [ "apache_logs" ]
        }
    }
    if [source]=="/var/log/apache2/access.log"
    {
        mutate {
            remove_tag => [ "beats_input_codec_plain_applied" ]
            add_tag => [ "apache_logs" ]
        }
    }
}

# OUTPUT HERE
output {
    if "apache_logs" in [tags] {
        file {
            path => "/home/ubuntu/apache/apache-%{+yyyy-mm-dd}.log"
                codec => "json"
        }
    }
}

请帮忙解决。

1 个答案:

答案 0 :(得分:0)

从joda-time文档(http://www.joda.org/joda-time/key_format.html)开始,您有H hour of day (0~23)。因此输出配置可以解决您的问题:

output {
    if "apache_logs" in [tags] {
        file {
            path => "/home/ubuntu/apache/apache-%{+yyyy-mm-dd-HH}.log"
                codec => "json"
        }
    }
}