= Gerrit Code Review - Metrics

Metrics about Gerrit's internal state can be sent to external monitoring systems
via plugins. See the link:dev-plugins.html#metrics[plugin documentation] for
details of plugin implementations.

== Metrics

The following metrics are reported.

=== General

* `build/label`: Version of Gerrit server software.
* `events`: Triggered events.
** `type`:
   The type of the event.

=== Actions

* `action/retry_attempt_count`: Number of retry attempts made
  by RetryHelper to execute an action (0 == single attempt, no retry)
** `action_type`:
   The type of the action that was retried.
** `operation_name`:
   The name of the operation that was retried.
** `cause`:
   The original cause that triggered the retry.
* `action/retry_timeout_count`: Number of action executions of RetryHelper
  that ultimately timed out
** `action_type`:
   The type of the action that was retried.
** `operation_name`:
   The name of the operation that was retried.
** `cause`:
   The original cause that triggered the retry.
* `action/auto_retry_count`: Number of automatic retries with tracing
** `action_type`:
   The type of the action that was retried.
** `operation_name`:
   The name of the operation that was retried.
** `cause`:
   The cause for the retry.
* `action/failures_on_auto_retry_count`: Number of failures on auto retry
** `action_type`:
   The type of the action that was retried.
** `operation_name`:
   The name of the operation that was retried.
** `cause`:
   The cause for the retry.

[[cancellations]]
=== Cancellations

* `cancellation/advisory_deadline_count`: Exceeded advisory deadlines by request
** `request_type`:
   The type of the request to which the advisory deadline applied.
** `request_uri`:
   The redacted URI of the request to which the advisory deadline applied (only
   set for request_type = REST).
** `deadline_id`:
   The ID of the advisory deadline.
* `cancellation/cancelled_requests_count`: Number of request cancellations by
  request
** `request_type`:
   The type of the request that was cancelled.
** `request_uri`:
   The redacted URI of the request that was cancelled (only set for
   request_type = REST).
** `cancellation_reason`:
   The reason why the request was cancelled.
* `cancellation/receive_timeout_count`: Number of requests that are cancelled
  because link:config.html#receive.timeout[receive.timout] is exceeded
** `cancellation_type`:
   The cancellation type (graceful or forceful).

[[performance]]
=== Performance

* `performance/operations`: Latency of performing operations
** `operation_name`:
   The operation that was performed.
