Перейти к основному содержимому
Версия: 5.0

Установка Smart Beat Manager

Обратите внимание!

Начиная с версии 4.0.0 изменилась схема взаимодействия между Smart Beat и Smart Beat Manager, но у Smart Beat Manager осталась обратная совместимость со старыми агентами.

Начиная с версии 4.2.0 Обновилось API взаимодействия без сохранения обратной совместимости, версия Smart Monitor должна быть не менее 4.2.0.

Начиная с версии 4.3.0 файл снапшота clients.yml является устаревшим. Хранение данных перенесено во встраиваемую БД. При первом запуске Smart Beat Manager будет произведена миграция данных из файла clients.yml с последующим переименованием файла clients.yml в clients_old.yml.

Обратите внимание!

Smart Beat может работать с любой версией ElasticBeat, но если Вы планируете отправлять данные напрямую в OpenSearch, то версия ElasticBeat должна быть 7.12.1 (или 7.10.2 - более стабильная версия). Если планируется использовать Logstash, то версия ElasticBeat не имеет значения. Подробнее на официальном сайте.

Условные обозначения

  • ${SBM_HOME} - путь установки Smart Beat Manager, обычно это /app/smartBeatManager/

Установка Smart Beat Manager

Подготовка к установке Smart Beat Manager

Smart Beat Manager доступен в комплекте установочного архива Smart Monitor в директории ${SM_INSTALLER}/utils/smartBeatManager.

Обратите внимание!

Установку рекомендуется производить под пользователем root. Для пользователя с ограниченными правами можно сделать предустановку.

Установка сервиса Smart Beat Manager

Smart Beat Manager поддерживает следующие команды для работы с сервисом:

  • install – устанавливает сервис
  • install -d <string> | --directory <string> - устанавливает сервис в определенную директорию. По умолчанию: директория исполняемого файла Smart Beat Manager
  • install -u <string> | --user <string> - устанавливает сервис под определенным пользователем. По умолчанию: sbm
  • install -g <string> | --group <string> - устанавливает сервис под определенной группой. По умолчанию: sbm
  • install --ignore-selinux - устанавливает сервис без настройки прав на исполняемый файл (если установлен SELinux)
  • install --ignore-systemd - устанавливает сервис без создания в systemd файла smartBeatManager.service
  • remove – удаляет сервис (в более старых версиях команда delete)
  • version - показывает версию Smart Beat Manager
  • help – справка о любой команде
Обратите внимание!

Для команды install:

  • Если пользователя или группы ранее не было, то они будут созданы автоматически. В том числе и по умолчанию
  • Если указать существующего пользователя и группу, но пользователь не входит в эту группу, то произойдет ошибка и установка прекратится

Установщик совместим только с подсистемой инициализации и управления службами systemd.

Команда для установки сервиса в systemd может выглядеть так:

mkdir -p /app/smartBeatManager/
cp ${SM_INSTALLER}/utils/smartBeatManager/SmartBeatManager-* /app/smartBeatManager/SmartBeatManager
cd /app/smartBeatManager/
./smartBeatManager install

Если планируется использовать нестандартную директорию, например $DIR, то команда установки будет выглядеть следующим образом:

cd /app/smartBeatManager/
./smartBeatManager install --directory $DIR

Если планируется использовать нестандартного пользователя, например $USER, то команда установки будет выглядеть следующим образом:

cd /app/smartBeatManager
./smartBeatManager install --user $USER

Если используется SELinux, настройка права на исполняемый файл выполняется автоматически при установке сервиса.

Если недостаточно прав для изменения настроек SELinux, то можно установить флаг --ignore-selinux при установке сервиса и выполнить команду самостоятельно:

sudo chcon -Rv -u system_u -r object_r -t bin_t /app/smartBeatManager/smartBeatManager-*
Обратите внимание!

Версия Smart Beat Manager может отличаться, соответственно файл может называться иначе. Также, обращайте внимание на владельца группы после изменений в рабочей директории, поскольку сервис запускается под указанным пользователем при установке.

