Руководство по системному администрированию#
Термины и определения#
Термин/аббревиатура |
Определение |
|---|---|
JMX |
Java Management Extensions — технология Java, предназначенная для контроля и управления приложениями, системными объектами, устройствами и компьютерными сетями |
HTTP |
HyperText Transfer Protocol — протокол передачи гипертекста |
HTTPS |
Secure HyperText Transfer Protocol — протокол передачи гипертекста c использованием TLS (криптографического протокола, обеспечивающего защищенную передачу данных в компьютерной сети) |
TLS |
Transport Layer Security — протокол защиты транспортного уровня |
S3 |
Облачное хранилище данных |
Pod |
Набор контейнеров внутри узла кластера Kubernetes |
Общие положения при администрировании компонента#
Администрирование приложения происходит в Kubernetes-кластере.
Администратор должен следить за истечением срока годности сертификатов и своевременно обновлять их.
Для развертывания компонента File Storage Gateway в Kubernetes администратору необходимы права на чтение и запись всех используемых шаблонов, а также возможность читать логи pods.
Сетевая безопасность обеспечивается средствами Istio (SSM), и возлагается на администраторов АС, использующих компонент File Storage Gateway.
Сценарии администрирования#
Ролевая модель для сценариев администрирования не предусмотрена.
Администратор осуществляет:
конфигурирование Ingress/Egress;
настройку мониторинга и просмотр метрик мониторинга;
настройку журналирования и просмотр событий системного журнала;
отслеживание срока годности сертификатов и их обновление;
обеспечение сетевой безопасности при использовании компонента;
отслеживание работоспособности pods.
Конфигурирование#
Конфигурирование Ingress#
Сконфигурируйте Ingress, согласно приведенным шаблонам:
Назначение конфигурации |
Шаблон конфигурации |
Примечание |
|---|---|---|
Настраивает перенаправление траффик с балансировщика кластера в namespace проекта |
– |
|
Балансировка и маршрутизация входящего трафика |
– |
|
Определяет виртуальные порты |
|
|
Описание правил маршрутизации с Ingress Proxy на целевые сервисы |
– |
|
Описание сервиса |
– |
Конфигурирование Egress#
Сконфигурируйте Egress, согласно приведенным шаблонам:
Назначение конфигурации |
Шаблон конфигурации |
Примечание |
|---|---|---|
Описание виртуальных портов для исходящего трафика |
||
Описание сервиса для исходящего трафика |
Конфигурирование DestinationRule, ServiceEntry, VirtualService для доступа в S3-хранилище, для каждого кластера.
Назначение конфигурации |
Шаблон конфигурации |
Примечание |
|---|---|---|
Описывает правила маршрутизации из pod на Egress сервис |
||
Описывает внешние подключения |
||
Определяет политики, применяемые к трафике, предназначаемому VirtualService |
Конфигурирование DestinationRule, ServiceEntry, VirtualService для брокера Kafka аудита. Данный набор артефактов необходим для каждого брокера Kafka.
Назначение конфигурации |
Шаблон конфигурации |
Примечание |
|---|---|---|
Описывает правила маршрутизации из pod на Egress сервис |
||
Описывает внешние подключения |
||
Определяет политики, применяемые к трафике, предназначаемому VirtualService |
Работа с мониторингом внутри компонента#
Включение метрик не требуется, по умолчанию доступны все.
Чтобы увидеть список всех доступных метрик во время работы компонента, выполните GET-запрос по пути:
/actuator/prometheus
Для получения информации конкретной метрики выполните GET-запрос:
GET /actuator/metrics/<название метрики>
Пример:
GET /actuator/metrics/FSGW_OBJECT_CONTENT_DECRYPTION
Ответом на GET запрос будет событие следующего формата:
{
"name": "FSGW_OBJECT_CONTENT_DECRYPTION",
"description": "Общее количество дешифрованных объектов",
"baseUnit": null,
"measurements": [
{
"statistic": "COUNT",
"value": 0.0
}
],
"availableTags": []
}
Работа с журналированием внутри компонента#
Параметры журналирования можно разделить на три типа: общие параметры, параметры локального журнала, параметры журналирования для отправки в Platform V Monitor (LOGA)
Для задания уровня журналирования журнала используйте параметры:
platform.utils:
logging:
startup-parameters:
level:
root: INFO # DEBUG / INFO / WARN / ERROR
name: # указать java пакеты, либо оставить пусто
Для включения локального журнала
platform.utils:
logging:
startup-parameters:
local:
enabled: true # false
Параметры журналирования для отправки в Platform V Monitor (LOGA)
platform.utils:
logging:
startup-parameters:
remote:
level:
root: INFO
name:
appender:
kafka:
enabled: true
connection:
topic: FSGW.LOGGER #имя топика, согласуется с Platform V Monitor (LOGA)
producer:
"[bootstrap.servers]": localhost:9094 #адрес сервера Platform V Monitor (LOGA)
Обновление сертификатов#
В целях обеспечения безопасности при использовании компонентов и сохранности передаваемых данных от третьих лиц, при компрометации сертификатов безопасности, ключей доступа и иных секретов, необходимо незамедлительно позаботиться об их замене.
Алгоритм работы с сертификатами безопасности:
Получить новые сертификаты.
Добавить в секреты Kubernetes или Vault KV Engine совместимом хранилище.
Перезапустить POD.
Алгоритм работы с ключами доступа:
Получить ключи доступа к S3 хранилищу.
Добавить в секреты Kubernetes или Vault KV Engine совместимом хранилище.
Перезапустить POD.
События системного журнала#
Просмотреть события журналирования можно как в логах Pod в интерфейсе Kubernetes, так и отправив GET-запрос по адресу /actuator/loggers.
Возможны следующие уровни журналирования:
Trace — в проекте не используются;
Debug — отладочная информация (получение запроса на отправку файлов, журналирование заполнения буферов и т. д.) - не рекомендован для использования в ПРОМ;
Info — информационные сообщения;
Warning — предупреждения о возможных проблемах (рекомендуется следить за ними как минимум на этапе ввода в эксплуатацию);
Error — ошибки (необходимо следить за ними и реагировать).
Сопоставление уровней журналирования и событий относящимся к ним:
Уровень |
Событие |
Описание |
|---|---|---|
Error |
Неизвестная ошибка исполнения репликации |
Ошибка в процессе асинхронной репликации данных |
Error |
Событие аудита не удалось отправить: '{}' |
Ошибка в процессе отправки событий аудита |
Error |
"Объект {} поврежден, найдены не все части, ReplicationInfo: {}" |
Ошибка в процессе завершения мультипарт загрузки с использованием шифрования и подписи |
Error |
"Возникла необработанная корректным образом ошибка." |
Ошибка в процессе обработки HTTP запроса |
Warn |
"%s завершение обработки входящего запроса: S3 action - '%s', replica set - '%s'" |
Не успешное завершение обработки S3 запроса |
Warn |
"Указанная минорная версия конфигурации '{}' превышает максимально поддерживаемую данным дистрибутивом продукта '{}'.\n Часть указанных настроек конфигурационного файла могут быть проигнорированы." |
Предупреждение о конфигурации приложения при старте |
Warn |
"Неуспешное завершение шифрования: S3 action - '{}', replica set - '{}', bucket - '{}', object key - '{}'." |
Проблемы в процессе шифрования |
Warn |
"Неуспешное завершение расчета digest: hash algorithm - '{}', S3 action - '{}', replica set - '{}', bucket - '{}', object key - '{}'." |
Проблемы в процессе расчета подписи |
Warn |
"Неуспешное завершение наложения ЭЦП: signature suite - '{}', S3 action - '{}', replica set - '{}', bucket - '{}', object key - '{}'." |
Проблемы в процессе наложения ЭП |
Warn |
"Неуспешное завершение дешифрования: S3 action - '{}', cluster - '{}', bucket - '{}', object key - '{}'." |
Проблемы в процессе дешифрования |
Warn |
"Неуспешное завершение проверки ЭЦП: S3 action - '{}', cluster - '{}', bucket - '{}', object key - '{}'." |
Проблемы в процессе проверки подписи |
Info |
"Событие аудита успешно отправлено: '{}'." |
Отправка события аудита |
Info |
"Начало обработки входящего запроса: S3 action - '%s', replica set - '%s'" |
Событие начала обработки S3 запроса |
Info |
"Отправка ответа на входящий запрос: status - '{}'.", httpResponse.getStatusCode() |
Событие завершения обработки S3 запроса |
Info |
"Успешное завершение шифрования: S3 action - '{}', replica set - '{}', bucket - '{}', object key - '{}'." |
Успех в процессе шифрования |
Info |
"Успешное завершение расчета digest: hash algorithm - '{}', S3 action - '{}', replica set - '{}', bucket - '{}', object key - '{}'." |
Успех в процессе расчета подписи |
Info |
"Успешное завершение наложения ЭЦП: signature suite - '{}', S3 action - '{}', replica set - '{}', bucket - '{}', object key - '{}'." |
Успех в процессе наложения ЭП |
Info |
"Успешное завершение дешифрования: S3 action - '{}', cluster - '{}', bucket - '{}', object key - '{}'." |
Успех в процессе дешифрования |
Info |
"Успешное завершение проверки ЭЦП: S3 action - '{}', cluster - '{}', bucket - '{}', object key - '{}'." |
Успех в процессе проверки подписи |
Info |
"Версия файла конфигурации не была указана явно, поэтому будет интерпретирована как '{}'." |
Предупреждение о пропуске секции версии конфига в файле конфигурации приложения |
Info |
"Получена задача на репликацию из kafka: {}" |
Событие чтения задачи на асинхронную репликацию |
Info |
"Запущена задача репликации: {}" |
Начало исполнения задачи асинхронной репликации |
Info |
"Задача {}\nна репликацию завершена со статусом {} для кластера: {}" |
Окончание исполнения задачи асинхронной репликации |
Debug |
"Попытки отложенной записи файла '{}' в bucket '{}' кластера файлового хранилища '{}' выполняться не будут, в связи с отключенным механизмом асинхронной репликации данных в рамках данного bucket." |
Планирование задачи при неудачных размещения файла в S3 сверх min-success-factor |
Debug |
"При предоставлении s3 async client был проигнорирован tenant '{}'." |
Предупреждение об отсутствии тенанта при конфигурировании S3 |
Debug |
"Успешная аутентификация использую Kubernetes аутентификацию" |
Сообщения аутентификации через SA K8s или OpenShift |
Debug |
"StorageChecker::check" |
Помимо ведения журнала в Platform V Monitor (LOGA) журнал может вестись локально, подробнее в руководстве по установке
События мониторинга#
Метрики в формате Prometheus#
FSGW не отправляет метрики мониторинга самостоятельно, сбор происходит по модели PULL
Platform V Monitor компонент MONA может осуществлять сбор метрик по пути
/actuator/prometheusв формате Prometheus.
Метрики для мониторинга событий#
Кроме стандартных метрик, предоставляемых Spring Boot Actuator, приложение предоставляет метрики для мониторинга событий, полный список которых приведен в таблице ниже.
Название метрики |
Теги |
Описание |
|---|---|---|
FSGW_INBOUND_S3_ACTION_REQUEST |
action, bucket, replica-set |
Входящий S3 action запрос |
FSGW_INBOUND_S3_ACTION_RESPONSE |
action, bucket, replica-set, success |
Ответ на входящий S3 action запрос |
FSGW_INBOUND_REPLICATION_TASK |
action, bucket, replica-set |
Суммарное количество входящих задач репликации |
FSGW_INBOUND_REPLICATION_TASK_SUCCESS |
action, bucket, replica-set, state |
Успешно выполненные задачи репликации |
FSGW_INBOUND_REPLICATION_TASK_FAILED |
action, bucket, replica-set, state |
Не выполненные задачи репликации |
FSGW_OUTBOUND_S3_ACTION_REQUEST |
action, bucket, cluster, user |
Исходящий S3 action запрос |
FSGW_OUTBOUND_S3_ACTION_RESPONSE |
action, bucket, cluster, user |
Ответ на исходящий S3 action запрос |
FSGW_OBJECT_CONTENT_ENCRYPTION |
action, bucket, replica-set, success |
Шифрование содержимого объекта |
FSGW_OBJECT_CONTENT_DECRYPTION |
action, bucket, replica-set, success |
Дешифрование содержимого объекта |
FSGW_OBJECT_CONTENT_SIGNING |
action, bucket, replica-set, success |
Наложение ЭП на содержимое объекта |
FSGW_OBJECT_CONTENT_VERIFYING |
action, bucket, replica-set, success |
Проверка ЭП содержимого объекта |
FSGW_OBJECT_CONTENT_HASHING |
action, bucket, replica-set, success |
Расчет digest по содержимому объекта |
Часто встречающиеся проблемы и пути их устранения#
Проблема |
Последствия |
Решение |
|---|---|---|
Истекли сертификаты безопасности |
Передача файлов невозможна |
Обновить сертификаты. Администратор АС участвующий в интеграции должен следить за истечением срока годности сертификатов и своевременно обновлять их |
Не регистрируются события мониторинга |
Нет возможности увидеть историю событий мониторинга |
Проверить корректность в разделе |
Неправильно сконфигурированы настройки Ingress/Egress |
Проблемы с доступом до FSGW или до компонентов развертывания (S3, и т.д.) |
Проверить правильность конфигурации на соответствие рекомендациям данным в разделе |
Не стартуют Pods |
Передача файлов невозможна |
Общий алгоритм действий при данном виде проблем: |