Рубрики
Без рубрики

Как использовать Elasticsearch, Logstash и Kibana, чтобы визуализировать журналы в Python в реальном времени

Автор оригинала: FreeCodeCapm Team.

Ритвиком Ханна

Что такое регистрация?

Допустим, вы разрабатываете программный продукт. Он работает удаленно, взаимодействует с разными устройствами, собирает данные от датчиков и обеспечивает услугу пользователю. Однажды что-то идет не так, и система не работает должным образом. Возможно, он не может быть идентифицировать устройства или не получать никаких данных из датчиков, или, возможно, только что получил ошибку времени выполнения из-за ошибки в коде. Как вы можете знать наверняка?

Теперь, представьте, если в системном коде есть контрольные точки, где, если система возвращает неожиданный результат, он просто флагирует и уведомляет разработчика. Это концепция регистрации.

Регистрация позволяет разработчикам понять, какой код на самом деле делает и как рабочий поток. Большая часть жизни разработчиков программного обеспечения является мониторинг, устранение неполадок и отладки. Регистрация делает это гораздо проще и более гладким процессом.

Визуализация журналов

Теперь, если вы являетесь разработчиком экспертов, который развивался и создает программное обеспечение на некоторое время, то вы подумаете, что регистрация не является большой сделкой, и большинство наших кодов включены в A Debug.log (‘____’) утверждение. Ну, это здорово, но есть некоторые другие аспекты ведения журнала, мы можем использовать.

Визуализация конкретных зарегистрированных данных имеет следующие преимущества:

  • Удаленно отслеживайте операции системы.
  • Осматривайте информацию четко и эффективно через статистическую графику, участки и информационную графику.
  • Извлечь знание из данных, визуализированных в виде разных графов.
  • Принять необходимые действия, чтобы улучшить систему.

Есть несколько способов визуализировать необработанные данные. Есть несколько библиотек в языках программирования Python и R, которые могут помочь в графиках построения. Вы можете узнать больше об этом здесь Отказ Но в этом посте я не собираюсь обсуждать выше упомянутых методов. Вы когда-нибудь слышали о Стек лося ?

Стек лосят

E – Elasticsearch , Л – Логисташка , K – Кибана

Позвольте мне дать краткое введение в это. Стек лося представляет собой коллекцию трех открытых исходных программных источников, которые помогают обеспечить Inventime Insights о данных, которые могут быть либо структурированными, либо неструктурированными. Можно найти и анализировать данные, используя свои инструменты с чрезвычайной легкостью и эффективно.

Elasticsearch Это распределенный, спокойный поисково-аналитический двигатель, способный решить растущее количество случаев использования. Как сердце эластичного стека, он централизованно хранит ваши данные, чтобы вы могли обнаружить ожидаемый и раскрыть неожиданную. Elasticsearch позволяет вам выполнять и сочетать много типов поисков – структурированных, неструктурированных, Geo, Metric и т. Д. Он построен на языке программирования Java, который позволяет ELASTICSACK для работы на разных платформах. Это позволяет пользователям исследовать очень большое количество данных при очень высокой скорости.

Логисташка является открытым исходным кодом, конвейером обработки данных на стороне сервера, которые одновременно принимают данные из множества источников, преобразуют его, а затем отправляет его в ваш любимый «Stash» (например, Elasticsearch). Данные часто разбросаны или входят во многих системах во многих форматах. Logstash поддерживает различные входы, которые тянут события из множества общих источников, все одновременно. Легко глотает из ваших журналов, метрик, веб-приложений, магазинов данных и различных услуг AWS, все в непрерывной, потоковой передаче. Logstash имеет Fluctable Framework, с участием более 200 плагинов. Смешайте, совпадают и Orchestrate разные входы, фильтры и выходы для работы в газопроводной гармонии.

Кибана Является ли аналитики и визуализации с открытым исходным кодом и визуализацией, предназначенные для работы с Elasticsearch. Вы используете Kibana для поиска, просматривать и взаимодействовать с данными, хранящимися в индексах Elasticsearch. Вы можете легко выполнить расширенный анализ данных и визуализировать ваши данные в различных диаграммах, таблицах и картах. Kibana позволяет легко понять большие объемы данных. Его простой интерфейс на основе браузера позволяет быстро создавать и делиться динамическими приборными панелями, которые отображают изменения в elasticsearch querees в реальном времени.

Чтобы получить лучшее изображение рабочего процесса того, как три программы взаимодействуют друг с другом, обратитесь к следующей диаграмме:

Выполнение

Регистрация в Python

Здесь я решил объяснить реализацию регистрации в Python, потому что это самый подержанный язык для проектов, связанных с коммуникацией между несколькими машинами и Интернетом вещей. Это поможет дать вам общее представление о том, как она работает.

Python предоставляет систему ведения журнала в составе его стандартной библиотеки, поэтому вы можете быстро добавить регистрацию в приложение.

import logging

В Python журнал может быть сделан на 5 различных уровнях, которые каждый соответственно указывает тип события. Есть следующие:

  • Информация – Означает информационные сообщения, которые подчеркивают прогресс приложения на грубозерженном уровне.
  • Отладка – обозначает мелкозернистые информационные события, которые наиболее полезны для отладки приложения.
  • Предупреждение – обозначает потенциально вредные ситуации.
  • Ошибка . – обозначает события ошибок, которые все равно могут разрешить приложение продолжать работать.
  • Критический – обозначает очень серьезные события ошибок, которые предположительно приведут приложение к прерванию.

