Эксплуатация и мониторинг¶
Резервное копирование и восстановление¶
Резервное копирование¶
Для резервного копирования AppSec.Track достаточно сделать копию базы данных PostgreSQL любым наиболее подходящим для вас способом. Например, можно использовать следующий официальный способ бэкапирования:
pg_dump dbname > dumpfile
Восстановление из резервной копии¶
Для восстановления AppSec.Track из резервной копии можно использовать любой наиболее подходящий для вас инструмент для восстановления базы данных PostgreSQL. Например, можно использовать следующий официальный способ восстановления:
psql dbname < dumpfile
Подробнее с дополнительными возможностями использования приведенных в данном разделе команд можно ознакомиться на странице официальной документации PostgreSQL.
Логирование¶
Начиная с версии 3.20.0, Система логирует события бэкендов в формате CEF, совместимом с Syslog, для SIEM-систем.
Описание настроек SIEM приведено в соответствующем разделе.
Логи записываются в отдельные файлы для каждого бэкенда.
Система логирует события двух типов:
- Действия пользователей.
- События OSA.
Логи располагаются в директории бэкенда, в общем случае:
<backend_directory>/logs/<log_name>.log
Пример записи в логе:
CEF:0|AppSec Solutions|AppSec.Track|3.20|15|User Event|6|start=2025-07-01T14:30:45Z src=192.168.1.100 suid=42 act=RULE changed () oldValue= newValue={\"id\":695,\"host\":\"184.118.240.71\",\"port\":9999,\"login\":\"1sb9MjLbs8\"} objectId=2358 objectType=RULE
Перечень логируемых событий:
- PLUGIN changed
- PLUGIN created
- PLUGIN deleted
- PROXY changed
- PROXY created
- PROXY deleted
- REPO changed
- REPO deleted
- ROLE changed
- ROLE created
- ROLE deleted
- ROLE_AUTHORITY changed
- RULE changed
- RULE created
- RULE deleted
- RULE_DISABLED changed
- RULE_DISABLED created
- RULE_DISABLED deleted
- RULE_EXCLUSION changed
- RULE_EXCLUSION created
- USER changed
- USER created
- USER deleted
- USER logout
- USER login
Метрики в Prometheus/Grafana¶
Начиная с версии 3.16.0, Система предоставляет данные для метрик в формате, совместимом с Prometheus/Grafana.
Настройка¶
Для того чтобы начать работу с метриками, необходимо обновить Систему до версии 3.16.0 или выше (см. раздел «Обновление 3.15.0 до 3.16.0» для Docker или Kubernetes).
После обновления метрики станут доступны в Prometheus.
Для отображения метрик в Grafana можно использовать базовый дашборд JVM Micrometer. Этот дашборд «из коробки» будет работать только с метриками /actuator/prometheus. Чтобы были видны остальные метрики, необходимо провести кастомизацию дашборда.
Список метрик¶
-
Список активных метрик в
/actuator:GET /actuator- вывод всех доступных endpoints метрик.GET /actuator/metrics- вывод всех доступных метрик.GET /actuator/health- состояние всех сервисов.GET /actuator/prometheus- доступные метрики в формате Prometheus.GET /actuator/info- общие сведения о приложении: версия, дата билда, имя билда.
-
Основные метрики о состоянии БД PotgreSQL:
GET /actuator/health/r2bdc- состояние PostgreSQL (status, version).
a. Группа метрик о состоянии БД PotgreSQL:
GET /actuator/metrics/r2dbc.pool.acquiredGET /actuator/metrics/r2dbc.pool.allocatedGET /actuator/metrics/r2dbc.pool.idleGET /actuator/metrics/r2dbc.pool.max.allocatedGET /actuator/metrics/r2dbc.pool.max.pendingGET /actuator/metrics/r2dbc.pool.pending
b. Группа метрик о состоянии БД PotgreSQL в формате Promeheus:
GET //prometheus?includedNames=r2dbc_pool_...
-
Основные метрики о состоянии Redis:
GET /actuator/health/redis- состояние Redis (status, version)
a. Группа метрик о состоянии Redis:
GET /actuator/metrics/lettuce.command.completionGET /actuator/metrics/lettuce.command.firstresponse
b. Группа метрик о состоянии Redis в формате Promeheus:
GET /actuator/prometheus?includedNames=lettuce_command_...
-
Используемые оперативная память / дисковое пространство:
GET /actuator/health/diskSpace- состояние дискового пространства.
a. Группа метрик с информацией о дисковом пространстве:
GET /actuator/metrics/disk.free- свободное место на диске в байтах.GET /actuator/metrics/disk.total- общий размер дискового пространства в байтах.
b. Группа метрик с информацией об оперативной памяти:
GET /actuator/metrics/jvm.memory.used- используемый объем оперативной памяти в байтах.GET /actuator/metrics/jvm.memory.max- выделенный объем оперативной памяти в байтах.GET /actuator/metrics/jvm.memory.committed- подтвержденный объем оперативной памяти в байтах.GET /actuator/metrics/jvm.memory.usage.after.gc- объем оперативной памяти после работы Garbage collection в %.
c. Группа метрик с информацией о дисковом пространстве в формате Promeheus:
GET /actuator/prometheus?includedNames=disk_total_bytes,disk_free_bytes- гдеdisk_total_bytes- общий размер диска,disk_free_bytes- свободное место на диске.
d. Группа метрик с информацией об оперативной памяти в формате Promeheus:
GET /actuator/prometheus?includedNames=jvm_memory_used_bytes,jvm_memory_committed_bytes,jvm_memory_max_bytes,jvm_memory_usage_after_gc_percent- описание см. выше в пункте 3.b.
-
Текущий используемый URL Сервиса данных (Track.Feed):
GET /actuator/metrics/actual_feed_core_url- информация об актуальном адресе Сервиса данных.GET /actuator/actuator/prometheus?includedNames=actual_feed_core_url- информация об актуальном адресе Сервиса данных (feed) в формате Prometheus.
-
Количество запросов в Сервис данных:
GET /actuator/metrics/history_log_count- количество запросов.GET /actuator/prometheus?includedNames=history_log_count- количество запросов в формате Promeheus.
-
Остальные метрики:
GET /actuator/metrics/logback.events- количество событий в логах приложения по уровням:warn,trace,debug,error,info.GET /actuator/metrics/system.cpu.count- информация о процессоре. Количество процессоров.GET /actuator/metrics/system.cpu.usage- информация о процессоре. Загруженность процессора.
Кеширование ответов Track.Feed¶
При большом количестве последовательных запросов и/или низком качестве сетевого соединения возможно заметное снижение производительности AppSec.Track. Во избежание этого для кеширования ответов Track.Feed используется Redis.
Примечание
Время хранения данных в кеше — 24 часа. При создании/удалении/редактировании политик, исключений, правил, пользователей, ролей и изменении настроек сервиса данных происходит очистка кеша.
При необходимости кеш можно очистить принудительно следующими способами:
-
В пользовательском интерфейсе AppSec.Track с помощью кнопки Сбросить кэш на вкладке Сервис данных на странице Настройки.
-
Через API, выполнив следующий запрос:
curl --location '<<Track_BASE_URL>>/api/cache/reset' --header 'Cookie: X-Auth=<<Cookie_auth>>' -
В браузере в пользовательском интерфейсе AppSec.Track после авторизации можно перейти на страницу по ссылке:
<<Track_BASE_URL>>/api/cache/reset. После этого система автоматически вернется на главную страницу пользовательского интерфейса AppSec.Track, а кеш будет очищен.
В качестве минимально рекомендуемых можно рассматривать следующие параметры.
resources:
limits:
cpu: 250m
memory: 2Gi
requests:
cpu: 50m
memory: 64Mi
Примечание
Объем виртуальной памяти, выделяемой для Redis, не должен превышать объем физической памяти, в противном случае возможно существенное снижение производительности.
Примечание
При использовании Redis время обработки отдельных запросов может незначительно увеличиваться, поскольку к проверке в БД добавляется проверка кеша.
Отключение кеширования¶
-
В конфигурационном файле application-prod.yml удалите следующие строки.
redis: host: ${TRACK_REDIS_HOST} port: ${TRACK_REDIS_PORT} connect-timeout: 500ms timeout: 500ms client-type: lettuce lettuce: pool: min-idle: 1 -
В конфигурационном файле docker-compose.yml удалите следующие строки.
appsec-track-redis: container_name: appsec-track-redis hostname: appsec-track-redis image: ${redis_image} ports: - "6379" networks: - track_net volumes: - ./redis/data:/data environment: - TZ=Europe/Moscow restart: always
Настройка параметров Java¶
Инструкция по добавлению параметров Java в docker-compose.yml¶
-
Откройте файл docker-compose.yml и добавьте строку с параметрами Java в секцию
appsec-track-backend.environment.services: ... appsec-track-backend: environment: - TZ=Europe/Moscow - pgsql_url=${pgsql_url} ... # Параметры Java: начальный размер кучи (-Xms) # и максимальный размер кучи (-Xmx) - JAVA_TOOL_OPTIONS=-Xms2g -Xmx4gВажно:
- Не используйте кавычки вокруг значения (иначе Java воспримет строку как один аргумент).
- Максимальный размер кучи (
-Xmx) не должен превышать лимит памяти контейнера. Если для контейнера указан лимит памяти в секцииdeploy.resources.limits.memory, то-Xmxдолжен быть меньше этого лимита. Рекомендуется оставлять запас 20-30% от лимита для других нужд JVM (Metaspace, стеки потоков, code cache) и операционной системы внутри контейнера.
-
После изменения перезапустите контейнер.
docker-compose down docker-compose up -d
Инструкция по добавлению параметров Java в Helm-чарт¶
-
Откройте файл values.yaml в директории Helm-чарта.
-
Найдите секцию
backend, раскомментируйте параметрjava_tool_optionsи укажите необходимые параметры.backend: ... resources: {} # Параметры Java: начальный размер кучи (-Xms) # и максимальный размер кучи (-Xmx) java_tool_options: "-Xms2g -Xmx4g" ...Важно:
- В Helm-чарте значение должно быть в кавычках, так как это строка YAML, которая будет передана как переменная окружения
JAVA_TOOL_OPTIONS. - Максимальный размер кучи (
-Xmx) не должен превышать лимит памяти контейнера. Если для контейнера указан лимит памяти в секцииbackend.resources.limits.memory, то-Xmxдолжен быть меньше этого лимита. Рекомендуется оставлять запас 20-30% от лимита для других нужд JVM (Metaspace, стеки потоков, code cache) и операционной системы внутри контейнера.
- В Helm-чарте значение должно быть в кавычках, так как это строка YAML, которая будет передана как переменная окружения
-
После изменения примените обновления:
helm upgrade <release-name> <chart-path> -f values.yamlили, если используете
helm install:helm install <release-name> <chart-path> -f values.yaml