1.3. Основные метрики

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

1.3.1. JBoss

1.3.1.1. Источники данных

datasource_pool_available_count - количество доступных соединений в пуле.

datasource_pool_active_count - количество активных соединений; каждое соединение либо использовано приложением, либо доступно в пуле.

datasource_pool_max_used_count - максимальное количество использованных соединений.

datasource_pool_max_creation_time - максимальное время создания соединения, в миллисекундах.

datasource_pool_average_creation_time - среднее время создания соединения, в миллисекундах.

datasource_pool_average_blocking_time - среднее время блокирования при получении полной блокировки пула.

Эти метрики на графиках выведены отдельно для БД synergy, storage и jbpmdb.

datasource_pool_total_creation_time - общее время создания соединений в миллисекундах.

datasource_pool_total_blocking_time - общее время блокирования соединений в миллисекундах.

1.3.1.2. Транзакции

transaction_aborted_transactions - число прерванных транзакций.

transaction_application_rollbacks - число транзакций, откаченных назад запросом приложения. Включают в себя и те транзакции, для которых истекло время ожидания.

transaction_timed_out_transactions - чисто транзакций, откат которых произошёл из-за таймаута.

transaction_committed_transactions - число подтверждённых транзакций.

transaction_inflight_transactions - число транзакций, которые начались, но ещё не завершились.

transaction_resource_rollbacks - число транзакций, откаченных назад из-за сбоя ресурса.

1.3.1.3. JVM

jvm_memory_pool_bytes_used - использование пула памяти в байтах.

jvm_memory_pool_bytes_max - максимум пула памяти в байтах.

jvm_memory_pool_bytes_committed - выделенное количество пула памяти в байтах.

jvm_memory_pool_bytes_init - исходное количество пула памяти в байтах.

jvm_memory_bytes_used - использование выделенной области памяти в байтах.

На графиках показаны процент использованного Old Generation, количество использованной памяти JVM, использование памяти в зависимости от сегмента (heap и non-heap).

jvm_gc_collection_seconds_count - количество запущенных GC.

jvm_gc_collection_seconds_sum - время, которое GC выполнялись.

jvm_threads_current - текущее количество потоков в JVM.

1.3.2. nginx

synergy_http_response_count_total - общее количество завершённых HTTP-запросов/ ответов. Кроме графика среднего времени отклика используется для сводки кодов состояния HTTP.

synergy_http_response_size_bytes - общее количество переданного контента в байтах.

synergy_http_response_time_seconds - сводка всех времён отклика в секундах. На графиках Response Times (quantiles) линиями 0.5, 0.9, 0.99 отмечено время, за которое успевает выполниться соответственно 50, 90, 99 % запросов.

1.3.3. Cassandra

1.3.3.1. Метрики клиентов

clientrequest_latency_count - общее время задержек при выполнении запросов.

clientrequest_latency_mean - среднее время задержек при выполнении запросов.

clientrequest_latency_95thpercentile - 95-процентная доля задержек при выполнении запросов.

columnfamily_rangelatency_mean - задержка сканирования локального диапазона для этой таблицы.

clientrequest_unavailables_count - количество обнаруженных исключений из-за недоступности.

clientrequest_timeouts_count - количество обнаруженных таймаутов.

clientrequest_timeouts_mean - усреднённое количество обнаруженных таймаутов.

1.3.3.2. Хранилище

storage_exceptions - количество выявленных внутренних исключений. При стандартных исключениях значение должно равняться нулю.

storage_load - размер данных, которыми управляет данный узел, на диске в байтах.

storage_totalhints - количество сообщений с напоминаниями, записанных на этот узел с момента (ре)старта сервера.

storage_totalhintsinprogress - количество напоминаний, которое отправляется в данный момент.

1.3.3.3. Уплотнение (compaction)

Уплотнение - процесс освобождения места путём слияния больших файлов данных. В ходе операции уплотнения файлы SSTable сливаются: производится объединение ключей и соответствующих им столбцов, создание нового индекса. После уплотнения объединённые данные сортируются, над ними строится новый индекс, и только что объединённые, отсортированные и проиндексированные данные записываются в новый файл SSTable.

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

В процессе уплотнения наблюдается кратковременный всплеск интенсивности ввода-вывода и изменение занятого на диске места - это читаются старые и записываются новые файлы SSTable.

compaction_pendingtasks - расчётное количество уплотнений, оставшихся для выполнения.

compaction_completedtasks - количество завершённых уплотнений с момента (ре)старта сервера.

compaction_bytescompacted - общее число байтов, уплотнённых с момента (ре)старта сервера.

compaction_totalcompactionscompleted - пропускная способность выполненных уплотнений с момента (ре)старта сервера.

