Облачная платформаAdvanced

Настройка разобщённого хранилища и вычислений для Elasticsearch Кластера

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

По мере экспоненциального роста данных традиционные монолитные архитектуры хранилища сталкиваются с проблемой балансировки производительности и экономичности. Чтобы поддерживать высокоскоростные запросы в реальном времени, одновременно снижая стоимость хранения огромных объёмов данных, CSS предлагает функцию разобщения хранилища и вычислений для Elasticsearch кластеров.

При разобщённом хранилище и вычислениях горячие данные, к которым часто обращаются, хранятся в высокопроизводительных носителях, тогда как холодные данные, к которым обращаются реже, перемещаются в недорогие носители — Object Storage Service (OBS). Это обеспечивает производительность запросов в реальном времени для горячих данных при снижении долгосрочных затрат на хранение.

Как работает функция

Рисунок 1 Архитектура разобщённого хранилища и вычислений


Так работает разобщение хранилища и вычислений:

  1. Запись данных

    Горячие данные записываются на высокопроизводительные локальные диски (SSD), чтобы обеспечить производительность запросов в реальном времени.

  2. Переход от горячих к холодным данным

    Редко используемые данные мигрируют с SSDs на экономичный OBS (OBS бакет невидим для пользователей), превращая их из горячих данных в холодные данные. Вы можете вызвать API заморозки индекса, чтобы вручную превратить горячие данные в холодные, или определить политику жизненного цикла (например, период хранения данных 90 дней), чтобы она срабатывала автоматически. Холодные данные хранятся в OBS для экономической эффективности, но их метаданные и поля даты поддерживаются на локальных дисках для обеспечения быстрого поиска.

  3. Обработка запросов
    • Горячие данные читаются напрямую с локальных дисков с задержкой в миллисекунды.
    • Для холодных данных система использует метаданные, хранящиеся на локальных дисках, чтобы быстро найти их в OBS, загрузить и вернуть пользователю.

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

  • Горячий индекс (open): Записывать разрешено. Задержка запросов измеряется в миллисекундах.
  • Замороженный индекс (freeze): Редко запрашиваемые данные хранятся в OBS. Индекс становится только для чтения, а задержка запросов измеряется в секундах или даже минутах.
  • Удалённый индекс: Замороженные индексы удаляются периодически для освобождения ресурсов хранения.

Разделённое хранение и вычисления могут быть автоматизированы с помощью политик управления жизненным циклом индекса. Для получения подробностей см. Разделение хранения индекса и вычислений в кластере Elasticsearch через управление жизненным циклом индекса.

Ограничения

  • Только кластеры Elasticsearch 7.6.2 и 7.10.2 поддерживают разделённое хранение и вычисления.
  • Во время заморозки индекса система переводит индекс в состояние только для чтения. Даже после того, как данные в индексе были Дампированы в OBS, индекс остаётся только для чтения, и в него нельзя записать данные.
  • Во время заморозки индекса данные в нём всё ещё можно запрашивать. После завершения заморозки индекс закрывается, а затем вновь открывается. В этот переходный период кластер может временно находиться в красном состоянии, и индекс становится недоступным для поиска. После повторного открытия индекс снова становится доступным для поиска.
  • После заморозки индекса его данные Дампированы в OBS бакет, а все данные индекса удаляются с локальных дисков. У замороженного индекса повышена задержка запросов. Во время операции агрегации задержка становится ещё больше, потому что запрос сложный и требуется получить большой объём данных.
  • Замороженный индекс с данными, уже выгруженными в OBS, нельзя разморозить. То есть индекс только для чтения нельзя вернуть в состояние записи.
  • В случае двух кластеров, настроенных с разделением чтения/записи, вторичный кластер не может установить отделение хранения и вычислений для индексов, синхронизированных с основным кластером.
  • Векторные индексы не поддерживают отделение хранения и вычислений.
  • Когда индекс заморожен, его данные выгружаются в бакет OBS. Этот процесс потребляет сетевую полосу пропускания. Убедитесь, что передача данных между вашим кластером и OBS не исчерпывает максимальную полосу пропускания и QPS, поддерживаемые OBS. Если эти ограничения нарушены, производительность запросов, связанных с OBS, ухудшится. Например, скорость восстановления шардов и выполнения запросов будет низкой.

