Перейти к содержимому
Последнее обновление

Метрики мониторинга

Процессы FE и BE в Doris имеют встроенные метрики мониторинга, которые по умолчанию предоставляются в формате, совместимом с Prometheus. В этом документе систематизированы все доступные метрики и указан их приоритет, чтобы после интеграции с Prometheus + Grafana вы могли быстро настроить систему мониторинга и оповещений.

Сценарии использования​

СценарийНазначение
Мониторинг состояния кластераБыстрое выявление аномалий на узлах FE/BE с помощью метрик P0
Настройка оповещенийНастройка оповещений по пороговым значениям таких метрик, как QPS, частота ошибок и Compaction Score
Диагностика производительностиПоиск узких мест по метрикам задержки запросов, очередей пулов потоков и использования памяти
Планирование ресурсовОценка нагрузки на кластер по использованию дисков, количеству tablet и соединений
Анализ инцидентовВыявление первопричин сбоев путем сопоставления метрик сервера (CPU, IO, сеть) с метриками процессов

Категории метрик​

По объекту наблюдения метрики мониторинга Doris делятся на две категории:

  1. Мониторинг процесса: показатели работы самого процесса Doris, например количество запросов, количество транзакций и состояние Compaction.
  2. Мониторинг узла: показатели ресурсов сервера, на котором работает процесс Doris, например CPU, память, IO и сеть.

Получение метрик мониторинга​

Формат, совместимый с Prometheus (по умолчанию)​

Обратитесь непосредственно к HTTP-порту узла FE или BE:

curl http://fe_host:http_port/metrics
curl http://be_host:webserver_port/metrics

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

doris_fe_cache_added{type="partition"} 0
doris_fe_cache_added{type="sql"} 0
doris_fe_cache_hit{type="partition"} 0
doris_fe_cache_hit{type="sql"} 0
doris_fe_connection_total 2

Формат JSON​

Для получения метрик в формате JSON используйте параметр type=json:

curl http://fe_host:http_port/metrics?type=json
curl http://be_host:webserver_port/metrics?type=json

Метрики bvar​

Процессы BE и Meta Service / Recycler также экспортируют метрики bvar через свои службы brpc. Используйте /brpc_metrics для получения данных в формате, совместимом с Prometheus, и /vars для просмотра диагностических показателей по имени:

curl http://be_host:brpc_port/brpc_metrics
curl http://be_host:brpc_port/vars
curl http://cloud_host:brpc_listen_port/brpc_metrics

Эти конечные точки используют brpc_port BE (по умолчанию 8060) или brpc_listen_port Meta Service / Recycler (по умолчанию 5000), которые отличаются от указанных выше HTTP-портов мониторинга FE / BE. Ниже приведены зарегистрированные имена bvar; не все они имеют префикс doris_be_.

Определение версии​

Начиная с версии 4.1.5, метрики версии BE и Meta Service / Recycler содержат следующие метки в /brpc_metrics:

МетрикаТипМеткиЗначение
doris_be_versionGaugeversion, major, minor, patch, hotfix, short_hashВерсия сборки BE и идентификатор коммита
doris_cloud_versionGaugeТе же, что вышеВерсия сборки Meta Service / Recycler и идентификатор коммита

Каждый процесс экспортирует один образец метрики версии. Значение метрики сохраняет существующее кодирование версии; полная версия указана в метке version, а идентификатор коммита — в short_hash. Метрика doris_cloud_version не различает, выполняет ли процесс функции Meta Service, Recycler или обе функции. Для определения роли добавьте метку цели сбора метрик.

Параметр процесса bvar_max_dump_multi_dimension_metric_num ограничивает количество образцов многомерных метрик bvar. Его значение по умолчанию — 5000; значение 0 отключает такие образцы, в том числе метрики версии. BE поддерживает этот параметр начиная с версии 4.1.5, а для применения изменений требуется перезапуск. См. Конфигурация BE.

Приоритет метрик и рекомендации​

  • Последний столбец каждой таблицы метрик содержит приоритет. P0 — наивысший приоритет; чем больше значение, тем ниже важность. Подключайте метрики P0 в первую очередь.

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

    Например, вычислив скорость изменения doris_fe_query_err, можно получить частоту ошибок запросов (количество ошибок в секунду).

Вы можете дополнить эту таблицу, чтобы сделать набор метрик мониторинга более полным и полезным.

Метрики мониторинга FE​

Мониторинг процесса​