Если недостаточно прав для настройки systemd сервиса, то можно установить флаг --ignore-systemd при установке сервиса. После установки создайте файл:

sudo touch /etc/systemd/system/smartBeatManager.service

Измените конфигурацию сервиса в соответствии с вашими требованиями и сохраните в созданный файл:

[Unit]
Description=SmartBeatManager

[Service]
User=<SBM_USER>
Group=<SBM_GROUP>
WorkingDirectory=<SBM_HOME>
ExecStart=<FULL_PATH_TO_EXECUTABLE_FILE_SBM>
Restart=always

[Install]
WantedBy=multi-user.target

После создания сервиса требуется перечитать конфигурацию systemd и сделать службу запускаемой после перезагрузки сервера:

systemctl daemon-reload
systemctl enable smartBeatManager

После окончания установки будут созданы необходимые директории и файлы конфигурации Smart Beat для возможности настройки сервиса перед его запуском.

Остальные директории и файлы создадутся после первого запуска сервиса.

Пример запуска сервиса Smart Beat Manager, установленного в systemd:

systemctl start smartBeatManager.service

Для того чтобы узнать работает ли сервис, необходимо выполнить команду:

systemctl status smartBeatManager.service

Настройка Smart Beat Manager

Конфигурационный файл Smart Beat Manager

Обратите внимание!

В версии Smart Beat Manager 4.2.0 был изменено имя конфигурационного файла smartBeatManager.yaml на config.yaml. Поддерживаются оба файла, но приоритетным будет считаться config.yaml.

В версии Smart Beat Manager 4.3.0:

  • параметр updateSnapshot является устаревшим и не будет учитываться при работе

Пример стандартной настройки конфигурационного файла config.yaml:

authorization:
opensearch:
ca_cert: ca-cert.pem
host: https://127.0.0.1:9200
basic:
appPath: ./apps
binariesPath: ./binaries
appsUnpackPath: ./config/apps
binariesUnpackPath: ./bin
portForSmartBeat: '7767'
portForVisual: '7769'
bindAddress: 127.0.0.1
enableSnapshot: false
enableDeletion: false
timeoutDeletion: 24h
disableGroupsCache: false
badClientConnHours: 1h
logs:
logPath: ./logs
logMaxAge: 7d
logRotate: 24h
ssl:
enabled: true
smartBeatTLSLevel: 0
certPath: cert.pem
keyPath: key.pem

Описание параметров приведено ниже:

ПараметрОписаниеЗначение по умолчанию
authorization.opensearch.ca_certСертификат ЦС в формате X509, используется для подключения к OpenSearch.ca-cert.pem
authorization.opensearch.hostАдрес одного из узлов сервера OpenSearch.https://127.0.0.1:9200
basic.appPathДиректория поиска конфигураций приложений (конфигураций Elastic Beats)../apps
basic.binariesPathДиректория поиска архивов Elastic Beats../binaries
basic.appsUnpackPathДиректория распаковки архивов приложений на агентах Smart Beat../config/apps
basic.binariesUnpackPathДиректория распаковки архивов Elastic Beats на агентах Smart Beat../bin
basic.portForSmartBeatПорт RestAPI для подключения агентов Smart Beat.7767
basic.portForVisualПорт RestAPI для подключения Smart Monitor Web.7769
basic.bindAddressНа каком адресе принимать подключения.127.0.0.1
basic.enableSnapshotВключение снапшотов для сохранения списка подключенных агентов. При работе повышается нагрузка на жесткий диск.false
basic.enableDeletionУдалять ли старые записи агентов в снапшоте.false
basic.timeoutDeletionВремя жизни записи об агенте в снапшоте.24h
basic.disableGroupsCacheОтключение кэша групп приложений.false
basic.badClientConnHoursВремя, после которого считается, что с клиентом нет соединения.1h
basic.disableClientBatchОтключение пакетной вставки данных по клиентамfalse
basic.clientBatchConfig.maxClientsКоличество клиентов, после которых происходит запись.50
basic.clientBatchConfig.timeLimitЛимит по времени, после которого происходит запись клиентов.10s
logs.logPathДиректория логов../logs
logs.logMaxAgeВремя хранения логов.7d
logs.logRotateЧастота ротации логов.24h
ssl.enabledВключает SSL.true
ssl.smartBeatTLSLevelУровень проверки сертификатов.0
ssl.certPathФайл сертификата в формате x509 Smart Beat Manager.cert.pem
ssl.keyPathФайл закрытого ключа в формате x509 Smart Beat Manager.key.pem
Полезная информация