Вход в Kibana

Войдите в Kibana и перейдите на страницу выполнения команд. Кластеры Elasticsearch поддерживают несколько методов доступа. В этом разделе Kibana используется в качестве примера для описания процедур операций.

  1. Войдите в консоль управления CSS.
  2. В навигационной панели слева выберите Кластеры > Elasticsearch.
  3. В списке кластеров найдите целевой кластер и щёлкните Kibana в Операция столбце, чтобы войти в консоль Kibana.
  4. В левой навигационной панели выберите Dev Tools.

    Левая часть консоли — это поле ввода команды, а треугольный значок в её верхнем‑правом углу является кнопкой выполнения. Правая часть отображает результат выполнения.

Заморозка индекса

Заморозка индекса означает перемещение холодных данных с твердотельных накопителей (SSD) в OBS, освобождая SSD‑пространство для горячих, часто используемых данных. Замороженный индекс становится доступным только для чтения.

  1. Заморозить индекс.

    Выполните следующую команду, чтобы выполнить Дамп данных указанного индекса в OBS и установить его класс хранения в Standard:

    POST {index_name}/_freeze_low_cost

    где, index_name указывает название индекса, который будет заморожен.

    Пример ответа:

    {
    "freeze_uuid": "pdsRgUtSTymVDWR_HoTGFw"
    }

    где, freeze_uuid указывает ID задачи заморozки индекса, которую можно использовать для запроса прогресса задачи.

  2. Проверьте прогресс задачи заморozки индекса.

    Выполните следующую команду, чтобы проверить прогресс заморozки индекса, указав ID задачи:

    GET _freeze_low_cost_progress/{freeze_uuid}

    Пример ответа:

    {
    "stage" : "STARTED",
    "shards_stats" : {
    "INIT" : 0,
    "FAILURE" : 0,
    "DONE" : 0,
    "STARTED" : 1,
    "ABORTED" : 0
    },
    "indices" : {
    "data1" : [
    {
    "uuid" : "7OS-G1-tRke2jHZPlckexg",
    "index" : {
    "name" : "data1",
    "index_id" : "4b5PHXJITLaS6AurImfQ9A",
    "shard" : 2
    },
    "start_ms" : 1611972010852,
    "end_ms" : -1,
    "total_time" : "10.5s",
    "total_time_in_millis" : 10505,
    "stage" : "STARTED",
    "failure" : null,
    "size" : {
    "total_bytes" : 3211446689,
    "finished_bytes" : 222491269,
    "percent" : "6.0%"
    },
    "file" : {
    "total_files" : 271,
    "finished_files" : 12,
    "percent" : "4.0%"
    },
    "rate_limit" : {
    "paused_times" : 1,
    "paused_nanos" : 946460970
    }
    }
    ]
    }
    }
    Таблица 1 Параметры ответа

    Параметр

    Описание

    стадия

    Статус задачи заморozки индекса.

    Диапазон значений:

    • INIT: Задача только что началась или инициализируется.
    • FAILURE: не удалось
    • ЗАВЕРШЕНО: завершено
    • ЗАПУЩЕНО: начато
    • ПРЕРВАНО: отменено. Это поле зарезервировано.

    shards_stats

    Количество шардов в каждом состоянии.

    индексы

    Подробности статуса каждого индекса, как описано в Таблица 2.

    Таблица 2 параметры индексов

    Параметр

    Описание

    uuid

    ID задачи заморозки индекса.

    индекс

    Информация об индексе и шарде.

    start_ms

    Время начала задачи.

    end_ms

    Время окончания задачи. Если задача всё ещё выполняется, -1 отображается.

    total_time

    Как долго задача выполняется.

    total_time_in_millis

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

    stage

    Состояние шарда.

    failure

    Причина сбоя задачи. Если сбой не произошёл, null возвращается.

    size.total_bytes

    Общее количество байтов, подлежащих заморозке.

    size.finished_bytes

    Количество байтов, которые были заморожены.

    size.percent

    Прогресс заморозки в терминах замороженных байтов относительно общего количества байтов для заморозки.

    file.total_bytes

    Общее количество документов, которые будут заморожены.

    file.finished_bytes

    Количество документов, которые были заморожены.

    file.percent

    Прогресс заморозки в отношении количества замороженных документов и общего количества документов для заморозки.

    rate_limit.paused_times

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

    rate_limit.paused_nanos

    Продолжительность приостановки задачи заморозки из‑за ограничения скорости, в наносекундах.

    Когда заморозка индекса завершится, параметры настроек будут возвращены, как описано в Таблица 3.

    Таблица 3 параметры настроек

    Параметр

    Описание

    index.frozen_low_cost

    Замороженный индекс. Значение фиксировано на true.

    index.blocks.write

    Запись запрещена в замороженном индексе. Значение фиксировано на true.

    index.store.type

    Тип хранилища индекса. Значение фиксировано на obs.

  3. Запрос списка замороженных индексов.
    Note

    Здесь описаны лишь некоторые ключевые параметры для запроса списка замороженных индексов. Для получения дополнительной информации об API см cat indices API.

    Запустите следующую команду для запроса списка замороженных индексов по статусу заморозки индекса:

    GET _cat/freeze_indices?stage={STAGE}

    STAGE указывает статус заморозки индекса. Значение может быть:

    • запуск: Заморозка началась и продолжается.
    • готово: Заморозка завершена.
    • разморозить: Заморозка не началась.
    • Пустое или любое другое значение: Заморозка продолжается или завершена.

    Пример ответа:

    green open data2 0bNtxWDtRbOSkS4JYaUgMQ 3 0 5 0 7.9kb 7.9kb
    green open data3 oYMLvw31QnyasqUNuyP6RA 3 0 51 0 23.5kb 23.5kb

Оптимизация настроек кэша для замороженных индексов

После того как индекс заморожен, его данные выгружаются в OBS. Чтобы уменьшить прямой доступ к данным из OBS и тем самым повысить производительность запросов, часть данных кэшируется в кластере. Данные, запрашиваемые в первый раз, извлекаются напрямую из OBS. Полученные данные затем кэшируются в памяти кластера. При последующих запросах система сначала ищет в кэше. CSS позволяет запрашивать статистику кэша для замороженных индексов, хранящихся в OBS бакетах. Вы также можете сбросить статус кэша и изменить конфигурацию кэша.

  1. Запрос статистики кэша для замороженных индексов, хранящихся в OBS бакетах.
    • Выполните следующую команду, чтобы запросить статистику кэша для замороженных индексов на всех узлах:
      GET _frozen_stats
    • Выполните следующую команду, чтобы запросить статистику кеша для замороженных индексов на указанных узлах:
      GET _frozen_stats/{node_id}

      где, node_id указывает ID узла кластера.

    Ниже приведён пример возвращаемой информации при запросе статистики кеша замороженных индексов на всех узлах:

    {
    "_nodes" : {
    "total" : 1, // Total number of nodes
    "successful" : 1, // Successful nodes
    "failed" : 0 // Failed nodes
    },
    "cluster_name" : "css-zzz1", //Cluster name
    "nodes" : {
    "7uwKO38RRoaON37YsXhCYw" : {
    "name" : "css-zzz1-ess-esn-2-1", //Node name
    "transport_address" : "10.0.0.247:9300", //Node transport address
    "host" : "10.0.0.247", //Node host
    "ip" : "10.0.0.247", //Node IP address
    "block_cache" : {
    "default" : {
    "type" : "memory", //Cache type. memory indicates in-memory cache.
    "block_cache_capacity" : 8192, //Cache capacity
    "block_cache_blocksize" : 8192, //Single block size in the cache, in bytes. In the example, the block size is 8 KB.
    "block_cache_size" : 12, //Cache capacity used
    "block_cache_hit" : 14, //Number of cache hits
    "block_cache_miss" : 0, //Number of cache misses
    "block_cache_eviction" : 0, //Number of cache evictions
    "block_cache_store_fail" : 0 //Number of cache storage failures, which occur when the cache is full.
    }
    },
    "obs_stats" : {
    "list" : {
    "obs_list_count" : 17, //Number of times the OBS list API was called.
    "obs_list_ms" : 265, //Total length of time spent calling the OBS list API.
    "obs_list_avg_ms" : 15 //Average time spent calling the OBS list API.
    },
    "get_meta" : {
    "obs_get_meta_count" : 79, //Number of times the OBS get metadata API was called.
    "obs_get_meta_ms" : 183, //Total length of time spent calling the OBS get metadata API.
    "obs_get_meta_avg_ms" : 2 //Average time spent calling the OBS get metadata API.
    },
    "get_obj" : {
    "obs_get_obj_count" : 12, //Number of times the OBS get object API was called.
    "obs_get_obj_ms" : 123, //Total length of time spent calling the OBS get object API.
    "obs_get_obj_avg_ms" : 10 //Average time spent calling the OBS get object API.
    },
    "put_obj" : {
    "obs_put_obj_count" : 12, //Number of times the OBS put object API was called.
    "obs_put_obj_ms" : 2451, //Total length of time spent calling the OBS put object API.
    "obs_put_obj_avg_ms" : 204 //Average time spent calling the OBS put object API.
    },
    "obs_op_total" : {
    "obs_op_total_ms" : 3022, //Total length of time spent calling OBS APIs.
    "obs_op_total_count" : 120, //Total number of times calling OBS APIs.
    "obs_op_avg_ms" : 25 //Average time spent calling OBS APIs.
    }
    },
    "reader_cache" : {
    "hit_count" : 0,
    "miss_count" : 1,
    "load_success_count" : 1,
    "load_exception_count" : 0,
    "total_load_time" : 291194714,
    "eviction_count" : 0
    }
    }
    }
    }
  2. Сбросьте статус кеша для замороженных индексов, хранящихся в OBS бакетах.

    Выполните следующую команду, чтобы сбросить статус кеша для замороженных индексов:

    POST _frozen_stats/reset

    Эта команда используется для отладки проблем производительности. Если вы сбросите статус кеша и затем выполните команду запроса кеша, вы сможете проверить точный статус команды кеша. Не рекомендуется использовать эту команду во время выполнения.

    Пример ответа:

    {
    "_nodes" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
    },
    "cluster_name" : "Es-0325-007_01",
    "nodes" : {
    "mqTdk2YRSPyOSXfesREFSg" : {
    "result" : "ok"
    }
    }
    }
  3. Измените конфигурацию кеша для замороженных индексов.

    Elasticsearch получает доступ к различным типам файлов с использованием разных методов. Система кэша поддерживает многоуровневые кэши и использует блоки разного размера для кэширования различных типов файлов. Например, как правило, большое количество маленьких блоков используется для кэширования файлов .fdx и .tip, тогда как небольшое количество больших блоков используется для кэширования файлов .fdt. Вы можете изменить конфигурацию кэша в зависимости от потребностей сервиса. Таблица 4 описывает параметры, которые могут быть настроены.

    Таблица 4 Параметры конфигурации кэша

    Параметр

    Тип

    Описание

    low_cost.obs.blockcache.names

    Массив

    Список имен многоуровневых кэшей. Система кэша поддерживает многоуровневые кэши для данных с разными гранулярностями доступа.

    Существует кэш по умолчанию с именем default. Если вы настраиваете этот параметр, значение должно включать хотя бы по умолчанию кеш в дополнение к другим пользовательским именам кеша.

    Значение по умолчанию: по умолчанию

    low_cost.obs.blockcache.<NAME>.type

    ENUM

    Тип хранилища кеша с именем <NAME>.

    Диапазон значений:

    • память: Кеш использует оперативную память в качестве хранилища, что означает, что он потребляет ресурсы памяти.
    • файл: Кеш использует дисковое хранилище. Его ёмкость ограничена доступным дисковым пространством. В этом случае рекомендуется использовать ультра‑высокопроизводительные I/O диски для повышения производительности кеша.

    Значение по умолчанию: память

    low_cost.obs.blockcache.<NAME>.blockshift

    Целое

    Размер блока в кеше с именем <NAME> (в байтах).

    Формула: 2blockshift. Например, если значение равно 16, размер блока равен 216 байт, то есть 65536 байт или 64 КБ.

    Значение: количество сдвигов влево

    Значение по умолчанию: 13 (эквивалентно 8 КБ)

    low_cost.obs.blockcache.<NAME>.bank.count

    Целое

    Количество разделов в кэше с именем <NAME>. Каждый раздел является независимой единицей в кэше.

    Значение по умолчанию: 1

    low_cost.obs.blockcache.<NAME>.number.blocks.perbank

    Целое

    Количество блоков в каждом разделе кэша с именем <NAME>.

    Значение по умолчанию: 8192

    low_cost.obs.blockcache. <NAME>.exclude.file.types

    Массив

    Список расширений имён файлов для файлов, которые не могут кэшироваться в кэше с именем <NAME>.

    Если расширение файла не находится в exclude.file.types или <NAME>.file.types (если сконфигурировано), применяется политика кэша по умолчанию.

    low_cost.obs.blockcache. <NAME>.file.types

    Массив

    Список расширений имён файлов для файлов, которые могут кэшироваться в кэше с именем <NAME>.

    Если расширение файла не находится в exclude.file.types или <NAME>.file.types (если сконфигурировано), применяется политика кэша по умолчанию.

    index.frozen.obs.max_bytes_per_sec

    String

    Максимальная скорость, с которой документы замороженных индексов загружаются в OBS.

    Формат: <value><unit>. Единица может быть B (байт), KB, MB или GB.

    Изменение вступает в силу немедленно.

    Значение по умолчанию: 150 MB

    low_cost.obs.index.upload.threshold.use.multipart

    String

    Порог многократной загрузки. При выгрузке замороженных индексов в OBS, если размер отдельного документа превышает этот порог, выполняется многократная загрузка.

    Формат: <value><unit>. Единица может быть B (байт), KB, MB или GB.

    Многократная загрузка поддерживается OBS.

    0 или не настроено: многократная загрузка может быть отключена.

    Значение по умолчанию: 1 GB

    Ниже приведён типичный пример конфигурации кэша. Используется двухуровневая система кэша: по умолчанию и большой. Эта по умолчанию кеш имеет в общей сложности 30 x 4096 64-KB блоков. Он используется для кэширования файлов, не являющихся .fdt. The большой кеш имеет 5 x 1000 2-MB блоков. Он используется для кэширования файлов .fdx, .dvd и .tip.

    low_cost.obs.blockcache.names: ["default", "large"]
    low_cost.obs.blockcache.default.type: file
    low_cost.obs.blockcache.default.blockshift: 16
    low_cost.obs.blockcache.default.number.blocks.perbank: 4096
    low_cost.obs.blockcache.default.bank.count: 30
    low_cost.obs.blockcache.default.exclude.file.types: ["fdt"]
    low_cost.obs.blockcache.large.type: file
    low_cost.obs.blockcache.large.blockshift: 21
    low_cost.obs.blockcache.large.number.blocks.perbank: 1000
    low_cost.obs.blockcache.large.bank.count: 5
    low_cost.obs.blockcache.large.file.types: ["fdx", "dvd", "tip"]

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