ИмяМеткаЕдиница измеренияЗначениеОписаниеПриоритет
doris_fe_cache_added{type="partition"}КоличествоНакопительное количество новых кэшей Partition Cache
{type="sql"}КоличествоНакопительное количество новых кэшей SQL Cache
doris_fe_cache_hit{type="partition"}КоличествоКоличество попаданий в Partition Cache
{type="sql"}КоличествоКоличество попаданий в SQL Cache
doris_fe_connection_totalКоличествоТекущее количество соединений на порту MySQL узла FEИспользуется для мониторинга количества соединений для запросов. При превышении лимита новые соединения не принимаютсяP0
doris_fe_counter_hit_sql_block_ruleКоличествоКоличество запросов, заблокированных SQL BLOCK RULE
doris_fe_edit_log_clean{type="failed"}КоличествоКоличество ошибок при очистке старых журналов метаданныхОшибок быть не должно. При их возникновении требуется ручное вмешательствоP0
{type="success"}КоличествоКоличество успешных очисток старых журналов метаданных
doris_fe_edit_log{type="accumulated_bytes"}БайтыНакопительный объем записи в журнал метаданныхВычисляйте скорость изменения, чтобы определить скорость записи и выявить задержки записи метаданныхP0
{type="current_bytes"}БайтыТекущий объем журнала метаданныхИспользуется для мониторинга размера editlog. При превышении лимита требуется ручное вмешательствоP0
{type="read"}КоличествоКоличество операций чтения журнала метаданныхПо скорости изменения можно оценить, соответствует ли частота чтения метаданных нормеP0
{type="write"}КоличествоКоличество операций записи журнала метаданныхПо скорости изменения можно оценить, соответствует ли частота записи метаданных нормеP0
{type="current"}КоличествоТекущее количество записей журнала метаданныхИспользуется для мониторинга количества записей editlog. При превышении лимита требуется ручное вмешательствоP0
doris_fe_editlog_write_latency_msМиллисекундыПерцентили задержки записи журнала метаданных. Например, {quantile="0.75"} обозначает 75-й перцентиль задержки записи
doris_fe_image_clean{type="failed"}КоличествоКоличество ошибок при очистке старых файлов образов метаданныхОшибок быть не должно. При их возникновении требуется ручное вмешательствоP0
{type="success"}КоличествоКоличество успешных очисток старых файлов образов метаданных
doris_fe_image_push{type="failed"}КоличествоКоличество ошибок при отправке файлов образов метаданных на другие узлы FE
{type="success"}КоличествоКоличество успешных отправок файлов образов метаданных на другие узлы FE
doris_fe_image_write{type="failed"}КоличествоКоличество ошибок при создании файлов образов метаданныхОшибок быть не должно. При их возникновении требуется ручное вмешательствоP0
{type="success"}КоличествоКоличество успешных созданий файлов образов метаданных
doris_fe_jobКоличествоКоличество заданий различных типов и состояний. Например, {job="load", type="INSERT", state="LOADING"} обозначает количество заданий загрузки типа INSERT в состоянии LOADINGПри необходимости отслеживайте количество заданий различных типов в кластереP0
doris_fe_max_journal_idКоличествоМаксимальный ID журнала метаданных на текущем узле FE. Для Master FE это максимальный ID, записанный на данный момент; для остальных FE — максимальный ID журнала метаданных, воспроизведенного на данный моментИспользуется для выявления значительных расхождений ID между узлами FE. Большой разрыв указывает на проблему синхронизации метаданныхP0
doris_fe_max_tablet_compaction_scoreКоличествоМаксимальное значение Compaction Score среди всех узлов BEПозволяет отслеживать максимальный Compaction Score в текущем кластере и определять, не слишком ли он высок. Высокое значение может приводить к задержкам запросов или записиP0
doris_fe_qpsКоличество/сКоличество запросов в секунду на текущем FE (учитываются только запросы на выборку данных)QPSP0
doris_fe_query_errКоличествоНакопительное количество запросов, завершившихся с ошибкой
doris_fe_query_err_rateКоличество/сКоличество запросов, завершившихся с ошибкой, в секундуПозволяет отслеживать возникновение ошибок запросов в кластереP0
doris_fe_query_latency_msМиллисекундыПерцентили задержки запросов. Например, {quantile="0.75"} обозначает 75-й перцентиль задержки запросовПозволяет подробно изучать задержку запросов на каждом перцентилеP0
doris_fe_query_latency_ms_dbМиллисекундыПерцентили задержки запросов для каждой базы данных. Например, {quantile="0.75",db="test"} обозначает 75-й перцентиль задержки запросов для базы данных testПозволяет подробно изучать задержку запросов на каждом перцентиле для каждой базы данныхP0
doris_fe_query_olap_tableКоличествоКоличество запросов к внутренним таблицам (OlapTable)
doris_fe_query_totalКоличествоНакопительное количество всех запросов на выборку данных
doris_fe_report_queue_sizeКоличествоДлина очереди на стороне FE для различных периодических задач отчетности от BEЗначение отражает степень задержки обработки задач отчетности на узле Master FE. Чем оно больше, тем сильнее ограничена производительность обработки FEP0
doris_fe_request_totalКоличествоВсе запросы на выполнение операций (включая запросы на выборку данных и другие операторы), полученные через порт MySQL
doris_fe_routine_load_error_rowsКоличествоОбщее количество ошибочных строк во всех заданиях Routine Load в кластере
doris_fe_routine_load_receive_bytesБайтыОбщий объем данных, полученных всеми заданиями Routine Load в кластере
doris_fe_routine_load_rowsКоличествоОбщее количество строк данных, полученных всеми заданиями Routine Load в кластере
doris_fe_routine_load_get_meta_latencyМиллисекундыЗадержка получения метаданных для всех заданий Routine Load в кластере
doris_fe_routine_load_get_meta_countКоличествоКоличество операций получения метаданных для всех заданий Routine Load в кластере
doris_fe_routine_load_get_meta_fail_countКоличествоКоличество неудачных попыток получения метаданных для всех заданий Routine Load в кластере
doris_fe_routine_load_task_execute_timeМиллисекундыВремя выполнения всех задач Routine Load в кластере
doris_fe_routine_load_task_execute_countКоличествоКоличество выполнений всех задач Routine Load в кластере
doris_fe_routine_load_lagМиллисекундыОтставание потребления данных для всех заданий Routine Load в кластере
doris_fe_routine_load_progressМиллисекундыПрогресс потребления данных для всех заданий Routine Load в кластере
doris_fe_routine_load_abort_task_numКоличествоКоличество задач, завершившихся с ошибкой, во всех заданиях Routine Load в кластере
doris_fe_rpsКоличествоКоличество запросов в секунду на текущем FE (включая запросы на выборку данных и другие типы операторов)Используйте вместе с QPS для оценки объема запросов, обрабатываемых кластеромP0
doris_fe_scheduled_tablet_numКоличествоКоличество tablet, обрабатываемых планировщиком на узле Master FE, включая реплики, находящиеся на восстановлении и балансировкеЗначение отражает количество tablet, которые сейчас перемещаются в кластере. Ненулевое значение в течение длительного времени указывает на нестабильность кластераP0
doris_fe_tablet_max_compaction_scoreКоличествоCompaction Score, сообщаемый каждым узлом BE. Например, {backend="172.21.0.1:9556"} обозначает значение, сообщаемое BE по адресу "172.21.0.1:9556"
doris_fe_tablet_numКоличествоОбщее количество tablet на каждом узле BE. Например, {backend="172.21.0.1:9556"} обозначает текущее количество tablet на BE по адресу "172.21.0.1:9556"Позволяет проверить равномерность распределения tablet и обоснованность их абсолютного количестваP0
doris_fe_tablet_status_countКоличествоНакопительное количество tablet, обработанных планировщиком Tablet scheduler на узле Master FE
{type="added"}КоличествоНакопительное количество tablet, обработанных планировщиком Tablet scheduler на узле Master FE. "added" обозначает количество tablet, для которых было запланировано выполнение задач
{type="in_sched"}КоличествоТо же, что выше. Обозначает количество tablet, для которых задачи планировались повторноБыстрый рост значения означает, что некоторые tablet долгое время находятся в нездоровом состоянии, из-за чего планировщик повторно планирует для них задачи
{type="not_ready"}КоличествоТо же, что выше. Обозначает количество tablet, для которых еще не выполнены условия запуска планированияБыстрый рост значения означает, что большое количество tablet находится в нездоровом состоянии, но задачи для них нельзя запланировать
{type="total"}КоличествоТо же, что выше. Обозначает накопительное количество проверенных tablet (для которых задачи не обязательно были запланированы)
{type="unhealthy"}КоличествоТо же, что выше. Обозначает накопительное количество проверенных tablet в нездоровом состоянии
doris_fe_thread_poolКоличествоСтатистика рабочих потоков и очередей различных пулов потоков. active_thread_num обозначает количество выполняемых сейчас задач. pool_size обозначает общее количество потоков в пуле. task_in_queue обозначает количество задач в очереди
{name="agent-task-pool"}КоличествоПул потоков, используемый Master FE для отправки Agent Tasks на узлы BE
{name="connect-scheduler-check-timer"}КоличествоПул потоков для проверки истечения времени ожидания неактивных соединений MySQL
{name="connect-scheduler-pool"}КоличествоПул потоков для приема запросов на соединение MySQL
{name="mysql-nio-pool"}КоличествоПул потоков, используемый NIO MySQL Server для обработки задач
{name="export-exporting-job-pool"}КоличествоПул потоков планирования заданий экспорта в состоянии exporting
{name="export-pending-job-pool"}КоличествоПул потоков планирования заданий экспорта в состоянии pending
{name="heartbeat-mgr-pool"}КоличествоПул потоков, используемый Master FE для обработки heartbeat от каждого узла
{name="loading-load-task-scheduler"}КоличествоПул потоков, используемый Master FE для планирования задач loading в заданиях Broker Load
{name="pending-load-task-scheduler"}КоличествоПул потоков, используемый Master FE для планирования задач pending в заданиях Broker Load
{name="schema-change-pool"}КоличествоПул потоков, используемый Master FE для планирования заданий изменения схемы
{name="thrift-server-pool"}КоличествоПул рабочих потоков ThriftServer на стороне FE. Соответствует rpc_port в fe.conf и используется для взаимодействия с BE
doris_fe_txn_counterКоличествоНакопительное количество транзакций загрузки в каждом состоянииПозволяет отслеживать состояние выполнения транзакций загрузкиP0
{type="begin"}КоличествоКоличество начатых транзакций
{type="failed"}КоличествоКоличество транзакций, завершившихся с ошибкой
{type="reject"}КоличествоКоличество отклоненных транзакций (например, если текущее количество выполняемых транзакций превышает порог, новые транзакции отклоняются)
{type="success"}КоличествоКоличество успешных транзакций
doris_fe_txn_statusКоличествоТекущее количество транзакций загрузки в каждом состоянии. Например, {type="committed"} обозначает количество транзакций в состоянии committedОтслеживайте количество транзакций загрузки в каждом состоянии, чтобы выявлять их накоплениеP0
doris_fe_query_instance_numКоличествоКоличество экземпляров фрагментов, запрошенных определенным пользователем на данный момент. Например, {user="test_u"} обозначает количество экземпляров, запрошенных пользователем test_u на данный моментПозволяет определить, не потребляет ли отдельный пользователь слишком много ресурсов запросовP0
doris_fe_query_instance_beginКоличествоКоличество экземпляров фрагментов, для которых определенный пользователь инициировал запросы. Например, {user="test_u"} обозначает количество экземпляров, для которых пользователь test_u инициировал запросыПозволяет определить, не отправил ли отдельный пользователь слишком много запросовP0
doris_fe_query_rpc_totalКоличествоКоличество RPC, отправленных определенному BE. Например, {be="192.168.10.1"} обозначает количество RPC, отправленных BE с IP-адресом 192.168.10.1Позволяет определить, не отправлено ли определенному BE слишком много RPC
doris_fe_query_rpc_failedКоличествоКоличество неудачных RPC, отправленных определенному BE. Например, {be="192.168.10.1"} обозначает количество неудачных RPC, отправленных BE с IP-адресом 192.168.10.1Позволяет выявлять проблемы с RPC на определенном BE
doris_fe_query_rpc_sizeКоличествоРазмер данных RPC для определенного BE. Например, {be="192.168.10.1"} обозначает объем данных RPC в байтах, отправленных BE с IP-адресом 192.168.10.1Позволяет определить, не отправляются ли определенному BE слишком большие RPC
doris_fe_txn_exec_latency_msМиллисекундыПерцентили времени выполнения транзакций. Например, {quantile="0.75"} обозначает 75-й перцентиль времени выполнения транзакцийПозволяет подробно изучать время выполнения транзакций на каждом перцентилеP0
doris_fe_txn_publish_latency_msМиллисекундыПерцентили времени публикации транзакций. Например, {quantile="0.75"} обозначает 75-й перцентиль времени публикации транзакцийПозволяет подробно изучать время публикации транзакций на каждом перцентилеP0
doris_fe_txn_numКоличествоКоличество транзакций, выполняемых сейчас в определенной базе данных. Например, {db="test"} обозначает количество транзакций, выполняемых сейчас в базе данных testПозволяет определить, не отправлено ли в определенную базу данных слишком много транзакцийP0
doris_fe_publish_txn_numКоличествоКоличество транзакций, публикуемых сейчас в определенной базе данных. Например, {db="test"} обозначает количество транзакций, публикуемых сейчас в базе данных testПозволяет отслеживать количество публикуемых транзакций в определенной базе данныхP0
doris_fe_txn_replica_numКоличествоКоличество реплик, открытых транзакциями, которые сейчас выполняются в определенной базе данных. Например, {db="test"} обозначает количество реплик, открытых транзакциями, которые сейчас выполняются в базе данных testПозволяет определить, не открыто ли в определенной базе данных слишком много реплик, что может влиять на выполнение других транзакцийP0
doris_fe_thrift_rpc_totalКоличествоКоличество запросов RPC, полученных каждым методом интерфейса thrift на FE. Например, {method="report"} обозначает количество запросов RPC, полученных методом reportПозволяет отслеживать нагрузку на определенный метод thrift rpc
doris_fe_thrift_rpc_latency_msМиллисекундыВремя обработки запросов RPC для каждого метода интерфейса thrift на FE. Например, {method="report"} обозначает время обработки запросов RPC методом reportПозволяет отслеживать нагрузку на определенный метод thrift rpc
doris_fe_external_schema_cache{catalog="hive"}КоличествоКоличество записей в кэше схемы для определенного External Catalog
doris_fe_hive_meta_cache{catalog="hive"}Количество
{type="partition_value"}КоличествоКоличество записей в кэше значений разделов для определенного External Hive Metastore Catalog
{type="partition"}КоличествоКоличество записей в кэше разделов для определенного External Hive Metastore Catalog
{type="file"}КоличествоКоличество записей в кэше файлов для определенного External Hive Metastore Catalog
doris_fe_virtual_compute_group_switch_total{virtual_compute_group_id, virtual_compute_group_name, src_compute_group_id, src_compute_group_name, dst_compute_group_id, dst_compute_group_name}КоличествоНакопительное количество переключений между основной и резервной вычислительными группами виртуальной вычислительной группы. Поддерживается начиная с версии 4.0.8, формируется только в режиме с разделением вычислений и храненияСкорость изменения показывает, насколько часто происходят переключения виртуальной вычислительной группы; обычно это указывает на нестабильность основной вычислительной группы

