Как загрузить логи из кибаны в файл

Обновлено: 24.11.2024

Всякий раз, когда разработчик или системный администратор сталкивается с проблемой в системе, первое, что ему нужно сделать, это просмотреть журналы. Долгое время мы полагались на базовые инструменты, такие как grep, awk или perl, для анализа журналов. Однако с изменением времени и облачными приложениями прежних методов больше недостаточно. Представьте себе систему с десятками, сотнями или тысячами хостов. На всех этих хостах запущено несколько экземпляров различных приложений. Чтобы сделать вещи более интересными, эти хосты могут быть расположены в разных местах, и нам, возможно, придется иметь дело с миллионами строк в журналах. В таком мире невозможно устранять проблемы с помощью ранее использовавшихся инструментов или просто глядя на один конкретный хост. Нам нужно централизованное место для хранения всех журналов со всех хостов, чтобы выяснить, что происходит, путем поиска или визуализации журналов, и здесь Elasticsearch хорошо подходит. В этом руководстве мы собираемся хранить журнал приложения Java в Elasticsearch с помощью Apache Logging.

Краткое определение

Что такое Elasticsearch?

Elasticsearch – это поисковый сервер на основе Apache Lucene. Он обеспечивает работу в режиме реального времени распределенной многопользовательской полнотекстовой поисковой системы. Он предоставляет RESTful API с использованием документов JSON. Его можно использовать для полнотекстового поиска, структурированного поиска, аналитики или их комбинации. Одной из его ключевых особенностей является возможность быстрого поиска путем индексации искомого текста.

Что такое Filebeat?

Filebeat – это облегченная программа для пересылки и централизации данных журналов. Filebeat, установленный в качестве агента на ваших серверах, отслеживает файлы журнала или указанные вами местоположения, собирает события журнала и перенаправляет их в Elasticsearch или Logstash для индексации.

Что такое Кибана?

Kibana – это платформа аналитики и визуализации с открытым исходным кодом, работающая поверх Elasticsearch. Его можно использовать для поиска, просмотра и взаимодействия с любыми структурированными или неструктурированными данными, хранящимися в Elasticsearch. Он упрощает расширенный анализ данных и позволяет визуализировать данные в различных гистограммах, диаграммах, графиках, таблицах и картах.

Отправка журналов напрямую в Elasticsearch

Он отправляет журналы в индексированные журналы приложений. Это простое решение, но оно имеет некоторые недостатки:

На рисунке изображено это решение:

Опосредованная отправка журналов с помощью filebeat

и это конфигурация filebeat.yml для отправки журналов в Elasticsearch:

Вы можете проверить созданный индекс в Kibana. Шаблон по умолчанию выглядит как filebeat-%-% :

Лучший способ добавить данные в Elastic Stack — использовать одну из наших многочисленных интеграций, которые представляют собой предварительно упакованные ресурсы, доступные для широкого спектра популярных сервисов и платформ. С помощью интеграции вы можете добавить мониторинг журналов и метрик, защитить системы от угроз безопасности и многое другое.

Все интеграции доступны в одном представлении, и Kibana направляет вас на экран приветствия, домашнюю страницу и в главное меню.

Если интеграция доступна как для Elastic Agent, так и для Beats, в представлении «Интеграции» по умолчанию отображается интеграция с Elastic Agent, если она общедоступна (GA). Чтобы отобразить интеграцию с Beats, используйте фильтр под боковой панелью навигации.

Добавить данные с помощью эластичных решений

Начать стоит с одного из наших эластичных решений, которые предлагают возможности для распространенных случаев использования.

  • Сканер поиска по веб-сайту. Находите, извлекайте и индексируйте свой веб-контент в поисковых системах приложений с помощью сканера веб-сайтов Enterprise Search. Ищите на Google Диске, GitHub, Salesforce и многих других веб-сервисах, используя источники контента Workplace Search.
  • Эластичный APM. Получайте журналы, метрики, трассировки и данные о времени безотказной работы в Elastic Stack. Доступны интеграции для популярных сервисов и платформ, таких как Nginx, AWS и MongoDB, а также общие типы ввода, такие как файлы журналов. Дополнительную информацию см. в разделе Elastic Observability.
  • Безопасность конечных точек. Защитите свои хосты и отправляйте журналы, метрики и данные безопасности конечных точек в Elastic Security. Дополнительную информацию см. в разделе Загрузка данных в Elastic Security.