** `request`:
   The request for which the operation was performed (format = '<request-type>
   <redacted-request-uri>').
** `plugin`:
   The name of the plugin that performed the operation.
* `performance/operations_count`: Number of performed operations
** `operation_name`:
   The operation that was performed.
** `request`:
   The request for which the operation was performed (format = '<request-type>
   <redacted-request-uri>').
** `plugin`:
   The name of the plugin that performed the operation.

Performance metrics can be enabled via the
link:config.gerrit.html#tracing.exportPerformanceMetrics[`tracing.exportPerformanceMetrics`]
setting.

=== Pushes

* `receivecommits/changes`: histogram of number of changes processed in a single
   upload
** `type`:
   type of push (create/replace, autoclose)
* `receivecommits/latency_per_push`: processing delay for a processing single
  push
** `type`:
   type of push (create/replace, autoclose, normal)
* `receivecommits/latency_per_push_per_change`: Processing delay per push
  divided by the number of changes in said push. (Only includes pushes which
  contain changes.)
** `type`:
   type of push (create/replace, autoclose, normal)
* `receivecommits/timeout`: rate of push timeouts
* `receivecommits/ps_revision_missing`: errors due to patch set revision missing
* `receivecommits/push_count`: number of pushes
** `kind`:
   The push kind (direct vs. magic).
** `project`:
   The name of the project for which the push is done.
** `type`:
   The type of the update (CREATE, UPDATE, CREATE/UPDATE, UPDATE_NONFASTFORWARD,
   DELETE).

=== Process

* `proc/birth_timestamp`: Time at which the Gerrit process started.
* `proc/uptime`: Uptime of the Gerrit process.
* `proc/cpu/num_cores`: Number of processors available to the Java virtual machine.
* `proc/cpu/usage`: CPU time used by the Gerrit process.
* `proc/cpu/system_load`: System load average for the last minute.
* `proc/num_open_fds`: Number of open file descriptors.
* `proc/jvm/memory/heap_committed`: Amount of memory guaranteed for user objects.
* `proc/jvm/memory/heap_used`: Amount of memory holding user objects.
* `proc/jvm/memory/non_heap_committed`: Amount of memory guaranteed for classes,
etc.
* `proc/jvm/memory/non_heap_used`: Amount of memory holding classes, etc.
* `proc/jvm/memory/object_pending_finalization_count`: Approximate number of
objects needing finalization.
* `proc/jvm/gc/count`: Number of GCs.
** `gc_name`:
   The name of the garbage collector.
* `proc/jvm/gc/time`: Approximate accumulated GC elapsed time.
** `gc_name`:
   The name of the garbage collector.
* `proc/jvm/memory/pool/committed`: Committed amount of memory for pool.
** `pool_name`:
   The name of the memory pool.
* `proc/jvm/memory/pool/max`: Maximum amount of memory for pool.
** `pool_name`:
   The name of the memory pool.
* `proc/jvm/memory/pool/used`: Used amount of memory for pool.
** `pool_name`:
   The name of the memory pool.
* `proc/jvm/thread/num_live`: Current live thread count.
* `proc/jvm/thread/num_daemon_live`: Current live daemon threads count.
* `proc/jvm/thread/num_peak_live`: Peak live thread count since the Java virtual
  machine started or peak was reset.
* `proc/jvm/thread/num_total_started`: Total number of threads created and also
  started since the Java virtual machine started.
* `proc/jvm/thread/num_deadlocked_threads`: Number of threads that are
  deadlocked waiting for object monitors or ownable synchronizers.
  If deadlocks waiting for ownable synchronizers can be monitored depends on the
  capabilities of the used JVM.

=== Caches

* `caches/memory_cached`: Memory entries.
** `cache_name`:
   The name of the cache.
* `caches/memory_hit_ratio`: Memory hit ratio.
** `cache_name`:
   The name of the cache.
* `caches/memory_eviction_count`: Memory eviction count.
** `cache_name`:
   The name of the cache.
* `caches/disk_cached`: Disk entries used by persistent cache.
** `cache_name`:
   The name of the cache.
* `caches/disk_hit_ratio`: Disk hit ratio for persistent cache.
** `cache_name`:
   The name of the cache.
* `caches/refresh_count`: The number of refreshes per cache with an indicator if
  a reload was necessary.
** `cache`:
   The name of the cache.
** `outdated`:
   Whether the cache entry was outdated on reload.
* `caches/diff/timeouts`: The number of git file diff computations that resulted
  in timeouts.
* `caches/diff/legacy/timeouts`: The number of git file diff computations (using
  the legacy cache) that resulted in timeouts.

Cache disk metrics are expensive to compute on larger installations and are not
computed by default. They can be enabled via the
link:config.gerrit.html#cache.enableDiskStatMetrics[`cache.enableDiskStatMetrics`]
setting.

=== Change

* `change/submit_rule_evaluation`: Latency for evaluating submit rules on a
  change.
* `change/submit_type_evaluation`: Latency for evaluating the submit type on a
  change.
* `change/post_review/draft_handling`: Total number of draft handling option
  (KEEP, PUBLISH, PUBLISH_ALL_REVISIONS) selected by users while posting a
  review.
** `type`:
  The type of the draft handling option (KEEP, PUBLISH, PUBLISH_ALL_REVISIONS).

=== Comments

* `ported_comments/as_patchset_level`: Total number of comments ported as
  patchset-level comments.
* `ported_comments/as_file_level`: Total number of comments ported as file-level
  comments.
* `ported_comments/as_range_comments`: Total number of comments having
  line/range values in the ported patchset.

=== HTTP

==== Jetty

* `http/server/jetty/connections/connections`: The current number of open
  connections
* `http/server/jetty/connections/connections_total`: The total number of
  connections opened
* `http/server/jetty/connections/connections_duration_max`: The max duration of
  a connection in ms
* `http/server/jetty/connections/connections_duration_mean`: The mean duration
  of a connection in ms
* `http/server/jetty/connections/connections_duration_stdev`: The standard
  deviation of the duration of a connection in ms
* `http/server/jetty/connections/received_messages`: The total number of
  messages received
* `http/server/jetty/connections/sent_messages`: The total number of messages
  sent
* `http/server/jetty/connections/received_bytes`: Total number of bytes received
  by tracked connections
* `http/server/jetty/connections/sent_bytes`: Total number of bytes sent by
  tracked connections
* `http/server/jetty/threadpool/active_threads`: Active threads
* `http/server/jetty/threadpool/idle_threads`: Idle threads
* `http/server/jetty/threadpool/reserved_threads`: Reserved threads
* `http/server/jetty/threadpool/max_pool_size`: Maximum thread pool size
* `http/server/jetty/threadpool/min_pool_size`: Minimum thread pool size
* `http/server/jetty/threadpool/pool_size`: Current thread pool size
* `http/server/jetty/threadpool/queue_size`: Queued requests waiting for a
  thread
* `http/server/jetty/threadpool/is_low_on_threads`: Whether thread pool is low
  on threads

==== LDAP

* `ldap/login_latency`: Latency of logins.
* `ldap/user_search_latency`: Latency for searching the user account.
* `ldap/group_search_latency`: Latency for querying the group memberships of an
  account.
* `ldap/group_expansion_latency`: Latency for expanding nested groups.

==== REST API

* `http/server/error_count`: Rate of REST API error responses.
** `status`:
   HTTP status code
* `http/server/success_count`: Rate of REST API success responses.
** `status`:
   HTTP status code
* `http/server/rest_api/count`: Rate of REST API calls by view.
** `view`:
   view implementation class
* `http/server/rest_api/change_id_type`: Rate of REST API calls by change ID type.
** `change_id_type`:
   The type of the change identifier.
* `http/server/rest_api/error_count`: Rate of REST API calls by view.
** `view`:
   view implementation class
** `error_code`:
   HTTP status code
** `cause`:
   The cause of the error.
* `http/server/rest_api/server_latency`: REST API call latency by view.
** `view`:
   view implementation class
* `http/server/rest_api/response_bytes`: Size of REST API response on network
  (may be gzip compressed) by view.
** `view`:
   view implementation class
* `http/server/rest_api/change_json/to_change_info_latency`: Latency for
  toChangeInfo invocations in ChangeJson.
* `http/server/rest_api/change_json/to_change_infos_latency`: Latency for
  toChangeInfos invocations in ChangeJson.
* `http/server/rest_api/change_json/format_query_results_latency`: Latency for
  formatQueryResults invocations in ChangeJson.
* `http/server/rest_api/ui_actions/latency`: Latency for RestView#getDescription
  calls.
** `view`:
   view implementation class

=== Query

* `query/query_latency`: Successful query latency, accumulated over the life
  of the process.
** `index`: index name

=== Core Queues

The following queues support metrics:

* default `WorkQueue`
* index batch
* index interactive
* receive commits
* send email
* ssh batch worker
* ssh command start
* ssh interactive worker
* ssh stream worker

Each queue provides the following metrics:

* `queue/<queue_name>/pool_size`: Current number of threads in the pool
* `queue/<queue_name>/max_pool_size`: Maximum allowed number of threads in the
  pool
* `queue/<queue_name>/active_threads`: Number of threads that are actively
  executing tasks
* `queue/<queue_name>/scheduled_tasks`: Number of scheduled tasks in the queue
* `queue/<queue_name>/total_scheduled_tasks_count`: Total number of tasks that
  have been scheduled
* `queue/<queue_name>/total_completed_tasks_count`: Total number of tasks that
  have completed execution

=== SSH sessions

* `sshd/sessions/connected`: Number of currently connected SSH sessions.
* `sshd/sessions/created`: Rate of new SSH sessions.
* `sshd/sessions/authentication_failures`: Rate of SSH authentication failures.

=== Topics

* `topic/cross_project_submit`: number of cross-project topic submissions.
* `topic/cross_project_submit_completed`: number of cross-project
  topic submissions that concluded successfully.

=== JGit

* `jgit/block_cache/cache_used` : Bytes of memory retained in JGit block cache.
* `jgit/block_cache/open_files` : File handles held open by JGit block cache.
* `avg_load_time` : Average time to load a cache entry for JGit block cache.
* `total_load_time` : Total time to load cache entries for JGit block cache.
* `eviction_count` : Cache evictions for JGit block cache.
* `eviction_ratio` : Cache eviction ratio for JGit block cache.
* `hit_count` : Cache hits for JGit block cache.
* `hit_ratio` : Cache hit ratio for JGit block cache.
* `load_failure_count` : Failed cache loads for JGit block cache.
* `load_failure_ratio` : Failed cache load ratio for JGit block cache.
* `load_success_count` : Successful cache loads for JGit block cache.
* `miss_count` : Cache misses for JGit block cache.
* `miss_ratio` : Cache miss ratio for JGit block cache.
* `cache_used_per_repository` : Bytes of memory retained per repository for the
  top N repositories having most data in the cache. The number N of reported
  repositories is limited to 1000.
** `repository_name`: The name of the repository.

=== Git

* `git/upload-pack/request_count`: Total number of git-upload-pack requests.
** `operation`:
   The name of the operation (CLONE, FETCH).
* `git/upload-pack/phase_counting`: Time spent in the 'Counting...' phase.
** `operation`:
   The name of the operation (CLONE, FETCH).
* `git/upload-pack/phase_compressing`: Time spent in the 'Compressing...' phase.
** `operation`:
   The name of the operation (CLONE, FETCH).
* `git/upload-pack/phase_writing`: Time spent transferring bytes to client.
** `operation`:
   The name of the operation (CLONE, FETCH).
* `git/upload-pack/pack_bytes`: Distribution of sizes of packs sent to clients.
** `operation`:
   The name of the operation (CLONE, FETCH).
* `git/auto-merge/num_operations`: Number of auto merge operations and context.
** `operation`:
   The type of the operation (CACHE_LOAD, IN_MEMORY_WRITE, ON_DISK_WRITE).
* `git/auto-merge/latency`: Latency of auto merge operations and context.
** `operation`:
   The type of the operation (CACHE_LOAD, IN_MEMORY_WRITE, ON_DISK_WRITE).

=== NoteDb

* `notedb/update_latency`: NoteDb update latency for changes.
* `notedb/stage_update_latency`: Latency for staging change updates to NoteDb.
* `notedb/read_latency`: NoteDb read latency for changes.
* `notedb/parse_latency`: NoteDb parse latency for changes.
* `notedb/external_id_cache_load_count`: Total number of times the external ID
  cache loader was called.
** `partial`:
   Whether the reload was partial.
* `notedb/external_id_partial_read_latency`: Latency for generating a new
  external ID cache state from a prior state.
* `notedb/external_id_update_count`: Total number of external ID updates.
* `notedb/read_all_external_ids_latency`: Latency for reading all
  external ID's from NoteDb.
* `notedb/read_single_account_config_latency`: Latency for reading a single
  account config from NoteDb.
* `notedb/read_single_external_id_latency`: Latency for reading a single
  external ID from NoteDb.

=== Permissions

* `permissions/permission_collection/filter_latency`: Latency for access filter
  computations in PermissionCollection
* `permissions/ref_filter/full_filter_count`: Rate of full ref filter operations
* `permissions/ref_filter/skip_filter_count`: Rate of ref filter operations
  where we skip full evaluation because the user can read all refs

=== Reviewer Suggestion

* `reviewer_suggestion/query_accounts`: Latency for querying accounts for
  reviewer suggestion.
* `reviewer_suggestion/recommend_accounts`: Latency for recommending accounts
  for reviewer suggestion.
* `reviewer_suggestion/load_accounts`: Latency for loading accounts for
  reviewer suggestion.
* `reviewer_suggestion/query_groups`: Latency for querying groups for reviewer
  suggestion.
* `reviewer_suggestion/filter_visibility`: Latency for removing users that can't
  see the change

=== Repo Sequences

* `sequence/next_id_latency`: Latency of requesting IDs from repo sequences.
** `sequence`:
   The sequence from which IDs were retrieved.
** `multiple`:
   Whether more than one ID was retrieved.

=== Plugin

* `plugin/latency`: Latency for plugin invocation.
** `plugin_name`"
   The name of the plugin.
** `class`:
   The class of the plugin that was invoked.
** `export_value`:
   The export name under which the invoked class is registered.
* `plugin/error_count`: Number of plugin errors.
** `plugin_name`"
   The name of the plugin.
** `class`:
   The class of the plugin that was invoked.
** `export_value`:
   The export name under which the invoked class is registered.

=== Group

* `group/guess_relevant_groups_latency`: Latency for guessing relevant groups.

=== Replication Plugin

* `plugins/replication/replication_latency`: Time spent pushing to remote
  destination.
** `destination`: The destination of the replication.
* `plugins/replication/replication_delay`: Time spent waiting before pushing to
  remote destination.
** `destination`: The destination of the replication.
* `plugins/replication/replication_retries`: Number of retries when pushing to
  remote destination.
** `destination`: The destination of the replication.
* `plugins/replication/latency_slower_than_threshold`: latency for project to
  destination, where latency was slower than threshold
** `slow_threshold`: The threshold.
** `project`: The name of the project.
** `destination`: The destination of the replication.

=== License

* `license/cla_check_count`: Total number of CLA check requests.

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
