Как установить kibana на ubuntu

Обновлено: 05.07.2024

Чтобы выполнить данный сценарий, требуется установленный и настроенный сервер для ELK на ОС Ubuntu 18.04 LTS x86_64.

Внимание!

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

Схема работы

Стек ELK состоит из трех компонентов:

Elasticsearch - движок для хранения, индексирования и обработки данных в общем хранилище, а также для полнотекстового поиска данных.

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

Kibana - веб-интерфейс для просмотра и анализа данных из хранилища.

Установка Elasticsearch, Logstash и Kibana

Настройка Elasticsearch

Elasticsearch настраивается с использованием трех конфигурационных файлов:

elasticsearch.yml - основной конфигурационный файл;

jvm.options - файл для настройки Java-машины для запуска Elasticsearch;

log4j2.properties - файл для настройки логирования Elasticsearch.

jvm.options

Наиболее важной в этом файле является настройка памяти, выделенной для JVM (Heap Size). Для Elasticsearch этот параметр влияет напрямую на то, насколько крупные массивы данных он сможет обработать. Heap Size определяется парой параметров:

  • Xms - начальное значение;
  • Xmx - максимальное значение.

По умолчанию Heap Size составляет 1 ГБ. Если объем памяти на сервере позволяет, увеличьте это значение (подробнее о Heap Size). Для этого найдите строки:

и замените их, например, на строки:

log4j2.properties

Для удобства можно поменять appender.rolling.policies.size.size, указывающий размер лога, при котором выполняется ротация (по умолчанию - 128 МБ). Подробнее о логировании см.тут.

elasticsearch.yml

  • node.name: elasticsearch - укажите имя ноды;
  • network.host: 127.0.0.1 - установите слушать только localhost.

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

В случае успешного запуска добавьте Elasticsearch в список процессов, запускаемых автоматически:

Убедитесь, что Elasticsearch отвечает на запросы:

Настройка Kibana

Если Kibana работает, отобразится следующее:

Настройка безопасности Kibana и Elasticsearch

По умолчанию Elasticsearch и Kibana полностью доступны для всех. Доступ можно ограничить одним из способов:

Использовать Nginx как reverse proxy с авторизацией и контролем доступа.

Использовать встроенный механизм elasticsearch xpack.security (подробно об этом см. тут или тут).

Рассмотрим наиболее популярный первый способ.

Аналогично настройте Nginx в качестве reverse proxy для Elasticsearh (порт 9200) и Logstash (обычно порт 5044).

Для ознакомления с Kibana можно использовать тестовый набор данных:

Установка filebeat

Beats - часть инфраструктуры Elasticsearch, так называемые Data Shippers (поставщики данных). Это легковесные агенты, которые берут данные из различных источников и преобразуют их для передачи в Elasticsearch. Функциональность Beats частично дублирует Logstash, но Beats легковеснее, проще настраиваются, быстрее работают и не требуют установки Java stack. Обычно на нодах, где формируются логи, устанавливаются соответствующие агенты Beats, которые передают логи в Logstash. Logstash аггрегирует, трансформирует логи и передает их в Elasticsearch. Существует множество разных Beats, в стандартный набор входят следующие агенты:

  • Filebeat - сбор логов из различных log-файлов.
  • Packetbeat - сбор сетевой статистики.
  • Winlogbeat - сбор логов на платформе Windows.
  • Metricbeat - сбор разнообразных метрик.
  • Heartbeat - сбор данных о доступности инфраструктуры.
  • Auditbeat - сбор данных аудита систем.
  • Functionbeat - сбор данных с Serverless проектов (AWS Lambda).
  • Journalbeat - сбор логов Journald.

Наиболее распространен агент Filebeat, используем его для сбора логов Nginx.

  1. Установите Filebeat:
  1. Разрешите обработку логов Nginx:

Если логи находятся в нестандартном месте, либо требуется обработка только части логов, в файле /etc/filebeat/modules.d/nginx.yml раскомментируйте и заполните переменные var.paths.