Параметр ssl.smartBeatTLSLevel поддерживает следующие значения:

  • 0 – сертификат клиента не запрашивается и не требуется
  • 1 – будет запрошен сертификат агента, но он не требуется и не будет проверен
  • 2 – требуется сертификат агента, но допустим любой действующий сертификат агента. Он не будет проверен по сертификату ЦС
  • 3 – сертификат агента не будет запрошен, но если он присутствует, он будет проверен по сертификату ЦС
  • 4 – требуется сертификат агента, который проверен на соответствие сертификату.

Установка своих сертификатов Smart Beat Manager

Обратите внимание!

При первом запуске Smart Beat Manager генерируют самоподписанный свой сертификат и закрытый ключ.

Если требуется использовать готовые сертификаты, то скопируйте сертификат ЦС, сертификат и закрытый ключ Smart Beat Manager в директорию ${SBM_HOME}/etc/ssl/. Также требуется настроить следующие параметры:

  • authorization.opensearch.ca_cert - путь до сертификата ЦС или цепочки сертификатов в формате x509
  • authorization.opensearch.host - адрес сервера OpenSearch начинаться должен на https
  • ssl.enabled - должен быть установлен в true
  • ssl.smartBeatTLSLevel - выберите нужный режим проверки сертификатов
  • ssl.certPath - путь до файла сертификата Smart Beat Manager в формате x509
  • ssl.keyPath - путь до файла закрытого ключа Smart Beat Manager в формате x509

Сертификаты рекомендуется сгенерировать с параметрами:

  • keyUsage = critical, digitalSignature, keyEncipherment
  • extendedKeyUsage = serverAuth, clientAuth
  • Subject Alternative Name - указать все возможные IP и доменные имена сервера, где установлен агент
Обратите внимание!

У Smart Beat Manager должен быть доступ до указанных файлов и директорий

Настройка конфигураций сбора логов для агентов Smart Beat

Для отправки конфигурационных файлов сбора данных на агенты необходимо настроить файл $SBM_HOME/etc/serverclasses.yml, который может содержать несколько групп настроек для агентов. Доступные параметры группы приведены ниже:

ПараметрОписание
nameНазвание группы. Обязательный параметр.
filtersСписок фильтров для подключаемых агентов, могут использоваться значения полей ip, DNS имя, hostname и guid агента. Можно использовать маски в списке. Между условиями используется логическое ИЛИ, т.е. для соответствия достаточно выполнения любого из перечисленных условий. Обязательный параметр.
appsСписок названий конфигураций (названия директорий) ElasticBeats. Обязательный параметр.
binariesСписок архивов ElasticBeats, которые требуются для выполнения конфигураций перечисленных в apps. В одной группе нельзя указать несколько версий одного ElasticBeat. Обязательный параметр.
systemsСписок фильтров по платформе сервера, на котором запущен агент Smart Beat. В списке используется логическое ИЛИ, т.е. агент попадает хотя бы в один из фильтров. Используется как дополнительный фильтр с полем filters с логической операцией И.
excludesСписок фильтров агентов для исключения из группы по ip, DNS имя, hostname, guid. Можно использовать маски в списке. Между условиями используется логическое ИЛИ, т.е. для соответствия достаточно выполнения любого из перечисленных условий. Используется как дополнительный фильтр с полем filters с логической операцией И-НЕ.
Обратите внимание!

