Руководство по системному администрированию#

Термины и определения#

Термин/Аббревиатура

Определение

CPU

Central Processing Unit

gRPC (GRPC)

Google Remote Procedure Call

ID

Идентификатор

АС

Автоматизированная система

JSON

JavaScript Object Notation

MQ

Message Queue

Pod

Набор контейнеров внутри узла кластера Kubernetes

Deployment

Набор инструкций для запуска приложения в кластере Kubernetes

Artemis

Программный продукт Apache ActiveMQ Artemis

Граничный прокси

Компонент Граничный прокси Platform V Synapse Service Mesh (IGEG)

Сервисный прокси

Компонент Сервисный прокси Platform V Synapse Service Mesh (SVPX)

listener

Обработчик, который срабатывает при появлении сообщения во входящей очереди

Программный компонент Шлюз ActiveMQ Artemis (далее – Шлюз) не имеет собственного пользовательского интерфейса для администрирования. Все действия по управлению им производятся с использованием интерфейсов предоставляемых Платформой Kubernetes.

Ниже приведены возможные сценарии администрирования компонента Шлюз с использованием консоли клиента Kubernetes (kubectl).

Предусловие:

Для работы утилиты kubectl необходим файл конфигурации кластера kubeconfig, в котором прописаны реквизиты подключения к кластеру. Файл генерируется при создании кластера.

На рабочей станции администратора файл размещается в каталоге ~/.kube и имеет название config.

Для АРМ под управлением ОС Windows установлен эмулятор командной оболочки bash (например git-bash. Для запуска надо выполнить команду "C:\Program Files\Git\git-bash.exe" --cd-to-home).

Сценарии администрирования#

Авторизация пользователя#

Шаг

Действия

Примечания

Настройте доступ к кластеру Kubernetes

В консоли выполните команды:
kubectl config set-credentials имя_пользователя --username=логин_пользователя --password=пароль_пользователя
kubectl config set-cluster имя_кластера --insecure-skip-tls-verify=true --server=хост_кластера:порт_кластера
kubectl config set-context имя_контекста --user=имя_пользователя --namespace=название_неймспейса --cluster=имя_кластера

-

Установите рабочий context

В консоли выполните команду:
kubectl config use-context имя_контекста

-

Запуск#

Шаг

Действия

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Запустите Шлюз

В консоли выполните команду:
kubectl scale --replicas=<N> deployment/<имя deployment>

N>0 — требуемое количество запущенных Pod Шлюза

Остановка#

Шаг

Действие

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Остановите Шлюз

В консоли выполните команду:
kubectl scale --replicas=0 deployment/<имя deployment>

-

Проверка работоспособности#

Шаг

Действие

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Проверьте работоспособность

В консоли выполните команду:
kubectl port-forward pod/<имя пода> <portnum>:<portnum>
Запустите еще одно окно консоли, в нем выполните команду:
curl localhost:<portnum>/actuator/health
в выдаче команды должна быть строка:
"ping":{"status":"UP"}
Завершите forwarding(s) портов, для этого нажмите Ctrl+C

<portnum> - номер порта указанный в параметре server/port конфигурации Шлюза

Настройка выделения ресурсов#

Шаг

Действие

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Сохраните Deployment

В консоли выполните команду:
kubectl get -o yaml deployment/<имя deployment> > <путь к файлу>.yaml

-

Скорректируйте параметры

Откройте файл, полученный на предыдущем шаге в текстовом редакторе (например, Notepad++), найдите в нем параметры:
spec.template.spec.containers[0].resources.limits.cpu
spec.template.spec.containers[0].resources.limits.memory
 spec.template.spec.containers[0].resources.requests.cpu
 spec.template.spec.containers[0].resources.requests.memory
 Укажите нужные значения.

-

Загрузите Deployment

В консоли выполните команду:
kubectl apply -f <путь к файлу>.yaml

-

Настройка подключений к MQ#

Внимание! Новая конфигурация вступит в действие только после перезапуска Pod.

Шаг

Действие

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

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

В консоли выполните команду:
kubectl get -o yaml configmaps/<имя configmap> > <путь к файлу>.yaml

Артефакт содержащий application.yml, либо environment.yml (подробнее описаны в разделе Подключение и конфигурирование документа Руководство прикладного разработчика)

