Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.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 обновления настроек индексов. Например:

response = client.indices.put_settings(
  index: 'my-index-000001',
  body: {
    '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'
  }
)
puts response
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.

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

Часто полезно определить, что вызвало медленный запрос. Для включения информации о пользователе, который вызвал медленный поиск, используйте настройку index.search.slowlog.include.user.

response = client.indices.put_settings(
  index: 'my-index-000001',
  body: {
    'index.search.slowlog.include.user' => true
  }
)
puts response
PUT /my-index-000001/_settings
{
  "index.search.slowlog.include.user": true
}

Это приведет к включению информации о пользователе в журнал медленных запросов.

{
  "@timestamp": "2024-02-21T12:42:37.255Z",
  "log.level": "WARN",
  "auth.type": "REALM",
  "elasticsearch.slowlog.id": "tomcat-123",
  "elasticsearch.slowlog.message": "[index6][0]",
  "elasticsearch.slowlog.search_type": "QUERY_THEN_FETCH",
  "elasticsearch.slowlog.source": "{\"query\":{\"match_all\":{\"boost\":1.0}}}",
  "elasticsearch.slowlog.stats": "[]",
  "elasticsearch.slowlog.took": "747.3micros",
  "elasticsearch.slowlog.took_millis": 0,
  "elasticsearch.slowlog.total_hits": "1 hits",
  "elasticsearch.slowlog.total_shards": 1,
  "user.name": "elastic",
  "user.realm": "reserved",
  "ecs.version": "1.2.0",
  "service.name": "ES_ECS",
  "event.dataset": "elasticsearch.index_search_slowlog",
  "process.thread.name": "elasticsearch[runTask-0][search][T#5]",
  "log.logger": "index.search.slowlog.query",
  "elasticsearch.cluster.uuid": "Ui23kfF1SHKJwu_hI1iPPQ",
  "elasticsearch.node.id": "JK-jn-XpQ3OsDUsq5ZtfGg",
  "elasticsearch.node.name": "node-0",
  "elasticsearch.cluster.name": "distribution_run"
}

Если вызов был инициирован с заголовком X-Opaque-ID, то идентификатор включён в журнал медленных запросов в поле elasticsearch.slowlog.id. Подробности и рекомендации см. в заголовке HTTP X-Opaque-Id.

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

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

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 обновления настроек индексов. Например:

response = client.indices.put_settings(
  index: 'my-index-000001',
  body: {
    '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'
  }
)
puts response
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"
}

Для включения информации о пользователе, который вызвал медленное событие индексирования, используйте настройку index.indexing.slowlog.include.user.

response = client.indices.put_settings(
  index: 'my-index-000001',
  body: {
    'index.indexing.slowlog.include.user' => true
  }
)
puts response
PUT /my-index-000001/_settings
{
  "index.indexing.slowlog.include.user": true
}

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

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

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

Можно имитировать уровень журнала медленных поисковых запросов или журнала медленных операций индексирования, установив соответствующие пороги, чтобы отключить более подробные логгеры. Например, если мы хотим смоделировать 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/8.17/index-modules-slowlog.html

Spec-Zone.ru

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