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 соглашения об именовании основных значений атрибутов следующие:
- Соглашение об именах для fields.AppID: {AppID}.
- Соглашение об именах fields.AppName: {название линейки продуктов на английском языке}.{название проекта на английском языке} (если название проекта на английском языке состоит из 2 или более английских слов, разделите слова с помощью .).
- Примечание для атрибута 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/), это в основном достигается с помощью следующих шагов:
- Выберите библиотеку бизнес-индексов.
- Выберите диапазон дат.
- Введите содержимое для поиска, чтобы получить точный запрос, или введите *, чтобы получить нечеткий запрос.
- Щелкните значок развертывания каждого журнала, чтобы просмотреть подробные сведения о журнале.
- В левой области интерфейса Kibana сверху вниз находятся окно выбора библиотеки индексов, список выбранных полей (Selected Fields) и список доступных полей (Available Fields). Измените отображение таблицы журнала в правой части Kibana, добавив доступные поля в список коллекции Selected Fields.
Пожалуйста, обратитесь к изображению ниже:
Интерфейс журнала запросов Kibana
4. Загрузка демоверсии и дополнительная информация
- Адрес загрузки Log4NetDemo:GitHub.com/intended 2017/журнал…
- официальный сайт ЭЛК:www.elastic.co/
- Инструкции по настройке регулярных выражений:woohoo.elastic.co/expensive/en/не голоден…
Список контента, задействованного в этой серии статей, выглядит следующим образом, если вам интересно, обратите внимание:
- Открытие:Три ключевых момента практики структуры команды малых и средних НИОКР
- Кэш Редис:Быстрый старт и применение Redis
- Очередь сообщений RabbitMQ:Как использовать очередь сообщений RabbitMQ?
- Централизованный журнал ELK
- Работа по планированию задач:Работа по планированию задач для малых и средних команд R&D Практика архитектуры
- Метрики мониторинга приложений:Как сделать мониторинг приложений?
- Платформа микросервисов MSA
- Инструмент поиска Solr
- Распределенный координатор ZooKeeper
- мелкие инструменты:
- Dapper.NET/EmitMapper/AutoMapper/Autofac/NuGet
- Инструмент публикации Jenkins
- Общий архитектурный проект:Как электронная коммерция влияет на общую структуру предприятия?
- Единый архитектурный проект
- Унифицированное многоуровневое приложение:Как стандартизировать все прикладные уровни в компании?
- Средство отладки WinDbg
- войти
- Корпоративный платежный шлюз
- Вывод
об авторе
Чжан Хуэйцин, ветеран ИТ с более чем 10-летним стажем, последовательно работал архитектором Ctrip, главным архитектором Guda Group, техническим директором Zhongqing Yiyou и т. д., а также руководил модернизацией и преобразованием технической структуры двух компаний. Теперь сосредоточьтесь на архитектуре и инженерной эффективности, сочетании и интеграции технологий и бизнеса, ценности технологий и инновациях.
Ян Ли, имеет многолетний опыт исследования и разработки систем интернет-приложений, работал в группе Guda и в настоящее время является системным архитектором Zhongqing Yiyou, в основном отвечая за архитектурный дизайн бизнес-системы центра исследований и разработок компании, а также накопление и обучение новые технологии. На данном этапе основное внимание уделяется программному обеспечению с открытым исходным кодом, архитектуре программного обеспечения, микросервисам и большим данным.
благодарныйЮтада ХикаруОбзор этой статьи.