Скорректируйте параметры

Откройте файл, полученный на предыдущем шаге в текстовом редакторе (например, Notepad++), найдите в нем параметры:
mq.connection.connections[].url
Внесите необходимые изменения для нужных точек подключения из списка

-

Загрузите Deployment

В консоли выполните команду:
kubectl apply -f <путь к файлу>.yaml

-

Изменение количества Pod#

Шаг

Действия

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Увеличьте/уменьшите количество Pod

В консоли выполните команду:
kubectl scale --replicas=<N> deployment/<имя deployment>

N>0 — требуемое количество запущенных pods шлюза

Выгрузка системного журнала#

Шаг

Действия

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Выгрузите лог

В консоли выполните команду:
kubectl logs -c <имя контейнера> <имя пода> > <имя файла>.txt
где <имя контейнера> может быть названием контейнера приложения Шлюза или контейнера sidecar

-

Просмотр метрик мониторинга#

Шаг

Действия

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Получите метрики мониторинга

В консоли выполните команду:
kubectl port-forward pod/<имя пода> <portnum>:<portnum>
Запустите еще одно окно консоли, в нем выполните команду:
curl localhost:<portnum>/actuator/prometheus.
В консоль будут выведены мгновенные значения метрик мониторинга
Завершите forwarding(s) портов, для этого нажмите Ctrl+C

-

Просмотр прикладных логов и метрик мониторинга может быть выполнен администратором в АС Журналирование (LOGA) и АС Мониторинг (MONA) в соответствии с документацией на эти системы.

Контроль срока действия сертификатов#

Шаг

Действия

Примечание

Установите нужный проект в текущем контексте пользователя

Введите команду:
kubectl config set-context --current -n <имя проекта>

-

Получите значение метрики срока действия сертификата

В консоли выполните команду:
kubectl port-forward pod/<имя пода> <portnum>:<portnum>
Запустите еще одно окно консоли, в нем выполните команду:
curl localhost:<portnum>/actuator/prometheus | grep certs.
В консоль будут выведены значения метрики срока действия сертификата
Завершите forwarding(s) портов, для этого нажмите Ctrl+C

-

При необходимости запустите процедуру обновления сертификатов

Если срок действия сертификатов меньше минимального срока установленного внутренними нормативными документами, необходимо выполнить установленную внутренними нормативными документами процедуру обновления

-

События системного журнала#

Системный лог выводится в консоль контейнера приложения.

Уровень логирования задается в дистрибутиве и может быть изменен установкой параметра logging.level конфигурации Шлюза. Подробнее указано в разделе «Полное описание настроек» документа «Руководство прикладного разработчика».

Рекомендуется устанавливать уровень логирования info (используется по-умолчанию) или выше (warn, error).

В системном логе фиксируются следующие события приложения:

Сообщения в логе

Настройки подключения к MQ

time="2023-05-02 10:52:58.371" level=info msg="Создан контекст для отправки сообщений для менеджера {  0    artemis_ssl_ecdsa amqps://<IP хоста брокера>:61619  }"
time="2023-05-02 10:52:58.786" level=info msg="Созданы контексты для получений ответов на синхронные запросы сообщений для менеджера {  0    artemis_ssl_ecdsa amqps://<IP хоста брокера>:61619  }"
time="2023-05-02 10:52:58.457" level=trace msg="AsyncКонсьюмер &{amqps://<IP хоста брокера>:61619 amqps://<IP хоста брокера>:61619 0 { [ ... ]  [49195] 771 false [CN=<Common name брокера>] true} 100 0  0xc0003ae500} создан"

Запуск сервера gRPC

time="2023-05-02 10:52:46.349" level=info msg="Grpc сервер запущен на порту :5454"

Запуск сервера HTTP

time="2023-05-02 10:52:46.351" level=info msg="Запущен эндпоинт /test для синхронных запросов"
time="2023-05-02 10:52:46.351" level=info msg="Запущен эндпоинт /test/sync для синхронных запросов"
time="2023-05-02 10:52:46.351" level=info msg="Запущен эндпоинт /test/async для асинхронных запросов"

Режим работы шлюза

