0

我将 Logstash、Redis DB、ElasticSearch 和 Kibana 3 用于我的 centalize 日志服务器。它工作正常,我可以在 Kibana 中看到日志。现在我只想在 ElasticSearch 和 Redis 服务器上保留 30 天的日志。是否可以从 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"
 }
}

托运人.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" }
}

根据此配置,shipper 文件使用键“logstash”将数据发送到 Redis DB。从 redis db 文档中我了解到,我们可以使用 expire 命令为任何键设置 TTL 以清除它们。但是当我在 redis db 中搜索键“logstash”时,keys logstash或者keys *我没有得到任何结果。如果我的问题无法理解,请告诉我。提前致谢。

4

1 回答 1

0

Redis 是一个键值存储。根据定义,键是唯一的。因此,如果要存储多个日志,则需要为每个日志添加一个带有新键和关联值的新条目。

因此,在我看来,您在这里有一个根本缺陷,因为您始终对所有日志使用相同的密钥。尝试为每个日志使用不同的密钥(不知道该怎么做)。

然后将 TTL 设置为 30 天。

于 2013-12-21T15:29:09.760 回答