В примере далее будем собирать и анализировать логи обращения к сервису Kibana. При настройке Nginx мы определили, что логи обращений будут храниться в файлах /var/log/nginx/kibana.access.log и /var/log/nginx/kibana.error.log.

  1. Приведите файл /etc/filebeat/modules.d/nginx.yml к следующему виду:
  1. В файле /etc/filebeat/filebeat.yml отредактируйте секцию setup.kibana:

Примечание

Логин и пароль требуются для доступа Filebeat в Kibana с целью загрузки типовых dashboard под известные наборы данных.

  1. Логи будут пересылаться в Logstash, поэтому закомментируйте секцию output.elasticsearch и укажите IP-адрес сервера, на котором расположен Logstash, в секции output.logstash:
  1. Убедитесь, что в конфигурационном файле нет ошибок:

Перед запуском Filebeat настройте прием логов в Logstash.

Настройка Logstash

Конфигурационный файл Logstash в общем виде состоит из трех секций:

  • input - описание пункта назначения логов.
  • filter - трансформация логов.
  • output - описание пункта назначения преобразованных логов.
  1. Создайте файл /etc/logstash/conf.d/input-beats.conf, содержащий номер порта, на который Beats (в частности, Filebeat) присылает свои логи:
  1. Создайте файл /etc/logstash/conf.d/output-elasticsearch.conf и укажите, что логи нужно отправлять в Elasticsearch по адресу localhost и индексы нужно именовать в формате nginx-<дата> (то есть каждый день будет создаваться новый индекс, это удобно для анализа):
  1. Создайте файл /etc/logstash/conf.d/filter-nginx.conf следующего содержания:

Filebeat, который будет пересылать логи Nginx в Logstash, записывает всю строчку лога Nginx в поле message. Поэтому это поле нужно разобрать на переменные, с которыми можно будет работать в Elasticsearch. Этот разбор осуществляется в секции grok в формате NGINX ACCESS LOG .

В секции mutate можно изменить формат хранения данных (например, чтобы поле bytes из лога хранилось как число, а не как строка).

В секции geoip к логу добавляются поля геолокации по IP-адресу запроса.

Секция date используется для парсинга поля даты запроса из лога и преобразование для передачи в Elasticsearch.

Секция useragent заполняет поля по полю из лога. Обратите внимание, что обычно в подобных руководствах используется поле agent. Это поле не будет работать в связке Filebeat + Logstash, так как оно предназначено для использования при прямой записи из Filebeat в Elasticsearh. При использовании в Logstash будет выдаваться ошибка:

По той же причине в секции grok match не нужно использовать макрос %.

Для отслеживания ошибок в Logstash включите дебаг. Для этого в секцию output добавьте следующую строку:

В результате вывод в базу Elasticsearch будет дублироваться выводом на консоль/syslog. Кроме того, для проверки выражений grok match полезно использовать Grok Debugger.

  1. Запустите Logstash и добавьте его в список приложений для автоматического запуска:
  1. Убедитесь, что сервис запустился:
  1. Протестируйте работу Filebeat:

Настройка Kibana Templates

После запуска Filebeat логи обращения к Kibana поступают в Logstash, затем в Elasticsearch. Чтобы просмотреть эти логи, в Kibana необходимо настроить templates.

Комплекс Elastic Stack (прежнее название — комплекс ELK) представляет собой набор программного обеспечения Elastic с открытым исходным кодом, обеспечивающий возможности поиска, анализа и визуализации журналов, сгенерированных любым источником в любом формате (централизованное ведение журнала). Централизованное ведение журнала очень полезно для выявления проблем с серверами или приложениями, поскольку обеспечивает возможности поиска всех журнальных записей в одном месте. Также данная возможность позволяет выявлять проблемы, распространяющиеся на несколько серверов, посредством сопоставления их журналов за определенный период времени.

Комплекс Elastic Stack имеет четыре основных компонента:

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

В этом обучающем модуле вы научитесь устанавливать Elastic Stack на сервере Ubuntu 18.04. Вы научитесь устанавливать все компоненты Elastic Stack, в том числе Filebeat, инструмент для перенаправления и централизации журналов и файлов, а также настраивать эти компоненты для сбора и визуализации системных журналов. Кроме того, поскольку компонент Kibana обычно доступен только через localhost , мы будем использовать Nginx в качестве прокси для обеспечения доступа через браузер. Мы установим все эти компоненты на одном сервере, который будем называть нашим сервером Elastic Stack.

