go.d rethinkdb fix cluster_servers_stats_request (#18289)
Ilya Mashchenko committed
Aug 9, 2024 at 12:53 UTC
3e9adb8b19dba6865767e630bf169ac3563e285d
4 files changed
+35
-10
src/go/plugin/go.d/agent/module/charts.go
+16
@@ -479,3 +479,19 @@ func TestMetricsHasAllChartsDims(t *testing.T, charts *Charts, mx map[string]int
479
}
480
}
481
}
482
+
483
+func TestMetricsHasAllChartsDimsSkip(t *testing.T, charts *Charts, mx map[string]int64, skip func(chart *Chart) bool) {
484
+ for _, chart := range *charts {
485
+ if chart.Obsolete || (skip != nil && skip(chart)) {
486
+ continue
487
+ }
488
+ for _, dim := range chart.Dims {
489
+ _, ok := mx[dim.ID]
490
+ assert.Truef(t, ok, "missing data for dimension '%s' in chart '%s'", dim.ID, chart.ID)
491
+ }
492
+ for _, v := range chart.Vars {
493
+ _, ok := mx[v.ID]
494
+ assert.Truef(t, ok, "missing data for variable '%s' in chart '%s'", v.ID, chart.ID)
495
+ }
496
+ }
497
+}
src/go/plugin/go.d/modules/rethinkdb/collect.go
+1
-1
@@ -99,7 +99,7 @@ func (r *Rethinkdb) collectStats(mx map[string]int64) error {
99
mx[px+"stats_request_status_success"] = 0
100
mx[px+"stats_request_status_timeout"] = 0
101
if srv.Error != "" {
102
- mx["cluster_servers_stats_request_timed_out"]++
102
+ mx["cluster_servers_stats_request_timeout"]++
103
mx[px+"stats_request_status_timeout"] = 1
104
continue
105
}
src/go/plugin/go.d/modules/rethinkdb/rethinkdb_test.go
+17
-9
@@ -7,6 +7,7 @@ import (
7
"errors"
8
"fmt"
9
"os"
10
+ "strings"
11
"testing"
12
13
"github.com/netdata/netdata/go/plugins/plugin/go.d/agent/module"
@@ -153,18 +154,25 @@ func TestRethinkdb_Collect(t *testing.T) {
154
prepare func() *Rethinkdb
155
wantMetrics map[string]int64
156
wantCharts int
157
+ skipChart func(chart *module.Chart) bool
158
}{
159
"success on valid response": {
160
prepare: prepareCaseOk,
159
- wantCharts: len(clusterCharts) + len(serverChartsTmpl)*2,
161
+ wantCharts: len(clusterCharts) + len(serverChartsTmpl)*3,
162
+ skipChart: func(chart *module.Chart) bool {
163
+ return strings.HasPrefix(chart.ID, "server_0f74c641-af5f-48d6-a005-35b8983c576a") &&
164
+ !strings.Contains(chart.ID, "stats_request_status")
165
+ },
166
wantMetrics: map[string]int64{
161
- "cluster_client_connections": 3,
162
- "cluster_clients_active": 3,
163
- "cluster_queries_total": 27,
164
- "cluster_read_docs_total": 3,
165
- "cluster_servers_stats_request_success": 2,
166
- "cluster_servers_stats_request_timeout": 0,
167
- "cluster_written_docs_total": 3,
167
+ "cluster_client_connections": 3,
168
+ "cluster_clients_active": 3,
169
+ "cluster_queries_total": 27,
170
+ "cluster_read_docs_total": 3,
171
+ "cluster_servers_stats_request_success": 2,
172
+ "cluster_servers_stats_request_timeout": 1,
173
+ "cluster_written_docs_total": 3,
174
+ "server_0f74c641-af5f-48d6-a005-35b8983c576a_stats_request_status_success": 0,
175
+ "server_0f74c641-af5f-48d6-a005-35b8983c576a_stats_request_status_timeout": 1,
176
"server_b7730db2-4303-4719-aef8-2a3c339c672b_client_connections": 1,
177
"server_b7730db2-4303-4719-aef8-2a3c339c672b_clients_active": 1,
178
"server_b7730db2-4303-4719-aef8-2a3c339c672b_queries_total": 13,
@@ -204,7 +212,7 @@ func TestRethinkdb_Collect(t *testing.T) {
212
assert.Equal(t, test.wantCharts, len(*rdb.Charts()))
213
214
if len(test.wantMetrics) > 0 {
207
- module.TestMetricsHasAllChartsDims(t, rdb.Charts(), mx)
215
+ module.TestMetricsHasAllChartsDimsSkip(t, rdb.Charts(), mx, test.skipChart)
216
}
217
218
if m, ok := rdb.rdb.(*mockRethinkdbConn); ok {
src/go/plugin/go.d/modules/rethinkdb/testdata/v2.4.4/stats.txt
+1
@@ -1,3 +1,4 @@
1
{"id":["cluster"],"query_engine":{"client_connections":1,"clients_active":1,"queries_per_sec":1,"read_docs_per_sec":0,"written_docs_per_sec":0}}
2
{"id":["server","b7730db2-4303-4719-aef8-2a3c339c672b"],"query_engine":{"client_connections":1,"clients_active":1,"queries_per_sec":1,"queries_total":13,"read_docs_per_sec":0,"read_docs_total":1,"written_docs_per_sec":0,"written_docs_total":1},"server":"some_hostname_182"}
3
{"id":["server","f325e3c3-22d9-4005-b4b2-1f561d384edc"],"query_engine":{"client_connections":2,"clients_active":2,"queries_per_sec":1,"queries_total":14,"read_docs_per_sec":0,"read_docs_total":2,"written_docs_per_sec":0,"written_docs_total":2},"server":"pve_deb_work_183"}
4
+{"id":["server","0f74c641-af5f-48d6-a005-35b8983c576a"],"server":"pve_deb_work_184","error":"Timed out. Unable to retrieve stats."}