Рекомендации по использованию
In this article:
Рекомендации по использованию#
В этом разделе приводится рекомендации по работе с сервисами логирования.
ELK#
Варианты запуска сервиса#
Одиночный экземпляр сервиса, развёрнутый на одном экземпляре виртуальной машины в выбранной зоне доступности.
Отказоустойчивый сервис, развёрнутый в кластере минимум из трёх экземпляров виртуальных машин в одной или трёх зонах доступности.
Архитектура отказоустойчивого решения#
Отказоустойчивый сервис ELK развёртывается в кластере минимум из трёх экземпляров виртуальных машин, и на каждом узле работают по одному мастеру и реплике Elasticsearch, причём реплика взаимодействует с мастером из другого узла (кросс-репликация).
Один из узлов кластера можно назначить арбитром — такой узел имеет роли master и voting_only. Отсутствие ролей data и ingest в этом случае не позволяет Elasticsearch принимать и обрабатывать данные. Кроме того, на такой узел не устанавливаются компоненты Kibana и Logstash. Зато узлу не требуется много ресурсов, поэтому в качестве арбитра вы можете использовать более дешёвый тип экземпляра.
Если кластер содержит два полнофункциональных узла и более, то по умолчанию новые индексы Elasticsearch создаются с одним primary shard и одной репликой. Шардирование и репликация позволяют сохранить данные в случае отказа одного из узлов и распределить нагрузку, если она возрастёт.
Аутентификация в ELK#
Вы можете защитить вход в графический интерфейс Kibana или API Elasticsearch c помощью пароля, который можно задать при создании сервиса. После того как сервис стартовал, заданный пароль не рекомендуется менять, поскольку управление установленным сервисом средствами облака станет невозможным.
Для удобства работы c сервисом в него встроены служебные пользователи:
kibana_system
logstash_system
beats_system
apm_system
remote_monitoring_user
Важно
Изменение служебных паролей после запуска ELK приведёт к некорректной работе сервиса. Если вы хотите изменить пароли, создайте новых пользователей с такими же ролями, задайте пароли и используйте их для интеграции с внешними системами.
Логирование собственных систем#
Если для сервиса PaaS при его создании была включена опция логирования, то установка и настройка агентов, отвечающих за отправку журналов событий (log shipper), осуществляется полностью автоматически. Однако вы можете отправлять в ELK также журналы событий из других своих систем, не относящихся к PaaS.
Вы можете выбрать, какому компоненту ELK отправлять журналы — Logstash или напрямую Elasticsearch. Мы рекомендуем использовать Logstash с настройками по умолчанию: он подходит для большинства ситуаций и позволяет при необходимости выполнять дополнительную обработку журналов при помощи конвейеров (pipelines).
Для сбора журналов на экземпляре с логируемой системой необходимо установить агент, например, Filebeat.
Отправка журналов в Logstash#
Для отправки журналов событий в Logstash в конфигурационный файл Filebeat следует добавить следующий текст:
output:
logstash:
hosts:
- 172.24.19.223:5044
- 172.24.19.224:5044
Настройка аутентификации на стороне агента не требуется.
Отправка журналов в Elasticsearch#
Для отправки журналов событий напрямую в Elasticsearch предварительно необходимо настроить аутентификацию. На стороне агента надо настроить один из видов аутентификации:
базовая аутентификация по имени и паролю;
аутентификация с помощью токена.
При базовой аутентификации необходимо создать произвольного пользователя и назначить ему роль beats_writer. Сделать это можно с помощью Elasticsearch API:
или в разделе Stack Management Users:
После этого в конфигурационном файле Filebeat нужно указать имя пользователя и его пароль.
output:
elasticsearch:
hosts:
- http://172.24.19.223:9200
- http://172.24.19.224:9200
username: mybeats
password: l0ng-r4nd0m-p@ssw0rd
Подключение к сервису#
После успешного запуска адреса и порты, которые прослушивает сервис ELK, можно найти на его странице на вкладке Информация.
Компоненты ELK прослушивают по умолчанию следующие порты:
Компонент |
Протокол |
Порт |
Комментарий |
---|---|---|---|
Elasticsearch |
TCP |
9200 |
Принимает запросы HTTP |
Kibana |
TCP |
5601 |
Принимает запросы HTTP |
Logstash |
TCP |
5044 |
Использует собственный протокол Limberjack, не принимает HTTP |
При работе с компонентом Elasticsearch рекомендуется использовать точки приёма запросов (endpoints) для подключения всех узлов, кроме арбитра. Многие инструменты, например Filebeat и Metricbeat, умеют работать со всеми точками приёма сразу, самостоятельно осуществлять балансировку и автоматическое переключение. В случае если они не могут самостоятельно выполнять эти операции, рекомендуем использовать балансировщик haproxy или nginx.
Если на этапе развёртывания сервиса вы задали пароль суперпользователя elastic, то Elasticsearch запустится с расширением X-Pack Security и любое действие с ним потребует аутентификации.
Важно
Учётную запись elastic рекомендуем использовать только для управления компонентом Elasticsearch. Для интеграции с другими сервисами создайте дополнительных пользователей с нужным набором привилегий.
Мониторинг сервиса#
Для мониторинга сервиса мы рекомендуем включить облачный сервис мониторинга Prometheus.
Если вы хотите использовать свой собственный сервер мониторинга для контроля состояния и работоспособности экземпляров Elasticsearch и Logstash, то можете воспользоваться экспортёрами Prometheus elasticsearch_exporter и logstash_exporter.
Они развёртываются вместе с сервисом ELK и прослушивают порты tcp/9114
и tcp/9304
, соответственно.
Дополнительно на все узлы кластера ELK устанавливается node_exporter.
Он позволяет снимать метрики экземпляров виртуальных машин и операционной системы и прослушивает порт tcp/9100
.