time="2023-05-02 10:52:46.349" level=info msg="Шлюз поставщика работает в синхронном и асинхронном режиме: Принимает запросы по GRPC/HTTP и отправляет в MQ. Принимает асинхронные запросы из mq очереди"

Сообщение получено

time="2023-05-02 10:55:21.053" level=info msg="Логирование события Сообщение получено от АС: SYSTEM. RqUID: d6e3fd28ab2f4f51968c9c7423f99fff"

Сообщение отправлено

time="2023-05-02 10:55:21.067" level=info msg="Логирование события Сообщение отправлено в АС: SYSTEM. RqUID: d6e3fd28ab2f4f51968c9c7423f99fff"

Таймаут

time="2023-05-02 14:08:09.839" level=error msg="Ответ на сообщение ID:afd55329-e8f2-11ed-b913-0a58c0a85a60 не был получен за 35000 из менеджера  очереди UB.TEST.OUT"
time="2023-05-02 14:08:09.840" level=info msg="Логирование события Ошибка при вычитке сообщения из MQ. Ответ на сообщение ID:afd55329-e8f2-11ed-b913-0a58c0a85a60 не был получен за 35000 из менеджера  очереди UB.TEST.OUT. RqUID: "

Ошибка отправки

time="2023-05-02 13:57:24.254" level=error msg="Произошла ошибка при вызове асинхронного интерфейса : rpc error: code = Unavailable desc = no healthy upstream"
time="2023-05-02 13:57:24.254" level=info msg="Логирование события Произошла ошибка: ARTEMIS-GO-GATEWAY. Произошла ошибка при вызове асинхронного интерфейса : rpc error: code = Unavailable desc = no healthy upstream. RqUID: d6e3fd28ab2f4f51968c9c7423f99fff"

Выполнение исходящего вызова

time="2023-05-02 10:55:21.054" level=debug msg="Метадата исходящего вызова: map[x-b3-parentspanid:[0755ff1071bc4252] x-b3-sampled:[1] x-b3-spanid:[0755ff1071bc4252] x-b3-traceid:[0755ff1071bc4252ad68ee286fadc715] x-synapse-from:[system] x-synapse-from-pod-name:[artemis-go-gateway] x-synapse-messageid:[ID:d527ef34-e8d7-11ed-ac9c-d81265b35a2b] x-synapse-operationname:[ServiceRq] x-synapse-override-jmstype:[mcd://jms_type] x-synapse-rquid:[d6e3fd28ab2f4f51968c9c7423f99fff] x-synapse-type-message:[RS]]"
time="2023-05-02 10:55:21.054" level=info msg="Логирование события Сообщение отправлено в: ARTEMIS-GO-GATEWAY. RqUID: d6e3fd28ab2f4f51968c9c7423f99fff"

Обработка входящего вызова

time="2023-05-02 10:55:21.062" level=info msg="Логирование события Сообщение получено от: ARTEMIS-GO-GATEWAY. RqUID: d6e3fd28ab2f4f51968c9c7423f99fff"
time="2023-05-02 10:55:21.062" level=debug msg="Метадата входящего вызова: map[:authority:[artemis-go-gateway:5454] content-type:[application/grpc] user-agent:[grpc-go/1.41.0] x-b3-parentspanid:[2e08c38d724835a8] x-b3-sampled:[1] x-b3-spanid:[ba6458530f5a3539] x-b3-traceid:[0755ff1071bc4252ad68ee286fadc715] x-envoy-attempt-count:[1] x-forwarded-client-cert:[By=spiffe://cluster.local/ns/tribe-sy-asgt-dev-01/sa/default;Hash=80803fd3ceb2814f6cf3e59659b5e538dfdd7fb9b0da7000798578ebfeb6f9ee;Subject=\"\";URI=spiffe://cluster.local/ns/tribe-sy-asgt-dev-01/sa/default] x-forwarded-proto:[http] x-request-id:[133e2358-8aee-9ab2-b217-e20c76aa8374] x-synapse-from:[system] x-synapse-from-pod-name:[artemis-go-gateway] x-synapse-messageid:[ID:d527ef34-e8d7-11ed-ac9c-d81265b35a2b] x-synapse-operationname:[ServiceRq] x-synapse-override-jmstype:[mcd://jms_type] x-synapse-rquid:[d6e3fd28ab2f4f51968c9c7423f99fff] x-synapse-type-message:[RS]]"

Ошибка подключения к MQ

time="2023-05-02 10:52:46.433" level=error msg="dial tcp <IP хоста брокера>:61619: connect: connection refused"
time="2023-05-02 10:52:46.433" level=warning msg="Проверка подключения № 1 к серверу amqps://<IP хоста брокера>:61619 завершилась ошибкой!"
time="2023-05-02 10:52:46.433" level=warning msg="Подключение к серверу потеряно - {errorCode=, reason=dial tcp <IP хоста брокера>:61619: connect: connection refused, linkedErr=dial tcp <IP хоста брокера>:61619: connect: connection refused} amqps://<IP хоста брокера>:61619"
time="2023-05-02 10:52:46.433" level=warning msg="Удаление сервера amqps://<IP хоста брокера>:61619 из балансировки, доступных: 0, отключенных: 1"

Восстановление подключения к MQ

time="2023-05-02 10:53:00.381" level=info msg="Проверка подключения № 1 к серверу amqps://<IP хоста брокера>:61619 прошла успешна!"
time="2023-05-02 10:53:00.381" level=info msg="Подключение к серверу восстановлено - amqps://<IP хоста брокера>:61619"
time="2023-05-02 10:53:00.381" level=warning msg="Возврат сервера amqps://<IP хоста брокера>:61619 в балансировку, доступных: 1, отключенных: 0"

События прикладного журнала#

Прикладной журнал фиксируется в файлах /var/log/synapse/messages*.log в формате JSON.

В прикладном журнале фиксируются события:

  • получения сообщения;

  • отправки сообщения;

  • возникновения ошибки.

Каждая запись о событии в журнале содержит:

Имя поля

Требование к заполнению

Обязательность

projectName

Имя проекта в Kubernetes. Заполняется автоматически

1

podSource

Имя pod в Kubernetes, залогировавшего событие. Заполняется автоматически

1

event_timestamp

Время фиксации события в pod. Заполняется автоматически

1

message

Тело передаваемого сообщения в формате MQ

1

information

Информация о логируемом событии

0

rqUID

Уникальный идентификатор запроса. Основной идентификатор для поиска записей в логе.

1

serviceReceiver

Имя вызываемого сервиса (получателя) или имя брокера и очереди для внешней АС (получателя).

0

operationName

Название операции (корневого тега сообщения)

0

status

Статус операции

0

Пример записи в прикладной лог

{
    "projectName": "Имя проекта",
    "podSource": "Имя pod",
    "event_timestamp": 1611911783399,
    "message": "<MSG_CONTENT>тело сообщения</MSG_CONTENT>",
    "information": "Сообщение получено от АС: АС",
    "rqUID": "abcdef00000001212669000134159445",
    "operationName": "Имя операции",
    "status": "SUCCESS"
} 
{
    "projectName": "Имя проекта",
    "podSource": "Имя pod",
    "event_timestamp": 1611911786396,
    "message": "<MSG_CONTENT>тело сообщения</MSG_CONTENT>",
    "information": "Сообщение отправлено в: Имя сервиса",
    "rqUID": "abcdef00000001925071162918237829",
    "serviceReceiver": "Имя сервиса",
    "operationName": "Имя операции",
    "status": "SUCCESS"
} 
{
    "projectName": "Имя проекта",
    "podSource": "Имя pod",
    "event_timestamp": 1683101186999,
    "message": "",
    "information": "Произошла ошибка: ИМЯ СЕРВИСА. Произошла ошибка при вызове асинхронного интерфейса : rpc error: code = Unavailable desc = no healthy upstream",
    "serviceReceiver": "имя сервиса",
    "operationName": "Имя операции",
    "rqUID": "abcdef00000002509572495095446810",
    "status": "ERROR"
}

Коды ошибок:

Код ошибки

Сообщение в логе

Описание

601

Общая ошибка в шлюзе

602

Код ошибки: 602. Сообщение не может быть отправлено

Ошибка конфигурации шлюза

603

Код ошибки: 603. <текст MQ ошибки>

Ошибки взаимодействия с MQ

604

