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 Beat
- install -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с повышенными capabilities
- install --include-old- используется при установке совместно с флагом- --add-systemd-capsи расширяет capabilities для старых ОС
- remove– удаляет сервис
- version- показывает версию Smart Beat
- guid- показывает сформированный 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 Beat
- ssl.node_key- имя файла закрытого ключа Smart Beat
- ssl.enable: true- включить SSL/TLS
- ssl.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 Beat
- ssl.node_key- имя файла закрытого ключа Smart Beat
- ssl.enable: true- включить SSL/TLS
- ssl.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 | Массив меток агента. Не обязательный параметр. | [] | 
| 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-адрес.
Параметр rotation.log_level может принимать значения trace, debug, info, warn, error, fatal.
Для отладки рекомендуется использовать уровень debug.