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>- устанавливает сервис под определенным пользователем. По умолчанию:smartbeatinstall -g <string> | --group <string>- устанавливает сервис под определенной группой. По умолчанию:smartbeatinstall --ignore-selinux- устанавливает сервис без настройки прав на исполняемый файл (если установлен SELinux)install --ignore-systemd- устанавливает сервис без создания вsystemdфайлаsmartBeat.serviceinstall --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, keyEnciphermentextendedKeyUsage = serverAuth, clientAuthSubject 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 | Массив меток агента. Не обязательный параметр. | [] |
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 |
network_interface_attempts.max_attempts | Максимальное количество попыток получения данных сетевого интерфейса устройства. | 5 |
network_interface_attempts.retry_interval | Интервал повторной попытки получения данных сетевого интерфейса устройства. | 1m |
Параметр 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.
При обновлении агента Smart Beat с версии 5.0.0 до 5.0.1 были добавлены следующие параметры конфигурации:
network_interface_attempts.max_attemptsnetwork_interface_attempts.retry_interval