Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Модули индексов

Журнал медленных операций

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

Журнал медленных поисковых запросов на уровне фрагмента позволяет регистрировать медленные поисковые запросы (фазы запроса и извлечения) в отдельный файл журнала.

Пороги могут быть установлены как для фазы запроса выполнения, так и для фазы извлечения, вот пример:

index.search.slowlog.threshold.query.warn: 10s
index.search.slowlog.threshold.query.info: 5s
index.search.slowlog.threshold.query.debug: 2s
index.search.slowlog.threshold.query.trace: 500ms

index.search.slowlog.threshold.fetch.warn: 1s
index.search.slowlog.threshold.fetch.info: 800ms
index.search.slowlog.threshold.fetch.debug: 500ms
index.search.slowlog.threshold.fetch.trace: 200ms

Все вышеуказанные настройки являются динамическими и могут быть установлены для каждого индекса с помощью API обновления настроек индексов. Например:

PUT /my-index-000001/_settings
{
  "index.search.slowlog.threshold.query.warn": "10s",
  "index.search.slowlog.threshold.query.info": "5s",
  "index.search.slowlog.threshold.query.debug": "2s",
  "index.search.slowlog.threshold.query.trace": "500ms",
  "index.search.slowlog.threshold.fetch.warn": "1s",
  "index.search.slowlog.threshold.fetch.info": "800ms",
  "index.search.slowlog.threshold.fetch.debug": "500ms",
  "index.search.slowlog.threshold.fetch.trace": "200ms"
}

По умолчанию пороги отключены (установлены в значение -1).

Регистрация ведётся на уровне фрагмента, что означает выполнение запроса поиска в пределах конкретного фрагмента. Это не охватывает весь запрос поиска, который может быть распространён на несколько фрагментов для выполнения. Некоторые преимущества ведения журнала на уровне фрагмента — это связь фактического выполнения со специфической машиной, по сравнению с уровнем запроса.

Файл журнала медленных поисковых запросов настроен в файле log4j2.properties.

Определение источника журнала медленных поисковых запросов

Часто бывает полезно определить, что вызвало замедление выполнения запроса. Если вызов был инициирован с заголовком X-Opaque-ID, то идентификатор пользователя включается в журналы медленных поисковых запросов как дополнительное поле id (прокрутите вправо).

[2030-08-30T11:59:37,786][WARN ][i.s.s.query              ] [node-0] [index6][0] took[78.4micros], took_millis[0], total_hits[0 hits], stats[], search_type[QUERY_THEN_FETCH], total_shards[1], source[{"query":{"match_all":{"boost":1.0}}}], id[MY_USER_ID],

Идентификатор пользователя также включается в JSON-журналы.

{
  "type": "index_search_slowlog",
  "timestamp": "2030-08-30T11:59:37,786+02:00",
  "level": "WARN",
  "component": "i.s.s.query",
  "cluster.name": "distribution_run",
  "node.name": "node-0",
  "message": "[index6][0]",
  "took": "78.4micros",
  "took_millis": "0",
  "total_hits": "0 hits",
  "stats": "[]",
  "search_type": "QUERY_THEN_FETCH",
  "total_shards": "1",
  "source": "{\"query\":{\"match_all\":{\"boost\":1.0}}}",
  "id": "MY_USER_ID",
  "cluster.uuid": "Aq-c-PAeQiK3tfBYtig9Bw",
  "node.id": "D7fUYfnfTLa2D7y-xw6tZg"
}

Журнал медленных операций индексирования

Журнал медленных операций индексирования, аналогичный по функциональности журналу медленных поисковых запросов. Имя файла журнала заканчивается на _index_indexing_slowlog.log. Журнал и пороги настраиваются таким же образом, как и для журнала медленных поисковых запросов. Пример журнала медленных операций индексирования:

index.indexing.slowlog.threshold.index.warn: 10s
index.indexing.slowlog.threshold.index.info: 5s
index.indexing.slowlog.threshold.index.debug: 2s
index.indexing.slowlog.threshold.index.trace: 500ms
index.indexing.slowlog.source: 1000

Все вышеуказанные настройки являются динамическими и могут быть установлены для каждого индекса с помощью API обновления настроек индексов. Например:

PUT /my-index-000001/_settings
{
  "index.indexing.slowlog.threshold.index.warn": "10s",
  "index.indexing.slowlog.threshold.index.info": "5s",
  "index.indexing.slowlog.threshold.index.debug": "2s",
  "index.indexing.slowlog.threshold.index.trace": "500ms",
  "index.indexing.slowlog.source": "1000"
}

По умолчанию Elasticsearch будет регистрировать первые 1000 символов _source в slowlog. Вы можете изменить это с помощью index.indexing.slowlog.source. Установка значения в false или 0 пропустит регистрацию source полностью, а установка значения в true зарегистрирует весь source независимо от размера. Исходный _source по умолчанию переформатируется, чтобы он помещался на одной строке журнала. Если сохранение исходного формата документа важно, вы можете отключить переформатирование, установив index.indexing.slowlog.reformat в значение false, что приведет к регистрации source "как есть", и это может занимать несколько строк журнала.

Файл журнала медленных операций индексирования по умолчанию настроен в файле log4j2.properties:

appender.index_indexing_slowlog_rolling.type = RollingFile
appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling
appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog.log
appender.index_indexing_slowlog_rolling.layout.type = PatternLayout
appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n
appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog-%i.log.gz
appender.index_indexing_slowlog_rolling.policies.type = Policies
appender.index_indexing_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.index_indexing_slowlog_rolling.policies.size.size = 1GB
appender.index_indexing_slowlog_rolling.strategy.type = DefaultRolloverStrategy
appender.index_indexing_slowlog_rolling.strategy.max = 4

logger.index_indexing_slowlog.name = index.indexing.slowlog.index
logger.index_indexing_slowlog.level = trace
logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling
logger.index_indexing_slowlog.additivity = false

Уровни журналов медленных операций

Вы можете имитировать уровень журнала медленных поисковых запросов или медленных операций индексирования, установив соответствующие пороги, чтобы отключить более "подробные" логи. Например, если мы хотим смоделировать index.indexing.slowlog.level = INFO, то нам нужно установить index.indexing.slowlog.threshold.index.debug и index.indexing.slowlog.threshold.index.trace в -1

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/index-modules-slowlog.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API