Только кластеры Elasticsearch версии 7.6.2 и 7.10.2, созданные после февраля 2023 г., поддерживают эту функцию.

Когда замороженные индексы запрашиваются на the Обзор страница Kibana в первый раз, все данные необходимо получать из OBS, потому что в кеше нет данных. Если требуется вернуть большое количество документов, получение соответствующих полей времени и метаданных документов из OBS занимает много времени. Кешируя эту часть данных в кластере, производительность запросов может значительно улучшиться. Так CSS улучшает производительность запросов для замороженных индексов. Настройки локального кеша предустановлены. Вы можете просмотреть их и изменить по мере необходимости.

  1. Измените настройки локального кеша для замороженных индексов.
    Таблица 5 Настройки локального кеша

    Элемент конфигурации

    Тип

    область

    Можно изменить динамически

    Описание

    low_cost.local_cache.max.capacity

    Целое

    узел

    Да

    Максимальное количество холодных кешей данных, которые могут быть доступны на каждом узле. (Каждый шард соответствует кешу.)

    Диапазон значений: 10–5000

    Значение по умолчанию: 500

    • Если использование кучи памяти остаётся высоким, уменьшите это значение.
    • Если значение load_overflow_count быстро растёт, увеличьте это значение.

    index.low_cost.local_cache.threshold

    Целое

    индекс

    Да

    Порог для включения локального кэширования холодных данных.

    • Если в индексе, процент дата поля ниже этого значения, холодные данные дата тип будет кэшироваться локально. В противном случае локальный кэш использоваться не будет.
    • Если поля даты составляют подавляющее большинство общего объёма данных текущего индекса, не следует использовать эту настройку.

    Диапазон значений: 0–100

    Значение по умолчанию: 50

    Единица измерения: %

    index.low_cost.local_cache.evict_time

    Строка

    индекс

    Да

    Продолжительность удержания холодных данных в локальном кэше. Значение определяется index.frozen_date (время замораживания индекса). Если index.frozen_date недоступен, значение определяется временем создания индекса.

    Рекомендуется скорректировать срок хранения в зависимости от использования диска.

    Диапазон значений: от 1 до 365 дней

    Значение по умолчанию: 30d

    Единица измерения: дни

    Ниже приведены некоторые примеры, где index_name указывает изменённый индекс.

    • Выполните следующую команду для изменения low_cost.local_cache.max.capacity:
      PUT _cluster/settings
      {
      "persistent": {
      "low_cost.local_cache.max.capacity":1000
      }
      }
    • Выполните следующую команду для изменения index.low_cost.local_cache.threshold:
      PUT {index_name}/_settings
      {
      "index.low_cost.local_cache.threshold":20
      }
    • Выполните следующую команду для изменения index.low_cost.local_cache.evict_time:
      PUT {index_name}/_settings
      {
      "index.low_cost.local_cache.evict_time":"7d"
      }
  2. Запросить локальную статистику кэша для замороженных индексов.
    • Запросить локальную статистику кэша для замороженных индексов на всех узлах:
      GET /_frozen_stats/local_cache
    • Запросить локальную статистику кэша для замороженных индексов на указанных узлах:
      GET /_frozen_stats/local_cache/{node_id}

      где, node_id указывает идентификатор узла кластера.

    Пример ответа:

    {
    "_nodes" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
    },
    "cluster_name" : "test",
    "nodes" : {
    "6by3lPy1R3m55Dcq3liK8Q" : {
    "name" : "node-1",
    "transport_address" : "127.0.0.1:9300",
    "host" : "127.0.0.1",
    "ip" : "127.0.0.1",
    "local_cache" : {
    "get_stats" : {
    "get_total_count" : 562, //Total number of times data was retrieved from the local cold data cache.
    "get_hit_count" : 562, //Total number of hits in the local cold data cache.
    "get_miss_count" : 0, //Total number of local cold data cache misses.
    "get_total_ns" : 43849200, //Total duration for retrieving data from the local cold data cache.
    "get_avg_ns" : 78023 //Average duration for retrieving data from the local cold data cache.
    },
    "load_stats" : {
    "load_count" : 2, //Number of times cold data was loaded from the local cache
    "load_total_ms" : 29, //Total duration for loading cold data from the local cache
    "load_avg_ms" : 14, //Average duration for loading cold data from the local cache
    "load_fail_count" : 0, //Number of failures for loading cold data from the local cache
    "load_overflow_count" : 0 //Number of times the local cold data cache exceeds the cache pool size.
    },
    "reload_stats" : {
    "reload_count" : 0, //Number of times the local cold data cache was regenerated.
    "reload_total_ms" : 0, //Total duration for regenerating the local cold data cache.
    "reload_avg_ms" : 0, //Average duration for regenerating the local cold data cache.
    "reload_fail_count" : 0 //Number of failures in regenerating the local cold data cache.
    },
    "init_stats" : {
    "init_count" : 0, //Number of times the local cold data cache was initialized.
    "init_total_ms" : 0, //Total duration for initializing the local cold data cache.
    "init_avg_ms" : 0, //Average duration for initializing the local cold data cache.
    "init_fail_count" : 0 //Number of failures in initializing the local cold data cache.
    }
    }
    }
    }
    }

