Categorygithub.com/invoca/mysqld_exporter
modulepackage
0.10.0
Repository: https://github.com/invoca/mysqld_exporter.git
Documentation: pkg.go.dev

# README

MySQL Server Exporter Build Status

CircleCI Docker Repository on Quay Docker Pulls Go Report Card

Prometheus exporter for MySQL server metrics. Supported MySQL versions: 5.1 and up. NOTE: Not all collection methods are supported on MySQL < 5.6

Building and running

Required Grants

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

NOTE: It is recommended to set a max connection limit for the user to avoid overloading the server with monitoring scrapes under heavy load.

Build

make

Running

Running using an environment variable:

export DATA_SOURCE_NAME='login:password@(hostname:port)/'
./mysqld_exporter <flags>

Running using ~/.my.cnf:

./mysqld_exporter <flags>

Collector Flags

NameMySQL VersionDescription
collect.auto_increment.columns5.1Collect auto_increment columns and max values from information_schema.
collect.binlog_size5.1Collect the current size of all registered binlog files
collect.engine_innodb_status5.1Collect from SHOW ENGINE INNODB STATUS.
collect.engine_tokudb_status5.6Collect from SHOW ENGINE TOKUDB STATUS.
collect.global_status5.1Collect from SHOW GLOBAL STATUS (Enabled by default)
collect.global_variables5.1Collect from SHOW GLOBAL VARIABLES (Enabled by default)
collect.info_schema.clientstats5.5If running with userstat=1, set to true to collect client statistics.
collect.info_schema.innodb_metrics5.6Collect metrics from information_schema.innodb_metrics.
collect.info_schema.innodb_tablespaces5.7Collect metrics from information_schema.innodb_sys_tablespaces.
collect.info_schema.processlist5.1Collect thread state counts from information_schema.processlist.
collect.info_schema.processlist.min_time5.1Minimum time a thread must be in each state to be counted. (default: 0)
collect.info_schema.query_response_time5.5Collect query response time distribution if query_response_time_stats is ON.
collect.info_schema.tables5.1Collect metrics from information_schema.tables (Enabled by default)
collect.info_schema.tables.databases5.1The list of databases to collect table stats for, or '*' for all.
collect.info_schema.tablestats5.1If running with userstat=1, set to true to collect table statistics.
collect.info_schema.userstats5.1If running with userstat=1, set to true to collect user statistics.
collect.perf_schema.eventsstatements5.6Collect metrics from performance_schema.events_statements_summary_by_digest.
collect.perf_schema.eventsstatements.digest_text_limit5.6Maximum length of the normalized statement text. (default: 120)
collect.perf_schema.eventsstatements.limit5.6Limit the number of events statements digests by response time. (default: 250)
collect.perf_schema.eventsstatements.timelimit5.6Limit how old the 'last_seen' events statements can be, in seconds. (default: 86400)
collect.perf_schema.eventswaits5.5Collect metrics from performance_schema.events_waits_summary_global_by_event_name.
collect.perf_schema.file_events5.6Collect metrics from performance_schema.file_summary_by_event_name.
collect.perf_schema.file_instances5.5Collect metrics from performance_schema.file_summary_by_instance.
collect.perf_schema.indexiowaits5.6Collect metrics from performance_schema.table_io_waits_summary_by_index_usage.
collect.perf_schema.tableiowaits5.6Collect metrics from performance_schema.table_io_waits_summary_by_table.
collect.perf_schema.tablelocks5.6Collect metrics from performance_schema.table_lock_waits_summary_by_table.
collect.slave_status5.1Collect from SHOW SLAVE STATUS (Enabled by default)
collect.heartbeat5.1Collect from heartbeat.
collect.heartbeat.database5.1Database from where to collect heartbeat data. (default: heartbeat)
collect.heartbeat.table5.1Table from where to collect heartbeat data. (default: heartbeat)

General Flags

NameDescription
config.my-cnfPath to .my.cnf file to read MySQL credentials from. (default: ~/.my.cnf)
log.levelLogging verbosity (default: info)
log_slow_filterAdd a log_slow_filter to avoid exessive MySQL slow logging. NOTE: Not supported by Oracle MySQL.
web.listen-addressAddress to listen on for web interface and telemetry.
web.telemetry-pathPath under which to expose metrics.
versionPrint the version information.

Setting the MySQL server's data source name

The MySQL server's data source name must be set via the DATA_SOURCE_NAME environment variable. The format of this variable is described at https://github.com/go-sql-driver/mysql#dsn-data-source-name.

Using Docker

You can deploy this exporter using the prom/mysqld-exporter Docker image.

For example:

docker pull prom/mysqld-exporter

docker run -d -p 9104:9104 --link=my_mysql_container:bdd  \
        -e DATA_SOURCE_NAME="user:password@(bdd:3306)/database" prom/mysqld-exporter

heartbeat

With collect.heartbeat enabled, mysqld_exporter will scrape replication delay measured by heartbeat mechanisms. Pt-heartbeat is the reference heartbeat implementation supported.

Example Rules

There are some sample rules available in example.rules

# Packages

No description provided by the author

# Functions

NewExporter returns a new MySQL exporter for the provided DSN.

# Structs

Exporter collects MySQL metrics.