Примечание. При установке Elastic Stack необходимо использовать одну и ту же версию для всего комплекса. В этом обучающем модуле мы установим последние версии компонентов комплекса. На момент написания это Elasticsearch 6.4.3, Kibana 6.4.3, Logstash 6.4.3 и Filebeat 6.4.3.

Предварительные требования

Для этого обучающего модуля вам потребуется следующее:

Сервер Ubuntu 18.04, настроенный в соответствии с указаниями обучающего модуля «Начальная настройка сервера для Ubuntu 18.04», включая пользователя без привилегий root с привилегиями sudo и настроенный брандмауэр ufw . Требования сервера комплекса Elastic к ресурсам процессора, оперативной памяти и хранения данных зависят от объема журналов, который вы планируете собирать. В этом обучающем модуле мы будем использовать для нашего комплекса Elastic сервер VPS со следующими спецификациями:

  • ОС: Ubuntu 18.04
  • ОЗУ: 4 ГБ
  • ЦП: 2

На сервере должно быть установлено программное обеспечение Java 8, которое требуется для Elasticsearch и Logstash. Обратите внимание, что версия Java 9 не поддерживается. Для установки следуйте указаниям раздела «Установка Oracle JDK» нашего руководства по установке Java 8 в Ubuntu 18.04.

На сервере должен быть установлен Nginx, который мы позднее настроим как обратный прокси для Kibana. Для настройки следуйте указаниям нашего обучающего модуля «Установка Nginx в Ubuntu 18.04».

Кроме того, поскольку комплекс Elastic используется для доступа ценной информации о вашем сервере, которую вам нужно защищать, очень важно обеспечить защиту сервера сертификатом TLS/SSL. Это необязательно, но настоятельно рекомендуется.

Однако поскольку вы будете вносить изменения в серверный блок Nginx в ходе выполнения этого обучающего модуля, разумнее всего будет пройти обучающий модуль «Let’s Encrypt в Ubuntu 18.04» после прохождения второго шага настоящего обучающего модуля. Если вы планируете настроить на сервере Let’s Encrypt, вам потребуется следующее:

На вашем сервере должны быть настроены обе нижеследующие записи DNS. В руководстве «Введение в DigitalOcean DNS» содержится подробная информация по их добавлению.

Шаг 1 — Установка и настройка Elasticsearch

Компоненты комплекса Elastic отсутствуют в репозиториях пакетов Ubuntu по умолчанию. Однако их можно установить с помощью APT после добавления списка источников пакетов Elastic.

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

Для начала запустите следующую команду для импорта открытого ключа Elasticsearch GPG в APT:

Затем добавьте список источников Elastic в каталог sources.list.d , где APT будет искать новые источники:

Затем обновите списки пакетов, чтобы APT мог прочитать новый источник Elastic:

Установите Elasticsearch с помощью следующей команды:

После завершения установки Elasticsearch используйте предпочитаемый текстовый редактор для редактирования главного файла конфигурации Elasticsearch с именем elasticsearch.yml . Мы будем использовать nano :

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

Elasticsearch прослушивает весь трафик порта 9200 . Вы можете захотеть ограничить внешний доступ к вашему экземпляру Elasticsearch, чтобы посторонние не могли читать ваши данные или отключать ваш кластер Elasticsearch через REST API. Найдите строку с указанием network.host , уберите с нее значок комментария и замените значение на localhost , чтобы она выглядела следующим образом:

Сохраните и закройте файл elasticsearch.yml , нажав CTRL+X , а затем Y и ENTER , если вы используете nano . Затем запустите службу Elasticsearch с помощью systemctl :

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

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

Мы настроили и запустили Elasticsearch, и теперь можем перейти к установке Kibana, следующего компонента комплекса Elastic.

Шаг 2 — Установка и настройка информационной панели Kibana

