Облачный сервер с ELK
ELK (Elasticsearch, Logstash, Kibana) — набор инструментов с открытым исходным кодом для анализа и визуализации логов и других данных.
В Selectel облачный сервер с ELK содержит:
- Elasticsearch — открытая распределенная система управления данными и поиска по ним, которая основана на поисковой системе Apache Lucene. Система предоставляет мощные возможности по индексированию, хранению, поиску и анализу больших объемов информации в реальном времени;
- Kibana — веб-интерфейс для мониторинга, аналитики логов Elasticsearch и представления данных на дашбордах;
- Filebeat — агент для сбора логов и передачи их в Elasticsearch;
- Metricbeat — агент для сбора метрик и передачи их в Elasticsearch.
Можно создать облачный сервер с готовым приложением ELK. В России сервер работает с настроенной операционной системой SelectOS 1.1. В других странах — Ubuntu 22.04.
Создать облачный сервер с ELK
Для работы ELK облачный сервер должен быть доступен из интернета. Для этого при создании сервера нужно создать приватную подсеть и подключить публичный IP-адрес. Для настройки ELK также при создании сервера необходимо указать user data — пользовательские параметры конфигурации операционной системы.
После создания сервера с ELK автоматически выпустится бесплатный TLS-сертификат от Let’s Encrypt® для домена, который вы укажете. Для выпуска сертификата нужно добавить A-запись для домена и указать в значении записи публичный IP-адрес сервера. Домен можно добавить в DNS-хостинг Selectel (actual).
1. Создать публичный IP-адрес
Создайте публичный IP-адрес, чтобы облачный сервер с ELK был доступен из интернета.
Используйте подраздел Создать публичный IP-адрес инструкции Публичные IP-адреса.
2. Добавить А-запись для домена
Добавьте ресурсную запись, чтобы получить доступ к ELK по домену.
Укажите:
- тип ресурсных записей в группе — A;
- значение записи — публичный IP-адрес, который вы создали на этапе 1.
3. Создать облачный сервер с ELK
-
В панели управления в верхнем меню нажмите Продукты и выберите Облачные серверы.
-
Нажмите Создать сервер.
-
Заполните блоки:
-
Проверьте цену облачного сервера.
-
Нажмите Создать.
Имя и расположение
-
Введите имя сервера. Оно будет установлено как имя хоста в операционной системе.
-
Выберите регион и сегмент пула, в котором будет создан сервер. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов. После создания сервера изменить сегмент пула нельзя.
Источник
-
Откройте вкладку Приложения.
-
Выберите Cloud ELK.
-
Опционально: если вам нужна другая актуальная или архивная версия приложения, в поле Версия выберите нужную версию.
Конфигурация
Выберите конфигурацию от 4 vCPU, RAM от 10 ГБ и размером загрузочного диска от 30 ГБ. Для сервера доступны два типа конфигураций:
- фиксированные конфигурации — несколько линеек с разными техническими характеристиками, в которых зафиксировано соотношение ресурсов;
- произвольные конфигурации, в которых можно указать любое соотношение ресурсов.
В конфигурациях используются разные процессоры в зависимости от линейки и сегмента пула. После создания сервера можно будет изменить конфигурацию.
Фиксированная конфигурация
Произвольная конфигурация
-
Нажмите Фиксированная.
-
Откройте вкладку с нужной линейкой.
-
Выберите конфигурацию.
-
Если в выбранной конфигурации доступны и локальные, и сетевые диски, выберите диск, который будет использоваться в качестве загрузочного:
- локальный диск — отметьте чекбокс Локальный SSD NVMe диск. Сервер с локальным диском можно создать только из образов и приложений;
- сетевой диск — не отмечайте чекбокс.
Объем оперативной памяти, который выделяется серверу, может быть меньше указанного в конфигурации — ядро операционной системы резервирует часть оперативной памяти в зависимости от версии ядра и дистрибутива. Выделенный объем на сервере можно проверить с помощью команды
sudo dmesg | grep Memory
.
-
Нажмите Произвольная.
-
Укажите количество vCPU и размер RAM.
-
Если в выбранной конфигурации доступны и локальные, и сетевые диски, выберите диск, который будет использоваться в качестве загрузочного:
- локальный диск — отметьте чекбокс Локальный SSD NVMe диск. Сервер с локальным диском можно создать только из образов и приложений;
- сетевой диск — не отмечайте чекбокс.
Объем оперативной памяти, который выделяется серверу, может быть меньше указанного в конфигурации — ядро операционной системы резервирует часть оперативной памяти в зависимости от версии ядра и дистрибутива. Выделенный объем на сервере можно проверить с помощью команды
sudo dmesg | grep Memory
.
Диски
-
Если при настройке конфигурации вы не отметили чекбокс Локальный SSD NVMe диск, в качестве загрузочного диска сервера будет использоваться первый указанный сетевой диск. Чтобы настроить его:
1.1. Выберите тип сетевого загрузочного диска.
1.2. Укажите размер сетевого загрузочного диска в ГБ или ТБ. Учитывайте лимиты сетевых дисков на максимальный размер.
1.3. Если вы выбрали тип диска Универсальный v2, укажите общее количество операций чтения и записи в IOPS. После создания диска вы можете изменить количество IOPS — уменьшить или увеличить. Количество изменений IOPS не ограничено.
-
Опционально: добавьте дополнительный сетевой диск сервера:
2.1. Нажмите Добавить.
2.2. Выберите тип сетевого диска.
2.3. Укажите размер сетевого диска в ГБ или ТБ. Учитывайте лимиты сетевых дисков на максимальный размер.
2.4. Если вы выбрали тип диска Универсальный v2, укажите общее количество операций чтения и записи в IOPS. После создания диска вы можете изменить количество IOPS — уменьшить или увеличить. Количество изменений IOPS не ограничено.
После создания сервера можно будет подключить новые дополнительные диски.
Сеть
Сервер может быть добавлен в новую приватную подсеть или в уже существующую.
Приватная — подсеть без доступа из интернета или с одним статическим публичным IP-адресом. Публичный IP-адрес подключается к серверу, который будет доступен из интернета.
Существующая приватная подсеть
Новая приватная подсеть
-
Нажмите Приватная подсеть.
-
В поле Публичный IP-адрес для доступа из интернета выберите публичный IP-адрес, который вы создали ра ннее или создайте новый.
-
Разверните блок с настройками приватной подсети.
-
В поле Подсеть выберите существующую подсеть.
-
В поле Приватный IP укажите приватный IP-адрес сервера. Публичный IP-адрес будет автоматически подключен к приватному адресу.
-
Нажмите Приватная подсеть.
-
В поле Публичный IP-адрес для доступа из интернета выберите публичный IP-адрес, который вы создали раннее или создайте новый.
-
Разверните блок с настройками приватной подсети.
-
Если у вас есть существующие сети в проекте, в поле Подсеть выберите Новая подсеть.
-
Опционально: измените CIDR подсети.
-
Опционально: включите тумблер DHCP.
-
Опционально: в поле Шлюз измените IP-адрес шлюза по умолчанию.
-
В поле Сеть выберите существующую сеть, в которой будет создана подсеть, или Новая сеть. Для приватной подсети с публичным IP-адресом автоматически будет создан роутер
router-<network_name>
, где<network_name>
— имя сети. -
Если вы выбрали Новая сеть, введите имя сети.
Безопасность
Выберите группы безопасности для фильтрации трафика на портах сервера. Без групп безопасности трафик будет запрещен. Если блок отсутствует, в сети сервера выключена фильтрация трафика (port security). С выключенной фильтрацией трафика весь трафик будет разрешен.
Доступ
-
Разместите на сервере SSH-ключ для проекта для безопасного подключения:
1.1. Если SSH-ключ для проекта не добавлен в облачную платформу, нажмите Добавить SSH-ключ, введите имя ключа, вставьте публичный ключ в формате OpenSSH и нажмите Добавить.
1.2. Если SSH-ключ для проекта добавлен в облачную платформу, в поле SSH-ключ выберите существующий ключ. SSH-ключ доступен только в том пуле, в котором он размещен.
-
Опционально: в поле Пароль для «root»:
2.1. Скопируйте пароль пользователя
root
— пользователя с неограниченными правами на все действия над системой.2.2. Сохраните пароль в безопасном месте и не передавайте в открытом виде.
Дополнительные настройки
-
Если вы планируете создать несколько серверов и хотите повысить отказоустойчивость инфраструктуры, добавьте сервер в группу размещения:
1.1. Чтобы создать новую группу, в поле Группа размещения нажмите Создать.
1.2. Выберите Новая группа и введите имя группы.
1.3. Выберите политику размещения на разных хостах:
- желательно — soft-anti-affinity. Система постарается разместить серверы на разных хостах. Если при создании сервера не будет подходящего хоста, он будет создан на том же хосте;
- обязательно — anti-affinity. Серверы в группе обязательно располагаются на разных хостах. Если при создании сервера не будет подходящего хоста, сервер не будет создан.
1.4. Если группа создана, в поле Группа размещения выберите группу размещения.
-
Чтобы добавить дополнительную информацию или фильтровать серверы в списке, добавьте теги сервера. Автоматически добавляются теги операционной системы и конфигурации. Чтобы добавить новый тег, в поле Теги введите тег.
-
Чтобы добавить скрипт, который выполнится с помощью агента cloud-init при первом запуске операционной системы, в блоке Автоматизация в поле User data:
- откройте вкладку Текст и вставьте скрипт текстом;
- или откройте вкладку Файл и загрузите файл со скриптом.
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
username: "<kibana_username>"
password: "<kibana_password>"
domain: "<example.com>"
email: "<root@example.com>"
Укажите:
<kibana_username>
— имя администратора для входа в Kibana. Нельзя использовать имяelastic
— оно зарезервировано системой;<kibana_password>
— пароль администратора Kibana;<example.com>
— домен для доступа к ELK, который вы добавили на этапе 2;<root@example.com>
— электронная почта администратора Kibana для создания аккаунта и получения уведомлений Let’s Encrypt®.
Установить Filebeat на наблюдаемые серверы
Filebeat устанавливается на серверы, с которых нужно собирать данные для мониторинга. Filebeat собирает лог-сообщения из лог-файлов и пересылает их на облачный сервер с Elasticsearch для индексирования.
-
Предварительно создайте пользователя Kibana с необходимыми правами и ролями в веб-интерфейсе ELK. Подробнее в инструкции Create a user документации Elastic.
-
Установите Filebeat. Подробнее в инструкции Install Filebeat документации Elastic.
Для установки на Ubuntu вы можете скачать дистрибутив с зеркала.
-
Скачайте публичный сертификат CA с облачного сервера для подключения Filebeat по HTTPS-протоколу:
cd /etc/filebeat && wget https://<example.com>/ca.crt
Укажите
<example.com>
— домен для доступа к Elasticsearch, который вы добавили на этапе 2. -
Откройте конфигурационный файл
/etc/filebeat/filebeat.yml
в текстовом редакторе. -
Добавьте параметры подключения к Elasticsearch в конфигурационном файле:
outputs:
default:
type: elasticsearch
hosts: [https://<example.com>:9200]
username: "<username>"
password: "<password>"
ssl.enabled: true
ssl.certificate_authorities: "/etc/filebeat/ca.crt"Укажите:
<example.com>
— домен для доступа к ELK, который вы добавили на этапе 2;<username>
— имя пользователя Kibana, которого вы создали на шаге 1;<password>
— пароль пользователя Kibana, которого вы создали на шаге 1.
-
Перезапустите агент:
systemctl restart filebeat
Установить Elastic Agent на наблюдаемые серверы
Elastic Agent устанавливается на серверы, с которых нужно собирать метрики, логи и события безопасности. Агент собирает информацию и пересылает ее на облачный сервер с Elasticsearch.
-
Предварительно создайте пользователя Kibana с необходимыми правами и ролями в веб-интерфейсе ELK. Подробнее в инструкции Create a user документации Elastic.
-
Установите Elastic Agent. Подробнее в инструкции Install Elastic Agents документации Elastic.
Для установки на Ubuntu вы можете скачать дистрибутив с зеркала.
-
Скачайте публичный сертификат CA с облачного сервера для подключения Elastic Agent по HTTPS-протоколу:
cd /etc/elastic-agent && wget https://<example.com>/ca.crt
Укажите
<example.com>
— домен для доступа к Elasticsearch, который вы добавили на этапе 2. -
Откройте конфигурационный файл
/etc/elastic-agent/elastic-agent.yml
в текстовом редакторе. -
Добавьте параметры подключения к Elasticsearch в конфигурационном файле:
outputs:
default:
type: elasticsearch
hosts: [https://<example.com>:9200]
username: "<username>"
password: "<password>"
ssl.enabled: true
ssl.certificate_authorities: "/etc/elastic-agent/ca.crt"Укажите:
<example.com>
— домен для доступа к ELK, который вы добавили на этапе 2;<username>
— имя пользователя Kibana, которого вы создали на шаге 1;<password>
— пароль пользователя Kibana, которого вы создали на шаге 1.
-
Перезапустите агент:
systemctl restart elastic-agent