2013-12-20 195 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

相關問題