Согласно официальной документации, Kibana следует устанавливать только после установки Elasticsearch. Установка в этом порядке обеспечивает правильность установки зависимостей компонентов.

Поскольку вы уже добавили источник пакетов Elastic на предыдущем шаге, вы можете просто установить все остальные компоненты комплекса Elastic с помощью apt :

Затем активируйте и запустите службу Kibana:

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

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

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

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

Завершив редактирование, сохраните и закройте файл.

Затем активируйте новую конфигурацию, создав символическую ссылку на каталог sites-enabled . Если вы уже создали файл серверного блока с тем же именем, что и в обучающем модуле по Nginx, вам не нужно выполнять эту команду:

Затем проверьте конфигурацию на синтаксические ошибки:

Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Чтобы разрешить соединения с Nginx, мы можем изменить правила с помощью следующей команды:

Теперь приложение Kibana доступно через FQDN или публичный IP-адрес вашего сервера комплекса Elastic. Вы можете посмотреть страницу состояния сервера Kibana, открыв следующий адрес и введя свои учетные данные в диалоге:

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

Примечание. Как указывалось в разделе предварительных требований, рекомендуется включить на сервере SSL/TLS. Вы можете следовать указаниям этого модуля, чтобы получить бесплатный сертификат SSL для Nginx в Ubuntu 18.04. После получения сертификата SSL/TLS вы можете вернуться и завершить прохождение этого обучающего модуля.

Теперь информационная панель Kibana настроена и мы перейдем к установке следующего компонента: Logstash.

Шаг 3 — Установка и настройка Logstash

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

Установите Logstash с помощью следующей команды:

После установки Logstash вы можете перейти к настройке. Файлы конфгурации Logstash имеют формат JSON и находятся в каталоге /etc/logstash/conf.d . При настройке полезно представлять Logstash как конвейер, который принимает данные с одной стороны, обрабатывает их и отправляет в пункт назначения (в данном случае в Elasticsearch). Конвейер Logstash имеет два обязательных элемента, input и output , а также необязательный элемент filter . Плагины ввода потребляют данные источника, плагины фильтра обрабатывают данные, а плагины вывода записывают данные в пункт назначения.

Конвейер Logstash

Создайте файл конфигурации с именем 02-beats-input.conf , где вы настроите ввод данных Filebeat:

Вставьте следующую конфигурацию input . В ней задается ввод beats , который прослушивает порт TCP 5044 .

Сохраните и закройте файл. Затем создайте файл конфигурации с именем 10-syslog-filter.conf , куда мы добавим фильтр для системных журналов или syslogs:

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

Сохраните и закройте файл после завершения.

Наконец, создайте файл конфигурации 30-elasticsearch-output.conf :

Вставьте следующую конфигурацию output . Этот вывод настраивает Logstash для хранения данных Beats в Elasticsearch, запущенном на порту localhost:9200 , в индексе с названием используемого компонента Beat. В этом обучающем модуле используется компонент Beat под названием Filebeat:

Сохраните и закройте файл.

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

Протестируйте свою конфигурацию Logstash с помощью следующей команды:

Если тестирование конфигурации выполнено успешно, запустите и активируйте Logstash, чтобы изменения конфигурации вступили в силу:

Теперь Logstash работает нормально и полностью настроен, и мы можем перейти к установке Filebeat.

Шаг 4 — Установка и настройка Filebeat

Комплекс Elastic Stack использует несколько компактных элементов транспортировки данных (Beats) для сбора данных из различных источников и их транспортировки в Logstash или Elasticsearch. Ниже перечислены компоненты Beats, доступные в Elastic:

    : собирает и отправляет файлы журнала. : собирает метрические показатели использования систем и служб. : собирает и анализирует данные сети. : собирает данные журналов событий Windows. : собирает данные аудита Linux и отслеживает целостность файлов. : отслеживает доступность услуг посредством активного зондирования.

В этом обучающем модуле мы используем Filebeat для перенаправления локальных журналов в комплекс Elastic Stack.

Установите Filebeat с помощью apt :

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

Откройте файл конфигурации Filebeat:

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