В версии Smart Beat Manager 4.3.0 для приложений, созданных через интерфейс управления Smart Beat, будет храниться файл с информацией о свойствах приложения, в том числе и о типе агента ElasticBeat.

Для старых приложений, созданных до версии 4.3.0, и не имеющих файла с информацией о свойствах приложения сохранена обратная совместимость, то есть шаблон имени будет соответствовать <elasticbeat_name>_<apps_name>, где <elasticbeat_name> - название ElasticBeat в нижнем регистре, <apps_name> - название приложения.

Обратите внимание!

DNS-имя берется от агента Smart Beat, для корректного определения должна быть PTR-запись обратной DNS-зоны на DNS-сервере.

В качестве маски в фильтрах могут быть использованы следующие символы:

  • * - знак звездочка, заменяет собой любой символ длинной от 0 (отсутствует символ) до бесконечности
  • ? - заменяет собой любой 1 символ

Пример настройки serverclasses.yml:

groups:
- name: linux_test
filters:
- 192.168.1.?/24
- server-test-linux.localhost
apps:
- filebeat_nginx
- auditbeat_info_system
- execbeat_script_python
binaries:
- filebeat-7.10.1-linux-x86_64.tar.gz
- auditbeat-8.9.0-linux-x86_64.tar.gz
- execbeat-3.3.0-linux-x86_64.tar.gz
- name: windows_test
filters:
- 10.10.*.*
- 78d17a171-a3c4-4e27-9c20-bc7005db068e
- *our-site.org*
apps:
- filebeat_logs_system
- execbeat_xspider
binaries:
- filebeat-8.9.2-windows-x86_64.zip
- execbeat-3.3.0-windows-x86_64.zip

После настройки файла $SBM_HOME/etc/serverclasses.yml нужно скачать архивы binaries с официального сайта (должны быть именно архивы со скомпилированным заранее исполняемым файлом ElasticBeats) версий oss и расположить в директории $SBM_HOME/binaries/.

Обратите внимание!

Рекомендуется использовать версии ElasticBeats той же версии, которой установлен Logstash. В последних версиях Smart Monitor используется версия Logstash 8.9.0, соответственно ElasticBeats лучше использовать версий 8.9.x.

Затем нужно создать сами приложения (директории) как были указаны $SBM_HOME/etc/serverclasses.yml в директории $SBM_HOME/apps/. Внутри каждой директории приложения все файлы и поддиректории будут отправлены агенту. Имя файла конфигурации ElasticBeats должно совпадать с именем используемого для приложения ElasticBeats.

В примере ниже есть приложения execbeat_xspider, filebeat_nginx, filebeat_logs_system и другие.

Для работы приложения execbeat_xspider используется ElasticBeat - ExecBeat, название приложения начинается на execbeat_, а внутри директории находится конфигурационный файл execbeat.yml. В этом приложении помимо конфигурационного файла для ExecBeat присутствуют дополнительные файлы, они тоже будут скопированы на агенты Smart Beat.

Для приложения auditbeat_info_system используется AuditBeat, поэтому название начинается на auditbeat_, а конфигурационный файл называется auditbeat.yml.

Содержимое конфигурационных файлов ElasticBeats заполняется в соответствии с официальной документацией соответствующего ElasticBeats.

.
├── execbeat_xspider
│   ├── execbeat.yml
│   ├── xsipder_servers.ps1
│   ├── xsipder_skud.ps1
│   └── xsipder_switches.ps1
├── filebeat_nginx
│   └── filebeat.yml
├── filebeat_logs_system
│   └── filebeat.yml
├── auditbeat_info_system
│   └── auditbeat.yml
├── execbeat_script_python
│   └── execbeat.yml
└── metricbeat_logstash
├── metricbeat.yml
└── modules.d
├── http.yml
└── logstash-xpack.yml

Ниже приведен пример конфигурации FileBeat в конфигурационном файле filebeat.yml:

