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

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

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

API

Запрос

GET /metrics/performance/[dictionary]?[period=day|hour][&detailed=true][&histogram=true]


Ответ

ПолеОписание
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)
queriesКоличество и время разбора запросов (начиная с версии 20.3)

queries.*ValueQueryBuilder

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

Пример:

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

{
    "hostname": "suggestions.mydomain.ru",
    "version": "20.3",
    "revision": "ee7e1a4f",
    "period": {
        "type": "HOUR",
        "from": "2020-04-16 11:29:58",
        "to": "2020-04-16 11:34:37"
    },
    "metrics": [
        {
            "name": "address",
            "method": "SUGGEST",
            "search": {
                "count": 3,
                "time": {
                    "average": 88,
                    "percentile_90": 159,
                    "percentile_95": 159,
                    "percentile_99": 159
                }
            },
            "enrich": {
                "count": 3,
                "time": {
                    "average": 39,
                    "percentile_90": 102,
                    "percentile_95": 102,
                    "percentile_99": 102
                }
            },
            "queries": {
                "AddressValuePreciseQueryBuilder": {
                    "count": 1,
                    "time": {
                        "average": 36,
                        "percentile_90": 36,
                        "percentile_95": 36,
                        "percentile_99": 36
                    }
                },
                "AddressIdsQueryBuilder": {
                    "count": 1,
                    "time": {
                        "average": 120,
                        "percentile_90": 120,
                        "percentile_95": 120,
                        "percentile_99": 120
                    }
                },
                "AddressValueFuzzyQueryBuilder": {
                    "count": 1,
                    "time": {
                        "average": 64,
                        "percentile_90": 64,
                        "percentile_95": 64,
                        "percentile_99": 64
                    }
                }
            },
            "request": {
                "count": 3,
                "timeouts": 0,
                "client_errors": 0,
                "server_errors": 0
            },
            "response_time": {
                "average": 136,
                "percentile_90": 176,
                "percentile_95": 176,
                "percentile_99": 176
            }
        }
    ]
}
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
            }
        }
    ]
}