Сохраните и закройте файл.

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

Давайте активируем его:

Вы увидите список включенных и отключенных модулей с помощью следующей команды:

Вы увидите примерно следующий список:

Filebeat по умолчанию настроен для использования путей по умолчанию для системных журналов и журналов авторизации. Для целей данного обучающего модуля вам не нужно ничего изменять в конфигурации. Вы можете посмотреть параметры модуля в файле конфигурации /etc/filebeat/modules.d/system.yml .

Затем загрузите в Elasticsearch шаблон индекса. Индекс Elasticsearch — это коллекция документов со сходными характеристиками. Индексы идентифицируются по имени, которое используется для ссылки на индекс при выполнении различных операций внутри него. Шаблон индекса применяется автоматически при создании нового индекса.

Используйте следующую команду для загрузки шаблона:

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

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

Вы получите следующий результат:

Теперь вы можете запустить и активировать Filebeat:

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

Вы увидите примерно следующий результат:

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

Шаг 5 — Изучение информационных панелей Kibana

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

Откройте в браузере FQDN или публичный IP-адрес вашего сервера Elastic Stack. После ввода учетных данных, заданных на шаге 2, вы увидите главную страницу Kibana:

Главная страница Kibana

Здесь вы можете искать и просматривать журналы, а также настраивать информационные панели. Сейчас на этой странице будет немного данных, потому что вы собираете системные журналы только со своего сервера Elastic Stack.

Используйте левую панель навигации для перехода на страницу Dashboard и выполните на этой странице поиск информационных панелей Filebeat System. На этой странице вы можете искать образцы информационных панелей, входящих в комплектацию модуля system в Filebeat.

Информационная панель Syslog

Также вы сможете видеть, какие пользователи использовали команду sudo и когда:

Информационная панель Sudo

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

Заключение

В этом обучающем модуле вы научились устанавливать и настраивать комплекс Elastic Stack для сбора и анализа данных системных журналов. Помните, что вы можете отправлять в Logstash практически любые типы данных журнала и индексированных данных с помощью Beats, однако данные будут более полезны, если они будут проанализированы и структурированы с помощью фильтра Logstash, который преобразует данные в единый формат, легко читаемый Elasticsearch.


Совокупность kibana + Logstash + Kibana обзаруют ELK-стек ( Elastic стек).

Установка Kibana в Unix/Linux

Я расскажу как можно установить Kibana на различные Unix/Linux ОС. А установка начнется с установки JAVA, т.к она неотъемная часть данной утилиты.

Если в вашей системе не установлена Java, используйте одну из следующих ссылок для ее установки:

Вот еще полезное чтиво:

Начнем установку кибаны.

Установка Kibana в Debian/Ubuntu

Имеется несколько способов выполнить установку.

Загрузите и установите открытый ключ подписи:

Обновляем репозиторий и выполняем установку кибаны:

Если у вас 64 бит ОС:

Если у вас 32 бит ОС:

Будет описан ниже.

Установка Kibana в CentOS/Fedora/RedHat

Имеется несколько способов выполнить установку.

Загрузите и установите открытый ключ подписи:

И вставляем в него:

Обновляем репозиторий и выполняем установку кибаны:

Если у вас 64 бит ОС:

Если у вас 32 бит ОС:

Будет описан ниже.

Установка Kibana на другой Unix/Linux ОС

Имеется несколько способов выполнить установку.

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

Если у вас 64 битный Linux:

Если у вас 32 битный Linux:

Если у вас Mac OS X (Darwin):

Сейчас, переносим архив в удобное место:

Переходим к настройке переменного окружения:

И чтобы все заработало, выполняем:

И, можно приступать к настройке.

Настройка Kibana в Unix/Linux

Я не буду заострять настройку кибаны в данной теме, т.к нет смысла использовать ее порознь ( без участия LogStash и ElasticSearch). Скоро будет статья как собрать ELK стек.

Запуск Kibana в Unix/Linux

Перед запуском (если использовали СПОСОБ 1 и 2), проверяем что у нас используется «SysV init vs systemd»:

Запуск Kibana с SysV init

