summaryrefslogtreecommitdiffstats
path: root/health/health.d/mysql.conf
blob: 3941c71cc7ef02a1441068bc61573a795f26e655 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# slow queries

 template: mysql_10s_slow_queries
       on: mysql.queries
    class: Latency
     type: Database
component: MySQL
   lookup: sum -10s of slow_queries
    units: slow queries
    every: 10s
     warn: $this > (($status >= $WARNING)  ? (5)  : (10))
     crit: $this > (($status == $CRITICAL) ? (10) : (20))
    delay: down 5m multiplier 1.5 max 1h
     info: number of slow queries in the last 10 seconds
       to: dba


# -----------------------------------------------------------------------------
# lock waits

 template: mysql_10s_table_locks_immediate
       on: mysql.table_locks
    class: Utilization
     type: Database
component: MySQL
   lookup: sum -10s absolute of immediate
    units: immediate locks
    every: 10s
     info: number of table immediate locks in the last 10 seconds
       to: dba

 template: mysql_10s_table_locks_waited
       on: mysql.table_locks
    class: Latency
     type: Database
component: MySQL
   lookup: sum -10s absolute of waited
    units: waited locks
    every: 10s
     info: number of table waited locks in the last 10 seconds
       to: dba

 template: mysql_10s_waited_locks_ratio
       on: mysql.table_locks
    class: Latency
     type: Database
component: MySQL
     calc: ( ($mysql_10s_table_locks_waited + $mysql_10s_table_locks_immediate) > 0 ) ? (($mysql_10s_table_locks_waited * 100) / ($mysql_10s_table_locks_waited + $mysql_10s_table_locks_immediate)) : 0
    units: %
    every: 10s
     warn: $this > (($status >= $WARNING)  ? (10) : (25))
     crit: $this > (($status == $CRITICAL) ? (25) : (50))
    delay: down 30m multiplier 1.5 max 1h
     info: ratio of waited table locks over the last 10 seconds
       to: dba


# -----------------------------------------------------------------------------
# connections

 template: mysql_connections
       on: mysql.connections_active
    class: Utilization
     type: Database
component: MySQL
     calc: $active * 100 / $limit
    units: %
    every: 10s
     warn: $this > (($status >= $WARNING)  ? (60) : (70))
     crit: $this > (($status == $CRITICAL) ? (80) : (90))
    delay: down 15m multiplier 1.5 max 1h
     info: client connections utilization
       to: dba


# -----------------------------------------------------------------------------
# replication

 template: mysql_replication
       on: mysql.slave_status
    class: Errors
     type: Database
component: MySQL
     calc: ($sql_running <= 0 OR $io_running <= 0)?0:1
    units: ok/failed
    every: 10s
     crit: $this == 0
    delay: down 5m multiplier 1.5 max 1h
     info: replication status (0: stopped, 1: working)
       to: dba

 template: mysql_replication_lag
       on: mysql.slave_behind
    class: Latency
     type: Database
component: MySQL
     calc: $seconds
    units: seconds
    every: 10s
     warn: $this > (($status >= $WARNING)  ? (5)  : (10))
     crit: $this > (($status == $CRITICAL) ? (10) : (30))
    delay: down 15m multiplier 1.5 max 1h
     info: difference between the timestamp of the latest transaction processed by the SQL thread and \
           the timestamp of the same transaction when it was processed on the master
       to: dba


# -----------------------------------------------------------------------------
# galera cluster size

 template: mysql_galera_cluster_size_max_2m
       on: mysql.galera_cluster_size
    class: Utilization
     type: Database
component: MySQL
   lookup: max -2m at -1m unaligned
    units: nodes
    every: 10s
     info: maximum galera cluster size in the last 2 minutes starting one minute ago
       to: dba

 template: mysql_galera_cluster_size
       on: mysql.galera_cluster_size
    class: Utilization
     type: Database
component: MySQL
     calc: $nodes
    units: nodes
    every: 10s
     warn: $this > $mysql_galera_cluster_size_max_2m
     crit: $this < $mysql_galera_cluster_size_max_2m
    delay: up 20s down 5m multiplier 1.5 max 1h
     info: current galera cluster size, compared to the maximum size in the last 2 minutes
       to: dba

# galera node state

 template: mysql_galera_cluster_state_warn
       on: mysql.galera_cluster_state
    class: Errors
     type: Database
component: MySQL
     calc: $donor + $joined
    every: 10s
     warn: $this != nan AND $this != 0
    delay: up 30s down 5m multiplier 1.5 max 1h
     info: galera node state is either Donor/Desynced or Joined.
       to: dba

 template: mysql_galera_cluster_state_crit
       on: mysql.galera_cluster_state
    class: Errors
     type: Database
component: MySQL
     calc: $undefined + $joining + $error
    every: 10s
     crit: $this != nan AND $this != 0
    delay: up 30s down 5m multiplier 1.5 max 1h
     info: galera node state is either Undefined or Joining or Error.
       to: dba

# galera node status

 template: mysql_galera_cluster_status
       on: mysql.galera_cluster_status
    class: Errors
     type: Database
component: MySQL
     calc: $primary
    every: 10s
     crit: $this != nan AND $this != 1
    delay: up 30s down 5m multiplier 1.5 max 1h
     info: galera node is part of a nonoperational component. \
           This occurs in cases of multiple membership changes that result in a loss of Quorum or in cases of split-brain situations.
       to: dba