Smart Beat для Linux
Smart Beat может работать с любой версией ElasticBeat, но если Вы планируете отправлять данные напрямую в OpenSearch, то версия ElasticBeat должна быть 7.12.1 (или 7.10.2 - более стабильная версия). Если планируется использовать Logstash, то версия ElasticBeat не имеет значения, но лучше использовать той же версии, что и Logstash (8.9.x). Подробнее на официальном сайте.
Условные обозначения
$SB_HOME
- домашняя директория установки Smart Beat, для Linux -/app/smartBeat/
, для Windows -C:\Program Files\smartBeat\
.
Установка Smart Beat
Подготовка к установке Smart Beat
Используйте версию Smart Beat соответствующую разрядности ОС.
В установочном архиве Smart Monitor в директории $SM_INSTALLER/utils/smartBeat/
расположены исполняемые файлы агентов (может присутствовать расширение файла elf
- executable linux file).
Установку рекомендуется производить под пользователем root
. Для пользователя с ограниченными правами можно сделать предустановку.
Установка сервиса Smart Beat
Smart Beat поддерживает следующие команды для работы с сервисом:
install
– устанавливает сервисinstall -d <string> | --directory <string>
- устанавливает сервис в определенную директорию. По умолчанию: директория исполняемого файла Smart Beatinstall -u <string> | --user <string>
- устанавливает сервис под определенным пользователем. По умолчанию:smartbeat
install -g <string> | --group <string>
- устанавливает сервис под определенной группой. По умолчанию:smartbeat
install --ignore-selinux
- устанавливает сервис без настройки прав на исполняемый файл (если установлен SELinux)install --ignore-systemd
- устанавливает сервис без создания вsystemd
файлаsmartBeat.service
install --add-systemd-caps
- устанавливает сервис вsystemd
с повышенными capabilitiesinstall --include-old
- используется при установке совместно с флагом--add-systemd-caps
и расширяет capabilities для старых ОСremove
– удаляет сервисversion
- показывает версию Smart Beatguid
- показывает сформированный GUID агентаinfo
- показывает информацию об агентеconfig
- возвращает данные конфигурации сервисаset
- задает параметры конфигурации сервисаhelp
– справка о любой команде
Для команды install
:
- Если пользователя или группы ранее не было, то они будут созданы автоматически. В том числе и по умолчанию
- Если указать существующего пользователя и группу, но пользователь не входит в эту группу, то произойдет ошибка и установка прекратится
Установщик совместим только с подсистемой инициализации и управления службами systemd
.
Для установки Smart Beat запустите исполняемый файл с флагом install
:
/app/smartBeat/smartBeat install
Если планируется использовать нестандартную директорию, например $DIR
, то команда установки будет выглядеть следующим образом:
/app/smartBeat/smartBeat install --directory $DIR
Если используется SELinux, настройка права на исполняемый файл выполняется автоматически при установке сервиса.
Если недостаточно прав для изменения настроек SELinux, то можно установить флаг --ignore-selinux
при установке сервиса и выполнить команду самостоятельно:
sudo chcon -Rv -u system_u -r object_r -t bin_t /app/smartBeat/smartBeat
Если недостаточно прав для настройки systemd
сервиса, то можно установить флаг --ignore-systemd
при установке сервиса. После установки создайте файл:
sudo touch /etc/systemd/system/smartBeat.service
Измените конфигурацию сервиса в соответствии с вашими требованиями и сохраните в созданный файл:
[Unit]
Description=SmartBeat
Wants=network-online.target
After=network.target network-online.target
[Service]
User=<SB_USER>
Group=<SB_GROUP>
WorkingDirectory=<SB_HOME>
ExecStart=<FULL_PATH_TO_EXECUTABLE_FILE_SB>
Restart=always
[Install]
WantedBy=multi-user.target
После создания сервиса требуется перечитать конфигурацию systemd
и сделать службу запускаемой после перезагрузки сервера:
systemctl daemon-reload
systemctl enable smartBeat
После окончания установки будут созданы необходимые директории и файлы конфигурации Smart Beat для возможности настройки сервиса перед его запуском.
Остальные директории и файлы создадутся после первого запуска сервиса.
Пример запуска сервиса Smart Beat, установленного в systemd
:
systemctl start smartBeat.service
Для того чтобы узнать работает ли сервис, необходимо выполнить команду:
systemctl status smartBeat.service
Настройка capabilities для агента Auditbeat
При работе агента Smart Beat используется ограниченная учётная запись. Для работы AuditBeat
требуются дополнительные разрешения с повышенными привилегиями.
Для решения этой проблемы при установке сервиса необходимо:
- Указать флаг
--add-systemd-caps
(при необходимости для старых OS дополнительно указать флаг--include-old
) - После установки сервиса в файле конфигурации изменить параметр
execute_extension.set_cap_auditbeat
наtrue
Если сервис уже установлен, то порядок действий будет следующий:
- Выключить сервис Smart Beat через
systemd
- Отредактировать файл
/etc/systemd/system/smartBeat.service
и дополнить блокService
:
AmbientCapabilities=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BROADCAST
AmbientCapabilities=CAP_NET_ADMIN
AmbientCapabilities=CAP_NET_RAW
AmbientCapabilities=CAP_AUDIT_READ
AmbientCapabilities=CAP_AUDIT_WRITE
AmbientCapabilities=CAP_AUDIT_CONTROL
AmbientCapabilities=CAP_SYS_PTRACE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BROADCAST
CapabilityBoundingSet=CAP_NET_ADMIN
CapabilityBoundingSet=CAP_NET_RAW
CapabilityBoundingSet=CAP_AUDIT_READ
CapabilityBoundingSet=CAP_AUDIT_WRITE
CapabilityBoundingSet=CAP_AUDIT_CONTROL
CapabilityBoundingSet=CAP_SYS_PTRACE
SecureBits=keep-caps
- Для старых OS в блок
Service
добавить следующее:
AmbientCapabilities=CAP_SETFCAP
AmbientCapabilities=CAP_SETPCAP
CapabilityBoundingSet=CAP_SETFCAP
CapabilityBoundingSet=CAP_SETPCAP
- Для исполняемого файла агента
Auditbeat
выполнить команду:
setcap 'cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_audit_control,cap_audit_read,cap_audit_write,cap_sys_ptrace+eip' ${FULL_PATH_TO_AUDITBEAT_EXECUTABLE_FILE}
- После изменения сервиса требуется перечитать конфигурацию
systemd
:
systemctl daemon-reload
- Запустить службу Smart Beat через
systemd
Дополнительные настройки
Использование заранее сформированных сертификатов
Для использования готовых сертификатов и закрытого ключа Smart Beat нужно выполнить следующие действия:
- Остановить службу Smart Beat через
systemd
- В директории
${SB_HOME}/cert/
удалить все существующие сертификаты и закрытые ключи - В эту же директорию
${SB_HOME}/cert/
перенести существующий сертификат ЦС, сертификат и закрытый ключ Smart Beat - Отредактировать при необходимости конфигурационный файл
${SB_HOME}/config/config.yaml
:ssl.cert_ca
- указать имя сертификата x509 ЦСssl.node_cert
- имя файла сертификата x509 Smart Beatssl.node_key
- имя файла закрытого ключа Smart Beatssl.enable: true
- включить SSL/TLSssl.verify: true
- включить проверку на валидность сертификата сервера Smart Beat Manager
- Запустить службу Smart Beat через
systemd
Сертификаты рекомендуется сгенерировать с параметрами:
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
Subject Alternative Name
- указать все возможные IP и доменные имена сервера, где установлен агент
Для генерации сертификата можно воспользоваться утилитой, идущей в установщике: $SM_INSTALLER/utils/ssl-tls-gen/gencerts.sh
.
Использование самоподписанных сертификатов
Если в конфигурации ${SB_HOME}/config/config.yaml
выставить параметр ssl.enable: true
, то агент при запуске будет проверять наличие файлов ssl.node_cert
и ssl.node_key
, при их отсутствии сгенерирует самоподписанные сертификаты по тем же путям.
Взаимодействие между Smart Beat и Smart Beat Manager можно использовать с шифрованием, но без проверки самих сертификатов, достаточно выставить следующие параметры:
ssl.node_cert
- имя файла сертификата x509 Smart Beatssl.node_key
- имя файла закрытого ключа Smart Beatssl.enable: true
- включить SSL/TLSssl.verify: false
- отключить проверку на валидность сертификата сервера Smart Beat Manager
Изменение пользователя
Для того, чтобы сменить пользователя, под которым работает Smart Beat, нужно сделать следующие действия:
- Выключить сервис Smart Beat через
systemd
- Сменить владельца директории
${SB_HOME}
и всех вложенных файлов и папок, например:chown -R $USER:$USER $SB_HOME/
- Добавить разрешение на чтение всех необходимых файлов новому пользователю Smart Beat
- Отредактировать файл
/etc/systemd/system/smartBeat.service
и исправить полеUser
на нового пользователя - Запустить сервис
systemd
[Unit]
Description=Smart Beat
[Service]
User=smartbeat
WorkingDirectory=/opt/smartbeat
ExecStart=/opt/smartbeat/smartBeat
Restart=always
[Install]
WantedBy=multi-user.target
Изменение GUID
GUID формируется на основе UUID диска, который смонтирован на корень файловой системы. При запуске Smart Beat высчитывает GUID и при отсутствии файла ${SB_HOME}/config/guid.yml
сохраняет в него полученное значение. При существующем файле сравнивает полученное значение и значение в файле и записывает результат в лог файле.
Если сервера виртуальные были склонированы, то может возникнуть ситуация, при которой UUID будут одинаковыми, для этого следует добавить соль при генерации GUID. В конфигурационном файле ${SB_HOME}/config/config.yaml
нужно добавить параметр guid_salt
. На текущий момент можно добавить 2 токена, которые высчитываются для каждого сервера:
<IP>
- подставляет IP-адрес, с которого идет обращение к серверуmanager.host
или берется значение из параметраagent.ip
(должен быть реальным, иначе будет выбран случайно)<MAC>
- подставляет MAC сетевого устройства, на котором есть IP адрес, полученный выше
Для того, чтобы изменить GUID Smart Beat, нужно выполнить следующие действия:
- Остановить службу Smart Beat через
systemd
- Удалить файл
${SB_HOME}/config/guid.yml
- Отредактировать конфигурационный файл
${SB_HOME}/config/config.yaml
и внести изменения в параметрguid_salt
- указать необходимую "соль", рекомендуется использовать значение из токенов<IP> <MAC>
- Запустить службу Smart Beat через
systemd
Описание конфигурационного файла
Конфигурационный файл ${SB_HOME}/config/config.yaml
состоит из следующих параметров:
Параметр | Описание | Значение по умолчанию |
---|---|---|
guid_salt | Соль при генерации GUID для Smart Beat. | <IP> <MAC> |
execute_extension.set_cap_auditbeat | Установка capabilities на исполняемый файл агента Auditbeat . Не обязательный параметр. | false |
heartbeat.min_condition | Минимальная частота подключения Smart Beat. | 1m0s (1 минута) |
heartbeat.multiplier | Множитель минимальной частоты подключения. | 2 |
heartbeat.max_condition | Максимальная частота подключения. | 1h0m0s (1 час) |
manager.host | Хост (IP-адрес или DNS имя) Smart Beat Manager. | localhost |
manager.port | Порт Smart Beat Manager. | 7767 |
agent.ip | IP-адрес агента. Необязательный параметр. | IP-адрес сетевого интерфейса хоста, через который проходит запрос к Smart Beat Manager. |
agent.tags | Массив меток агента. На стороне Smart Beat Manager пока не используется. Не обязательный параметр. | [] |
agent.send_addrs | Включение отправки информации о сетевых интерфейсах хоста. Не обязательный параметр. | true |
rotation.rotation_time | Частота ротации файла логирования. | 24h (24 часа) |
rotation.max_age | Время жизни файла логирования. | 168h (1 неделя) |
rotation.max_size | Ограничение размера файла логирования. | 10485760 (10 Мб) |
rotation.log_level | Уровень логирования. | info |
rotation.log_path | Директория сохранения логов. | ./logs |
ssl.verify | Проверка ssl-сертификатов при безопасном подключении к Smart Beat Manager. | false |
ssl.enable | Безопасное подключение к Smart Beat Manager. | true |
ssl.cert_ca | Путь до ЦС сертификата. | ./cert/ca-cert.pem |
ssl.node_cert | Путь для генерации node сертификата. | ./cert/node-cert.pem |
ssl.node_key | Путь для генерации node ключа. | ./cert/node-key.pem |
Параметр agent.ip
используется в случае нескольких сетевых интерфейсов для выбора отправляемого в Smart Beat Manager ip-адреса агента. Указанный ip-адрес должен быть назначен одному из сетевых интерфейсов хоста, иначе параметр заполнится значением по умолчанию.
Если параметр agent.send_addrs
включен (значение true
), то в Smart Beat Manager будет отправляться массив объектов addrs
, где каждый объект состоит из трех полей:
inter
- имя интерфейсаhwaddr
- физический адрес интерфейсаipv4
- назначенный интерфейсу ip-адрес.
На стороне Smart Beat Manager пока не используется.
Параметр rotation.log_level
может принимать значения trace
, debug
, info
, warn
, error
, fatal
.
Для отладки рекомендуется использовать уровень debug
.