Skip to content

Commit

Permalink
Update documentation generator
Browse files Browse the repository at this point in the history
This commit bumps machadovilaca/operator-observability to v0.0.12
because the registration of client metrics occurs in all
components, and in the documentation tooling it causes a
duplicated metric registration error. The new package version
has a method to clean metrics registry after listing the
metrics for each component when generating the docs.

Signed-off-by: João Vilaça <jvilaca@redhat.com>
  • Loading branch information
machadovilaca committed Feb 14, 2024
1 parent 3a9fc1f commit 8586dd1
Show file tree
Hide file tree
Showing 11 changed files with 219 additions and 44 deletions.
9 changes: 9 additions & 0 deletions docs/metrics.md
Expand Up @@ -267,6 +267,15 @@ Returns the labels of the persistent volume claims that are used for restoring v
### kubevirt_vnc_active_connections
Amount of active VNC connections, broken down by namespace and vmi name. Type: Gauge.

### rest_client_rate_limiter_duration_seconds
Client side rate limiter latency in seconds. Broken down by verb and URL. Type: Histogram.

### rest_client_request_latency_seconds
Request latency in seconds. Broken down by verb and URL. Type: Histogram.

### rest_client_requests_total
Number of HTTP requests, partitioned by status code, method, and host. Type: Counter.

## Developing new metrics
After developing new metrics or changing old ones, please run `make generate` to regenerate this document.

Expand Down
2 changes: 1 addition & 1 deletion go.mod
Expand Up @@ -32,7 +32,7 @@ require (
github.com/krolaw/dhcp4 v0.0.0-20180925202202-7cead472c414
github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0
github.com/kubevirt/monitoring/pkg/metrics/parser v0.0.0-20230627123556-81a891d4462a
github.com/machadovilaca/operator-observability v0.0.9
github.com/machadovilaca/operator-observability v0.0.13
github.com/mdlayher/vsock v1.2.1
github.com/mitchellh/go-ps v0.0.0-20190716172923-621e5597135b
github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Expand Up @@ -581,8 +581,8 @@ github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0 h1:nHHjmvjitIiyP
github.com/kubernetes-csi/external-snapshotter/client/v4 v4.2.0/go.mod h1:YBCo4DoEeDndqvAn6eeu0vWM7QdXmHEeI9cFWplmBys=
github.com/kubevirt/monitoring/pkg/metrics/parser v0.0.0-20230627123556-81a891d4462a h1:cdX+oxWw1lJDS3EchP+7Oz1XbErk4r7ffVJu1b1MKgI=
github.com/kubevirt/monitoring/pkg/metrics/parser v0.0.0-20230627123556-81a891d4462a/go.mod h1:qGj2agzgwQ27nYhP3xhLs+IBzE5+ALNUg8bDfMcwPqo=
github.com/machadovilaca/operator-observability v0.0.9 h1:jL2jVh0YJNA3nSX216X74RDZiEPPvsgqXollYmMOQkg=
github.com/machadovilaca/operator-observability v0.0.9/go.mod h1:NGkaR3HEYLScVQf6kQAyxWOSN1ltHcsEvHU/8iIJ8cE=
github.com/machadovilaca/operator-observability v0.0.13 h1:9mhxEjkdE6pcl3ke8chbbAWxx25+K1m4Gq31yo+r2JU=
github.com/machadovilaca/operator-observability v0.0.13/go.mod h1:e4Z3VhOXb9InkmSh00JjqBBijE+iD+YMzynBpKB3+gE=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
Expand Down
1 change: 1 addition & 0 deletions tools/doc-generator/BUILD.bazel
Expand Up @@ -12,6 +12,7 @@ go_library(
"//pkg/monitoring/domainstats/prometheus:go_default_library",
"//pkg/monitoring/metrics/virt-api:go_default_library",
"//pkg/monitoring/metrics/virt-controller:go_default_library",
"//pkg/monitoring/metrics/virt-handler:go_default_library",
"//pkg/monitoring/metrics/virt-operator:go_default_library",
"//pkg/monitoring/rules:go_default_library",
"//pkg/virt-controller/watch:go_default_library",
Expand Down
49 changes: 31 additions & 18 deletions tools/doc-generator/doc-generator.go
Expand Up @@ -15,6 +15,7 @@ import (
domainstats "kubevirt.io/kubevirt/pkg/monitoring/domainstats/prometheus" // import for prometheus metrics
virt_api "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-api"
virt_controller "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-controller"
virt_handler "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-handler"
virt_operator "kubevirt.io/kubevirt/pkg/monitoring/metrics/virt-operator"
"kubevirt.io/kubevirt/pkg/monitoring/rules"
_ "kubevirt.io/kubevirt/pkg/virt-controller/watch"
Expand Down Expand Up @@ -152,25 +153,12 @@ func getMetricsNotIncludeInEndpointByDefault() metricList {
},
}

err := virt_controller.SetupMetrics(nil, nil, nil, nil, nil, nil, nil, nil)
checkError(err)
for _, m := range virt_controller.ListMetrics() {
metrics = append(metrics, newMetric(m))
}

err = virt_api.SetupMetrics()
checkError(err)
for _, m := range virt_api.ListMetrics() {
metrics = append(metrics, newMetric(m))
}
metrics = append(metrics, getVirtControllerMetrics()...)
metrics = append(metrics, getComponentMetrics(virt_api.SetupMetrics, virt_api.ListMetrics)...)
metrics = append(metrics, getComponentMetrics(virt_operator.SetupMetrics, virt_operator.ListMetrics)...)
metrics = append(metrics, getComponentMetrics(virt_handler.SetupMetrics, virt_handler.ListMetrics)...)

err = virt_operator.SetupMetrics()
checkError(err)
for _, m := range virt_operator.ListMetrics() {
metrics = append(metrics, newMetric(m))
}

err = rules.SetupRules("")
err := rules.SetupRules("")
checkError(err)

for _, rule := range rules.ListRecordingRules() {
Expand All @@ -184,6 +172,31 @@ func getMetricsNotIncludeInEndpointByDefault() metricList {
return metrics
}

func getVirtControllerMetrics() metricList {
err := virt_controller.SetupMetrics(nil, nil, nil, nil, nil, nil, nil, nil)
checkError(err)
return listComponentMetrics(virt_controller.ListMetrics)
}

func getComponentMetrics(setup func() error, list func() []operatormetrics.Metric) metricList {
err := setup()
checkError(err)
return listComponentMetrics(list)
}

func listComponentMetrics(list func() []operatormetrics.Metric) metricList {
metrics := metricList{}

for _, m := range list() {
metrics = append(metrics, newMetric(m))
}

err := operatormetrics.CleanRegistry()
checkError(err)

return metrics
}

func newMetric(om operatormetrics.Metric) metric {
return metric{
name: om.GetOpts().Name,
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 8586dd1

Please sign in to comment.