Commit 4ba3a864 authored by Piotr Skorupa's avatar Piotr Skorupa

Update metric instrumentation docs

parent f400e279
...@@ -11,7 +11,7 @@ This guide describes how to develop Service Ping metrics using metrics instrumen ...@@ -11,7 +11,7 @@ This guide describes how to develop Service Ping metrics using metrics instrumen
## Nomenclature ## Nomenclature
- **Instrumentation class**: - **Instrumentation class**:
- Inherits one of the metric classes: `DatabaseMetric`, `RedisHLLMetric` or `GenericMetric`. - Inherits one of the metric classes: `DatabaseMetric`, `RedisMetric`, `RedisHLLMetric` or `GenericMetric`.
- Implements the logic that calculates the value for a Service Ping metric. - Implements the logic that calculates the value for a Service Ping metric.
- **Metric definition** - **Metric definition**
...@@ -24,7 +24,7 @@ This guide describes how to develop Service Ping metrics using metrics instrumen ...@@ -24,7 +24,7 @@ This guide describes how to develop Service Ping metrics using metrics instrumen
A metric definition has the [`instrumentation_class`](metrics_dictionary.md) field, which can be set to a class. A metric definition has the [`instrumentation_class`](metrics_dictionary.md) field, which can be set to a class.
The defined instrumentation class should have one of the existing metric classes: `DatabaseMetric`, `RedisHLLMetric`, or `GenericMetric`. The defined instrumentation class should have one of the existing metric classes: `DatabaseMetric`, `RedisMetric`, `RedisHLLMetric`, or `GenericMetric`.
Using the instrumentation classes ensures that metrics can fail safe individually, without breaking the entire Using the instrumentation classes ensures that metrics can fail safe individually, without breaking the entire
process of Service Ping generation. process of Service Ping generation.
...@@ -50,6 +50,20 @@ module Gitlab ...@@ -50,6 +50,20 @@ module Gitlab
end end
end end
``` ```
## Redis metrics
[Example of a merge request that adds a `Redis` metric](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66582).
Count unique values for `source_code_pushes` event.
```yaml
time_frame: all
data_source: redis
instrumentation_class: 'RedisMetric'
options:
event: pushes
counter_class: SourceCodeCounter
```
## Redis HyperLogLog metrics ## Redis HyperLogLog metrics
...@@ -60,7 +74,7 @@ Count unique values for `i_quickactions_approve` event. ...@@ -60,7 +74,7 @@ Count unique values for `i_quickactions_approve` event.
```yaml ```yaml
time_frame: 28d time_frame: 28d
data_source: redis_hll data_source: redis_hll
instrumentation_class: 'Gitlab::Usage::Metrics::Instrumentations::RedisHLLMetric' instrumentation_class: 'RedisHLLMetric'
options: options:
events: events:
- i_quickactions_approve - i_quickactions_approve
...@@ -91,13 +105,13 @@ end ...@@ -91,13 +105,13 @@ end
There is support for: There is support for:
- `count`, `distinct_count` for [database metrics](#database-metrics). - `count`, `distinct_count` for [database metrics](#database-metrics).
- [Redis metrics](#redis-metrics).
- [Redis HLL metrics](#redis-hyperloglog-metrics). - [Redis HLL metrics](#redis-hyperloglog-metrics).
- [Generic metrics](#generic-metrics), which are metrics based on settings or configurations. - [Generic metrics](#generic-metrics), which are metrics based on settings or configurations.
Currently, there is no support for: Currently, there is no support for:
- `add`, `sum`, `histogram`, `estimate_batch_distinct_count` for database metrics. - `add`, `sum`, `histogram`, `estimate_batch_distinct_count` for database metrics.
- Regular Redis counters.
You can [track the progress to support these](https://gitlab.com/groups/gitlab-org/-/epics/6118). You can [track the progress to support these](https://gitlab.com/groups/gitlab-org/-/epics/6118).
...@@ -107,7 +121,7 @@ To create a stub instrumentation for a Service Ping metric, you can use a dedica ...@@ -107,7 +121,7 @@ To create a stub instrumentation for a Service Ping metric, you can use a dedica
The generator takes the class name as an argument and the following options: The generator takes the class name as an argument and the following options:
- `--type=TYPE` Required. Indicates the metric type. It must be one of: `database`, `generic`. - `--type=TYPE` Required. Indicates the metric type. It must be one of: `database`, `generic`, `redis`.
- `--operation` Required for `database` type. It must be one of: `count`, `distinct_count`. - `--operation` Required for `database` type. It must be one of: `count`, `distinct_count`.
- `--ee` Indicates if the metric is for EE. - `--ee` Indicates if the metric is for EE.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment