Установка Smart Beat Manager
Начиная с версии 4.0.0 изменилась схема взаимодействия между Smart Beat и Smart Beat Manager, но у Smart Beat Manager осталась обратная совместимость со старыми агентами.
Начиная с версии 4.2.0 Обновилось API взаимодействия без сохранения обратной совместимости, версия Smart Monitor должна быть не менее 4.2.0.
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
. Создайте пустую директорию и поместите исполняемый файл SmartBeatManager-<version>.elf
в эту директорию. Например, в директорию /app/smartBeatManager
. Затем создайте пользователя под которым будет работать сервис, например, sbm
:
mkdir -p /app/smartBeatManager
cd /app/smartBeatManager
cp ${SM_INSTALLER}/utils/smartBeatManager/SmartBeatManager-* /app/smartBeatManager/
chmod +x ./SmartBeatManager-*
useradd --no-create-home --system --user-group sbm
В некоторых случаях одноименная группа для пользователя может не создаваться автоматически. Убедитесь, что пользователь состоит в одноимённой группе (в примере выше - sbm
), или создайте группу вручную и добавьте в неё пользователя:
groupadd sbm
usermod -aG sbm sbm
Установка сервиса Smart Beat Manager
Smart Beat Manager поддерживает следующие команды для работы с сервисом:
install
– устанавливает сервисinstall -u string | --user <string>
- устанавливает сервис под определённым пользователемremove
– удаляет сервис (в более старых версиях командаdelete
)version
- показывает версию Smart Beat Managerhelp
– справка о любой команде
Если указать команду install
и пользователя в системе не будет создано заранее, например, sbm
, то установка завершится с ошибкой. Установщик совместим только с подсистемой инициализации и управления службами systemd
.
Команда для установки сервиса в systemd
может выглядеть так:
cd /app/smartBeatManager/
./smartBeatManager install
chown -Rf sbm:sbm /app/smartBeatManager/
Если планируется использовать не стандартного пользователя, например $USER
, то команда установки будет выглядеть следующим образом:
cd /app/smartBeatManager
./smartBeatManager install --user $USER
chown -Rf $USER:$USER /app/smartBeatManager/
Если используется SELinux, настройте права на исполняемый файл:
sudo chcon -Rv -u system_u -r object_r -t bin_t /app/smartBeatManager/smartBeatManager-*
Версия Smart Beat Manager может отличаться, соответственно файл может называться иначе. Также, обращайте внимание на владельца группы после изменений в рабочей директории, поскольку сервис запускается под указанным пользователем при установке.
После того как сервис Smart Beat Manager был успешно установлен можно запускать сервис. Пример запуска сервиса Smart Beat Manager:
systemctl start smartBeatManager.service
Для того чтобы узнать работает ли сервис, необходимо выполнить команду:
systemctl status smartBeatManager.service
Настройка Smart Beat Manager
Все необходимые директории и файлы для корректной работы Smart Beat Manager создаст при первом запуске. Если какого-нибудь файла или директории будет не хватать, то он создастся при следующем запуске.
Конфигурационный файл Smart Beat Manager
В версии Smart Beat Manager 4.2.0 был изменено имя конфигурационного файла smartBeatManager.yaml
на config.yaml
. Поддерживаются оба файла, но приоритетным будет считаться config.yaml
.
Пример стандартной настройки конфигурационного файла 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
updateSnapshot: 10m
enableDeletion: false
timeoutDeletion: 24h
disableGroupsCache: false
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.updateSnapshot | Частота обновления снапшота. | 10m |
basic.enableDeletion | Удалять ли старые записи агентов в снапшоте. | false |
basic.timeoutDeletion | Время жизни записи об агенте в снапшоте. | 24h |
basic.disableGroupsCache | Отключение кэша групп приложений. | false |
logs.logPath | Директория логов. | ./logs |
logs.logMaxAge | Время хранения логов. | 7d |
logs.logRotate | Частота ротации логов. | 24h |
ssl.enabled | Включает SSL. | true |
ssl.smartBeatTLSLevel | Уровень проверки сертификатов: 0 – сертификат клиента не запрашивается и не требуется, 1 – будет запрошен сертификат агента, но он не требуется и не будет проверен, 2 – требуется сертификат агента, но допустим любой действующий сертификат агента. Он не будет проверен по сертификату ЦС, 3 – сертификат агента не будет запрошен, но если он присутствует, он будет проверен по сертификату ЦС, 4 – требуется сертификат агента, который проверен на соответствие сертификату. | 0 |
ssl.certPath | Файл сертификата в формате x509 Smart Beat Manager. | cert.pem |
ssl.keyPath | Файл закрытого ключа в формате x509 Smart Beat Manager. | key.pem |
Установка своих сертификатов Smart Beat Manager
При первом запуске Smart Beat Manager генерируют самоподписанный свой сертификат и закрытый ключ.
Если требуется использовать готовые сертификаты, то скопируйте сертификат ЦС, сертификат и закрытый ключ Smart Beat Manager в директорию ${SBM_HOME}/etc/ssl/
. Также требуется настроить следующие параметры:
authorization.opensearch.ca_cert
- путь до сертификата ЦС или цепочки сертификатов в формате x509authorization.opensearch.host
- адрес сервера OpenSearch начинаться должен наhttps
ssl.enabled
- должен быть установлен вtrue
ssl.smartBeatTLSLevel
- выберите нужный режим проверки сертификатовssl.certPath
- путь до файла сертификата Smart Beat Manager в формате x509ssl.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. Шаблон имени должен соответствовать <elasticbeat_name>_<apps_name> , где <elasticbeat_name> - название ElasticBeat в нижнем регистре, <apps_name> - название приложения. Обязательный параметр. |
binaries | Список архивов ElasticBeats, которые требуются для выполнения конфигураций перечисленных в apps . В одной группе нельзя указать несколько версий одного ElasticBeat. Обязательный параметр. |
systems | Список фильтров по платформе сервера, на котором запущен агент Smart Beat. В списке используется логическое ИЛИ , т.е. агент попадает хотя бы в один из фильтров. Используется как дополнительный фильтр с полем filters с логической операцией И . |
excludes | Список фильтров агентов для исключения из группы по ip , DNS имя , hostname , guid . Можно использовать маски в списке. Между условиями используется логическое ИЛИ , т.е. для соответствия достаточно выполнения любого из перечисленных условий. Используется как дополнительный фильтр с полем filters с логической операцией И-НЕ . |
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 4.2.0 используется версия 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