master
go 123 lines 4.06 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package clickhouse
4
5 import (
6 "errors"
7 "strconv"
8
9 "github.com/netdata/netdata/go/plugins/pkg/web"
10 )
11
12 const querySystemEvents = `
13 SELECT
14 event,
15 value
16 FROM
17 system.events FORMAT CSVWithNames
18 `
19
20 func (c *Collector) collectSystemEvents(mx map[string]int64) error {
21 req, err := web.NewHTTPRequest(c.RequestConfig)
22 if err != nil {
23 return err
24 }
25 req.URL.RawQuery = makeURLQuery(querySystemEvents)
26
27 px := "events_"
28 var event string
29 var n int
30
31 err = c.doHTTP(req, func(column, value string, lineEnd bool) {
32 switch column {
33 case "event":
34 event = value
35 case "value":
36 if !wantSystemEvents[event] {
37 return
38 }
39 n++
40 if v, err := strconv.ParseInt(value, 10, 64); err == nil {
41 mx[px+event] = v
42 }
43 }
44 })
45 if err != nil {
46 return err
47 }
48 if n == 0 {
49 return errors.New("no system events data returned")
50 }
51
52 // CH doesn't expose events with 0 values
53 for k := range wantSystemEvents {
54 k = px + k
55 if _, ok := mx[k]; !ok {
56 mx[k] = 0
57 }
58 }
59
60 mx["events_SuccessfulQuery"] = mx["events_Query"] - mx["events_FailedQuery"]
61 mx["events_SuccessfulSelectQuery"] = mx["events_SelectQuery"] - mx["events_FailedSelectQuery"]
62 mx["events_SuccessfulInsertQuery"] = mx["events_InsertQuery"] - mx["events_FailedInsertQuery"]
63
64 return nil
65 }
66
67 var wantSystemEvents = map[string]bool{
68 "SlowRead": true,
69 "ReadBackoff": true,
70 "Query": true,
71 "FailedQuery": true,
72 "QueryTimeMicroseconds": true,
73 "SelectQuery": true,
74 "FailedSelectQuery": true,
75 "SelectQueryTimeMicroseconds": true,
76 "InsertQuery": true,
77 "FailedInsertQuery": true,
78 "InsertQueryTimeMicroseconds": true,
79 "QueryPreempted": true,
80 "QueryMemoryLimitExceeded": true,
81 "InsertedRows": true,
82 "InsertedBytes": true,
83 "DelayedInserts": true,
84 "DelayedInsertsMilliseconds": true,
85 "RejectedInserts": true,
86 "SelectedRows": true,
87 "SelectedBytes": true,
88 "SelectedParts": true,
89 "SelectedRanges": true,
90 "SelectedMarks": true,
91 "Merge": true,
92 "MergedRows": true,
93 "MergedUncompressedBytes": true,
94 "MergesTimeMilliseconds": true,
95 "MergeTreeDataWriterRows": true,
96 "MergeTreeDataWriterUncompressedBytes": true,
97 "MergeTreeDataWriterCompressedBytes": true,
98 "UncompressedCacheHits": true,
99 "UncompressedCacheMisses": true,
100 "MarkCacheHits": true,
101 "MarkCacheMisses": true,
102 "Seek": true,
103 "FileOpen": true,
104 "ReadBufferFromFileDescriptorReadBytes": true,
105 "WriteBufferFromFileDescriptorWriteBytes": true,
106 "ReadBufferFromFileDescriptorRead": true,
107 "WriteBufferFromFileDescriptorWrite": true,
108 "ReadBufferFromFileDescriptorReadFailed": true,
109 "WriteBufferFromFileDescriptorWriteFailed": true,
110 "DistributedConnectionTries": true,
111 "DistributedConnectionFailTry": true,
112 "DistributedConnectionFailAtAll": true,
113 "DistributedRejectedInserts": true,
114 "DistributedDelayedInserts": true,
115 "DistributedDelayedInsertsMilliseconds": true,
116 "DistributedSyncInsertionTimeoutExceeded": true,
117 "DistributedAsyncInsertionFailures": true,
118 "ReplicatedDataLoss": true,
119 "ReplicatedPartFetches": true,
120 "ReplicatedPartFailedFetches": true,
121 "ReplicatedPartMerges": true,
122 "ReplicatedPartFetchesOfMerged": true,
123 }