Работает в «Подсказках» 18.10+

«Подсказки» рассчитывают метрики производительности:

Собирают метрики раздельно по каждому справочнику, за всё время с начала суток и за последний час (скользящая).

API

Запрос

GET /metrics/performance/[dictionary]?[period=day|hour][&detailed=true][&histogram=true]
ПараметрПо умолчаниюОписание
dictionaryПо какому справочнику вернуть метрики. Может принимать значения address, bank, fio, ip, party, а также любые внешние справочники, если они есть. Если не указан, возвращает статистику по всем справочникам.
periodDAYЗа какой период вернуть метрики. Может принимать значения DAY (с начала суток) и HOUR (за последний час).
detailedЕсли true, добавляются поля metrics.search_time и metrics.enrich_time (19.6+)
histogramЕсли true, добавляется поле metrics.response_time.histogram (19.6+);

Ответ

ПолеОписание
hostnameИмя хоста, при необходимости возвращаемое значение можно переопределить через JVM-свойство statistic.performance.hostname (начиная с версии 19.1)
version

Версия подсказок

revisionРевизия подсказок

period

└ type

└ from

└ to

Период метрик

HOUR / DAY

начало периода

конец периода

metrics

Метрики

metrics.nameНаименование справочника
metrics.methodМетод SUGGEST / FIND_BY_ID / FIND_AFFILIATED / GEO_LOCATE / IP_LOCATE

metrics.request

└ count

└ client_errors

└ server_errors

└ timeouts

Статистика запросов

общее количество

ошибки клиента

ошибки сервера

таймауты (начиная с версии 19.1)

metrics.response_time

└ average

└ percentile_90

└ percentile_95

└ percentile_99

└ histogram

Время ответа в миллисекундах:

среднее

90 перцентиль

95 перцентиль

99 перцентиль

гистограмма распределения времени ответа при указании histogram=true и периоде period = DAY (начиная с версии 19.6)

metrics.search

└ count

time

└ average

└ percentile_90

└ percentile_95

└ percentile_99

└ histogram

Количество запросов и время поиска в миллисекундах при указании detailed=true:

общее количество


среднее

90 перцентиль

95 перцентиль

99 перцентиль

гистограмма распределения времени ответа при указании histogram=true и периоде period = DAY

metrics.enrichОбщее количество запросов к Фактору и время обогащения в миллисекундах при указании detailed=true, формат аналогичен metrics.search (начиная с версии 20.3)
custom_metricsКоличество и время разбора запросов (начиная с версии 20.3)

custom_metrics.*ValueQueryBuilder

Обычный поиск без опечаток, формат аналогичен metrics.search
custom_metrics.*IdsQueryBuilderПоиск по идентификатору, формат аналогичен metrics.search
custom_metrics.AddressValuePreciseQueryBuilderОбычный поиск для адресов, формат аналогичен metrics.search
custom_metrics.AddressValueFuzzyQueryBuilderПоиск с опечатками для адресов, формат аналогичен metrics.search
custom_metrics.EnrichMissingПоисковые запросы к Фактору для метода SUGGEST адресов, формат аналогичен metrics.search

Пример:

GET /metrics/performance/address?period=hour&detailed=true

{
    "hostname": "suggestions.mydomain.ru",
    "version": "20.3",
    "revision": "58298e46",
    "period": {
        "type": "HOUR",
        "from": "2020-04-16 12:17:50",
        "to": "2020-04-16 12:26:40"
    },
    "metrics": [
        {
            "name": "address",
            "method": "SUGGEST",
            "search": {
                "count": 2528,
                "time": {
                    "average": 12,
                    "percentile_90": 0,
                    "percentile_95": 12,
                    "percentile_99": 495
                }
            },
            "enrich": {
                "count": 2277,
                "time": {
                    "average": 1,
                    "percentile_90": 0,
                    "percentile_95": 0,
                    "percentile_99": 19
                }
            },
            "request": {
                "count": 2528,
                "timeouts": 0,
                "client_errors": 0,
                "server_errors": 0
            },
            "response_time": {
                "average": 13,
                "percentile_90": 1,
                "percentile_95": 28,
                "percentile_99": 495
            },
            "custom_metrics": {
                "AddressIdsQueryBuilder": {
                    "count": 20,
                    "time": {
                        "average": 52,
                        "percentile_90": 57,
                        "percentile_95": 58,
                        "percentile_99": 101
                    }
                },
                "AddressValuePreciseQueryBuilder": {
                    "count": 171,
                    "time": {
                        "average": 169,
                        "percentile_90": 559,
                        "percentile_95": 675,
                        "percentile_99": 1047
                    }
                },
                "EnrichMissing": {
                    "count": 2275,
                    "time": {
                        "average": 1,
                        "percentile_90": 0,
                        "percentile_95": 0,
                        "percentile_99": 19
                    }
                },
                "AddressValueFuzzyQueryBuilder": {
                    "count": 86,
                    "time": {
                        "average": 19,
                        "percentile_90": 36,
                        "percentile_95": 92,
                        "percentile_99": 142
                    }
                }
            }
        }
    ]
}
GET /metrics/performance/address?period=hour&detailed=true

{
    "hostname": "suggestions.mydomain.ru",
    "version": "19.7",
    "revision": "cad9cab2d4b0",
    "period": {
        "type": "HOUR",
        "from": "2019-07-23 15:04:11",
        "to": "2019-07-23 16:17:41"
    },
    "metrics": [
        {
            "name": "address",
            "method": "SUGGEST",
            "request": {
                "count": 54,
                "client_errors": 0,
                "server_errors": 0,
                "timeouts": 0
            },
            "response_time": {
                "average": 495,
                "percentile_90": 1239,
                "percentile_95": 1535,
                "percentile_99": 3135
            },
            "search_time": {
                "average": 498,
                "percentile_90": 1239,
                "percentile_95": 1535,
                "percentile_99": 3135  
            },
            "enrich_time": {
                "average": 1006,
                "percentile_90": 2015,
                "percentile_95": 2015,
                "percentile_99": 2015
            }
        }
    ]
}