扩展Logstash(使用redis / elasticsearch)
在超过12个centos 5.8服务器的群集上,我使用本机logstash托运人部署了logstash,后者将发/var/log/*/*.log回中央Logstash服务器。 我们尝试使用rsyslogd作为托运人,但是由于rsyslogd的ImFile模块中存在错误,如果远程端不响应,则日志会堆积在内存中。 当前,我们使用Redis作为传输机制,因此logstash01已在本地运行redis,这些日志绑定到VLAN的IP。 因此,logstash-shipper在logstash01上发送到redis。logstash01发送给在单独进程中运行的Elasticsearch。 这就是我们所看到的。Elasticsearch有141个被阻止的线程。跟踪elasticsearch父级显示: futex(0x7f4ccd1939d0, FUTEX_WAIT, 26374, NULL 这是来自Elasticsearch的Jstack 这是logstash的jstack 因此,..昨晚,某些Web服务器(日志被logstash拖尾)发疯了,平均负载超过500。 在logstash01上,有这个 Dec 19 00:44:45 logstash01 kernel: [736965.925863] Killed process 23429 (redis-server) total-vm:5493112kB, anon-rss:4248840kB, file-rss:108kB 所以OOM杀手杀死了Redis的服务器,然后指原木堆放在内存里面是已上市的东西..而服务器上莫名其妙意味着阿帕奇获取其短裤的扭曲。(坦率地说,我不确定如何,我只是假设它在拖尾日志)。 这是我关于事件如何发生的理论: 我们的流量高峰。 生成了大量日志。 这些存储在Redis中,因为logstash / elasticsearch似乎每秒只能处理300-400个新事件。 Redis已完全填满,OOM杀手无意识地宰了它。 Redis停止接受新项目。 现在,项目开始在远程主机端堆积。 一切都疯了。Apache停止接受请求。(为什么?)。 问题是: 如果只有日志拖尾,为什么apache会发疯。是因为拖尾的东西阻碍了Apache的写作? 有没有使弹性搜索更快/更好/具有弹性的明智方法? 是否有一种明智的方法可以使Redis具有弹性并且不会因为OOM而死亡 我设置的方式是否存在根本缺陷,还是每个人都有此问题? -编辑- @lusis的一些规格。 admin@log01:/etc/init$ free -m total used …