Skip to content

Commit 7289134

Browse files
Edgar Ochoaemosbaugh
andauthored
Add Mysql variables to collector (#562)
* Add Mysql variables to collector * Cleanup row scanning and a few updates based on feedback * Close db connection * Move defer db.close * Updates based on feedback * Use vars in loop instead of struct * Only pull parameters specified in collector config Co-authored-by: Ethan Mosbaugh <[email protected]>
1 parent 63362d3 commit 7289134

File tree

3 files changed

+40
-4
lines changed

3 files changed

+40
-4
lines changed

pkg/apis/troubleshoot/v1beta2/collector_shared.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@ type Put struct {
156156

157157
type Database struct {
158158
CollectorMeta `json:",inline" yaml:",inline"`
159-
URI string `json:"uri" yaml:"uri"`
159+
URI string `json:"uri" yaml:"uri"`
160+
Parameters []string `json:"parameters,omitempty"`
160161
}
161162

162163
type Collectd struct {

pkg/collect/database_shared.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package collect
22

33
type DatabaseConnection struct {
4-
IsConnected bool `json:"isConnected"`
5-
Error string `json:"error,omitempty"`
6-
Version string `json:"version,omitempty"`
4+
IsConnected bool `json:"isConnected"`
5+
Error string `json:"error,omitempty"`
6+
Version string `json:"version,omitempty"`
7+
Variables map[string]string `json:"variables,omitempty"`
78
}

pkg/collect/mysql.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,49 @@ func Mysql(c *Collector, databaseCollector *troubleshootv1beta2.Database) (Colle
1818
if err != nil {
1919
databaseConnection.Error = err.Error()
2020
} else {
21+
defer db.Close()
2122
query := `select version()`
2223
row := db.QueryRow(query)
24+
2325
version := ""
2426
if err := row.Scan(&version); err != nil {
2527
databaseConnection.Error = err.Error()
2628
} else {
2729
databaseConnection.IsConnected = true
2830
databaseConnection.Version = version
2931
}
32+
33+
requestedParameters := databaseCollector.Parameters
34+
if len(requestedParameters) > 0 {
35+
rows, err := db.Query("SHOW VARIABLES")
36+
37+
if err != nil {
38+
databaseConnection.Error = err.Error()
39+
} else {
40+
defer rows.Close()
41+
42+
variables := map[string]string{}
43+
for rows.Next() {
44+
var key, value string
45+
err = rows.Scan(&key, &value)
46+
if err != nil {
47+
databaseConnection.Error = err.Error()
48+
break
49+
}
50+
variables[key] = value
51+
}
52+
filteredVariables := map[string]string{}
53+
54+
for _, key := range requestedParameters {
55+
if value, ok := variables[key]; ok {
56+
filteredVariables[key] = value
57+
}
58+
59+
}
60+
databaseConnection.Variables = filteredVariables
61+
}
62+
}
63+
3064
}
3165

3266
b, err := json.Marshal(databaseConnection)

0 commit comments

Comments
 (0)