Мониторинг логов на основе Elastiсsearch+Fluentd+Kibana

Thank you for reading this post, don't forget to subscribe!

Базо­вая архи­тек­тур­ная схе­ма мони­то­ринг сте­ка име­ет вид:

Алго­ритм дей­ствий состо­ит из сле­ду­ю­щих шагов:
1.Базовое опи­са­ние стека
2.Установка и настрой­ка Elasticsearch+Kibana-коллектора(серверной части)
3.Настройка аутен­ти­фи­ка­ции и авто­ри­за­ции в Elasticsearch/Kibana
4.Установка и настрой­ка Cerebro и Curator-сервисов
5.Создание поль­зо­ва­те­ля fluentd с необ­хо­ди­мы­ми при­вил­ле­ги­я­ми в Elastcisearch, кото­рый будет исполь­зо­вать­ся в Fluentd/Filebeat-аген­тах для аутентификации/авторизации в Elasticsearch
6.Установка и настрой­ка на целе­вом хосте Fluentd-аген­та, с помо­щью кото­ро­го соби­ра­ем логи(все логии, кро­ме mysql-логов)
7.Установка и настрой­ка на целе­вом хосте Filebeat-аген­та, с помо­щью кото­ро­го соби­ра­ем толь­ко MySQL error/slow-логи
8.Создание и сохра­не­ние Search, Vizualization, Dashboard в Kibana

1.Базовое опи­са­ние стека

Mони­то­ринг стек состо­ит из сле­ду­ю­щих компонентов:

Elasticsearch— хра­не­ние, индек­са­ция, поиск логов
Fluentd – сбор, филь­тра­ция, пар­синг логов, их буфе­ри­за­ция и отправ­ка на Elasticsearch
Kibana – визу­а­ли­за­ция логов/данных через выпол­не­ния API-запро­сов к Elasticsearch
Cerebro – про­смотр и управ­ле­ние Elasticsearch индек­са­ми, шаб­ло­на­ми, нодами
Curator – рабо­та с Elasticsearch-индек­са­ми( уда­ле­ние индек­сов стар­ше опре­де­лен­но­го коли­че­ства вре­ме­ни, в нашем слу­чае боль­ше 14 дней)
Caddy – Обрат­ный прок­си-сер­вер для Kibana

Elasticsearch, Kibana, Caddy, Cerebo, Curator, запу­ще­ны на одном сер­ве­ре (физи­че­ском или вир­ту­аль­ном, не важ­но) через docker-compose

SSL-тер­ми­ни­ро­ва­ние про­ис­хо­дит на Cloudflare и чистый http направ­ля­ет­ся на Caddy-сер­вис, кото­рый высту­па­ет в каче­стве proxy-сер­ве­ра к Kibana

Вме­сто Caddy мож­но исполь­зо­вать Nginx, на кото­ром настро­ить базо­вую аутен­ти­фи­ка­цию для досту­па к Kibana, такой Nginx будет высту­пать в каче­стве прок­си-сер­ве­ра к Кибана.
Так­же на этом Nginx сер­ве­ре мож­но настро­ить SSL-терминирование(если не исполь­зу­ет­ся сто­рон­ний сер­вис по SSL-терминированию)

Доступ к Elasticsearch огра­ни­чен по сети с помо­щью OpenVPN-туннеля(т.е. Elasticsearch досту­пен сна­ру­жи толь­ко через Openvpn-тун­нель­ный адрес), несмот­ря на то, что так­же будет вклю­че­на базо­вая аутен­ти­фи­ка­ция и авто­ри­за­ция в Elasticsearch
Если нет возможности/желания огра­ни­чи­вать доступ на уровне тун­не­лей, тогда аль­тер­на­тив­ным вари­ан­том могут быть
А) базо­вая аутен­ти­фи­ка­ция + SSL на Elasticsearch
Б) огра­ни­че­ние досту­па к пор­ту Elastisearch на уровне фай­р­вол­ла iptables(правила добав­ля­ем в цепоч­ку DOCKER-USER)
Например: