# Source: https://docs.hypermode.com/dgraph/admin/metrics.md

# Metrics

> Dgraph database helps administrators by providing metrics on Dgraph instance activity, disk activity, server node health, memory, and Raft leadership

<Info>
  We're overhauling Dgraph's docs to make them clearer and more approachable. If
  you notice any issues during this transition or have suggestions, please
  [let us know](https://github.com/hypermodeinc/docs/issues).
</Info>

Dgraph database provides metrics on Dgraph instance activity, disk activity,
server node health, memory, and Raft leadership. It also provides built-in
metrics provided by Go. Dgraph metrics follow the
[metric and label conventions for the Prometheus](https://prometheus.io/docs/practices/naming/)
monitoring and alerting toolkit.

## Activity metrics

Activity metrics let you track the mutations, queries, and proposals of a Dgraph
instance.

| Metric                                             | Description                                             |
| -------------------------------------------------- | ------------------------------------------------------- |
| `go_goroutines`                                    | Total number of goroutines currently running in Dgraph. |
| `dgraph_active_mutations_total`                    | Total number of mutations currently running.            |
| `dgraph_pending_proposals_total`                   | Total pending Raft proposals.                           |
| `dgraph_pending_queries_total`                     | Total number of queries in progress.                    |
| `dgraph_num_queries_total{method="Server.Mutate"}` | Total number of mutations run in Dgraph.                |
| `dgraph_num_queries_total{method="Server.Query"}`  | Total number of queries run in Dgraph.                  |

## Disk metrics

Disk metrics let you track the disk activity of the Dgraph process. Dgraph does
not interact directly with the filesystem. Instead it relies on
[Badger](https://github.com/hypermodeinc/badger) to read from and write to disk.

| Metric                              | Description                                                |
| ----------------------------------- | ---------------------------------------------------------- |
| `badger_read_num_vlog`              | Total count of reads by badger in vlog                     |
| `badger_write_num_vlog`             | Total count of writes by Badger in vlog                    |
| `badger_read_bytes_vlog`            | Total bytes read by Badger                                 |
| `badger_write_bytes_vlog`           | Total bytes written by Badger                              |
| `badger_read_bytes_lsm`             | Total bytes read by Badger                                 |
| `badger_write_bytes_l0`             | Total bytes written by Badger                              |
| `badger_write_bytes_compaction`     | Total bytes written by Badger                              |
| `badger_get_num_lsm`                | Total count of LSM gets                                    |
| `badger_get_num_memtable`           | Total count of LSM gets from memtable                      |
| `badger_hit_num_lsm_bloom_filter`   | Total count of LSM bloom hits                              |
| `badger_get_num_user`               | Total count of calls to Badger's `get`                     |
| `badger_put_num_user`               | Total count of calls to Badger's `put`                     |
| `badger_write_bytes_user`           | Total bytes written by user                                |
| `badger_get_with_result_num_user`   | Total count of calls to Badger's `get` that returned value |
| `badger_iterator_num_user`          | Total count of iterators made in badger                    |
| `badger_size_bytes_lsm`             | Size of the LSM in bytes                                   |
| `badger_size_bytes_vlog`            | Size of the value log in bytes                             |
| `badger_write_pending_num_memtable` | Total count of pending writes                              |
| `badger_compaction_current_num_lsm` | Number of tables being actively compacted                  |

In versions prior to v23.1, the disk metrics were:

| Metric                        | Description                                  |
| ----------------------------- | -------------------------------------------- |
| `badger_disk_reads_total`     | Total count of disk reads in Badger          |
| `badger_disk_writes_total`    | Total count of disk writes in Badger         |
| `badger_gets_total`           | Total count of calls to Badger's `get`       |
| `badger_memtable_gets_total`  | Total count of memtable accesses to Badger's |
| `get`. `badger_puts_total`    | Total count of calls to Badger's `put`       |
| `badger_read_bytes`           | Total bytes read from Badger                 |
| `badger_lsm_bloom_hits_total` | Total number of LSM tree bloom hits          |
| `badger_written_bytes`        | Total bytes written to Badger                |
| `badger_lsm_size_bytes`       | Total size in bytes of the LSM tree          |
| `badger_vlog_size_bytes`      | Total size in bytes of the value log         |

## Go metrics

Go's built-in metrics may also be useful to measure memory usage and garbage
collection time.

| Metric                         | Description                                                                                 |
| ------------------------------ | ------------------------------------------------------------------------------------------- |
| `go_memstats_gc_cpu_fraction`  | The fraction of this program's available CPU time used by the GC since the program started. |
| `go_memstats_heap_idle_bytes`  | Number of heap bytes waiting to be used.                                                    |
| `go_memstats_heap_inuse_bytes` | Number of heap bytes that are in use.                                                       |

## Health metrics

Health metrics let you check the health of a server node.

<Note>Health metrics are only available for Dgraph Alpha server nodes.</Note>

| Metric                       | Description                                                                                                                                                                                                                             |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dgraph_alpha_health_status` | Value is 1 when the Alpha node is ready to accept requests; otherwise 0.                                                                                                                                                                |
| `dgraph_max_assigned_ts`     | Latest max assigned timestamp–all Alpha nodes within the same Alpha group should show the same timestamp if they're in sync                                                                                                             |
| `dgraph_txn_aborts_total`    | Shows the total number of server-initiated transaction aborts that have occurred on the Alpha node.                                                                                                                                     |
| `dgraph_txn_commits_total`   | Shows the total number of successful commits that have occurred on the Alpha node.                                                                                                                                                      |
| `dgraph_txn_discards_total`  | Shows the total number of client-initiated transaction discards that have occurred on the Alpha node. This is incremented when the client calls for a transaction discard, such as using the Dgraph Go client's `txn.Discard` function. |

## Memory metrics

Memory metrics let you track the memory usage of the Dgraph process. The `idle`
and `inuse` metrics give you a better sense of the active memory usage of the
Dgraph process. The process memory metric shows the memory usage as measured by
the operating system.

By looking at all three metrics you can see how much memory a Dgraph process is
holding from the operating system and how much is actively in use.

| Metric                      | Description                                                                                |
| --------------------------- | ------------------------------------------------------------------------------------------ |
| `dgraph_memory_idle_bytes`  | Estimated amount of memory held idle that could be reclaimed by the OS                     |
| `dgraph_memory_inuse_bytes` | Total memory usage in bytes (sum of heap usage and stack usage)                            |
| `dgraph_memory_proc_bytes`  | Total memory usage in bytes of the Dgraph process–equivalent to resident set size on Linux |

## Raft leadership metrics

Raft leadership metrics let you track changes in Raft leadership for Dgraph
Alpha and Dgraph Zero nodes in your Cluster. These metrics include a group label
along with the node name, so that you can determine which metrics apply to which
Raft groups.

| Metric                             | Description                                                       |
| ---------------------------------- | ----------------------------------------------------------------- |
| `dgraph_raft_has_leader`           | Value is 1 when the node has a leader; otherwise 0.               |
| `dgraph_raft_is_leader`            | Value is 1 when the node is the leader of its group; otherwise 0. |
| `dgraph_raft_leader_changes_total` | The total number of leader changes seen by this node.             |