Мониторинг JVM​

ИмяМеткаЕдиница измеренияЗначениеОписаниеПриоритет
jvm_heap_size_bytesБайтыМониторинг памяти JVM. Метки max, used и committed соответствуют максимальному, используемому и выделенному объему памятиПозволяет отслеживать использование памяти JVMP0
jvm_non_heap_size_bytesБайтыСтатистика памяти JVM вне кучи
<GarbageCollector>Мониторинг GCGarbageCollector обозначает конкретный сборщик мусораP0
{type="count"}КоличествоНакопительное количество сборок мусора
{type="time"}МиллисекундыНакопительное время GC
jvm_old_size_bytesБайтыСтатистика памяти старого поколения JVMP0
jvm_threadКоличествоСтатистика количества потоков JVMПозволяет оценить, соответствует ли количество потоков JVM нормеP0
jvm_young_size_bytesБайтыСтатистика памяти молодого поколения JVMP0

Мониторинг сервера​

ИмяМеткаЕдиница измеренияЗначениеОписаниеПриоритет
system_meminfoБайтыМониторинг памяти сервера узла FE. Данные собираются из /proc/meminfo. Включает buffers, cached, memory_available, memory_free и memory_total
system_snmpМониторинг сети сервера узла FE. Данные собираются из /proc/net/snmp
{name="tcp_in_errs"}КоличествоКоличество ошибок приема пакетов tcp
{name="tcp_in_segs"}КоличествоКоличество полученных пакетов tcp
{name="tcp_out_segs"}КоличествоКоличество отправленных пакетов tcp
{name="tcp_retrans_segs"}КоличествоКоличество повторных передач пакетов tcp

