@cryptotaxi247 / netdata-1 / commits / 3e9adb8b1

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."}