Используйте команду update-rc.d чтобы добавить kibana в автозагрузку системы:

Чтобы запустить/остановить службу kibana, используйте:

Если kibana не запускается по какой-либо причине, он выведет причину отказа на STDOUT. Лог-файлы можно найти в /var/log/kibana/ папке.

Убедитесь, что вы можете получить доступ к веб-интерфейсу Kibana с другого компьютера (разрешите трафик через 5601-й TCP порт)!

Запуск kibana с systemd

Чтобы добавить Kibana в автозагрузку системы, используйте:

Чтобы запустить/остановить службу Kibana, используйте:

Чтобы получить вывод лога, используйте:

Чтобы показать логи конкретно для kibana:

Чтобы показать записи с лога для kibana службы начиная с заданного времени:

Убедитесь, что вы можете получить доступ к веб-интерфейсу Kibana с другого компьютера (разрешите трафик через 5601-й TCP порт):

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

Стек Elastic включает четыре основных компонентов:

    : распределенная поисковая система RESTful, которая хранит все собранные данные. : компонент для обработки данных, который отправляет входящие данные на Elasticsearch. : веб-интерфейс для поиска и визуализации логов. : легкие специализированные отправители данных; могут передавать данные на Logstash или Elasticsearch с сотен или тысяч машин.

Данный мануал поможет установить Elastic Stack на сервер Ubuntu 20.04. Вы узнаете, как установить все компоненты, включая Filebeat (Beat для пересылки и централизации логов и файлов), и настроить их для сбора и визуализации системных логов. Обычно Kibana устанавливается только на локальном хосте, потому мы настроим прокси Nginx, чтобы получить доступ к Kibana через веб-браузер. Мы установим все эти компоненты на один сервер.

Примечание: В стеке Elastic нужно использовать одинаковые версии всех компонентов. В этом мануале мы установим последние версии пакетов, это Elasticsearch 7.7.1, Kibana 7.7.1, Logstash 7.7.1, and Filebeat 7.7.1.

Требования

  • Сервер Ubuntu 20.04, настроенный по этому мануалу.
  • Объем CPU, RAM и хранилища сервера ELK зависит от объема логов, которые вы будете собирать. В данном мануале используется сервер с такими характеристиками: RAM: 4GB, CPU: 2.
  • OpenJDK 11 (инструкции по установке вы найдете в мануале Установка Java с помощью apt в Ubuntu 20.04).
  • Nginx, прокси-сервер для Kibana. Инструкции по установке можно найти здесь.

Также очень важно обеспечить безопасность сервера, поскольку стек Elastic используется для доступа к ценной информации, которую не должны видеть неавторизованные пользователи. Для этого создайте сертификат TLS/SSL. Это необязательно, но настоятельно рекомендуется сделать.

1: Установка и настройка Elasticsearch

Компоненты стека Elastic не доступны в стандартных репозиториях Ubuntu. Но их можно установить с помощью APT, если добавить исходный список Elastic.

Все пакеты Elastic Stack подписаны с помощью ключа Elasticsearch, чтобы защитить систему от подделки пакетов. Пакеты, прошедшие проверку подлинности с использованием ключа, будут считаться вашим менеджером пакетов доверенными. На этом этапе мы импортируем открытый ключ GPG Elasticsearch и добавим исходный список пакета Elastic для установки Elasticsearch.

Затем добавьте список Elastic в каталог sources.list.d, где менеджер apt будет искать новые пакеты.

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Обновите индекс пакетов:

sudo apt update

Теперь просто установите Elasticsearch.

sudo apt install elasticsearch

После установки Elasticsearch откройте текстовый редактор, чтобы отредактировать главный конфигурационный файл Elasticsearch, elasticsearch.yml. Здесь мы будем использовать nano:

sudo nano /etc/elasticsearch/elasticsearch.yml

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

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

Elasticsearch прослушивает трафик через порт 9200. Нужно ограничить внешний доступ к экземпляру Elasticsearch, чтобы запретить посторонним пользователям читать ваши данные или не дать остановить работу кластера Elasticsearch через REST API. Найдите строку network.host, раскомментируйте ее и замените ее значение на localhost, чтобы она выглядела следующим образом:

