SlideShare a Scribd company logo
Elasticsearch(java)
Fluentbit -> Fluentd(ruby)
Kibana(javascript)
Система сбора и визуализации логов
Alexander Sigachev for developers-day.ru
Откуда растут ноги?
● Растущее количество серверов усложняет задачу локализации
проблемы
● Популярные микросервисы увеличивают количество log файлов
● Разные сервисы имеют разный формат логов
Как было раньше?
● nginx -> access.log -> logrotate -> access.log.1.gz
● grep для поиска
● Аналитика
zcat | cat | sort | uniq -c | sort -nr
Поиск инструментов
● rsyslog
● Свой велосипед - на mysql / other db
● Набирающая популярность ELK (elasticsearch+logstash+kibana)
● loghouse - решение на базе clickhouse (1 ноября 2017)
Open source data collection engine
● logreplica 2011-06-29 (http://dklab.ru)
● logstash
● fluend
● heka
Что такое логи?
log_format main '$scheme://$host $remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$cookie_sid" $request_time';
log_format main_json '{ "time": "$time_iso8601", '
'"scheme": "$scheme", '
'"domain": "$host", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"status": $status, '
'"request": "$request", '
'"uri": "$uri", '
'"botflag": $botflag, '
'"http_user_agent": "$http_user_agent" }';
Наш выбор - fluend
http://docs.fluentd.org/
он на ruby +1 в карму
Упоминался в докладе на HighLoad (https://goo.gl/JB5fys)
Архитектура fluend
OUTPUTPARSERINPUT FORMATTEDBUFFER
Плагины ввода данных:
● in_tail - чтение access.log nginx
● in_forward - прием логов от других агентов для центральной обработки
● in_http - http интерфейс
● еще много вариантов ...
Buffer Pugins
● buf_memory
● buf_file
Filter plugins
● filter_record_transformer
● filter_grep
● filter_parser
● filter_stdout
Parser plugins
● parser_regexp
● parser_apache2
● parser_apache_error
● parser_nginx
● parser_syslog
● parser_ltsv
● parser_csv
● parser_tsv
● parser_json
● parser_multiline
● parser_none
Output plugins
● out_file
● out_forward
● out_secure_forward
● out_exec
● out_exec_filter
● out_copy
● out_roundrobin
● out_s3
● out_splunk
● out_kafka
● out_mongofs
IN_HTTP
<source>
@type http
port 8888
bind 0.0.0.0
body_size_limit 32m
keepalive_timeout 10s
</source>
IN_TAIL
<source>
@type tail
path /var/log/nginx/access.log
pos_file /var/log/td-agent/nginx-access.log.pos
tag nginx.access
format nginx
</source>
IN_FORWARD
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
Наш пример match
<match geoip.es.*.*>
buffer_chunk_limit 100m
buffer_queue_limit 100
@type geoip
geoip_lookup_key remote
<record>
country ${country_code["remote"]}
city ${city["remote"]}
</record>
remove_tag_prefix geoip.
</match>
<match es.*.**>
@type elasticsearch_dynamic
buffer_type memory
buffer_chunk_limit 100m
buffer_queue_limit 256
host 127.0.0.1
port 9200
resurrect_after 5
reconnect_on_error true
logstash_format true
logstash_prefix ${tag_parts[1]}
include_tag_key true
tag_key @log_name
time_key_format %Y-%m-%dT%H:%M:%S.%N%z
flush_interval 30s
</match>
Пример filter
<filter geoip.**.*>
@type record_transformer
enable_ruby
auto_typecast true
<record>
hostname ${hostname}
speed_kbps ${record["size"] * 8 / (record["resptime"] + 0.001) / 1000 }
</record>
</filter>
Схема
source - tail
filter - record
match - forward
source - tail
filter - record
match - forward
source - forward
match - geo
match - elasctic
Elasticsearch kibana
Пример графиков
nginx access log
Ресурсы:
Для теста использовался Cloud Hosting https://goo.gl/KfytA8
● 2Gb+2G(swap) 1core - 1000rps RAM + CPU
● 8Gb 2core - 2000rps RAM + CPU = ~ 31Gb за сутки
● 16Gb 4core - 3000rps xxxx
Как быстро попробовать?
● Берем сервер 2Gb 1Core ~ 20Gb (350руб/мес)
● docker + docker-compose
● Настраиваем td-agent (он же fluentd)
● Наслаждаемся результатом
Установка elasticsearch + kibana
curl -L https://goo.gl/usglpi | sh -
Статья как быстро установить efk https://goo.gl/6vgdAX
Ограничения доступа
Варианты ограничения доступа:
● X-Pack - платный плагин от elastc.io (1 месяц demo + есть базовая
лицензия)
● nginx base auth
Проблемы
● fluentd - ruby
○ Ограничение скорости чтения событий из лога
○ Потребляемые ресурсы
Решение
● fluent-bit - C (легковесный агент)
○ Есть опции ограничения скорости чтения данных
○ Потребляет меньше ОЗУ
SAAS
http://logz.io/
https://www.loggly.com/
другие
Вопросы?
Александр Сигачев
asigatchov@gmail.com
Инвентос (интернатура -> предложение о работе)
Канал в телеграмме - https://t.me/orelrb

More Related Content

What's hot

Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Badoo Development
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Ontico
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
OSLL
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
Дмитрий Столяров
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Ontico
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Tanya Denisyuk
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
Aleksey Fomkin
 
Docker networking
Docker networkingDocker networking
Docker networking
Badoo Development
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Tanya Denisyuk
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
Anton Turetsky
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
Alex Chistyakov
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Ontico
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Tanya Denisyuk
 
Что такое Docker
Что такое DockerЧто такое Docker
Что такое Docker
Pavel Klimiankou
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
Badoo Development
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Ontico
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
CodeFest
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
GetDev.NET
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
Ontico
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
Омские ИТ-субботники
 

What's hot (20)

Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Docker networking
Docker networkingDocker networking
Docker networking
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
 
Что такое Docker
Что такое DockerЧто такое Docker
Что такое Docker
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 

Similar to Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)

Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
PavelKonotopov
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
Elasticsearch(java) fluentd(ruby) kibana(javascript)
Elasticsearch(java)fluentd(ruby) kibana(javascript)Elasticsearch(java)fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentd(ruby) kibana(javascript)
Александр Сигачев
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor SysoevMedia Gorod
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Vadim Nesterov
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3Technopark
 
Чем может быть полезен стек ELK
Чем может быть полезен стек ELKЧем может быть полезен стек ELK
Чем может быть полезен стек ELK
sysmonk
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3Technopark
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3Technopark
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Dev_Party
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеAlexey Androsov
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
Mikhail Shcherbakov
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
CUSTIS
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
Mikhail Shcherbakov
 
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
xasima
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в DjangoMoscowDjango
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Ontico
 

Similar to Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript) (20)

Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Elasticsearch(java) fluentd(ruby) kibana(javascript)
Elasticsearch(java)fluentd(ruby) kibana(javascript)Elasticsearch(java)fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentd(ruby) kibana(javascript)
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
Web весна 2013 лекция 3
Web весна 2013 лекция 3Web весна 2013 лекция 3
Web весна 2013 лекция 3
 
Чем может быть полезен стек ELK
Чем может быть полезен стек ELKЧем может быть полезен стек ELK
Чем может быть полезен стек ELK
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностейДенис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
 
Web осень 2012 лекция 3
Web осень 2012 лекция 3Web осень 2012 лекция 3
Web осень 2012 лекция 3
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в Django
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
 

Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)