Метрики мониторинга BE​

Мониторинг процесса​

ИмяМеткаЕдиница измеренияЗначениеОписаниеПриоритет
doris_be_active_scan_context_countКоличествоПоказывает количество сканеров, открытых сейчас напрямую внешними системами
doris_be_add_batch_task_queue_sizeКоличествоРазмер очереди пула потоков, принимающего пакеты данных при загрузкеЗначение больше 0 указывает на накопление задач загрузки на принимающей сторонеP0
agent_task_queue_sizeКоличествоПоказывает длину каждой очереди обработки Agent Task. Например, {type="CREATE_TABLE"} обозначает длину очереди задач CREATE_TABLE
doris_be_brpc_endpoint_stub_countКоличествоКоличество созданных заглушек brpc для взаимодействия между BE
doris_be_brpc_function_endpoint_stub_countКоличествоКоличество созданных заглушек brpc для взаимодействия с Remote RPC
doris_be_cache_capacityЕмкость определенного LRU Cache
doris_be_cache_usageИспользуемый объем определенного LRU CacheПозволяет отслеживать использование памятиP0
doris_be_cache_usage_ratioДоля использования определенного LRU Cache
doris_be_cache_lookup_countКоличество обращений к определенному LRU Cache
doris_be_cache_hit_countКоличество попаданий в определенный LRU Cache
doris_be_cache_hit_ratioДоля попаданий в определенный LRU CacheПозволяет оценить эффективность кэшаP0
{name="DataPageCache"}КоличествоDataPageCache кэширует страницы данных Data PageКэш данных, напрямую влияет на эффективность запросовP0
{name="IndexPageCache"}КоличествоIndexPageCache кэширует индексные страницы Index PageКэш индексов, напрямую влияет на эффективность запросовP0
{name="LastSuccessChannelCache"}КоличествоLastSuccessChannelCache кэширует LoadChannel на стороне получателя загрузки
{name="SegmentCache"}КоличествоSegmentCache кэширует открытые Segment, например информацию об индексах
doris_be_chunk_pool_local_core_alloc_countКоличествоКоличество выделений памяти из очереди памяти привязанного ядра в ChunkAllocator
doris_be_chunk_pool_other_core_alloc_countКоличествоКоличество выделений памяти из очередей памяти других ядер в ChunkAllocator
doris_be_chunk_pool_reserved_bytesБайтыОбъем памяти, зарезервированной в ChunkAllocator
doris_be_chunk_pool_system_alloc_cost_nsНаносекундыНакопительное время, затраченное SystemAllocator на выделение памятиПо скорости изменения можно оценить затраты времени на выделение памятиP0
doris_be_chunk_pool_system_alloc_countКоличествоКоличество выделений памяти SystemAllocator
doris_be_chunk_pool_system_free_cost_nsНаносекундыНакопительное время, затраченное SystemAllocator на освобождение памятиПо скорости изменения можно оценить затраты времени на освобождение памятиP0
doris_be_chunk_pool_system_free_countКоличествоКоличество освобождений памяти SystemAllocator
doris_be_compaction_bytes_totalБайтыНакопительный объем данных, обработанных CompactionУчитывает размер входных rowset на диске в задачах Compaction. По скорости изменения можно оценить скорость CompactionP0
{type="base"}БайтыНакопительный объем данных Base Compaction
{type="cumulative"}БайтыНакопительный объем данных Cumulative Compaction
doris_be_compaction_deltas_totalКоличествоНакопительное количество rowset, обработанных CompactionУчитывает количество входных rowset в задачах Compaction
{type="base"}КоличествоНакопительное количество rowset, обработанных Base Compaction
{type="cumulative"}КоличествоНакопительное количество rowset, обработанных Cumulative Compaction
doris_be_disks_compaction_numКоличествоКоличество задач Compaction, выполняемых сейчас для определенного каталога данных. Например, {path="/path1/"} обозначает количество задач, выполняемых сейчас для каталога /path1Позволяет оценить, соответствует ли количество задач Compaction на каждом диске нормеP0
doris_be_disks_compaction_scoreКоличествоКоличество токенов Compaction, используемых сейчас для определенного каталога данных. Например, {path="/path1/"} обозначает количество токенов, используемых сейчас для каталога /path1
doris_be_compaction_used_permitsКоличествоКоличество токенов, уже используемых задачами CompactionОтражает потребление ресурсов Compaction
doris_be_compaction_waitting_permitsКоличествоКоличество элементов, ожидающих токенов Compaction
doris_be_data_stream_receiver_countКоличествоКоличество получателей данных Receiver на принимающей сторонеFIXME: эта метрика отсутствует в векторизованном движке
doris_be_disks_avail_capacityБайтыОставшееся место на диске, где расположен определенный каталог данных. Например, {path="/path1/"} обозначает оставшееся место на диске, где расположен каталог /path1P0
doris_be_disks_local_used_capacityБайтыЛокально используемое место на диске, где расположен определенный каталог данных
doris_be_disks_remote_used_capacityБайтыИспользуемое место в удаленном каталоге, соответствующем диску, где расположен определенный каталог данных
doris_be_disks_stateБулево значениеСостояние диска определенного каталога данных. 1 означает нормальное состояние, 0 — неисправность
doris_be_disks_total_capacityБайтыОбщая емкость диска, где расположен определенный каталог данныхИспользуйте вместе с doris_be_disks_avail_capacity для расчета использования дискаP0
doris_be_engine_requests_totalКоличествоНакопительное количество выполнений различных задач на BE с разбивкой по состоянию
{status="failed",type="xxx"}КоличествоНакопительное количество ошибок задач типа xxx
{status="total",type="xxx"}КоличествоНакопительное общее количество выполнений задач типа xxxПри необходимости отслеживайте количество ошибок задач различных типовP0
{status="skip",type="report_all_tablets"}КоличествоНакопительное количество пропусков задач типа xxx
doris_be_fragment_endpoint_countКоличествоТо же, что doris_be_data_stream_receiver_countFIXME: то же количество, что и doris_be_data_stream_receiver_count. Также отсутствует в векторизованном движке
doris_be_fragment_request_duration_usМикросекундыНакопительное время выполнения всех экземпляров фрагментовПо скорости изменения можно оценить время выполнения экземпляровP0
doris_be_fragment_requests_totalКоличествоНакопительное количество выполненных экземпляров фрагментов
doris_be_load_channel_countКоличествоКоличество открытых сейчас каналов загрузкиЧем больше значение, тем больше задач загрузки выполняется в данный моментP0
doris_be_local_bytes_read_totalБайтыКоличество байтов, прочитанных LocalFileReaderP0
doris_be_local_bytes_written_totalБайтыКоличество байтов, записанных LocalFileWriterP0
doris_be_local_file_reader_totalКоличествоНакопительное количество открытых экземпляров LocalFileReader
doris_be_local_file_open_readingКоличествоКоличество открытых сейчас экземпляров LocalFileReader
doris_be_local_file_writer_totalКоличествоНакопительное количество открытых экземпляров LocalFileWriter
doris_be_mem_consumptionБайтыТекущее потребление памяти определенным модулем. Например, {type="compaction"} обозначает текущее общее потребление памяти модулем CompactionЗначение берется из MemTracker соответствующего типа. FIXME
doris_be_memory_allocated_bytesБайтыОбъем физической памяти процесса BE, полученный из /proc/self/status/VmRSSP0
doris_be_memory_jemallocБайтыСтатистика Jemalloc, полученная через je_mallctlОписание значений см.: https://jemalloc.net/jemalloc.3.htmlP0
doris_be_memory_pool_bytes_totalБайтыОбъем памяти, занимаемой сейчас всеми MemPool. Статистическое значение, которое не отражает фактическое использование памяти
doris_be_memtable_flush_duration_usМикросекундыНакопительное время записи memtable на дискПо скорости изменения можно оценить задержку записиP0
doris_be_memtable_flush_totalКоличествоНакопительное количество memtable, записанных на дискПо скорости изменения можно вычислить частоту записи файловP0
doris_be_meta_request_durationМикросекундыНакопительное время доступа к метаданным в RocksDBПо скорости изменения можно оценить задержку чтения и записи метаданных BEP0
{type="read"}МикросекундыВремя чтения
{type="write"}МикросекундыВремя записи
doris_be_meta_request_totalКоличествоНакопительное количество обращений к метаданным в RocksDBПо скорости изменения можно оценить частоту обращений к метаданным BEP0
{type="read"}КоличествоКоличество операций чтения
{type="write"}КоличествоКоличество операций записи
doris_be_fragment_instance_countКоличествоКоличество экземпляров фрагментов, полученных на данный моментПозволяет отслеживать накопление экземпляровP0
doris_be_process_fd_num_limit_hardКоличествоЖесткий лимит количества файловых дескрипторов процесса BE. Данные собираются через /proc/pid/limits
doris_be_process_fd_num_limit_softКоличествоМягкий лимит количества файловых дескрипторов процесса BE. Данные собираются через /proc/pid/limits
doris_be_process_fd_num_usedКоличествоКоличество файловых дескрипторов, используемых процессом BE. Определяется подсчетом записей в /proc/self/fd
doris_be_process_thread_numКоличествоКоличество потоков в процессе BE. Данные собираются через /proc/pid/taskP0
doris_be_query_cache_memory_total_byteБайтыОбъем памяти, занимаемой Query Cache, в байтах
doris_be_query_cache_partition_total_countКоличествоТекущее количество записей в Partition Cache
doris_be_query_cache_sql_total_countКоличествоТекущее количество записей в SQL Cache
doris_be_query_scan_bytesБайтыНакопительный объем прочитанных данных. Учитываются только данные, прочитанные из таблиц Olap
doris_be_query_scan_bytes_per_secondБайты/сСкорость чтения, рассчитанная на основе doris_be_query_scan_bytesПозволяет отслеживать скорость обработки запросовP0
doris_be_query_scan_rowsКоличествоНакопительное количество прочитанных строк. Учитываются только данные, прочитанные из таблиц Olap. Это RawRowsRead (некоторые строки могут быть пропущены благодаря индексам и фактически не прочитаны, но все равно учитываются в этом значении)По скорости изменения можно оценить скорость обработки запросовP0
doris_be_result_block_queue_countКоличествоКоличество экземпляров фрагментов, находящихся сейчас в кэше результатов запросовЭта очередь используется только при прямом чтении внешними системами. Например, Spark on Doris запрашивает данные через внешнее сканирование
doris_be_result_buffer_block_countКоличествоКоличество запросов, находящихся сейчас в кэше результатов запросовЗначение отражает количество результатов запросов на текущем BE, ожидающих получения со стороны FEP0
doris_be_routine_load_task_countКоличествоКоличество выполняемых сейчас задач Routine Load
doris_be_rowset_count_generated_and_in_useКоличествоКоличество новых используемых ID rowset с момента последнего запуска
doris_be_s3_bytes_read_totalКоличествоНакопительное количество открытий S3FileReader
doris_be_s3_file_open_readingКоличествоКоличество открытых сейчас экземпляров S3FileReader
doris_be_s3_bytes_read_totalБайтыНакопительное количество байтов, прочитанных S3FileReader
doris_be_scanner_thread_pool_queue_sizeКоличествоТекущий размер очереди пула потоков для OlapScannerЗначение больше нуля указывает на начало накопления сканеров ScannerP0
doris_be_segment_read{type="segment_read_total"}КоличествоНакопительное количество прочитанных сегментов
doris_be_segment_read{type="segment_row_total"}КоличествоНакопительное количество строк, прочитанных из сегментовЗначение также включает строки, отфильтрованные индексами. Оно равно количеству прочитанных сегментов, умноженному на общее количество строк в каждом сегменте
doris_be_send_batch_thread_pool_queue_sizeКоличествоРазмер очереди пула потоков для отправки пакетов данных при загрузкеЗначение больше 0 указывает на накопление задачP0
doris_be_send_batch_thread_pool_thread_numКоличествоКоличество потоков в пуле для отправки пакетов данных при загрузке
doris_be_small_file_cache_countКоличествоКоличество небольших файлов, кэшированных сейчас на BE
doris_be_streaming_load_current_processingКоличествоКоличество выполняемых сейчас задач Stream LoadВключает только задачи, отправленные командой curl
doris_be_streaming_load_duration_msМиллисекундыНакопительное время выполнения всех задач Stream Load
doris_be_streaming_load_requests_totalКоличествоНакопительное количество задач Stream LoadПо скорости изменения можно оценить частоту отправки задачP0
doris_be_stream_load_pipe_countКоличествоТекущее количество каналов данных Stream LoadВключает задачи Stream Load и Routine Load
doris_be_stream_load{type="load_rows"}КоличествоНакопительное количество строк, в итоге загруженных через Stream LoadВключает задачи Stream Load и Routine LoadP0
doris_be_stream_load{type="receive_bytes"}БайтыНакопительное количество байтов, полученных через Stream LoadВключает данные, полученные Stream Load по HTTP, и данные, прочитанные Routine Load из KafkaP0
doris_be_tablet_base_max_compaction_scoreКоличествоТекущее максимальное значение Base Compaction ScoreЗначение изменяется в реальном времени, поэтому пиковые значения могут быть пропущены. Чем оно выше, тем больше накопилось задач CompactionP0
doris_be_tablet_cumulative_max_compaction_scoreКоличествоТекущее максимальное значение Compaction Score среди всех стратегий Cumulative CompactionСохраняется как общий максимум по всем стратегиям
doris_be_tablet_version_num_distributionКоличествоГистограмма количества версий tabletОтражает распределение tablet по количеству версийP0
doris_be_thrift_connections_totalКоличествоНакопительное количество созданных соединений thrift. Например, {name="heartbeat"} обозначает накопительное количество соединений со службой heartbeatЗначение относится к серверу thrift, в котором BE выступает серверной стороной
doris_be_thrift_current_connectionsКоличествоТекущее количество соединений thrift. Например, {name="heartbeat"} обозначает текущее количество соединений со службой heartbeatТо же, что выше
doris_be_thrift_opened_clientsКоличествоТекущее количество открытых клиентов thrift. Например, {name="frontend"} обозначает количество клиентов, обращающихся к службе FE
doris_be_thrift_used_clientsКоличествоТекущее количество используемых клиентов thrift. Например, {name="frontend"} обозначает количество клиентов, используемых сейчас для доступа к службе FE
doris_be_timeout_canceled_fragment_countКоличествоНакопительное количество экземпляров фрагментов, отмененных по тайм-аутуЗначение может учитываться повторно. Например, некоторые экземпляры фрагментов могут отменяться несколько разP0
doris_be_stream_load_txn_request{type="begin"}КоличествоНакопительное количество начатых транзакций Stream LoadВключает задачи Stream Load и Routine Load
doris_be_stream_load_txn_request{type="commit"}КоличествоНакопительное количество успешно зафиксированных транзакций Stream LoadТо же, что выше
doris_be_stream_load_txn_request{type="rollback"}КоличествоНакопительное количество транзакций Stream Load, завершившихся с ошибкойТо же, что выше
doris_be_unused_rowsets_countКоличествоКоличество устаревших rowset на данный моментВ нормальных условиях эти rowset периодически удаляются
doris_be_upload_fail_countКоличествоНакопительное количество неудачных загрузок rowset в удаленное хранилище при использовании многоуровневого хранения
doris_be_upload_rowset_countКоличествоНакопительное количество успешных загрузок rowset в удаленное хранилище при использовании многоуровневого хранения
doris_be_upload_total_byteБайтыНакопительный объем данных rowset, успешно загруженных в удаленное хранилище при использовании многоуровневого хранения
doris_be_load_bytesБайтыНакопительное количество байтов, отправленных через tablet sinkПозволяет отслеживать объем загружаемых данныхP0
doris_be_load_rowsКоличествоНакопительное количество строк, отправленных через tablet sinkПозволяет отслеживать объем загружаемых данныхP0
fragment_thread_pool_queue_sizeКоличествоТекущая длина очереди ожидания пула потоков выполнения запросовЗначение больше нуля означает, что все потоки запросов заняты и запросы накапливаютсяP0
doris_be_all_rowsets_numКоличествоОбщее количество всех существующих rowsetP0
doris_be_all_segments_numКоличествоОбщее количество всех существующих сегментовP0
doris_be_heavy_work_max_threadsКоличествоКоличество потоков в пуле brpc heavyP0
doris_be_light_work_max_threadsКоличествоКоличество потоков в пуле brpc lightP0
doris_be_heavy_work_pool_queue_sizeКоличествоМаксимальная длина очереди пула потоков brpc heavy. При превышении отправка задач блокируетсяP0
doris_be_light_work_pool_queue_sizeКоличествоМаксимальная длина очереди пула потоков brpc light. При превышении отправка задач блокируетсяP0
doris_be_heavy_work_active_threadsКоличествоКоличество активных потоков в пуле brpc heavyP0
doris_be_light_work_active_threadsКоличествоКоличество активных потоков в пуле brpc lightP0
routine_load_get_msg_latencyМиллисекундыЗадержка получения сообщений Kafka в Routine Load
routine_load_get_msg_countКоличествоКоличество операций получения сообщений Kafka в Routine Load
routine_load_consume_bytesБайтыОбъем данных, потребленных Routine Load из Kafka
routine_load_consume_rowsКоличествоКоличество строк, потребленных Routine Load из Kafka
doris_be_tablet_size_based_max_compaction_scoreКоличествоТекущее максимальное значение Cumulative Compaction Score для стратегии Size-basedGauge, добавлена в 4.1.5; поддерживает совмещенный режим и режим с разделением вычислений и хранения
doris_be_tablet_time_series_max_compaction_scoreКоличествоТекущее максимальное значение Cumulative Compaction Score для стратегии Time-seriesGauge, добавлена в 4.1.5; поддерживает совмещенный режим и режим с разделением вычислений и хранения
doris_be_hdfs_file_open_readingКоличествоТекущее количество фактически открытых файловых дескрипторов HDFSGauge; начиная с версии 4.1.5 учитывает общие файловые дескрипторы, а не объекты чтения
doris_be_hdfs_file_reader_totalКоличествоНакопительное количество успешных открытий файловых дескрипторов HDFSCounter; начиная с версии 4.1.5 объекты чтения, которые не открывали файл, не увеличивают значение, а повторное использование кэшированного дескриптора не учитывается повторно

