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

Установка и настройка Scriptbeat

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

  • HOST_LOGSTASH - адрес хоста с Logstash
  • SB_HOME - домашняя директория установки Smart Beat, обычно для Linux это - /app/smartBeat/, для Windows - C:\Program Files\smartBeat\

Общая информация

Scriptbeat - это агент Smart Monitor, который используется для агентского сбора данных с целевого хоста. Он используется для выполнения бинарных файлов и скриптов с помощью указанных интерпретаторов (PowerShell, Python, Bash и др.) и передачи результатов их выполнения в системы хранения.

Структура конфигурации

Конфигурация состоит из следующих блоков:

  • schedule - настройки запуска исполняемых скриптов
  • output - точка назначения для собранных данных
  • processors - опциональный блок для фильтрации и обогащения данных

Блок scriptbeat.schedule

В этом блоке определяется логика запуска одного или нескольких скриптов.

ПараметрТипОписание
commandStringПуть к интерпретатору или исполняемому файлу (например, python, bash, powershell.exe).
argsList (Strings)Путь к скрипту. Поддерживается указание нескольких скриптов.
periodStringРасписание запуска. Формат зависит от выбранного scheduletype.
scheduletypeStringТип логики планировщика: interval(например, 1m, 1h) или cron (например, 0 19 * * *).

Настройки в данном разделе необходимо адаптировать под конкретную операционную систему агента.

Примеры конфигурации для Windows:

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"'
Обратите внимание!

В операционной системе Windows при указании путей необходимо использовать обратный слэш: \.

Примеры конфигурации для Linux:

scriptbeat:
schedule:
- command: /bin/bash
period: "0 2 * * *"
args:
- "/home/admin/scripts/daily_report.sh"
scheduletype: cron

Примеры конфигурации для macOS:

scriptbeat:
schedule:
- command: /bin/zsh
period: "0 8 * * *"
args:
- "-c"
- "/Users/admin/scripts/cleanup_logs.sh"
scheduletype: cron

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.

Используется для передачи данных в pipeline Logstash.

ПараметрТипОбязательныйОписание
hostsListДаСписок адресов Logstash в формате ["host:port"].
loadbalanceBooleanНетЕсли true, события распределяются между узлами. По умолчанию: false.
workerIntegerНетКоличество параллельных потоков для отправки данных. По умолчанию: 1.
compression_levelIntegerНетУровень сжатия Gzip (от 0 до 9). По умолчанию: 3.
ssl.certificate_authoritiesListНетПути к корневым сертификатам (СА).
ssl.certificateStringНетПуть к сертификату клиента.
ssl.keyStringНетПуть к сертификату клиента.
ssl.verification_modeStringНетРежим проверки 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"

Блок 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. Более подробнее в соответсвующей статье.