Logstash 将输出文件记录为基于时间的

Logstash 将输出文件记录为基于时间的,logstash,filebeat,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

我的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"
        }
    }
}

请帮助解决。

从joda time文档()中,您有
H小时(0~23)
。因此,解决问题的输出配置是:

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

@sniperd@Magnus Bäck此配置工作不正常您无法标记用户。您应该添加使用此配置启动logstash时发生的情况以及它如何不符合您的需要。工作正常,“#此处输出输出{如果[tags]{file{path=>”/home/ubuntu/apache/%{+YYYY}/%{+MM}/%{+dd}/%%{+HH}/apache-%%{host}-%%{+YYYY-MM-dd-HH-zz}.log“codec=>“json”}}文件:'root@ip-192-168-2-79:/home/ubuntu/apache/2018/04/18/07#ls apache-ip-192-168-2-196-2018-04-18-07-UTC.log apache-ip-192-168-2-223-2018-04-18-07-UTC.log“谢谢你guys@MohamedJawad太好了!谢谢你告诉我。