Оба значения Compaction Score для отдельных стратегий являются максимумами. Не складывайте их и не применяйте к ним расчет скорости изменения, предназначенный для Counter. После полной проверки значение стратегии, для которой нет подходящих tablet, может сброситься до нуля. Если при проверке в совмещенном режиме некоторые каталоги пропущены из-за ограничений дисковой емкости, это само по себе не приводит к снижению ранее полученного значения.

Мониторинг сервера​

ИмяМеткаЕдиница измеренияЗначениеОписаниеПриоритет
doris_be_cpuКоличествоМетрики мониторинга CPU, собираемые из /proc/stat. Значения собираются для каждого логического ядра. Например, {device="cpu0",mode="nice"} обозначает значение nice для cpu0Позволяет рассчитать использование CPUP0
doris_be_disk_bytes_readБайтыНакопительный объем чтения с диска. Данные собираются из /proc/diskstats. Значения собираются для каждого диска. Например, {device="vdd"} обозначает значение для диска vdd
doris_be_disk_bytes_writtenБайтыНакопительный объем записи на диск. Данные собираются так же, как указано выше
doris_be_disk_io_time_msМиллисекундыДанные собираются так же, как указано вышеПозволяет рассчитать IO UtilP0
doris_be_disk_io_time_weightedМиллисекундыДанные собираются так же, как указано выше
doris_be_disk_reads_completedКоличествоДанные собираются так же, как указано выше
doris_be_disk_read_time_msМиллисекундыДанные собираются так же, как указано выше
doris_be_disk_writes_completedКоличествоДанные собираются так же, как указано выше
doris_be_disk_write_time_msМиллисекундыДанные собираются так же, как указано выше
doris_be_fd_num_limitКоличествоВерхний системный лимит количества файловых дескрипторов. Данные собираются из /proc/sys/fs/file-nr
doris_be_fd_num_usedКоличествоКоличество файловых дескрипторов, используемых системой. Данные собираются из /proc/sys/fs/file-nr
doris_be_file_created_totalКоличествоНакопительное количество созданий локальных файловУчитывает все файлы, для которых вызывался local_file_writer и которые в итоге были закрыты
doris_be_load_averageКоличествоМониторинг средней нагрузки сервера Load Avg. Например, {mode="15_minutes"} обозначает Load Avg за 15 минутПозволяет отслеживать общую нагрузку на серверP0
doris_be_max_disk_io_util_percentПроцентыРассчитанное максимальное значение IO UTIL среди всех дисковP0
doris_be_max_network_receive_bytes_rateБайты/сРассчитанная максимальная скорость приема среди всех сетевых интерфейсовP0
doris_be_max_network_send_bytes_rateБайты/сРассчитанная максимальная скорость отправки среди всех сетевых интерфейсовP0
doris_be_memory_pgpginБайтыОбъем данных, записанных системой с диска в страницы памяти
doris_be_memory_pgpgoutБайтыОбъем данных, записанных из страниц системной памяти на диск
doris_be_memory_pswpinБайтыОбъем данных, перенесенных системой из области подкачки на диске в памятьВ нормальных условиях подкачка должна быть отключена, поэтому значение должно быть 0
doris_be_memory_pswpoutБайтыОбъем данных, выгруженных системой из памяти в область подкачки на дискеВ нормальных условиях подкачка должна быть отключена, поэтому значение должно быть 0
doris_be_network_receive_bytesБайтыНакопительное количество полученных байтов для каждого сетевого интерфейса. Данные собираются из /proc/net/dev
doris_be_network_receive_packetsКоличествоНакопительное количество полученных пакетов для каждого сетевого интерфейса. Данные собираются из /proc/net/dev
doris_be_network_send_bytesБайтыНакопительное количество отправленных байтов для каждого сетевого интерфейса. Данные собираются из /proc/net/dev
doris_be_network_send_packetsКоличествоНакопительное количество отправленных пакетов для каждого сетевого интерфейса. Данные собираются из /proc/net/dev
doris_be_proc{mode="ctxt_switch"}КоличествоНакопительное количество переключений контекста CPU. Данные собираются из /proc/statПозволяет выявлять аномалии переключения контекстаP0
doris_be_proc{mode="interrupt"}КоличествоНакопительное количество прерываний CPU. Данные собираются из /proc/stat
doris_be_proc{mode="procs_blocked"}КоличествоКоличество заблокированных сейчас процессов в системе (например, ожидающих IO). Данные собираются из /proc/stat
doris_be_proc{mode="procs_running"}КоличествоКоличество выполняемых сейчас процессов в системе. Данные собираются из /proc/stat
doris_be_snmp_tcp_in_errsКоличествоКоличество ошибок приема пакетов tcp. Данные собираются из /proc/net/snmpПозволяет отслеживать сетевые ошибки, например повторные передачи и потерю пакетов. Используйте вместе с другими метриками snmpP0
doris_be_snmp_tcp_in_segsКоличествоКоличество полученных пакетов tcp. Данные собираются из /proc/net/snmp
doris_be_snmp_tcp_out_segsКоличествоКоличество отправленных пакетов tcp. Данные собираются из /proc/net/snmp
doris_be_snmp_tcp_retrans_segsКоличествоКоличество повторных передач пакетов tcp. Данные собираются из /proc/net/snmp

