Меня всегда восхищала работа с массивами данных. Еще в начальных классах было занимательно взять таблицу Пифагора, и сделать интересные выводы о том, что числа в строке 5 заканчиваются на пятерку или ноль, а цифры в строке 9 в сумме дают ту же девятку, а еще как симметрично относительно диагонали расположены числа. Я росла, и росло количество данных вокруг меня. Я окуналась в различные отрасли работы, различные сферы жизни, но постоянная тяга к систематизации и анализу не давала мне покоя. А мозг при этом не справлялся. Казалось, я собрала все факты, прикинула возможные вероятности, и вот истина так близка… Но (как в сериале) — за границами доступного.nnК счастью мы живем в век компьютерных технологий, и рассчитать за нас могут машины, главное дать правильные инструкции. Сегодня я хочу рассмотреть один из инструментов, позволяющий достаточно удобно анализировать большое количество данных. Мы поговорим об ELK.nnELK — это аббревиатура из названий трех продуктов: Elasticsearch, Logstash и Kibana. Это три продукта с открытым кодом, которые в некоторый момент времени стали принадлежать одной компании и развиваться в одном направлении. Итак, для чего же они нужны.nnLogstash — это инструмент получения, преобразования и сохранения данных в общем хранилище. Его первой задачей является прием данных в каком-либо виде: из файла, базы данных, логов или информационных каналов. Далее полученная информация может модифицироваться с помощью фильтров, например, единая строка может быть разбита на поля, могут добавляться или изменяться данные, несколько строк могут агрегироваться и т.п. Обработанная информация посылается в системы — потребители этой информации. Говоря о связке ELK, потребителем информации будет Elasticsearch, однако возможны другие варианты, например системы мониторинга и управления (Nagios, Jira и др.), системы хранения информации (Google Cloud Storage, syslog и др.), файлы на диске. Возможен даже запуск команды при получении особого набора данных.nnElasticsearch — это собственно механизм индексирования и хранения полученной информации, а также полнотекстового поиска по ней. Он основан на библиотеке Apache Lucene и, по сути, является NoSQL database решением. Главная задача этого инструмента — организация быстрого и гибкого поиска по полученным данным. Для ее решения имеется возможность выбора анализаторов текста, функционал «нечеткого поиска», поддерживается поиск по информации на восточных языках (корейский, китайский, японский). Работа с информацией происходит с помощью REST API, который позволяет добавлять, просматривать, модифицировать и удалять данные. Однако в случае использования ELK этот вопрос остается внутри «черной коробочки», поскольку у нас есть уже выше описанный Logstash и Kibana.nnKibana — это user friendly интерфейс, для Elasticsearch, который имеет большое количество возможностей по поиску данных в дебрях индексов Elasticsearch и отображению этих данных в удобочитаемых видах таблиц, графиков и диаграмм.nnТаким образом, связка ELK является достаточно мощным инструментом сбора и аналитики информации. Он успешно справляется с такими задачами, как:n
- Агрегация товаров с разных интернет-магазинов, и выполнение поиска по разным свойствам товара.
- Организация централизованной системы хранения и анализа лог-файлов систем.
- Агрегация данных различных систем и формирование показателей для аналитики состояния бизнес-процессов.
- Работа с кулинарными книгами, построение различной отчетности в системах общепита.
- Организация систем анкетирования и опросов.
- Просмотр и анализ всевозможной неструктурированной статистической информации
И все перечисленное выше – не предел. Есть масса возможностей для фантазии и полета мысли. А инструмент в руках мастера способен творить чудеса!