Document metrics

Change-Id: Iebf3b09b99b0d6bb62c7570c860fe0a1b4025e30
diff --git a/src/main/resources/Documentation/metrics.md b/src/main/resources/Documentation/metrics.md
new file mode 100644
index 0000000..d957574
--- /dev/null
+++ b/src/main/resources/Documentation/metrics.md
@@ -0,0 +1,90 @@
+Metrics
+=======
+
+The @PLUGIN@ plugin reports the status of its internal components
+to Gerrit metric system.
+
+The metrics are all prefixed with @PLUGIN@ and then divided in groups,
+depending on the component involved.
+
+### plugins/@PLUGIN@/events
+
+This prefix represents the component involved in the processing of incoming
+ref-update events from Gerrit or other event-broker sources.
+
+- `queued_before_startup` Counter of the number of events that have been received
+  when the plugin was still in its starting phase and not ready yet to process events.
+
+### plugins/@PLUGIN@/tasks/<metric>/<source>
+
+This prefix represents the tasks scheduling and execution system, also
+known as _replication queue_. The replication task represents one operation
+performed against a Git repository from a remote source. The task may involve
+one or more refs.
+
+The `<metric>` field can have one of the values described here below,
+while the `<source>` represent the replication source endpoint.
+
+> Bear in mind that the _replication queue_ is a lot more than a simple
+> queueing system, as it contains the logic for selecting, merging, retrying
+> and cancelling incoming tasks.
+
+- `scheduled`: (counter) number of tasks triggered and scheduled for
+  execution.
+
+- `started`: (counter) number of tasks started.
+
+- `rescheduled`: (counter) number of tasks re-scheduled for execution.
+
+- `cancelled`: (counter) number of tasks that were previously scheduled
+  and then cancelled before being executed.
+
+- `failed`: (counter) number of tasks executed but failed altogether or
+  partially. A total failure is when the entire operation returned an
+  error and none of the operations took place; a partial failure is when
+  some of the operations in the tasks succeeded but other failed.
+
+- `retrying`: (counter) number of tasks being retired for execution.
+
+- `not_scheduled`: (counter) number of tasks which have been discarded before
+  being executed, because redundant (duplicate of existing scheduled tasks)
+  or not needed anymore (e.g. ref updated already by other means or other
+  checks)
+
+- `completed`: (counter) number of tasks completed successfully.
+
+- `merged`: (counter) number of tasks not being executed because they had
+  been consolidated with an existing scheduled task.
+
+- `max_retries`: (counter) number of tasks that have reached their maximum
+  retry count but never succeeded.
+
+### plugins/@PLUGIN@
+
+- `apply_object_latency`: (timer) execution time statistics for the
+  synchronous replication using the _apply-object_ REST-API.
+
+- `apply_object_end_2_end_latency`: (timer) execution time statistics
+  for the end-2-end replication from when the event is triggered in
+  Gerrit until the successful execution of the synchronous replication
+  using the _apply-object_ REST-API.
+
+- `apply_object_max_api_payload_reached`: (counter) number of times that
+  the apply-object REST-API did fallback to the fetch REST-API because
+  it reached its maximum payload to transfer.
+
+- `replication_latency`: (timer) execution time statistics for the
+  synchronous replication using a _git fetch_.
+
+- `replication_end_2_end_latency`: (timer) execution time statistics
+  for the end-2-end replication from when the event is triggered in
+  Gerrit until the successful execution of the _git fetch_ for the
+  associated refs.
+
+- `replication_delay`: (timer) interval from when the ref-update event
+  is triggered to the start of the _git fetch_ command.
+
+- `replication_retries`: (counter) number of times that a replication task
+  has been retried.
+
+