# make sure mysql is running template: mysql_last_collected_secs on: mysql.queries calc: $now - $last_collected_t units: seconds ago every: 10s warn: $this > (($status >= $WARNING) ? ($update_every) : ( 5 * $update_every)) crit: $this > (($status == $CRITICAL) ? ($update_every) : (60 * $update_every)) delay: down 5m multiplier 1.5 max 1h info: number of seconds since the last successful data collection to: dba # ----------------------------------------------------------------------------- # slow queries template: mysql_10s_slow_queries on: mysql.queries 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 mysql slow queries over the last 10 seconds to: dba # ----------------------------------------------------------------------------- # lock waits template: mysql_10s_table_locks_immediate on: mysql.table_locks lookup: sum -10s absolute of immediate units: immediate locks every: 10s info: number of table immediate locks over the last 10 seconds to: dba template: mysql_10s_table_locks_waited on: mysql.table_locks lookup: sum -10s absolute of waited units: waited locks every: 10s info: number of table waited locks over the last 10 seconds to: dba template: mysql_10s_waited_locks_ratio on: mysql.table_locks 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: the ratio of mysql waited table locks, for the last 10 seconds to: dba # ----------------------------------------------------------------------------- # connections template: mysql_connections on: mysql.connections_active 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: the ratio of current active connections vs the maximum possible number of connections to: dba # ----------------------------------------------------------------------------- # replication template: mysql_replication on: mysql.slave_status 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: checks if mysql replication has stopped to: dba template: mysql_replication_lag on: mysql.slave_behind 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: the number of seconds mysql replication is behind this master to: dba # ----------------------------------------------------------------------------- # galera cluster size template: mysql_galera_cluster_size_max_2m on: mysql.galera_cluster_size lookup: max -2m absolute units: nodes every: 10s info: max cluster size 2 minute to: dba template: mysql_galera_cluster_size on: mysql.galera_cluster_size 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: cluster size has changed to: dba # galera node state template: mysql_galera_cluster_state on: mysql.galera_cluster_state calc: $state every: 10s warn: $this < 4 crit: $this < 2 delay: up 30s down 5m multiplier 1.5 max 1h info: node state (0: undefined, 1: joining, 2: donor/desynced, 3: joined, 4: synced) to: dba # galera node status template: mysql_galera_cluster_status on: mysql.galera_cluster_status calc: $wsrep_cluster_status every: 10s crit: $mysql_galera_cluster_state != nan AND $this != 0 delay: up 30s down 5m multiplier 1.5 max 1h info: node and cluster status (-1: unknown, 0: primary/quorum present, 1: non-primary/quorum lost, 2: disconnected) to: dba