Добавить данные с помощью языков программирования

Добавляйте любые данные в Elastic Stack с помощью языка программирования, например JavaScript, Java, Python и Ruby. Подробная информация о каждой библиотеке языков программирования, которую предоставляет Elastic, находится в документации клиента Elasticsearch.

Если вы используете Kibana в нашей размещенной службе Elasticsearch, нажмите «Просмотр сведений о развертывании» в представлении «Интеграции», чтобы проверить конечную точку Elasticsearch и идентификатор облака, а также создать ключи API для интеграции.

Добавить пример редактирования данных

Примеры наборов данных поставляются с образцами визуализаций, панелей мониторинга и т. д., чтобы помочь вам изучить Kibana, прежде чем добавлять собственные данные. В представлении «Интеграции» найдите Sample Data и добавьте нужный тип данных.

Загрузить файл данных

Если у вас есть файл журнала или файл CSV, TSV или JSON с разделителями, вы можете загрузить его, просмотреть его поля и показатели и при необходимости импортировать его в Elasticsearch. В представлении «Интеграции» найдите «Загрузить файл» и перетащите файл в цель.

По умолчанию вы можете загрузить файл размером до 100 МБ. Это значение можно настроить до 1 ГБ в дополнительных настройках.

Функция загрузки предназначена не для использования в повторяющемся производственном процессе, а для первоначального изучения ваших данных.

Функции безопасности Elastic Stack предоставляют роли и привилегии, определяющие, какие пользователи могут загружать файлы. Чтобы загрузить файл в Kibana и импортировать его в индекс Elasticsearch, вам потребуется:

  • кластерная привилегия manage_pipeline или manage_ingest_pipelines
  • create , create_index , management и read index привилегии для индекса
  • все привилегии Kibana для обнаружения и управления представлениями данных

Вы можете управлять своими ролями, привилегиями и пространствами в Stack Management.

Что дальше? изменить

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

В Elastic Stack 6.5 появилась новая функция визуализатора файловых данных. Эта новая функция позволяет пользователю загружать файл, содержащий текст с разделителями (например, CSV), NDJSON или полуструктурированный текст (например, файлы журналов), где новая конечная точка Elastic машинного обучения find_file_structure проанализирует его и сообщит о своих выводах о данных. Это включает в себя предлагаемый конвейер загрузки и сопоставления, которые можно использовать для импорта файла в elasticsearch из пользовательского интерфейса.

Цель этой функции – предоставить пользователям, которые хотят исследовать свои данные с помощью Kibana или машинного обучения, возможность легко загружать небольшие объемы данных в Elasticsearch, не изучая тонкости процесса загрузки.

Хорошим недавним примером является запись в блоге члена маркетинговой команды Elastic, у которого нет опыта разработки. С помощью File Data Visualizer он смог легко импортировать данные о землетрясениях в Elasticsearch, чтобы исследовать и анализировать места землетрясений с помощью визуализаций geo_point в Kibana.

Пример: импорт файла CSV в Elasticsearch

Лучший способ продемонстрировать эту функциональность — рассмотреть пример. В следующем примере будут использоваться данные из CSV-файла, содержащего воображаемые данные с веб-сайта бронирования авиабилетов. Здесь мы показываем только первые пять строк файла, чтобы дать вам представление о том, как выглядят данные:

Настройка импорта CSV в визуализаторе файлов

Функция File Data Visualizer находится в Kibana в разделе Машинное обучение > Визуализатор данных. Пользователю предоставляется страница, которая позволяет ему выбрать или перетащить файл. Начиная с версии 6.5 максимальный размер файла ограничен 100 МБ.