Код ошибки: 604. Сообщение не соответствует схеме <ID>

Ошибка валидации сообщения (при работе с валидатором сообщений)

605

Код ошибки: 605. Ошибка вызова валидатора <ID>

Ошибка вызова валидатора (при работе с валидатором сообщений)

606

Код ошибки: 606. Сообщение не соответствует конфигурации <ID>

Параметры полученного сообщения не соответствуют конфигурации шлюза

701

Код ошибки: 701. Ошибка при вызове по GRPC ID: StackTrace: …

Ошибка вызова по gRPC

События мониторинга#

Шлюз MQ выставляет HTTP-endpoint (actuator/prometheus), на котором публикует метрики мониторинга в формате Prometheus. Для опроса и централизованного сбора метрик может использоваться компонент Объединенный мониторинг Unimon (MONA) продукта Planform V Monitor.

Полный список приведен в таблице:

Метрика

Описание

Показатель/Тип

Измерение

1

Продолжительность паузы сборки мусора

Суммарная продолжительность паузы циклов сборки мусора.

go_gc_duration_seconds/summary

quantile [0, 0.25, 0.5, 0.75, 1]

2

Количество Goroutines

Количество существующих в настоящее время Goroutines.

go_goroutines/gauge

3

Информация

Информация о среде Go.

go_info/gauge

version="<номер версии>"

4

Выделено байтов

Количество выделенных и все еще используемых байтов.

go_memstats_alloc_bytes/gauge

5

Общее количество выделенных байтов

Общее количество выделенных байтов, даже если они были освобождены.

go_memstats_alloc_bytes_total/counter

6

Число байтов хеш-таблицы

Число байтов, используемых хеш-таблицей сегмента профилирования.

go_memstats_buck_hash_sys_bytes/gauge

7

Высвобождения

Общее количество высвобождений.

go_memstats_frees_total/counter

8

Количество байтов системы сбора мусора.

Количество байтов, используемых для метаданных системы сбора мусора.

go_memstats_gc_sys_bytes/gauge

9

Количество выделенных байтов heap

Количество байтов heap, выделенных и все еще используемых.

go_memstats_heap_alloc_bytes/gauge

10

Количество ожидающих байтов heap

Количество байтов heap, ожидающих использования.

go_memstats_heap_idle_bytes/gauge

11

Количество используемых байтов heap

Количество байтов heap, которые используются.

go_memstats_heap_inuse_bytes/gauge

12

Количество объектов

Количество выделенных объектов.

go_memstats_heap_objects/gauge

13

Количество возвращенных байтов heap

Количество байтов heap, возвращенных ОС.

go_memstats_heap_released_bytes/gauge

14

Количество байтов heap

Количество байтов heap, полученных от системы.

go_memstats_heap_sys_bytes/gauge

15

Время последней сборки мусора

Количество секунд с 1970 года до последней сборки мусора.

go_memstats_last_gc_time_seconds/gauge

16

Количество операций поиска

Общее количество операций поиска указателя.

go_memstats_lookups_total/counter

17

Количество выделений памяти

Общее количество выделений памяти (malloc).

go_memstats_mallocs_total/counter

18

Количество используемых байтов mcache

Количество байтов, используемых структурами mcache.

go_memstats_mcache_inuse_bytes/gauge

19

Количество полученных байтов mcache

Количество байтов, используемых для структур mcache, полученных из системы.

go_memstats_mcache_sys_bytes/gauge

20

Количество используемых байтов mspan

Количество байтов, используемых структурами mspan.

go_memstats_mspan_inuse_bytes/gauge

21

Количество полученных байтов mspan

Количество байтов, используемых для структур mspan, полученных из системы.

go_memstats_mspan_sys_bytes/gauge

22

Следующая сборка мусора

Количество байтов heap, когда будет происходить следующая сборка мусора.

go_memstats_next_gc_bytes/gauge

23

Другие системные распределения

Количество байтов, используемых для других системных распределений.

go_memstats_other_sys_bytes/gauge

24

Количество байтов стека

Количество байтов, используемых распределителем стека.

go_memstats_stack_inuse_bytes/gauge

25

Количество байтов системы для распределителя стека

Количество байтов, полученных от системы для распределителя стека.

go_memstats_stack_sys_bytes/gauge

26

Количество байтов системы

Количество байтов, полученных от системы.

go_memstats_sys_bytes/gauge

27

Количество потоков

Количество созданных потоков ОС.

go_threads/gauge

28

Время обработки HTTP-вызова

Время обработки HTTP-вызова в разрезе метода, URI, статуса, исключения

http_server_requests_seconds/summary

exception
method ["POST"]
status=<status code>
uri

29

Максимальное время обработки HTTP-вызова

Максимально время обработки HTTP-вызова в разрезе метода, URI, статуса, исключения

http_server_requests_seconds_max/gauge

exception
method ["POST"]
status=<status code>
uri

30

Размер сообщений

Размер сообщений в разрезе интерфейсов и процентилей

message_size/summary

MESSAGE_TYPE ["HTTP","JMS"]
quantile

31

Временные задержки на шлюзе

Среднее время обработки сообщений в разрезе направлений и этапов обработки.
Среднее значение за 5 минут может быть определено как rate(mqgate_average_duration_seconds_sum[5m])/rate(mqgate_average_duration_seconds_count[5m])

mqgate_average_duration_seconds/summary

direction ["INBOUND", "OUTBOUND"]
step ["DELIVERY", "MQ_TIME", "PROCESS"]

32

Количество mq-консьюмеров

Количество консьюмеров выполняющих чтение из входящих очередей, в разрезе очередей и подключений. Выводит количество активных потоков, для конкретного подключения и конкретной очереди. Если активных потоков для данного подключения и очереди нет - для них будет выведено значение 0

mqgate_consumer/gauge

connection
destination

33

Минимальное количество mq-консьюмеров

Минимальное количество mq-консьюмеров. Показывает значение параметра mq.consumerParams.threadPool.concurrentConsumers

mqgate_consumer_min/gauge

34

Максимальное количество mq-консьюмеров

Максимальное количество mq-консьюмеров. Показывает значение параметра mq.consumerParams.threadPool.maxConcurrentConsumers

mqgate_consumer_max/gauge

35

Наполнение очереди запросов

Количество gRPC вызовов, превысивших ограничение и ожидающих в очереди на обработку

mqgate_grpc_concurrent_limiter_request_queue_inuse/gauge

type [GRPC]

36

Размер очереди запросов

Максимальное количество запросов, которые могут быть помещены в очередь на ожидание (последующие будут отклонены)

mqgate_grpc_concurrent_limiter_request_queue_limit/gauge

type [GRPC]

37

Состояние listeners MQ

Показывает, включены или выключены listeners, читающие сообщения из MQ

mqgate_mq_listeners_enabled/gauge

38

Количество серверов

Количество настроенных брокеров MQ

mqgate_mq_server_count/gauge

39

Неактивные подключения с параметрами MQ

Количество сбойных брокеров MQ

mqgate_mq_server_health_down/gauge

QM=<url брокера>
id=<url брокера>

40

Количество доступных брокеров MQ

Количество доступных подключений к брокерам MQ в разрезе статусов

mqgate_mq_server_health_states/gauge

state ["UP","DOWN"]

41

Активные подключения с параметрами MQ

Количество активных брокеров MQ

mqgate_mq_server_health_up/gauge

QM=<url брокера>
id=<url брокера>

42

Время выполнения операции

response_receive = System.currentTimeMillis() - receiveTaskContext.getStartTime()
— время с момента первого создания задачи на чтение ответа до завершения чтения ответа;
response_put = getIbmPutTime(response) - receiveTaskContext.getReqPutTime()
— время с момента помещения запроса в MQ до помещения ответа в MQ поставщиком

mqgate_operation_timer_seconds/summary

name ["response_put","response_receive"]
quantile

43

Максимальное время выполнения операции

response_receive = System.currentTimeMillis() - receiveTaskContext.getStartTime()
— время с момента первого создания задачи на чтение ответа до завершения чтения ответа;
response_put = getIbmPutTime(response) - receiveTaskContext.getReqPutTime()
— время с момента помещения запроса в MQ до помещения ответа в MQ поставщиком

mqgate_operation_timer_seconds_max/gauge

name ["response_put","response_receive"]

44

ТПС

Количество сообщений в секунду в разрезе направлений и статусов
(Так как counter ведет подсчет накопительным итогом, для отображения значения TPS в дашборде нужно использовать функцию rate)

mqgate_tps/counter

direction ["INBOUND","OUTBOUND"]
mode ["ALL", "SUCCESS", "FAILURE", "TIMEOUT"]

45

Версия Шлюза

Версия выводится в измерении

mqgate_version_total/counter

version=<номер версии>

46

Общее процессорное время

Общее пользовательское и системное процессорное время, в секундах.

process_cpu_seconds_total/counter

47

Максимальное количество файлов

Максимальное количество открытых дескрипторов файлов.

process_max_fds/gauge

48

Количество файлов

Количество открытых дескрипторов файлов.

process_open_fds/gauge

49

Резидентная память

Размер резидентной памяти в байтах.

process_resident_memory_bytes/gauge

50

Время начала процесса

Время начала процесса с unix-эпохи в секундах.

process_start_time_seconds/gauge

51

Виртуальная память

Размер виртуальной памяти в байтах.

process_virtual_memory_bytes/gauge

52

Доступная виртуальная память

Максимальный объем доступной виртуальной памяти в байтах.

process_virtual_memory_max_bytes/gauge

53

Обрабатываемые запросы

Текущее количество обрабатываемых запросов.

promhttp_metric_handler_requests_in_flight/gauge

54

Обработанные запросы по коду состояния HTTP.

Общее количество обработанных запросов по коду состояния HTTP.

promhttp_metric_handler_requests_total/counter

code=<code>

55

Максимальное количество потоков gRPC

Максимальное количество потоков на обработку gRPC вызовов

rejectCapacity/gauge

56

Используемое количество потоков gRPC

Используемое количество потоков обработки gRPC вызовов

rejectCapacityCounter/gauge

57

Сроки истечения используемых сертификатов SSL

Количество дней до истечения срока действия сертификатов в разрезе сертификатов

certs/gauge

certLabel="{Alias=<alias сертификата>, Subject=<DN владельца сертификата>, Expiration date=<Дата истечения сертификата>, Issuer=<DN издателя сертификата>}"

58

Количество отправляемых сообщений в MQ

Количество отправляемых сообщений в MQ в срезе подключений

mqgate_producer_sends_total/counter

connection=<ID подключения>

Часто встречающиеся проблемы и пути их устранения#

Проблема

Влияние

Причина

Решение

Не стартует pod приложения

Снижение нагрузочной способности

Недостаточно ресурсов

Увеличить limits/requests для приложения

Не стартует pod приложения

Снижение нагрузочной способности

Нет доступного node для запуска

Зарегистрировать обращение в поддержку инфраструктуры

Не стартует pod приложения

Снижение нагрузочной способности

Ошибка в конфигурации

Выгрузить лог, провести анализ, скорректировать конфигурацию

Частый рестарт контейнера приложения

Снижение нагрузочной способности

Медленная загрузка приложения

Увеличить задержку и/или интервал опроса Liveness пробы

Частый рестарт контейнера приложения

Снижение нагрузочной способности

Недостаточно ресурсов

Увеличить limits/requests для приложения

Ошибка при вызове по gRPC

Снижение нагрузочной способности

Нет доступных подов сервиса, которому направлен вызов

Проверить состояние сервиса — получателя вызова

Ошибка при вызове по gRPC

Снижение нагрузочной способности

Ошибки в конфигурации Сервисного прокси

Выгрузить лог Сервисного прокси, проанализировать, устранить ошибки

Ошибка при вызове брокера Artemis

Снижение нагрузочной способности

Недоступен брокер Artemis

Проверить и устранить недоступность

Ошибка при вызове брокера Artemis

Снижение нагрузочной способности

Отсутствует очередь

Проверить наличие очереди, при необходимости создать

Ошибка при вызове брокера Artemis

Снижение нагрузочной способности

Ошибка в конфигурации шлюза

Проверить и скорректировать конфигурацию

Ошибка при вызове брокера Artemis

Снижение нагрузочной способности

При соединении через Граничный прокси — ошибки в его конфигурации

Выгрузить лог Граничного прокси, провести анализ, устранить ошибки