Практика архитектуры малых и средних команд НИОКР: централизованный журнал ELK

Архитектура

1. Централизованный журнал

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

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

1.1 Введение в ELK

ELK — это сокращение от Elasticsearch, Logstash и Kibana, Комбинация этих трех инструментов с открытым исходным кодом может создать мощную централизованную платформу управления журналами.

Elasticsearch — это распределенная поисковая система с открытым исходным кодом, которая обеспечивает три функции: поиск, анализ и хранение данных. Его функции: распределенное, автоматическое обнаружение, автоматическое сегментирование индекса, механизм репликации индекса, интерфейс в стиле RESTful, несколько источников данных и автоматическая поисковая загрузка.

Logstash — это инструмент с открытым исходным кодом для сбора, анализа и фильтрации журналов. Поддерживается практически любой тип журнала, включая системные журналы, бизнес-журналы и журналы безопасности. Он может получать журналы из многих источников, в первую очередь Syslog, обмена сообщениями (например, RabbitMQ) и Filebeat, а также может выводить данные различными способами, в первую очередь по электронной почте, WebSockets и Elasticsearch.

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

1.2, архитектура ELK

На следующем рисунке представлена ​​схема архитектуры централизованного управления журналами ELK. Из соображений производительности мы решили использовать форму Beats+EK для создания централизованной системы управления журналами.


ELK-архитектура

2. Метод конфигурации

2.1. Эластичный поиск

После развертывания Elasticsearch необходимо изменить основные свойства в конфигурационном файле elasticsearch.yml: cluster.name, node.name, network.host, discovery.zen.ping.unicast.hosts. Среди них, когда Elasticsearch развернут в кластерном режиме, необходимо настроить свойство discovery.zen.ping.unicast.hosts.

2.2. Логсташ

Сбор, фильтрация и вывод данных выполняются путем настройки ввода, фильтра (необязательно) и вывода в файле filebeat-pipeline.conf, как показано на следующем рисунке:


Конфигурация логсташа

Затем включите службу Logstash с помощью файла filebeat-pipline.conf, как показано на следующем рисунке:


Включить службу Logstash

Примечание. Поскольку для реализации централизованного управления журналами используется решение Beats+EK, Logstash не требуется.

2.3. Кибана