Когда мы выбираем файл CSV, страница отправляет первые 1000 строк из файла в конечную точку find_file_structure, которая выполняет анализ и возвращает результаты. Глядя на раздел «Сводка» в пользовательском интерфейсе, мы видим, что он правильно определил, что данные имеют формат с разделителями и что разделителем является запятая.

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

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

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

Все это очень хорошо для CSV-файла с заголовком, но что, если данные не содержат строку заголовка вверху?

В этом случае конечная точка find_file_structure будет использовать имена временных полей. Мы можем продемонстрировать это, удалив первую строку из файла примера и загрузив ее снова. Теперь поля получили общие имена column1, column2 и column3.

Вероятно, пользователь имеет некоторое представление о предметной области и может захотеть переименовать эти поля в более подходящие имена. Это можно сделать с помощью кнопки "Переопределить настройки".

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

Как только нас устроят эти настройки, мы можем нажать кнопку «Импорт», расположенную в левом нижнем углу страницы.

Импорт данных CSV в Elasticsearch

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

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

И Дополнительно, здесь пользователь имеет более точный контроль над настройками, которые будут использоваться для создания индекса.

  • Настройки индекса. По умолчанию дополнительные настройки для создания индекса и импорта не требуются, но по-прежнему доступна возможность настройки параметров индекса.
  • Сопоставления. Структура find_file_structure предоставляет объект сопоставлений на основе полей и типов, которые он идентифицировал. Список возможных сопоставлений см. в нашей документации по сопоставлению Elasticsearch.
  • Конвейер загрузки. Структура find_file_structure предоставляет объект конвейера загрузки по умолчанию. Это будет использоваться при приеме данных и может использоваться для загрузки любых дополнительных данных.

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

Нажатие кнопки импорта запускает процесс импорта. Он состоит из различных пронумерованных шагов:

  1. Обработка файла — преобразование данных в документы NDJSON, чтобы их можно было загрузить с помощью массового API.
  2. Создание индекса. Создание индекса с использованием объектов настроек и сопоставлений.
  3. Создание конвейера приема — создание конвейера приема с использованием объекта конвейера приема.
  4. Загрузка данных — загрузка данных в новый индекс Elasticsearch.
  5. Создание шаблона индекса. Создайте шаблон индекса Kibana (если пользователь выбрал это)

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

А также ряд ссылок Kibana для изучения недавно импортированных данных.Пользователи платиновой и пробной подписки также получат ссылку для быстрого создания задания машинного обучения на основе данных.

Пример: импорт файлов журналов и другого полуструктурированного текста в Elasticsearch

До сих пор речь шла о данных в формате CSV, а NDJSON еще проще, так как для импорта требуется небольшая обработка. Но как насчет частично структурированного текста? Давайте посмотрим, чем анализ данных в формате CSV отличается от типичных данных файла журнала, также называемого частично структурированным текстом.

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

При анализе конечной точкой find_file_structure он правильно распознает формат полуструктурированного текста и создает шаблон grok для извлечения полей и их типов из каждой строки. Из этих полей он также распознает поле времени и его формат.

В отличие от файла CSV с заголовком или файла NDJSON, нет возможности узнать правильные имена для этих полей, поэтому конечная точка дает им общие имена на основе их типов.

Однако этот шаблон grok можно редактировать в меню настроек переопределения, поэтому мы можем исправить имена полей и их типы.

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

При импорте эти новые имена полей добавляются в объект сопоставления, а шаблон grok добавляется в список процессоров в конвейере загрузки.

Подведение итогов

Надеемся, это пробудило у вас желание опробовать новую функцию File Data Visualizer в версии 6.5. Это все еще экспериментальная функция версии 6.5, поэтому она может не соответствовать каждому формату файла, но попробуйте ее и сообщите нам, как у вас дела. Ваш отзыв поможет нам быстрее внедрить эту функцию в GA.

Не знаете, как создать в Kibana панель управления для визуализации и анализа данных журнала?

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

Что такое Кибана?