Диагностические метрики bvar​

Следующие метрики поддерживаются начиная с версии 4.1.5 и доступны через описанные выше порты brpc. Счетчики накапливают значения с момента запуска процесса; метрики Gauge отражают текущие значения.

Имя или префиксПроцессТипЗначение
sync_tablets_meta_numBE в режиме с разделением вычислений и храненияCounterНакопительное количество фоновых попыток синхронизации метаданных tablet; учитывается до вызова и не отражает количество успешных вызовов
sync_tablets_rowsets_numBE в режиме с разделением вычислений и храненияCounterНакопительное количество фоновых попыток синхронизации rowset для tablet; учитывается до вызова и не отражает количество успешных вызовов
vertical_compaction_active_segment_contextsBEGaugeТекущее количество активных контекстов Segment, удерживаемых вертикальной Compaction
hdfs_get_path_infoBEСтатистика задержки, микросекундыПрефикс метрик задержки hdfsGetPathInfo для диагностики доступа к метаданным файлов HDFS
ms_repair_tablet_indexMeta ServiceCounterНакопительное количество старых записей Tablet Index, исправленных для добавления отсутствующего db_id при фиксации транзакции; учитывается только после успешной фиксации
file_cache_ttl_mgr_ttl_info_map_size (с префиксом пути кэша)BEGaugeТекущее количество записей информации о TTL tablet, отслеживаемых в памяти, а не блоков кэша

Префиксы путей кэша и метрики вытеснения описаны в разделе Мониторинг файлового кэша. По завершении вертикальной Compaction поле vertical_compaction_active_segment_contexts_peak в журнале BE уровня INFO содержит пиковое количество контекстов для этой задачи. Это поле журнала, а не отдельная метрика Gauge уровня процесса.

Часто задаваемые вопросы​

Вопрос: конечная точка мониторинга возвращает 404. Что делать?​

Убедитесь, что вы обращаетесь к http_port FE или webserver_port BE, и проверьте фактические значения портов в fe.conf / be.conf.

Вопрос: метрики Counter только увеличиваются и никогда не уменьшаются. Это нормально?​

Да, это нормально. Counter представляет накопительное значение. Для получения текущей скорости необходимо снимать показания через определенные интервалы и вычислять скорость изменения (например, с помощью rate() в PromQL).

Вопрос: разрыв значений doris_fe_max_journal_id между узлами FE слишком велик. Что делать?​

Это указывает на задержку синхронизации метаданных. Проверьте сетевую связность и скорость воспроизведения журналов на Follower / Observer FE относительно Master FE.

Вопрос: Compaction Score остается слишком высоким. Как найти причину?​

Обратите внимание на doris_be_tablet_base_max_compaction_score и doris_be_tablet_cumulative_max_compaction_score и сопоставьте их с дисковым IO и количеством задач Compaction, чтобы выявить узкое место.

Вопрос: запросы или задачи загрузки накапливаются. Как найти причину?​

Проверьте метрики очередей пулов потоков, такие как fragment_thread_pool_queue_size, doris_be_scanner_thread_pool_queue_size и doris_be_send_batch_thread_pool_queue_size.