mirror of
https://github.com/replicatedhq/troubleshoot.git
synced 2026-02-14 18:29:53 +00:00
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 <ethan@replicated.com>
This commit is contained in:
@@ -156,7 +156,8 @@ type Put struct {
|
||||
|
||||
type Database struct {
|
||||
CollectorMeta `json:",inline" yaml:",inline"`
|
||||
URI string `json:"uri" yaml:"uri"`
|
||||
URI string `json:"uri" yaml:"uri"`
|
||||
Parameters []string `json:"parameters,omitempty"`
|
||||
}
|
||||
|
||||
type Collectd struct {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package collect
|
||||
|
||||
type DatabaseConnection struct {
|
||||
IsConnected bool `json:"isConnected"`
|
||||
Error string `json:"error,omitempty"`
|
||||
Version string `json:"version,omitempty"`
|
||||
IsConnected bool `json:"isConnected"`
|
||||
Error string `json:"error,omitempty"`
|
||||
Version string `json:"version,omitempty"`
|
||||
Variables map[string]string `json:"variables,omitempty"`
|
||||
}
|
||||
|
||||
@@ -18,8 +18,10 @@ func Mysql(c *Collector, databaseCollector *troubleshootv1beta2.Database) (Colle
|
||||
if err != nil {
|
||||
databaseConnection.Error = err.Error()
|
||||
} else {
|
||||
defer db.Close()
|
||||
query := `select version()`
|
||||
row := db.QueryRow(query)
|
||||
|
||||
version := ""
|
||||
if err := row.Scan(&version); err != nil {
|
||||
databaseConnection.Error = err.Error()
|
||||
@@ -27,6 +29,38 @@ func Mysql(c *Collector, databaseCollector *troubleshootv1beta2.Database) (Colle
|
||||
databaseConnection.IsConnected = true
|
||||
databaseConnection.Version = version
|
||||
}
|
||||
|
||||
requestedParameters := databaseCollector.Parameters
|
||||
if len(requestedParameters) > 0 {
|
||||
rows, err := db.Query("SHOW VARIABLES")
|
||||
|
||||
if err != nil {
|
||||
databaseConnection.Error = err.Error()
|
||||
} else {
|
||||
defer rows.Close()
|
||||
|
||||
variables := map[string]string{}
|
||||
for rows.Next() {
|
||||
var key, value string
|
||||
err = rows.Scan(&key, &value)
|
||||
if err != nil {
|
||||
databaseConnection.Error = err.Error()
|
||||
break
|
||||
}
|
||||
variables[key] = value
|
||||
}
|
||||
filteredVariables := map[string]string{}
|
||||
|
||||
for _, key := range requestedParameters {
|
||||
if value, ok := variables[key]; ok {
|
||||
filteredVariables[key] = value
|
||||
}
|
||||
|
||||
}
|
||||
databaseConnection.Variables = filteredVariables
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
b, err := json.Marshal(databaseConnection)
|
||||
|
||||
Reference in New Issue
Block a user