Мы указали localhost, чтобы Elasticsearch прослушивал все интерфейсы и привязанные к ним IP-адреса. Если вы хотите, чтобы он прослушивал только определенный интерфейс, вы можете указать его IP вместо localhost. Сохраните и закройте файл.

Это минимальная настройка, необходимая для запуска Elasticsearch.

Теперь вы можете впервые запустить сервис Elasticsearch с помощью systemctl:

sudo systemctl start elasticsearch

Затем добавьте сервис в автозагрузку, чтобы Elasticsearch запускался при каждой загрузке вашего сервера:

sudo systemctl enable elasticsearch

curl -X GET "localhost:9200"

Вы увидите основную информацию о вашем локальном хосте:

"name" : "Elasticsearch",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ",
"version" : "number" : "7.7.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
>,
"tagline" : "You Know, for Search"
>

Поисковая система Elasticsearch установлена и запущена.

2: Установка и настройка Kibana

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

Поскольку вы уже добавили исходный список Elastic, сейчас вы можете просто установить остальные компоненты стека с помощью apt:

sudo apt install kibana

Чтобы включить сервис Kibana, введите:

sudo systemctl enable kibana
sudo systemctl start kibana

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

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

Введите и подтвердите пароль в командной строке. Запомните эти данные, так как они понадобятся вам для доступа к веб-интерфейсу Kibana.

Далее нужно создать файл блока server Nginx. Мы используем условный домен your_domain, но вы можете выбрать более описательное имя. Например, если у сервера есть FQDN и DNS-записи, вы можете назвать этот файл своим доменным именем:

sudo nano /etc/nginx/sites-available/your_domain

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

Сохраните и закройте файл.

Включите новую конфигурацию, добавив симлинк в каталог sites-enabled. Если вы создали файл блока server с таким же именем ранее, вам не нужно делать этого.

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

Проверьте ошибки в файле:

Если в выводе команда сообщает об ошибках, вернитесь в файл и проверьте код, который вы поместили в файл конфигурации. Исправив ошибки, снова запустите команду (в выводе должно быть syntax is ok ) и перезапустите Nginx:

sudo systemctl reload nginx

Если вы следовали мануалу по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Чтобы разрешить подключения к Nginx, нужно настроить брандмауэр, набрав:

sudo ufw allow 'Nginx Full'

Сервис Kibana теперь доступен по вашему домену или внешнему IP-адресу сервера Elastic Stack. Вы можете проверить страницу состояния сервера Kibana, перейдя по следующему адресу и введя свои учетные данные:

На странице вы увидите информацию об использовании ресурсов и установленных плагинах.

Примечание: В требованиях упоминалось, что сервер нужно защитить с помощью сертификата SSL/TLS. Сейчас самое время сделать это. Инструкции можно найти здесь.

3: Установка и настройка Logstash

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

Установите Logstash с помощью этой команды:

sudo apt install logstash

Создайте конфигурационный файл 02-beats-input.conf для настройки входных данных Filebeat.

sudo nano /etc/logstash/conf.d/02-beats-input.conf

Вставьте в файл такую конфигурацию. Она настраивает прослушивание входных данных beats по TCP-порту 5044.

Сохраните и закройте файл. Затем создайте файл 30-elasticsearch-output.conf:

sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

Вставьте следующую конфигурацию вывода. По сути, эти параметры настраивают Logstash для хранения данных Beats в базе Elasticsearch (по адресу localhost:9200) в индексе с именем используемого Beat. Beat, использованный в этом мануале, называется Filebeat.

Сохраните и закройте файл.

Проверьте свою конфигурацию Logstash:

sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Если проверка конфигурации прошла успешно, запустите и включите Logstash, чтобы изменения вступили в силу:

sudo systemctl start logstash
sudo systemctl enable logstash

4: Установка и настройка Filebeat

