Установка и настройка Scriptbeat
Условные обозначения
HOST_LOGSTASH- адрес хоста с LogstashSB_HOME- домашняя директория установки Smart Beat, обычно для Linux это -/app/smartBeat/, для Windows -C:\Program Files\smartBeat\
Общая информация
Scriptbeat - это агент Smart Monitor, который используется для агентского сбора данных с целевого хоста. Он используется для выполнения бинарных файлов и скриптов с помощью указанных интерпретаторов (PowerShell, Python, Bash и др.) и передачи результатов их выполнения в системы хранения.
Структура конфигурации
Конфигурация состоит из следующих блоков:
schedule- настройки запуска исполняемых скриптовoutput- точка назначения для собранных данныхprocessors- опциональный блок для фильтрации и обогащения данных
Блок scriptbeat.schedule
В этом блоке определяется логика запуска одного или нескольких скриптов.
| Параметр | Тип | Описание |
|---|---|---|
command | String | Путь к интерпретатору или исполняемому файлу (например, python, bash, powershell.exe). |
args | List (Strings) | Путь к скрипту. Поддерживается указание нескольких скриптов. |
period | String | Расписание запуска. Формат зависит от выбранного scheduletype. |
scheduletype | String | Тип логики планировщика: interval(например, 1m, 1h) или cron (например, 0 19 * * *). |
Настройки в данном разделе необходимо адаптировать под конкретную операционную систему агента.
Примеры конфигурации для Windows:
- Cron
- Interval
scriptbeat:
schedule:
- command: 'С:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
scheduletype: cron
period: "0 19 * * *"
args:
- '. "C:\Program Files\smartBeat\config\apps\check_auth.ps1"'
- '. "C:\Program Files\smartBeat\config\apps\check_logs.ps1"'
scriptbeat:
schedule:
- command: 'C:\Users\Admin\AppData\Local\Programs\Python\Python311\python.exe'
scheduletype: interval
period: 15m
args:
- 'C:\Program Files\smartBeat\check_auth.py'
- 'C:\Program Files\smartBeat\check_logs.py'
В операционной системе Windows при указании путей необходимо использовать обратный слэш: \.
Примеры конфигурации для Linux:
- Cron
- Interval
scriptbeat:
schedule:
- command: /bin/bash
period: "0 2 * * *"
args:
- "/home/admin/scripts/daily_report.sh"
scheduletype: cron
scriptbeat:
schedule:
- command: /usr/bin/python3
period: 30s
args:
- "/opt/smartbeat/checks/system_health.py"
scheduletype: interval
Примеры конфигурации для macOS:
- Cron
- Interval
scriptbeat:
schedule:
- command: /bin/zsh
period: "0 8 * * *"
args:
- "-c"
- "/Users/admin/scripts/cleanup_logs.sh"
scheduletype: cron
scriptbeat:
schedule:
- command: /opt/homebrew/bin/python3
period: 5m
args:
- "/Users/admin/scripts/check_metrics.py"
scheduletype: interval
Scriptbeat позволяет настроить запуск разных скриптов с независимыми интервалами или по отдельному расписанию cron:
scriptbeat:
schedule:
- command: /usr/bin/python3
period: 1m
args:
- "/opt/smartbeat/checks/system_health.py"
scheduletype: interval
- command: /bin/bash
period: "0 2 * * *"
args:
- "/opt/smartbeat/reports/daily_report.sh"
scheduletype: cron
Чтобы запускать скрипт с фиксированным временным интервалом используется scheduletype: interval. Интервал можно установить в секундах, минутах и часах.
| Формат | Описание | Пример | Значение |
|---|---|---|---|
Xs | Интервал в секундах | 30s | Каждые 30 секунд |
Xm | Интервал в минутах | 5m | Каждые 5 минут |
Xh | Интервал в часах | 12h | Каждые 12 часов |
scheduletype: interval поддерживает комбинирвание форматов интервалов. Например: 1m30s, 2h30m.
Чтобы запускать скрипт по календарному расписанию используется scheduletype: cron. Формат: минута час день месяц день_недели.
| Пример выражения | Описание | Значение |
|---|---|---|
"*/5 * * * *" | Каждые 5 минут | Запуск в 00, 05, 10... минут каждого часа |
"0 9 * * 1-5" | Будни в 9 утра | Понедельник-Пятница в 09:00 |
"0 0 * * *" | Ежедневно в полночь | Каждый день в 00:00 |
"0 19 * * *" | Ежедневно вечером | Каждый день в 19:00 |
"0 0 1 * *" | 1-го числа месяца | Ежемесячно в 00:00 |
Блок output
В конфигурации может быть активен только один тип output.
- output.logstash
- output.file
- output.console
Используется для передачи данных в pipeline Logstash.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
hosts | List | Да | Список адресов Logstash в формате ["host:port"]. |
loadbalance | Boolean | Нет | Если true, события распределяются между узлами. По умолчанию: false. |
worker | Integer | Нет | Количество параллельных потоков для отправки данных. По умолчанию: 1. |
compression_level | Integer | Нет | Уровень сжатия Gzip (от 0 до 9). По умолчанию: 3. |
ssl.certificate_authorities | List | Нет | Пути к корневым сертификатам (СА). |
ssl.certificate | String | Нет | Путь к сертификату клиента. |
ssl.key | String | Нет | Путь к сертификату клиента. |
ssl.verification_mode | String | Нет | Режим проверки SSL: full или none. |
Пример конфигурации:
output.logstash:
hosts: ["<HOST_LOGSTASH_1>:51121", "<HOST_LOGSTASH_2>:51121"]
loadbalance: true
worker: 1
compression_level: 2
ssl.certificate: "$SB_HOME/cert/cert.pem"
ssl.key: "$SB_HOME/cert/key.pem"
ssl.certificate_authorities: "$SB_HOME/cert/ca-cert.pem"
Используется для записи данных в файлы на диске.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
path | String | Да | Путь к каталогу, куда будут записаны файлы. |
filename | String | Да | Название файлов. |
rotate_every_kb | Integer | Нет | Максимальный размер файла. Когда этот размер достигается, создается новый файл. |
number_of_files | Integer | Нет | Максимальное количество файлов для сохранения в path. Когда это количество достигается самый старый файл удаляется. |
permissions | Integer | Нет | Права на создание файлов. |
rotate_on_startup | Boolean | Нет | При значении true, если filename уже существует, будет создан новый файл вместо записи в существующий. |
Пример конфигурации:
output.file:
path: "/tmp/filebeat"
filename: filebeat
rotate_every_kb: 10000
number_of_files: 7
permissions: 0600
rotate_on_startup: true
Консольный вывод записывает события в формате JSON в stdout.
Консольный вывод следует использовать только для отладки, так как он может создавать большое количество данных.
Пример конфигурации:
output.console:
pretty: true
Блок processors
Используется для предобработки данных перед отправкой.
Некоторые допустимые параметры:
add_host_metadata: добавляет информацию о хосте (IP, имя ОС, ID)drop_event: удаляет все событие, если выполнится заданное условиеdecode_json_fields: разбирает JSON-строку из вывода скрипта в структурированные поля
Пример настройки processors:
processors:
- drop_event:
when:
regexp:
message: "^DBG:"
- decode_json_fields:
fields: ["field1", "field2", ...]
- add_host_metadata
В данном примере по условию drop_event удаляются все DEBUG события, с помощью decode_json_fields декодирует поля field1 и field2, содержащие JSON-строку в JSON-объект. К исходным данным добавляются данные хоста, с которого поступили данные: add_host_metadata.
Настройка конфигурации
1. Настройка сбора данных
Откройте конфигурационный файл и добавьте блок scriptbeat.schedule. Укажите:
command- полный путь к интерпретатору или исполняемому файлуargs- путь к скрипту для выполненияscheduletype- тип расписания:interval(интервал) илиcron(календарь)period- значение расписания (например,5mили0 9 * * *)
Пример конфигурации для запуска скрипта каждые 5 минут:
scriptbeat:
schedule:
- command: /usr/bin/python3
scheduletype: interval
period: 5m
args:
- "/opt/smartbeat/checks/system_health.py"
2. Настройка вывода данных
Добавьте один блок output, который соответствует Вашей инфраструктуре.
Пример отправки в Logstash:
output.logstash:
hosts: ["<HOST_LOGSTASH>:51121"]
worker: 2
Пример записи в файл:
output.file:
path: "/var/log/scriptbeat"
filename: "events.log"
Пример вывода в консоль:
output.console:
pretty: true
3. Обработка данных (необязательно)
Если требуется, добавьте блок processors для обработки данных перед отправкой.
Например, для добавления метаданных хоста добавьте:
processors:
- add_host_metadata
Итоговый пример рабочей конфигурации:
scriptbeat.schedule:
- command: /usr/bin/python3
scheduletype: interval
period: 5m
args:
- "/opt/smartbeat/checks/system_health.py"
output.logstash:
hosts: ["<HOST_LOGSTASH>:51121"]
worker: 2
processors:
- add_host_metadata
Дальнейшая настройка Scriptbeat аналогична другим Beats. Более подробнее в соответсвующей статье.