summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/mysql/collect_user_statistics.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/collectors/go.d.plugin/modules/mysql/collect_user_statistics.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/mysql/collect_user_statistics.go b/src/go/collectors/go.d.plugin/modules/mysql/collect_user_statistics.go
new file mode 100644
index 000000000..b00703a46
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/mysql/collect_user_statistics.go
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package mysql
+
+import (
+ "strings"
+)
+
+const queryShowUserStatistics = "SHOW USER_STATISTICS;"
+
+func (m *MySQL) collectUserStatistics(mx map[string]int64) error {
+ // https://mariadb.com/kb/en/user-statistics/
+ // https://mariadb.com/kb/en/information-schema-user_statistics-table/
+ q := queryShowUserStatistics
+ m.Debugf("executing query: '%s'", q)
+
+ var user, prefix string
+ _, err := m.collectQuery(q, func(column, value string, _ bool) {
+ switch column {
+ case "User":
+ user = value
+ prefix = "userstats_" + user + "_"
+ if !m.collectedUsers[user] {
+ m.collectedUsers[user] = true
+ m.addUserStatisticsCharts(user)
+ }
+ case "Cpu_time":
+ mx[strings.ToLower(prefix+column)] = int64(parseFloat(value) * 1000)
+ case
+ "Total_connections",
+ "Lost_connections",
+ "Denied_connections",
+ "Empty_queries",
+ "Binlog_bytes_written",
+ "Rows_read",
+ "Rows_sent",
+ "Rows_deleted",
+ "Rows_inserted",
+ "Rows_updated",
+ "Rows_fetched", // Percona
+ "Select_commands",
+ "Update_commands",
+ "Other_commands",
+ "Access_denied",
+ "Commit_transactions",
+ "Rollback_transactions":
+ mx[strings.ToLower(prefix+column)] = parseInt(value)
+ }
+ })
+ return err
+}