2013-12-20 168 views
0

我正在为我的中央日志服务器使用Logstash,Redis DB,ElasticSearch和Kibana 3。它工作正常,我能够看到Kibana中的日志。现在我想只保留30天登录ElasticSearch和Redis服务器。是否有可能从Redis中清除数据?如何从Redis服务器清除30天以前的数据

我使用下面的配置

indexer.conf

input { 
redis { 
    host => "127.0.0.1" 
    port => 6379 
    type => "redis-input" 
    data_type => "list" 
    key => "logstash" 
    format => "json_event" 
} 
} 
output { 
stdout { debug => true debug_format => "json"} 
elasticsearch { 
    host => "127.0.0.1" 
} 
} 

shipper.conf

input { 
    file { 
    type => "nginx_access" 
    path => ["/var/log/nginx/**"] 
    exclude => ["*.gz", "error.*"] 
    discover_interval => 10 
} 
} 

filter { 
    grok { 
    type => nginx_access 
    pattern => "%{COMBINEDAPACHELOG}" 
} 
} 

output { 
    stdout { debug => true debug_format => "json"} 
    redis { host => "127.0.0.1" data_type => "list" key => "logstash" } 
} 

按照这个配置托运人文件与键将数据发送到Redis的DB “logstash”。从redis数据库文件中,我发现我们可以使用expire命令为任何密钥设置TTL来清除它们。但是,当我在redis db keys logstashkeys *中搜索关键“logstash”时,我没有收到任何结果。请让我知道,如果我的问题是不可理解的。提前致谢。

回答

0

Redis是一个关键:价值商店。按定义,密钥是唯一的。因此,如果要存储多个日志,则需要为每个日志添加一个新条目,并带有一个新的键和相关值。

所以在我看来你有一个根本的缺陷,因为你总是对所有的日志使用相同的密钥。尝试每个日志不同的关键(不知道如何做到这一点)。

然后将TTL设置为30天。

+0

感谢您的回答,并对我迟到的回复感到抱歉。为什么我无法在redis-cli中搜索“logstash”的密钥?即使'key *'也不能给我提供“logstash”的答案。 – linuxnewbee

相关问题