Kibana – это инструмент для анализа и визуализации данных с открытым исходным кодом, который используется командами DevOps и ИТ-безопасности для изучения, мониторинга и извлечения полезных сведений из структурированных данных журналов. После того как данные журналов будут централизованы (с помощью инструмента агрегирования журналов, например, Logstash или Amazon CloudWatch) и проиндексированы (например, с помощью Elasticsearch или ChaosSearch®), ИТ-аналитики могут использовать Kibana для выполнения запросов и фильтрации, построения визуализаций данных и их объединения. визуализации на информационных панелях, которые раскрывают ценную информацию о безопасности системы и производительности приложений.

Некоторые организации используют Kibana в сочетании с Logstash и Elasticsearch как часть решения для анализа журналов стека ELK с открытым исходным кодом. Logstash используется для агрегирования, анализа и преобразования данных журнала перед их индексированием в Elasticsearch. После индексации данных Elasticsearch позволяет пользователям запрашивать данные различными способами и создавать таблицы, которые можно визуализировать с помощью Kibana.

В ChaosSearch мы интегрировали версию Kibana для открытого дистрибутива непосредственно в наше комплексное решение для анализа журналов. ChaosSearch превращает Amazon S3 в репозиторий озера данных для журналов и данных о событиях, позволяя командам DevSecOps собирать, индексировать и анализировать данные журналов в режиме реального времени, без перемещения данных и без обработки ETL.

При использовании ChaosSearch данные журналов объединяются в корзины Amazon S3, полная функциональность которых доступна из консоли ChaosSearch. Данные журналов в корзинах S3 можно индексировать с помощью нашего собственного формата Chaos Index®, а команды DevSecOps могут включить динамическое индексирование для индексации вновь созданных объектов в определенных группах объектов, что позволяет запрашивать данные практически в реальном времени по мере их появления.

После того как ChaosSearch проиндексирует данные журнала, пользователи могут использовать ChaosSearch Refinery® для очистки, подготовки и преобразования данных без написания или выполнения какого-либо кода. Это приводит к созданию представления индекса: логического индекса, основанного на физическом индексе, готового для обнаружения, визуализации, создания информационных панелей и анализа с помощью Kibana.

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

Откройте для себя

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

Визуализировать

Инструмент Kibana Visualize позволяет создавать различные виды визуализации с использованием созданных вами индексов ChaosSearch.

Панель управления

Инструмент Kibana Dashboard дает вам возможность объединять визуализации данных журналов, созданные на основе ваших индексов ChaosSearch, в функциональные информационные панели. Использование информационных панелей с индексированием в реальном времени позволяет автоматически обновлять информационные панели почти в реальном времени по мере регистрации событий в корзинах Amazon S3.

Предупреждение

С интеграцией ChaosSearch Kibana вы заметите добавленную функцию под названием «Оповещения». Эта функция дает вам возможность отслеживать журнал и данные о событиях в режиме реального времени, создавать настраиваемые триггеры предупреждений и устанавливать место назначения (канал Slack, электронная почта, звуковой сигнал AWS и т. д.), куда могут отправляться уведомления при срабатывании предупреждения.< /p>

Управление

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

Далее мы познакомим вас с процессом обнаружения и визуализации данных, а также с тем, как создать информационную панель в Kibana.

Как найти свои данные в Kibana

На экране «Обнаружение» Kibana вы сможете выполнять запросы и создавать сводные таблицы на основе данных проиндексированного журнала. В качестве предварительного условия для использования инструмента обнаружения вам необходимо загрузить некоторые данные журналов в свои корзины S3 и создать представления индекса ChaosSearch с помощью инструмента Refinery.

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

В этом примере мы используем экран «Обнаружение» Kibana для изучения данных журналов из Amazon ELB, программного балансировщика нагрузки, который распределяет входящий трафик по набору инстансов AWS EC2.

Используя раскрывающееся меню на левой боковой панели Kibana, мы смогли выбрать «aws-elb-logs», представление индекса хаоса, которое мы создали ранее с помощью инструмента уточнения ChaosSearch. Под нашим выбором Kibana показывает нам все поля, присутствующие в индексе, которые мы можем выбрать для запроса. Для этого анализа нам нужно изучить коды состояния, сгенерированные приложением ELB.

Под заголовком «Доступные поля» мы видим, что наше представление Chaos Index View содержит поле с именем «elb_status_code», которое мы можем запросить. Чтобы настроить наш запрос, нам нужно использовать панель запросов/поиска в верхней части страницы Kibana Discover, чтобы выразить наш запрос с помощью языка запросов Kibana (KQL). В этом случае мы ищем экземпляры, в которых ELB создал код состояния 404, поэтому наш запрос в KQL читается как «elb_status_code:404».

С помощью этого запроса мы можем изолировать все журналы ELB из нашего представления индекса хаоса, которые имеют значение «404» в поле «elb_status_code». Мы также можем указать абсолютный или относительный диапазон данных для нашего запроса — здесь мы выбрали исключительно анализ данных за последние 3 года.Наконец, мы нажимаем кнопку «Обновить», чтобы увидеть результаты нашего запроса.

После того как вы введете свой запрос, Kibana вернет список результатов, соответствующих параметрам вашего запроса. Вы можете нажать на каждый результат, чтобы развернуть его и просмотреть все данные из этого файла журнала в формате JSON.

В ChaosSearch мы обновили версию Kibana для открытого дистрибутива, добавив дополнительные функции, в том числе индикатор выполнения запроса, который поможет вам отслеживать статус вашего запроса, и кнопку «Отменить запрос», которую вы можете использовать для прерывания запросов, которые занимают слишком много времени. долго.

Когда вы будете довольны своим запросом, вам нужно будет нажать кнопку "Сохранить" и ввести имя для вашего запроса, прежде чем вы сможете преобразовать результаты запроса в визуализацию.

Как создавать визуализации в Kibana

После запроса данных пришло время преобразовать результаты в визуализацию. Нажав кнопку «Визуализация» на левой боковой панели, вы перейдете к экрану «Визуализации», где вы сможете создать новую визуализацию или получить доступ к визуализациям, которые вы создали в прошлом. Чтобы создать новую визуализацию данных, нажмите синюю кнопку «Создать новую визуализацию».

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

После выбора формата визуализации вам необходимо указать источник данных. Вы можете выбрать либо сохраненный поиск (например, тот, который мы создали выше), либо выполнить новый поиск, выбрав представление индекса хаоса с данными, которые вы хотите визуализировать.

В этом примере мы используем наши проиндексированные данные журнала ELB, чтобы создать визуализацию кодов состояния ELB, сгенерированных за последние 3 года.

В нашем предыдущем примере мы сосредоточились именно на кодах ошибок 404, но теперь нас интересуют все типы кодов состояния ELB и частота их появления в наших данных журнала. Чтобы пролить свет на это, мы решили организовать данные кода состояния ELB в круговую диаграмму.

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

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

Агрегация показателей определяет, как будет определяться размер каждого сегмента круговой диаграммы. В этом примере мы используем агрегацию Count, поэтому размер каждого среза будет отражать общее количество экземпляров каждого кода состояния ELB в наших исходных данных (относительно целого, поскольку это круговая диаграмма).

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

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

Как создать информационную панель в Kibana

Создание функциональных и информативных информационных панелей — отличный способ начать мониторинг безопасности сети и производительности приложений в режиме реального времени. Чтобы начать, вам нужно нажать «Панель инструментов» на левой боковой панели, а затем нажать «Создать новую панель инструментов». Далее вам будет предложено добавить панели на панель инструментов Kibana.

Панели — это строительные блоки информационных панелей в Kibana. Любая визуализация, которую вы ранее создали и сохранили в Kibana, может быть добавлена ​​как панель на вашу панель инструментов. Вы также можете добавить панель «Текст» со статической информацией о панели управления или панель «Управление», которая дает вам возможность фильтровать данные в режиме реального времени. Панели также можно использовать для отображения сохраненной таблицы поиска из инструмента Kibana Discover, таблицы журналов потокового вещания или результатов заданий по обнаружению аномалий с помощью машинного обучения.

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

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

