Configuration Logstash会创建大量的本地日志文件,并且(尽管它会发送到Elasticsearch) 问题
我有一台上面有logstash的机器,还有一台Elasticsearch Kibana机器,它将logstash写的日志存储在第一台机器上。当然,我不希望在源计算机上保留日志,只希望在Elasticsearch集群上处理日志 不幸的是,logstash在第一台机器上创建了大量日志文件(不应保存任何内容): 配置 我在原始计算机上的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
/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 }