filebeat.inputs:
- type: filestream
id: logstash-logs
enabled: true
paths:
- /app/logs/logstash/*.log

output.logstash:
loadbalance: false
hosts: ['server-logstash-01.com:5051', 'server-logstash-02.com:5051']
ssl.certificate: '/app/smartBeat/cert/cert.pem'
ssl.key: '/app/smartBeat/cert/key.pem'
ssl.certificate_authorities: '/app/smartBeat/cert/ca-cert.pem'

Конфигурация выше собирает логи из директории /app/logs/logstash/ с расширением файла .log. У пользователя, под которым запускается Smart Beat, должен быть доступ к файлам в этой директории.

Отправка собранных данных из примера выше идет на несколько серверов Logstash по зашифрованному каналу SSL, сервер Logstash выбирается случайным образом и при неудачной отправке данных будет попытка отправить их на другой сервер.

Для применения конфигураций можно перезагрузить службу systemd или использовать API Smart Beat Manager:

curl -k https://<SBM_HOST>:7769/reload -u sbm

Настройка apps.yml

Обратите внимание!

Файл apps.yml является устаревшим и в будущих версиях будет удален.

Конфигурационный файл $SBM_HOME/etc/apps.yml нужен для настройки пути распаковки на агентах конфигурационных файлов. Этот файл имеет список параметров:

  • appname – название конфигурационного файла
  • path – путь распаковки файла

Пример настройки apps.yml:

apps:
- appname: scripts_exchange
path: ./bin/scriptbeat-1.0.0-windows-x86_64/scripts
- appname: scripts_activedirectory
path: ./bin/scriptbeat-1.0.0-windows-x86_64/scripts

Настройка подключения к Smart Monitor Web

Для настройки управления Smart Beat Manager и Smart Beat с помощью Smart Monitor Web, требуется настроить параметры в конфигурационном файле $OSD_HOME/config/opensearch_dashboards.yml.

Откройте файл и перейдите в раздел Smart Beat Manager и введите корректные настройки. Конфигурационный файл уже содержит настройки этих параметров. Пример настройки выглядит следующим образом, где:

ПараметрОписание
smart_monitor.smartbeatsmanagement.uriСтрока подключения к API Smart Beat Manager.
smart_monitor.smartbeatsmanagement.uri.loginИмя пользователя. Будет использоваться проверка аутентификации на серверах OpenSearch.
smart_monitor.smartbeatsmanagement.passwordПароль пользователя. Рекомендуется использовать хранилище Keystore вместо пароля в открытом виде.
smart_monitor.smartbeatsmanagement.ssl.keyПуть до закрытого ключа OpenSearch Dashboards в формате x509.
smart_monitor.smartbeatsmanagement.ssl.certificateПуть до сертификата OpenSearch Dashboards в формате x509.

Пример настроек приведен ниже:

smart_monitor.smartbeatsmanagement.uri: 'https://127.0.0.1:7769'
smart_monitor.smartbeatsmanagement.login: sbm
smart_monitor.smartbeatsmanagement.ssl.key: /app/opensearch-dashboards/config/node-key.pem
smart_monitor.smartbeatsmanagement.ssl.certificate: /app/opensearch-dashboards/config/node-cert.pem
Обратите внимание!

В Smart Monitor уже есть предустановленный пользователь sbm для работы через веб интерфейс c Smart Beat Manager. В приведенном примере выше не указан параметр smart_monitor.smartbeatsmanagement.password, он указан в файле Keystore. Для того, чтобы работала аутентификация нужно создать пользователя в Smart Monitor в пункте меню Навигационное меню - Параметры системы - Настройки безопасности - Внутренние пользователи.

Затем добавить пароль в Keystore на сервере Smart Monitor Web. Из консоли выполните:

sudo -u opensearch $OSD_HOME/bin/opensearch-dashboards-keystore add smart_monitor.smartbeatsmanagement.password

В Smart Monitor в Keystore есть сохраненный пароль от пользователя sbm, поэтому команду выше можно опустить если планируется использовать значения по умолчанию.

Сохраните изменения и перезапустите службу OpenSearch-Dashboards:

sudo systemctl restart opensearch-dashboards.service