我在我的centalize日志服务器上使用Logstash,Redis DB,ElasticSearch和Kibana 3。它工作正常,我能够在Kibana中看到日志。现在我想只保留30天登录ElasticSearch和Redis Server。是否可以从Redis中清除数据?
我使用以下配置
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" }
}
根据此配置,发货人文件使用密钥“logstash”将数据发送到Redis DB。从redis db文档中我了解到我们可以使用expire命令为任何键设置TTL以清除它们。但是当我在redis db keys logstash
或keys *
中搜索关键字“logstash”时,我没有得到任何结果。如果我的问题不可理解,请告诉我。提前致谢。
答案 0 :(得分:0)
Redis是一个关键:价值商店。根据定义,键是唯一的。因此,如果要存储多个日志,则需要为每个日志添加一个带有新密钥和关联值的新条目。
所以在我看来你在这里有一个根本的缺陷,因为你总是在你的所有日志中使用相同的密钥。尝试为每个日志使用不同的密钥(不知道如何做到这一点)。
然后将TTL设置为30天。