Logstash创建了大量的本地日志文件(尽管它会将这些文件发送给Elasticsearch)

txu3uszq  于 2022-12-09  发布在  Logstash
关注(0)|答案(4)|浏览(187)

问题是

我有一台安装了logstash的机器,还有一台Elasticsearch-Kibana机器,它存储从第一台机器上的logstash写入的日志。当然,我不希望在原始机器上保存日志,而只在Elasticsearch集群上处理日志记录。
不幸的是,logstash在第一台机器上创建了巨大的日志文件(不应该保存任何内容):

配置

我在源机器上的/etc/logstash下只有一个文件,而且据我所知,配置没有指定本地输出:

input {
        tcp {
                port => 5959
                codec => json
        }
        udp {
                port => 5959
        }
}
filter{
    json{
        source => "message"
    }
}
filter{
        if [@message] == "Incoming Event" {
            mutate{
                    add_field => {
                              "location" =>  "%{@fields[location]}"
                        }
                }
        }
}
output {
        elasticsearch {
                # The host in which elasticsearch and Kibana live
                host => "some.internal.aws.ip" 
        }
}

如何通过配置阻止logstash写入本地日志?我知道我可以cron-del它们,但我认为这种预防方法不太容易出错。

xoefb8l8

xoefb8l81#

我在CentOS 7机器上运行时遇到了同样的问题。除了elasticsearch之外,没有任何其他输出,但logstash仍然将所有传入的消息输出到logstash.loglogstash.stdout
在对实际的ruby-code进行了一些研究之后,发现默认的日志记录模式非常冗长。
然而,有一个名为--quiet的标志(据我所知似乎没有文档记录)解决了这个问题。
在配置文件(centos上的/etc/sysconfig/logstash)中或直接在init.d脚本中将标志添加到LS_OPTS-变量,如下所示:

# Arguments to pass to logstash agent
LS_OPTS="--quiet"
i2byvkas

i2byvkas2#

此输出很可能是由于某个输出配置文件中包含以下内容而导致的:

stdout { codec => rubydebug }

从我的30-output.conf日志中删除后,stash不再那么冗长
This thread引导我找到了答案。

yquaqz18

yquaqz183#

logrotate溶液
不幸的是,我在/etc/init.d/logstash中没有找到任何--verbose--debug标志。因此,我试图找出为什么logrotate没有存档该文件。
/etc/logrotate.d/logstash为:

/var/log/logstash/*.log {
        daily
        rotate 7
        copytruncate
        compress
        delaycompress
        missingok
        notifempty
}

但是当我试着运行它的时候,我得到了:

$ logrotate --force logrotate.d/logstash --verbose
Ignoring logrotate.d/logstash because of bad file mode.

一个quick search came to the rescue

sudo chmod 0644 logrotate.d/logstash

我已经把频率从daily改为hourly,现在一切似乎都工作得很好。
如果有人有更好的解决方案可以阻止logstash在第一时间写入这些冗余日志,我很乐意接受。

zaq34kh6

zaq34kh64#

如果您使用的是docker映像,logstash会将它与一个名为logstash (logstash.conf)的默认管道一起提供。

相关问题