Elastic Stack использует несколько простых клиентов Beats для сбора данных из различных источников и их передачи в Logstash или Elasticsearch. Вот Beats, которые в настоящее время доступны в Elastic:

    : собирает и передает логи. : собирает метрики системы и сервисов. : собирает и анализирует сетевые данные. : собирает логи событий Windows. : собирает данные инфраструктуры аудита Linux и проверяет целостность файлов. : отслеживает доступность сервисов.

В этом мануале мы используем Filebeat, клиент для передачи логов в стек Elastic.

sudo apt install filebeat

Затем настройте Filebeat для подключения к Logstash. Отредактируйте образец файла конфигурации, который поставляется вместе с Filebeat. Откройте файл.

sudo nano /etc/filebeat/filebeat.yml

Примечание: Как и в случае Elasticsearch, конфигурационный файл Filebeat имеет формат YAML, а в нем очень важны правильные отступы.

Сохраните и закройте файл.

Функциональность Filebeat можно расширить с помощью модулей. В этом мануале мы будем использовать модуль system, который собирает и анализирует логи, созданные сервисом системных логов Linux.

sudo filebeat modules enable system

Получить список включенных и отключенных модулей можно с помощью:

sudo filebeat modules list
Enabled:
system
Disabled:
apache2
auditd
elasticsearch
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
traefik
.

По умолчанию Filebeat использует пути системного лога и лога авторизации по умолчанию. В данном случае в конфигурации не нужно ничего менять. Вы можете увидеть параметры модуля в файле /etc/filebeat/modules.d/system.yml.

Затем нам нужно настроить конвейеры приема Filebeat, которые анализируют данные логов перед отправкой их в logstash, а потом в Elasticsearch. Чтобы загрузить конвейер для модуля system, введите следующую команду:

sudo filebeat setup --pipelines --modules system

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

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

sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
Index setup finished.

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

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

sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Вы увидите примерно следующее:

Теперь можно запустить Filebeat и добавить его в автозагрузку:

sudo systemctl start filebeat
sudo systemctl enable filebeat

Если вы правильно настроили свой стек Elastic, Filebeat начнет отправку системного лога и логов авторизации в Logstash, который затем загрузит эти данные в Elasticsearch.

Чтобы убедиться, что Elasticsearch действительно получает эти данные, запросите индекс Filebeat с помощью этой команды:

Вы должны получить такой результат:

.
"took" : 4,
"timed_out" : false,
"_shards" : "total" : 2,
"successful" : 2,
"skipped" : 0,
"failed" : 0
>,
"hits" : "total" : "value" : 4040,
"relation" : "eq"
>,
"max_score" : 1.0,
"hits" : [
"_index" : "filebeat-7.7.1-2020.06.04",
"_type" : "_doc",
"_id" : "FiZLgXIB75I8Lxc9ewIH",
"_score" : 1.0,
"_source" : "cloud" : "provider" : "digitalocean",
"instance" : "id" : "194878454"
>,
"region" : "nyc1"
>,
"@timestamp" : "2020-06-04T21:45:03.995Z",
"agent" : "version" : "7.7.1",
"type" : "filebeat",
"ephemeral_id" : "cbcefb9a-8d15-4ce4-bad4-962a80371ec0",
"hostname" : "june-ubuntu-20-04-elasticstack",
"id" : "fbd5956f-12ab-4227-9782-f8f1a19b7f32"
>,
.

Если ваши выходные данные показывают 0 total hits, Elasticsearch не загружает логи в индекс, который вы искали, и вам нужно будет проверить настройки на наличие ошибок. Если вы получили ожидаемый результат, переходите к следующему разделу, в котором вы узнаете, как работать с дашбордами Kibana.

5: Дашборды Kibana

Теперь давайте посмотрим, как работает Kibana.

В браузере откройте FQDN или внешний IP сервера Elastic. Введите свои учетные данные из раздела 2, и вы попадете на домашнюю страницу Kibana.

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

Используйте левую панель, чтобы перейти на страницу Dashboard и выполнить поиск по Filebeat System. Оказавшись там, вы можете искать примеры дашбордов, которые поставляются с модулем system.

У Kibana есть много других функций, таких как построение графиков и фильтров. Исследуйте их самостоятельно.

Заключение

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

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