Запрос скоростей OBS в реальном времени при обработке холодных данных

Только кластеры Elasticsearch 7.6.2 и 7.10.2, созданные после февраля 2023 года, поддерживают эту функцию.

Чтобы помочь вам понять, как работает плагин storage‑compute decoupling с OBS, добавлен API для сбора статистики реального времени скоростей OBS, и реальные скорости записываются в индекс .freeze_obs_rate-YYYY.mm.dd.

Метод расчёта: Средние скорости операций OBS за последние 5 секунд рассчитываются каждые 5 секунд.

Системный индекс .freeze_obs_rate-YYYY.mm.dd фиксирует статистику показателей работы OBS в реальном времени, помогая понять соответствующие тенденции ресурсов OBS, которые хранят холодные данные. Период хранения по умолчанию для этого индекса составляет 30 дней.

  1. Запрос реальных показателей OBS при обработке холодных данных.
    • Выполните следующую команду, чтобы запросить показатели OBS в реальном времени на всех узлах:
      GET _frozen_stats/obs_rate
    • Выполните следующую команду, чтобы запросить показатели OBS в реальном времени на указанных узлах:
      GET _frozen_stats/obs_rate/{node_id}

      где, node_id указывает идентификатор узла кластера.

    Пример ответа:

    {
    "_nodes" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
    },
    "cluster_name" : "test",
    "nodes" : {
    "dflDvcSwTJ-fkiIlT2zE3A" : {
    "name" : "node-1",
    "transport_address" : "127.0.0.1:9300",
    "host" : "127.0.0.1",
    "ip" : "127.0.0.1",
    "update_time" : 1671777600482, // Time when the current statistics were updated.
    "obs_rate" : {
    "list_op_rate" : 0.0, // Rate of OBS list operations. Unit: times/s.
    "get_meta_op_rate" : 0.0, // Rate of OBS get meta operations. Unit: times/s.
    "get_obj_op_rate" : 0.0, // Rate of OBS get operations. Unit: times/s.
    "put_op_rate" : 0.0, // Rate of OBS put operations. Unit: times/s.
    "obs_total_op_rate" : 0.0, // Rate of all OBS operations. Unit: times/s.
    "obs_upload_rate" : "0.0 MB/s", // OBS data upload rate. Unit: MB/s.
    "obs_download_rate" : "0.0 MB/s" // OBS data download rate. Unit: MB/s.
    }
    }
    }
    }

  2. Измените период хранения .freeze_obs_rate-YYYY.mm.dd индекс, который хранит показатели OBS в реальном времени. Период хранения по умолчанию для этого индекса составляет 30 дней.

    Выполните следующую команду, чтобы изменить период хранения индекса до семи дней:

    PUT _cluster/settings
    {
    "persistent": {
    "low_cost.obs_rate_index.evict_time": "7d"
    }
    }
    Таблица 6 Элементы конфигурации

    Элемент конфигурации

    Тип

    область

    Можно изменить динамически

    Описание

    low_cost.obs_rate_index.evict_time

    Строка

    узел

    Да

    Период удержания .freeze_obs_rate-YYYY.mm.dd индекс.

    • Диапазон значений: от 1 до 365 дней
    • Значение по умолчанию: 30d
    • Единица: дни

Связанные документы

Чтобы обеспечить приемлемую производительность запросов к холодным данным (например, когда исторические данные периодически запрашиваются), используйте решение с многоуровневым хранением. Для получения подробностей см. Переключение между горячим и холодным хранением для кластера Elasticsearch.