память Redis растет

Похоже, что память elasticsearch растет до бесконечности, а виртуальные среды ES_MIN_MEM и ES_MAX_MEM работают плохо. Если я обнаружу, что происходит не так, я вернусь, чтобы изменить эту проблему.

Я обнаружил, что, возможно, ошибаюсь. Если журналов не слишком много, logstash выскочит из списка и удалит элемент. Но если logstash или elasticsearch заблокированы, то длина ключа redis увеличивается до бесконечности. Спасибо за помощь, этот вопрос можно закрыть, я думаю.

Ниже приведены исходные вопросы:

Когда я использую статический ключ (не использую %{type} и т. д.) на узле грузоотправителя, длина ключа будет увеличиваться и увеличиваться с момента запуска системы мониторинга. Но в Redis общий метод удаления устаревших журналов — установка TTL для разных ключей. Итак, можем ли мы удалить более ранние журналы под тем же ключом, сохранив при этом более поздние. Или у нас есть другие способы использовать Redis в качестве кеша и избежать переполнения памяти? Благодарю вас! Ниже приведены мои файлы конфигурации:

файл:shipper.conf

input {
    file {
        type => "ceph-daemons"
        path => "/var/log/ceph/ceph-*.log"
        start_position => "end"
    }
    file {
        type => "ceph-activity"
        path => "/var/log/ceph/ceph.log"
        start_position => "end"
    }
    file {
        type => "nova"
        path => "/var/log/nova/*.log"
        start_position => "end"
    }
}
output {
    stdout{ }
    redis {
        host => "10.1.0.154"
        data_type => "list"
        key => "logstash"
    }
}

файл:central.conf

input {
    redis {
        host => "10.1.0.154"
        type => "redis-input"
        data_type => "list"
        key => "logstash"
    }
}
output {
    stdout{ }
    elasticsearch {
        cluster => "logstash"
    }
}

Я нашел следующее в документах logstash:

data_type
Value can be any of: "list", "channel", "pattern_channel"
There is no default value for this setting.
Specify either list or channel. If redis\_type is list, then we will BLPOP the key. If redis\_type is channel, then we will SUBSCRIBE to the key. If redis\_type is pattern_channel, then we will PSUBSCRIBE to the key. TODO: change required to true

И в документах Redis:

When BLPOP returns an element to the client, it also removes the element from the list. This means that the element only exists in the context of the client: if the client crashes while processing the returned element, it is lost forever.

Так я ошибаюсь, читая эти документы?


person RichardCao    schedule 05.08.2014    source источник


Ответы (1)


Невозможно установить срок действия для элементов списка, и срок действия ключа в этом случае вам не поможет. Если вы хотите сократить количество элементов в списке, используйте команду TRIM.

person soveran    schedule 05.08.2014
comment
Есть ли способ построить систему logstash + redis, которая могла бы решить эту проблему без ручного уменьшения использования памяти redis? Каков общий метод? Я знаю, что мы можем использовать другой ключ в соответствии с динамическими именами, такими как %{type} и так далее. Но как могла об этом знать входная часть на центральном узле? - person RichardCao; 06.08.2014