Возможно ли сделать систему логирования из ClickHouse, Logstash и Grafana?
Всем привет!
Необходимо сделать систему логирования ИТ ландшафта, которая построена полностью на локальной инфраструктуре. Т.е. имеются железные сервера, виртуальные машинны, Kubernetes и т.д.
Популярные решения по логированию такие как ELK, Graylog с выходом практически каждой новой версии урезают бесплатный функционал.
Есть ли те кто строил решения по логированию на базе ClickHouse?
Хочу напомнить что такие системы как ClickHouse ориентированы не на одиночные события
а на стриминг. Тоесть вы должны не просто логгировать а желательно просто потоком лить
много событий. Батч-режим вставки в кликхаус - это и есть ее оптимальный режим.
Вставка по 1 строке например раз в несколько секунд с фиксацией - будет не благоприятным
режимом работы для кликхауса. И наверное с плохим КПД. Подумайте о том что может
стоит все таки писать логи классическим способом и по истечении времени например
сбрасывать пачку к аналитические хранилища.
В терминологии Bigdata это кажется называется коннектор.
Вот ищи коннектор ClickHouse для твоего языка или системы.
По поводу пачки - это архитектурный вопрос. Я советую его не игнорировать а просто спросить себя
- если резко приложение - то будут ли в логах ClickHouse самые последние записи.
Вставка по 1 строке например раз в несколько секунд с фиксацией - будет не благоприятным режимом работы для кликхауса
А что неблагоприятного? Какая разница что это 1 строка?
Или имеется ввиду, что "несколько секунд" это мало? - совсем не обязательно, в зависимости от типа движка и сегментации, наличия обновлений/удалений вполне может хватать и "несколько секунд".
mayton2019, так речь про то, что не получится напрямую записывать каждую строчку в Клик, как только она появилась? Ну если "раз в несколько секунд", то можно и напрямую, но вообще это не проблема, можно писать опосредовано, хоть через файлы, хоть через очереди.
mayton2019, да, для логирования событий приложения несколько непривычное решение. Но если писать в файл, а затем из него кидать в Клик, то чем это будет отличаться от решения на основе Elastic. Вопрос только насколько резвым будет полнотекстовой поиск.
Но для логгирования событий ПРИЛОЖЕНИЯ типа нужно их писать не очень часто но с гарантией что sync на диск сработал.
Ну это если речь про пользовательское приложение в виде бинарника на компе. А раз речь идет про Logstash и Grafana подразумевается скорее логирование работы сетевого сервиса, где писать может оказаться надо часто и много.
И, нисколько не агитирую за Клик для этого. Но, чисто теоретически.
"Где гарантия что последние актуальные записи в логе попали в ClickHouse?"
Там же где она при любой записи в СУБД. Какая разница в какую СУБД будет писать парсер файлов логов? Все будет зависеть от того, как он проверяет.
Спасибо за быстрый ответ!
Подскажите, вы сталкивались на практике с подобным стеком?
И интересно, как организовать UI в Grafana, есть ли какие то готовые решения что бы не пилить с нуля "интерфейс".