Configuration Logstash会创建大量的本地日志文件,并且(尽管它会发送到Elasticsearch) 问题

Configuration Logstash会创建大量的本地日志文件,并且(尽管它会发送到Elasticsearch) 问题,configuration,logstash,elastic-stack,local-files,Configuration,Logstash,Elastic Stack,Local Files,我有一台上面有logstash的机器,还有一台Elasticsearch Kibana机器,它将logstash写的日志存储在第一台机器上。当然,我不希望在源计算机上保留日志,只希望在Elasticsearch集群上处理日志 不幸的是,logstash在第一台机器上创建了大量日志文件(不应保存任何内容): 配置 我在原始计算机上的/etc/logstash下只有一个文件,就我所见,配置没有指定本地输出: 输入{ tcp{ 端口=>5959 编解码器=>json } udp{ 端口=>5959

我有一台上面有logstash的机器,还有一台Elasticsearch Kibana机器,它将logstash写的日志存储在第一台机器上。当然,我不希望在源计算机上保留日志,只希望在Elasticsearch集群上处理日志

不幸的是,logstash在第一台机器上创建了大量日志文件(不应保存任何内容):

配置 我在原始计算机上的
/etc/logstash
下只有一个文件,就我所见,配置没有指定本地输出:

输入{
tcp{
端口=>5959
编解码器=>json
}
udp{
端口=>5959
}
}
滤器{
json{
source=>“消息”
}
}
滤器{
如果[@message]=“传入事件”{
变异{
添加字段=>{
“位置”=>“%{@fields[location]}”
}
}
}
}
输出{
弹性搜索{
#elasticsearch和Kibana居住的主机
主机=>“some.internal.aws.ip”
}
}
如何阻止logstash按配置写入本地日志?我知道我可以cron del他们,但我认为预防是不容易出错的。

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.
A:

我已将频率从
每日
更改为
每小时
,现在一切似乎都正常


这可能不是公认的答案。如果有人有更好的解决方案,可以防止logstash首先写入这些冗余日志,我很乐意接受。

我遇到的问题与您在CentOS 7机器上运行时遇到的问题相同。除了elasticsearch之外,没有任何输出,但是logstash仍然将所有传入消息输出到
logstash.log
logstash.stdout

在对实际ruby代码进行了一点研究之后,发现默认的日志记录模式非常冗长

然而,有一个名为
--quiet
的标志(据我所知,似乎没有记录在案)解决了这个问题

将标志添加到配置文件(
/etc/sysconfig/logstash
在centos上)或直接在
init.d
脚本中的
LS\u OPTS
-变量,如下所示:

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

此输出可能是由于输出配置文件中存在以下内容导致的:

stdout { codec => rubydebug }
从我的
30 output.conf
logstash中删除后,它就不再那么冗长了


让我找到了答案。

您的日志存储中是否启用了详细或调试功能?禁用这些将减少音量。为了完全消除它们,我会编辑您的启动脚本,但拥有它们是一个好主意…它们是在哪里定义的?有--debug和--verbose命令行选项用于日志存储。它们可能会出现在启动脚本中,或者出现在启动脚本(sysconfig等)读取的配置文件中。在windows上,它似乎位于此处:“\logstash\config\startup.options”
stdout { codec => rubydebug }