Установка 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 Managerinstall -u <string> | --user <string>- устанавливает сервис под определенным пользователем. По умолчанию:sbminstall -g <string> | --group <string>- устанавливает сервис под определенной группой. По умолчанию:sbminstall --ignore-selinux- устанавливает сервис без настройки прав на исполняемый файл (если установлен SELinux)install --ignore-systemd- устанавливает сервис без создания вsystemdфайлаsmartBeatManager.serviceremove– удаляет сервис (в более старых версиях командаdelete)version- показывает версию Smart Beat Managerhelp– справка о любой команде
Для команды 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- путь до сертификата ЦС или цепочки сертификатов в формате x509authorization.opensearch.host- адрес сервера OpenSearch начинаться должен наhttpsssl.enabled- должен быть установлен вtruessl.smartBeatTLSLevel- выберите нужный режим проверки сертификатовssl.certPath- путь до файла сертификата Smart Beat Manager в формате x509ssl.keyPath- путь до файла закрытого ключа Smart Beat Manager в формате x509
Сертификаты рекомендуется сгенерировать с параметрами:
keyUsage = critical, digitalSignature, keyEnciphermentextendedKeyUsage = serverAuth, clientAuthSubject 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