1.3.3.4. Фильтр Блума

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

columnfamily_bloomfilterfalsepositives - количество ложно-положительных результатов в фильтре таблицы.

columnfamily_bloomfilterfalseratio - пропорция ложно-положительных результатов в фильтре таблицы.

columnfamily_bloomfilterdiskspaceused - дисковое пространство, занятое фильтром Блума, в байтах.

columnfamily_bloomfilteroffheapmemoryused - память вне кучи, использованная фильтром Блума.

1.3.3.5. Пул потоков

Cassandra разбивает работу определённых типов на собственный пул потоков. Это обеспечивает асинхронность запросов на узле. Состояние потоков важно отслеживать, так как оно показывает, насколько насыщен узел.

threadpools_completedtasks - количество завершённых задач.

threadpools_pendingtasks - количество задач в очереди.

threadpools_activetasks - количество активных задач.

threadpools_totalblockedtasks - количество задач, блокированных из-за насыщения очереди.

threadpools_currentlyblockedtasks - количество задач, которые блокированы в настоящее время из-за насыщения очереди, но будут разблокированы при повторной попытке.

1.3.3.6. Кэш

cache_hitrate - коэффициент попадания в кэш за всё время.

cache_size - общий размер, занятый кэшем, в байтах.

cache_hits - общее количество попаданий в кэш.

cache_requests - общее количество запросов кэша.

cache_entries - общее количество записей в кэше.

1.3.3.7. Таблицы памяти

columnfamily_memtablelivedatasize - общий объем живых данных в таблице памяти, исключая любые заголовки структуры данных.

columnfamily_memtablecolumnscount - общее количество столбцов в таблице памяти.

columnfamily_memtableonheapsize - общий объем данных в таблице памяти, который находится в куче, включая относящийся к столбцам заголовок и перезаписанные разделы.

columnfamily_memtableoffheapsize - общий объем данных в таблице памяти, который находится вне кучи, включая относящийся к столбцам заголовок и перезаписанные разделы.

columnfamily_memtableswitchcount - сколько раз сброс данных приводил к выключению.

columnfamily_livesstablecount - количество SSTable на диске для данной таблицы.

1.3.3.8. CQL

cql_regularstatementsexecuted - количество выполненных неподготовленных операторов.

cql_preparedstatementsexecuted - количество выполненных подготовленных операторов.

1.3.4. Elasticsearch

1.3.4.1. Системные метрики

process_cpu_percent - процент использования CPU процессом Elasticsearch.

jvm_memory_used_bytes - текущее использование памяти JVM в байтах.

jvm_memory_committed_bytes - зафиксированная память JVM в байтах.

jvm_memory_max_bytes - максимальное использование памяти JVM в байтах.

filesystem_data_available_bytes - доступное пространство на диске в байтах.

filesystem_data_size_bytes - размер диска в байтах.

transport_tx_size_bytes_total - общее количество отправленных байтов.

transport_rx_size_bytes_total - общее количество полученных байтов.

1.3.4.2. Документы и операции

indices_docs - число документов на данном узле.

indices_indexing_index_total - общее число индексных вызовов.

indices_docs_deleted - число удалённых документов на данном узле.

indices_merges_total - общее число слияний.

indices_search_query_total - общее число поисковых запросов.

indices_search_fetch_total - общее число выборок.

indices_refresh_total - общее число обновлений.

indices_flush_total - общее число сбросов.

1.3.4.3. Время

indices_search_query_time_seconds - общее время выполнения поискового запроса в секундах.

indices_indexing_index_time_seconds_total - совокупное время индексирования в секундах.

indices_merges_total_time_seconds_total - общее время, потраченное на слияние, в секундах.

1.3.4.4. Кэш

indices_fielddata_memory_size_bytes - использование памяти для кэша данных полей в байтах.

indices_fielddata_evictions - вытеснение из поля данных.

indices_query_cache_memory_size_bytes - использование памяти для кэша запросов в байтах.

indices_query_cache_evictions - вытеснение из кэша запросов.

1.3.4.5. Пул потоков

thread_pool_rejected_count - число отклонённых операций.

thread_pool_active_count - число активных операций.

thread_pool_queue_count - число операций в очереди.

thread_pool_completed_count - число завершённых операций.

1.3.4.6. Garbage Collector

jvm_gc_collection_seconds_count - количество запущенных JVM GC.

jvm_gc_collection_seconds_sum - время выполнения GC в секундах.

Ссылки и использованные источники:

  1. Транзакции JBoss
  2. Источники данных JBoss
  3. Полный список метрик Cassandra
  4. Полный список метрик Elasticsearch
  5. Дж. Карпентер, Э. Хьюитт - Cassandra. Полное руководство