Когда вы закончите, вы можете нажать кнопку "Сохранить как", чтобы добавить заголовок к готовой сводной панели и сохранить его для дальнейшего использования.

Вы можете поделиться недавно созданной информационной панелью Kibana несколькими способами: внедрив ее в виде iframe на веб-страницу, поделившись прямой ссылкой или создав отчет в формате PDF или PNG о своей информационной панели.

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

Используйте Kibana для анализа ваших данных журнала в режиме реального времени

Теперь, когда вы узнали, как создать информационную панель в Kibana, что дальше?

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

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

Об авторе, Кевине Дэвисе

Кевин Дэвис был старшим директором отдела продаж в ChaosSearch, где помогал клиентам активировать озера данных для поиска и анализа данных журналов. Чтобы узнать, чем сейчас занимается Кевин, свяжитесь с ним в LinkedIn. Еще сообщения Кевина Дэвиса

Flare работает на нескольких разных серверах, и у каждого из них есть свое назначение. У нас есть веб-серверы, которые обслуживают приложение Flare и другие общедоступные страницы, такие как этот блог. Серверы отчетов будут принимать от наших клиентов десятки отчетов об ошибках в секунду и сохранять их для последующей обработки. Наконец, есть рабочие серверы, которые будут обрабатывать эти отчеты и выполнять фоновые задачи, такие как отправка уведомлений и т. д.

На каждом из этих серверов установлена ​​установка Laravel, которая создает интересные метрики и журналы. Это очень полезно, когда что-то идет не так. Единственная проблема заключается в том, что всякий раз, когда что-то пойдет не так, нам нужно вручную войти на каждый сервер через SSH, чтобы проверить журналы.

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

Использование ElasticSerac для ведения журнала

Есть несколько служб, которым можно отправлять все выходные данные журналов. Они предоставляют пользовательский интерфейс для всего, что вы им отправляете. Мы решили не использовать эти сервисы, потому что уже используем кластер ElasticSearch для обработки ошибок поиска.Это довольно просто: используйте его и для поиска в нашем журнале.

ElasticSearch предоставляет отличный веб-клиент под названием Kibana. Это используется не только для управления кластером ElasticSearch и его содержимым. Он также может отображать журналы, которые отправляются в ElasticSearch как часть стека ELK. Он даже имеет поток журналов в реальном времени.

Повышение производительности с помощью Filebeat

Когда что-то регистрируется в нашем API Flare, мы можем немедленно отправить это сообщение журнала в ElasticSearch с помощью API. Однако этот синхронный вызов API сделает Flare API очень медленным. Каждый раз, когда во Flare что-то регистрируется, нам нужно будет отправлять отдельный запрос в наш кластер ElasticSearch, что может происходить сотни раз в секунду.

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

Интеграция в Laravel

Давайте посмотрим, как это работает. По умолчанию формат журнала Laravel выглядит следующим образом:

Filebeat (и вход ElasticSearch) нуждается в более структурированном формате ведения журнала, подобном этому:

Поскольку Laravel использует пакет monolog для ведения журналов, нам нужно только создать новый модуль форматирования для Filebeat, который будет выводить журналы в формате JSON, показанном выше:

Теперь в файле конфигурации logging.php мы меняем ежедневник как таковой:

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

Далее нам нужно установить Filebeat на все наши серверы и настроить его для отправки контекста из файлов ежедневного журнала в кластер ElasticSearch. Конфигурационный файл filebeat.yml для этого выглядит следующим образом:

Наконец, осталось настроить Kibana для чтения журналов Filebeat. Это можно настроить из пользовательского интерфейса Kibana, перейдя на панель настроек в Oberserveability -> Logs. Убедитесь, что индексы журнала содержат подстановочный знак filebeat-*. Индексы, соответствующие этому подстановочному знаку, будут проанализированы Kibana на наличие журналов.

В конфигурацию столбцов журнала мы также добавили столбцы log.level и agent.hostname. Таким образом, мы можем увидеть, насколько серьезной была запись в журнале и с какого сервера она была отправлена.

Читайте также: