Основные метрики ================ В разделе описаны основные метрики, используемые на графиках. Полный перечень возможных метрик можно посмотреть в браузере по указанным в предыдущем разделе ссылкам и добавить при необходимости в дополнительные графики. JBoss ----- Источники данных ~~~~~~~~~~~~~~~~ ``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`` - общее время блокирования соединений в миллисекундах. Транзакции ~~~~~~~~~~ ``transaction_aborted_transactions`` - число прерванных транзакций. ``transaction_application_rollbacks`` - число транзакций, откаченных назад запросом приложения. Включают в себя и те транзакции, для которых истекло время ожидания. ``transaction_timed_out_transactions`` - чисто транзакций, откат которых произошёл из-за таймаута. ``transaction_committed_transactions`` - число подтверждённых транзакций. ``transaction_inflight_transactions`` - число транзакций, которые начались, но ещё не завершились. ``transaction_resource_rollbacks`` - число транзакций, откаченных назад из-за сбоя ресурса. 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. 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 % запросов. Cassandra --------- Метрики клиентов ~~~~~~~~~~~~~~~~ ``clientrequest_latency_count`` - общее время задержек при выполнении запросов. ``clientrequest_latency_mean`` - среднее время задержек при выполнении запросов. ``clientrequest_latency_95thpercentile`` - 95-процентная доля задержек при выполнении запросов. ``columnfamily_rangelatency_mean`` - задержка сканирования локального диапазона для этой таблицы. ``clientrequest_unavailables_count`` - количество обнаруженных исключений из-за недоступности. ``clientrequest_timeouts_count`` - количество обнаруженных таймаутов. ``clientrequest_timeouts_mean`` - усреднённое количество обнаруженных таймаутов. Хранилище ~~~~~~~~~ ``storage_exceptions`` - количество выявленных внутренних исключений. При стандартных исключениях значение должно равняться нулю. ``storage_load`` - размер данных, которыми управляет данный узел, на диске в байтах. ``storage_totalhints`` - количество сообщений с напоминаниями, записанных на этот узел с момента (ре)старта сервера. ``storage_totalhintsinprogress`` - количество напоминаний, которое отправляется в данный момент. Уплотнение (compaction) ~~~~~~~~~~~~~~~~~~~~~~~ Уплотнение - процесс освобождения места путём слияния больших файлов данных. В ходе операции уплотнения файлы SSTable сливаются: производится объединение ключей и соответствующих им столбцов, создание нового индекса. После уплотнения объединённые данные сортируются, над ними строится новый индекс, и только что объединённые, отсортированные и проиндексированные данные записываются в новый файл SSTable. Ещё одна важная функция уплотнения - повышение производительности путём сокращения числа операций поиска. Для нахождения столбца данных с указанным ключом нужно просмотреть ограниченное количество файлов SSTable. Если этот столбец часто изменяется, то вполне может оказаться, что все версии находятся в сброшенных на диск файлах SSTable. Уплотнение позволяет базе данных не просматривать каждый файл SSTable в поисках указанного ключа и не выбирать из них самое последнее значение каждого столбца. В процессе уплотнения наблюдается кратковременный всплеск интенсивности ввода-вывода и изменение занятого на диске места - это читаются старые и записываются новые файлы SSTable. ``compaction_pendingtasks`` - расчётное количество уплотнений, оставшихся для выполнения. ``compaction_completedtasks`` - количество завершённых уплотнений с момента (ре)старта сервера. ``compaction_bytescompacted`` - общее число байтов, уплотнённых с момента (ре)старта сервера. ``compaction_totalcompactionscompleted`` - пропускная способность выполненных уплотнений с момента (ре)старта сервера. Фильтр Блума ~~~~~~~~~~~~ Фильтры Блума служат для повышения производительности чтения. Это очень быстрый недетерминированный алгоритм, который проверяет, является ли некий объект элементом множества. Недетерминированность связана с тем, что фильтр Блума может давать ложноположительные ответы, но никогда не даёт ложноотрицательных. Принцип работы фильтра Блума заключается в отображении значений элементов множества в битовый массив и в сжатии большого количества данных в строку-дайджест с помощью хэш-функции. Дайджест, по определению, занимает гораздо меньше памяти, чем исходные данные. Фильтр сохраняется в памяти и позволяет повысить производительность, поскольку не каждая операция поиска ключа требует медленного доступа к диску. Таким образом, фильтр Блума является особым видом кэша. ``columnfamily_bloomfilterfalsepositives`` - количество ложно-положительных результатов в фильтре таблицы. ``columnfamily_bloomfilterfalseratio`` - пропорция ложно-положительных результатов в фильтре таблицы. ``columnfamily_bloomfilterdiskspaceused`` - дисковое пространство, занятое фильтром Блума, в байтах. ``columnfamily_bloomfilteroffheapmemoryused`` - память вне кучи, использованная фильтром Блума. Пул потоков ~~~~~~~~~~~ Cassandra разбивает работу определённых типов на собственный пул потоков. Это обеспечивает асинхронность запросов на узле. Состояние потоков важно отслеживать, так как оно показывает, насколько насыщен узел. ``threadpools_completedtasks`` - количество завершённых задач. ``threadpools_pendingtasks`` - количество задач в очереди. ``threadpools_activetasks`` - количество активных задач. ``threadpools_totalblockedtasks`` - количество задач, блокированных из-за насыщения очереди. ``threadpools_currentlyblockedtasks`` - количество задач, которые блокированы в настоящее время из-за насыщения очереди, но будут разблокированы при повторной попытке. Кэш ~~~ ``cache_hitrate`` - коэффициент попадания в кэш за всё время. ``cache_size`` - общий размер, занятый кэшем, в байтах. ``cache_hits`` - общее количество попаданий в кэш. ``cache_requests`` - общее количество запросов кэша. ``cache_entries`` - общее количество записей в кэше. Таблицы памяти ~~~~~~~~~~~~~~ ``columnfamily_memtablelivedatasize`` - общий объем живых данных в таблице памяти, исключая любые заголовки структуры данных. ``columnfamily_memtablecolumnscount`` - общее количество столбцов в таблице памяти. ``columnfamily_memtableonheapsize`` - общий объем данных в таблице памяти, который находится в куче, включая относящийся к столбцам заголовок и перезаписанные разделы. ``columnfamily_memtableoffheapsize`` - общий объем данных в таблице памяти, который находится вне кучи, включая относящийся к столбцам заголовок и перезаписанные разделы. ``columnfamily_memtableswitchcount`` - сколько раз сброс данных приводил к выключению. ``columnfamily_livesstablecount`` - количество SSTable на диске для данной таблицы. CQL ~~~ ``cql_regularstatementsexecuted`` - количество выполненных неподготовленных операторов. ``cql_preparedstatementsexecuted`` - количество выполненных подготовленных операторов. Elasticsearch ------------- Системные метрики ~~~~~~~~~~~~~~~~~ ``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`` - общее количество полученных байтов. Документы и операции ~~~~~~~~~~~~~~~~~~~~ ``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`` - общее число сбросов. Время ~~~~~ ``indices_search_query_time_seconds`` - общее время выполнения поискового запроса в секундах. ``indices_indexing_index_time_seconds_total`` - совокупное время индексирования в секундах. ``indices_merges_total_time_seconds_total`` - общее время, потраченное на слияние, в секундах. Кэш ~~~ ``indices_fielddata_memory_size_bytes`` - использование памяти для кэша данных полей в байтах. ``indices_fielddata_evictions`` - вытеснение из поля данных. ``indices_query_cache_memory_size_bytes`` - использование памяти для кэша запросов в байтах. ``indices_query_cache_evictions`` - вытеснение из кэша запросов. Пул потоков ~~~~~~~~~~~ ``thread_pool_rejected_count`` - число отклонённых операций. ``thread_pool_active_count`` - число активных операций. ``thread_pool_queue_count`` - число операций в очереди. ``thread_pool_completed_count`` - число завершённых операций. 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. Полное руководство