Изменяя содержимое конфигурационного файла kibana.yml, он используется для подключения к правильному адресу службы Elasticsearch.Обычно вам нужно только настроить свойство elasticsearch.url, как показано на первом рисунке ниже. После завершения настройки выполните команду [bin/kibana &], чтобы включить службу Kibana, как показано на втором рисунке ниже. Наконец, вы можете открыть страницу управления Kibana (адрес посещения: http://139.198.13.12:4800/) в своем браузере, чтобы просмотреть журналы.


Инструкции по настройке Кибаны


Включить службу Кибана

2.4. Файловый бит

Содержимое файла конфигурации filebeat.yml в основном состоит из четырех частей: Filebeat, Output, Shipper (необязательно) и Logging (необязательно). Среди них Filebeat в основном определяет информацию файла журнала для мониторинга, а Output в основном настраивает цель вывода. данных журнала.

В файле filebeat.yml соглашения об именовании основных значений атрибутов следующие:

  1. Соглашение об именах для fields.AppID: {AppID}.
  2. Соглашение об именах fields.AppName: {название линейки продуктов на английском языке}.{название проекта на английском языке} (если название проекта на английском языке состоит из 2 или более английских слов, разделите слова с помощью .).
  3. Примечание для атрибута index: значением, определяемым индексом (index), является {название линейки продуктов на английском языке}, но все английские буквы должны быть строчными, не должны начинаться с подчеркивания и не должны содержать запятых.

Пример конфигурации файла filebeat.yml показан на следующем рисунке:


Пример конфигурации для filebeat.yml

На каком сервере хранятся лог-файлы, на каком сервере развернут сервис filebeat. Действия по включению службы filebeat в операционной системе Windows:

1. Откройте поиск под окнами, введите powershell, откройте расположение файла, в котором находится powershell, щелкните правой кнопкой мыши powershell.exe и запустите от имени администратора, чтобы открыть окно PowerShell.

Или запустите cmd.exe от имени администратора, введите команду powershell и войдите в окно PowerShell.

Уведомление:

Обязательно откройте окно PowerShell от имени администратора, иначе запуск скрипта .ps1 на шаге 2 ниже выдаст ошибку, что у вас нет разрешения на создание службы filebeat:

2. Перейдите в каталог, где находится исполняющий файл filebeat, например: cd 'E:\ELK\filebeat-1.3.0-windows', а затем выполните команду: powershell.exe -ExecutionPolicy UnRestricted -File .\install- сервис-filebeat.ps1.

3. После этого вы можете просматривать, включать и останавливать службу filebeat, выполнив следующие команды в окне PowerShell:

  • Проверьте статус службы filebeat: Get-Service filebeat
  • Запустите службу filebeat: Start-Service filebeat
  • Остановить службу файловых битов: Stop-Service filebeat

3. Как использовать

3.1, локальный журнал Log4Net

1. Указание пути хранения логов: {буква диска}:\Log4Net{AppID}\, где AppID — шестизначный код нашего проекта. Например: D:\Log4Net\110107\.

2. Содержимое конфигурации log4net.config:

__Mon Dec 04 2017 11:02:01 GMT+0800 (CST)____Mon Dec 04 2017 11:02:01 GMT+0800 (CST)__<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>
  <appSettings>
  </appSettings>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
      <!--AppID 150202,用于区分哪个应用的日志 -->     
      <file value="D:\Log4Net\150202\" />
      <rollingStyle value="Composite" />
      <datePattern value="yyyy-MM-dd".log"" />
      <staticLogFileName value="false" />
      <param name="Encoding" value="utf-8" />  
      <maximumFileSize value="100MB" />      
      <countDirection value="0" />         
      <maxSizeRollBackups value="100" />
      <appendToFile value="true" />      
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="记录时间:%date 线程:[%thread] 日志级别:%-5level 记录类:%logger 日志消息:%message%newline" />
      </layout>
    </appender>
    <logger name="FileLogger" additivity="false">    
      <level value="DEBUG" />
      <appender-ref ref="FileAppender" />
    </logger>     
  </log4net>
</configuration>__Mon Dec 04 2017 11:02:01 GMT+0800 (CST)____Mon Dec 04 2017 11:02:01 GMT+0800 (CST)__

Примечание:

  • Для maxSizeRollBackups установлено значение 100 МБ; задайте для countDirection целое число больше -1; для maxSizeRollBackups установлено значение 100.
  • Спецификация содержимого файла журнала: Каждое содержимое журнала в файле журнала должно быть «сообщением журнала класса ошибок уровня журнала потока записи».

3.2, запрос журнала

Основываясь на журнале запросов Kibana (адрес доступа: http://139.198.13.12:4800/), это в основном достигается с помощью следующих шагов:

  1. Выберите библиотеку бизнес-индексов.
  2. Выберите диапазон дат.
  3. Введите содержимое для поиска, чтобы получить точный запрос, или введите *, чтобы получить нечеткий запрос.
  4. Щелкните значок развертывания каждого журнала, чтобы просмотреть подробные сведения о журнале.
  5. В левой области интерфейса Kibana сверху вниз находятся окно выбора библиотеки индексов, список выбранных полей (Selected Fields) и список доступных полей (Available Fields). Измените отображение таблицы журнала в правой части Kibana, добавив доступные поля в список коллекции Selected Fields.

Пожалуйста, обратитесь к изображению ниже:


Интерфейс журнала запросов Kibana

4. Загрузка демоверсии и дополнительная информация

Список контента, задействованного в этой серии статей, выглядит следующим образом, если вам интересно, обратите внимание:

об авторе

Чжан Хуэйцин, ветеран ИТ с более чем 10-летним стажем, последовательно работал архитектором Ctrip, главным архитектором Guda Group, техническим директором Zhongqing Yiyou и т. д., а также руководил модернизацией и преобразованием технической структуры двух компаний. Теперь сосредоточьтесь на архитектуре и инженерной эффективности, сочетании и интеграции технологий и бизнеса, ценности технологий и инновациях.

Ян Ли, имеет многолетний опыт исследования и разработки систем интернет-приложений, работал в группе Guda и в настоящее время является системным архитектором Zhongqing Yiyou, в основном отвечая за архитектурный дизайн бизнес-системы центра исследований и разработок компании, а также накопление и обучение новые технологии. На данном этапе основное внимание уделяется программному обеспечению с открытым исходным кодом, архитектуре программного обеспечения, микросервисам и большим данным.

благодарныйЮтада ХикаруОбзор этой статьи.