master
go 51 lines 1.41 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package mysql
4
5 import "context"
6
7 const (
8 queryShowGlobalVariables = `
9 SHOW GLOBAL VARIABLES
10 WHERE
11 Variable_name LIKE 'max_connections'
12 OR Variable_name LIKE 'table_open_cache'
13 OR Variable_name LIKE 'disabled_storage_engines'
14 OR Variable_name LIKE 'log_bin'
15 OR Variable_name LIKE 'innodb_log_file_size'
16 OR Variable_name LIKE 'innodb_log_files_in_group'
17 OR Variable_name LIKE 'performance_schema';`
18 )
19
20 func (c *Collector) collectGlobalVariables(ctx context.Context) error {
21 // MariaDB: https://mariadb.com/kb/en/server-system-variables/
22 // MySQL: https://dev.mysql.com/doc/refman/8.0/en/server-system-variable-reference.html
23 q := queryShowGlobalVariables
24 c.Debugf("executing query: '%s'", q)
25
26 var name string
27 _, err := c.collectQuery(ctx, q, func(column, value string, _ bool) {
28 switch column {
29 case "Variable_name":
30 name = value
31 case "Value":
32 switch name {
33 case "disabled_storage_engines":
34 c.varDisabledStorageEngine = value
35 case "innodb_log_file_size":
36 c.varInnoDBLogFileSize = parseInt(value)
37 case "innodb_log_files_in_group":
38 c.varInnoDBLogFilesInGroup = parseInt(value)
39 case "log_bin":
40 c.varLogBin = value
41 case "max_connections":
42 c.varMaxConns = parseInt(value)
43 case "performance_schema":
44 c.varPerformanceSchema = value
45 case "table_open_cache":
46 c.varTableOpenCache = parseInt(value)
47 }
48 }
49 })
50 return err
51 }