问题是
我有一台安装了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它们,但我认为这种预防方法不太容易出错。
4条答案
按热度按时间xoefb8l81#
我在CentOS 7机器上运行时遇到了同样的问题。除了elasticsearch之外,没有任何其他输出,但logstash仍然将所有传入的消息输出到
logstash.log
和logstash.stdout
在对实际的ruby-code进行了一些研究之后,发现默认的日志记录模式非常冗长。
然而,有一个名为
--quiet
的标志(据我所知似乎没有文档记录)解决了这个问题。在配置文件(centos上的
/etc/sysconfig/logstash
)中或直接在init.d
脚本中将标志添加到LS_OPTS
-变量,如下所示:i2byvkas2#
此输出很可能是由于某个输出配置文件中包含以下内容而导致的:
从我的
30-output.conf
日志中删除后,stash不再那么冗长This thread引导我找到了答案。
yquaqz183#
logrotate溶液
不幸的是,我在
/etc/init.d/logstash
中没有找到任何--verbose
或--debug
标志。因此,我试图找出为什么logrotate
没有存档该文件。/etc/logrotate.d/logstash
为:但是当我试着运行它的时候,我得到了:
一个quick search came to the rescue:
我已经把频率从
daily
改为hourly
,现在一切似乎都工作得很好。如果有人有更好的解决方案可以阻止logstash在第一时间写入这些冗余日志,我很乐意接受。
zaq34kh64#
如果您使用的是docker映像,logstash会将它与一个名为
logstash (logstash.conf)
的默认管道一起提供。