+ All Categories
Home > Documents > Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead -...

Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead -...

Date post: 29-Jul-2020
Category:
Upload: others
View: 55 times
Download: 0 times
Share this document with a friend
34
Monitoring MySQL with Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab
Transcript
Page 1: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Monitoring MySQL with Prometheus

Prometheus

Ben Kochie - Prometheus Lead - GitLab

Page 2: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Prometheus

Page 3: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

About Prometheus● Metrics collection● Time-series database● Graphing● Alerting

Prometheus

Page 4: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Performance

Prometheus

Page 5: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Performance● Millions of Timeseries● 800k samples per second● 1.3 bytes per sample (varbit)● Thousands of targets

Prometheus

Page 6: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

In Production● 1500+ Tables● 160+ Databases● 30+ Clusters● 250+ Servers● 6000+ Events Digests

Prometheus

Page 7: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Real-World Load● 1.5 million timeseries● 80k samples per second● 400GB (28 days, old encoding)● 10 cores (2.0ghz Ivy-Bridge)

Prometheus

Page 8: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Prometheus Basics

Prometheus

Page 9: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Prometheus

Page 10: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

mysqld_exporter Basics

Prometheus

Page 11: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

https://github.com/prometheus/mysqld_exporter

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'pass';GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'localhost';GRANT SELECT ON performance_schema.* TO 'exporter'@'localhost';

DATA_SOURCE_NAME=’exporter:pass@(localhost:3306)/’

Prometheus

Page 12: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Start mysqld_exporter./mysqld_exporter \ -collect.info_schema.innodb_metrics \ -collect.info_schema.userstats \ -collect.perf_schema.eventsstatements \ -collect.perf_schema.indexiowaits \ -collect.perf_schema.tableiowaits

Prometheus

Page 13: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Exporter Output (http://localhost:9104/metrics)

# HELP mysql_global_status_commands_total Total number of executed MySQL commands.# TYPE mysql_global_status_commands_total countermysql_global_status_commands_total{command="admin_commands"} 795205mysql_global_status_commands_total{command="alter_db"} 0

# HELP mysql_global_variables_read_only Generic gauge metric from SHOW GLOBAL VARIABLES.# TYPE mysql_global_variables_read_only gaugemysql_global_variables_read_only 1

# HELP mysql_slave_status_seconds_behind_master Generic metric from SHOW SLAVE STATUS.# TYPE mysql_slave_status_seconds_behind_master untypedmysql_slave_status_seconds_behind_master 0

Prometheus

Page 14: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Configuration

Prometheus

Page 15: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

global: scrape_interval: 15s evaluation_interval: 15s

scrape_configs: - job_name: 'mysql' target_groups: - targets: - localhost:9104

Prometheus

Page 16: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

PromQL

Prometheus

Page 17: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

rate(mysql_global_status_connections[2m])

sum( rate(mysql_global_status_commands_total[2m]))

Prometheus

Page 18: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

sum( rate(mysql_global_status_commands_total[2m]))

Prometheus

Page 19: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

sum by (instance) ( rate(mysql_global_status_commands_total[2m]))

Prometheus

Page 20: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

sum by (command) ( rate(mysql_global_status_commands_total[2m]))

Prometheus

Page 21: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

sum by (command) ( rate(mysql_global_status_commands_total{ command=~"(insert|update|delete)" }[2m]))

Prometheus

Page 22: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

mysql_slave_status_seconds_behind_master

Prometheus

Page 23: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay

Prometheus

Page 24: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Rules Files

Prometheus

Page 25: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay

Prometheus

Page 26: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

mysql_slave_lag_seconds = mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay

Prometheus

Page 27: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

mysql_slave_lag_seconds = mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay

ALERT MySQLSlaveLag IF mysql_slave_lag_seconds > 300 FOR 1m LABELS { severity = "warning" } ANNOTATIONS { summary = "Slave lag is too damn high." }

Prometheus

Page 28: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

mysql_slave_lag_seconds = mysql_slave_status_seconds_behind_master - mysql_slave_status_sql_delay

ALERT MySQLSlaveLag IF (mysql_slave_lag_seconds > 60 AND predict_linear(mysql_slave_lag_seconds[2m],60*60)) > 0 FOR 2m LABELS { severity = "warning" } ANNOTATIONS { summary = "Slave lag is too damn high." }

Prometheus

Page 29: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Examples/Graphs

Prometheus

Page 30: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Basic Traffic Overview

Prometheus

Page 31: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

sum by (digest_text) (rate( mysql_perf_schema_events_statements_tmp_disk_tables_total[2m]))

Prometheus

Page 32: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

topk(5, sum by (schema,digest_text) (rate(mysql_perf_schema_events_statements_total[5m])))

Prometheus

Page 33: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

The Future

Prometheus

Page 34: Prometheus Monitoring MySQL with - Percona · Prometheus Prometheus Ben Kochie - Prometheus Lead - GitLab. Prometheus. About Prometheus Metrics collection Time-series database Graphing

Demo Time

Prometheus


Recommended