我已经按照下面网上的说明建立了一个日志虚拟化系统 http://michael.bouvy.net/blog/en/2013/11/19/collect-visualize-your-logs-logstash-elasticsearch-redis-kibana/
登录磁盘-->logstash-forwarder ----------> redis -->logstash-->elasticsearch
一切顺利,直到添加四台服务器将它们的日志发送到我的中央日志收集服务器。
redis服务器的内存随着时间的推移而增加,最终当所有内存被消耗时崩溃。
我用redis-cli监控查了一段时间,发现rpushing到redis的速度比redis从blpop的速度快很多,我想这就是redis server内存变大的原因。
weblogic@MSAMGM01:~/logcenter/redis/bin$ ./redis-cli monitor > 1.txt
weblogic@MSAMGM01:~/logcenter/redis/bin$ grep blpop 1.txt | wc -l 1159 weblogic@MSAMGM01:~/logcenter/redis/bin$ grep rpush 1.txt | wc -l 17123
有人有解决此类问题的想法或经验吗?
顺便说一句,中央服务器的 cpu 很低,我确认这不是这个问题的根本原因。
谢谢!
最佳答案
根据
documentation for the Redis input ,
你应该能够设置 threads
到您要使用的线程数
从 Redis 读取,也许你可以增加它以从 Redis 中提取更多事件
同时?
另外,如果logstash在过滤管道中速度太慢,你可以运行
bin/logstash -w <N>
其中 <N>
是要运行的过滤 worker 的数量
同时。
关于elasticsearch - 当使用 redis 作为 logstash 的输入时,获取 redis 列表比插入它慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29694462/