Поэтому в зависимости от проблемы, которая должна быть зарегистрирована, мы используем определенный уровень соответственно.

Теперь, чтобы привести пример и создать набор операторов журнала для визуализации, я создал сценарий Python, который регистрирует операторы определенного формата и сообщение.

import logging
import random

logging.basicConfig(filename="logFile.txt",
                    filemode='a',
                    format='%(asctime)s %(levelname)s-%(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')
for i in xrange(0,15):
    x=random.randint(0,2)
    if(x==0):
        logging.warning('Log Message')
    elif(x==1):
        logging.critical('Log Message')
    else:
        logging.error('Log Message')

Здесь журнал заявления приведут к файлу с именем logfile.txt в указанном формате. Я провел скрипт в течение трех дней в разные временные интервалы, создавая файл, содержащий журналы, как ниже:

2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 CRITICAL-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message

Настройка Elasticsearch, Logstash и Kibana

Сначала давайте скачам три открытых источника программного обеспечения из соответствующих ссылок [ elasticsearch ], [ Логисташка ] и [ Кибана . Расстегни файлов и поставьте все три в папке проекта.

Давайте начнем.

Шаг 1 – Настройте Kibana и Elasticsearch по локальной системе. Мы бегаем Kibana по следующей команде в папке Bin Kibana.

bin\kibana

Точно так же ELASTICASCEAYS ISCOUP используется так:

bin\elasticsearch

Теперь, в двух отдельных клеммах мы можем видеть оба модуля. Для того, чтобы убедиться, что услуги работают открытыми localhost: 5621 и localhost: 9600 Отказ

После того, как оба сервиса успешно запущены, мы используем программы Logstash и Python для анализа данных RAW LOG и COPRELUSE его для Elasticsearch, из которых данные kibana queries.

Шаг 2 – Теперь давайте продолжим логику. Перед началом logstash файл конфигурации логиста создан файл конфигурации logstash, в котором указаны детали входного файла, местоположения вывода и методы фильтра.

input{
 file{
 path => "full/path/to/log_file/location/logFile.txt"
 start_position => "beginning"
 }
}
filter
{
 grok{
 match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log-level}-%{GREEDYDATA:message}"}
 }
    date {
    match => ["timestamp", "ISO8601"]
  }
}
output{
 elasticsearch{
 hosts => ["localhost:9200"]
 index => "index_name"}
stdout{codec => rubydebug}
}

Этот файл конфигурации играет важную роль в стеке лося. Посмотрите на Фильтр {grok {…}} линия. Это плагин фильтра GROK. GROK – отличный способ разбирать неструктурированные данные журнала во что-то структурированное и запрос. Этот инструмент идеально подходит для журналов Syslog, Apache и других журналов веб-серверов, журналов MySQL и в целом, любой формат журнала, который обычно написан для людей, а не на компьютере. Этот шаблон GROK, упомянутый в коде, сообщает logstash, как разбирать каждую запись строки в нашем файле журнала.

Теперь сохраните файл в папке Logstash и запустите службу Logstash.

bin\logstash –f logstash-simple.conf

Шаг 3 – После этого анализируемые данные из файлов журнала будут доступны в управлении Kibana в localhost: 5621 Для создания различных визуальных визуальных и панелей мониторинга. Чтобы проверить, принимает ли Kibana какие-либо данные, на вкладке управления Kibana выполняют следующую команду:

localhost:9200/_cat/indices?v

Это отобразит все индексы. Для каждой визуализации новый рисунок индекса должен быть выбран из инструментов DEV, после чего различные методы визуализации используются для создания приборной панели.

Приборная панель с использованием кибаны

После настройки всего, теперь пришло время создавать графики для визуализации данных журнала.

После открытия домашней страницы управления Kibana нас попросят создать новый узор индекса. Введите index_name * В Поле узор индекса и выберите @timestamp В Поле Time Filter Название выпадающего меню.

Теперь создавать графики, мы идем к Визуализировать вкладка

Выберите новую визуализацию, выберите тип диаграммы и имени индекса и в зависимости от требований к оси, создайте график. Мы можем создать гистограмму с y-ось Как Считать и X-AXIS с Ключевое слово Log-Level или Timestamp.

После создания нескольких графиков мы можем добавить все необходимые визуализации и создать Приборная панель , как ниже:

Обертывание

Регистрация может быть помощь в борьбе с ошибками и программами отладки, а не используя оператор печати. Модуль ведения журнала делит сообщения в соответствии с различными уровнями. Это приводит к лучшему пониманию кода и как поток вызовов идет без прерывания программы.

Визуализация данных является необходимым шагом в ситуациях, когда огромное количество данных генерируется каждый момент. Инструменты и методы визуализации данных предлагают руководители и другие работники знаний новых подходов, чтобы значительно улучшить свою способность понять информацию в своих данных. Быстрое идентификация журналов ошибок, легкое понимание данных и настраиваемых визуальных видов данных являются одними из преимуществ. Это один из самых конструктивных способов организации необработанных данных.