简介
mysqld_exporter是用于获取mysql实例的指标服务。
安装
mysql授权
- CREATE USER exporter@localhost identified by "mima";
- GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost' WITH MAX_USER_CONNECTIONS 3;
- flush privileges;
直接通过命令下载就可以了。
- wget -t 1000 -c https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
- tar zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /opt/
- cd /opt/mysqld_exporter-0.12.1.linux-amd64
- export DATA_SOURCE_NAME='exporter:mima@(localhost:3306)/'
- ./mysqld_exporter
这里设置用户名密码是通过环境变量的形式,也可以用配置文件,默认找的配置文件是~/.my.cnf,也可以使用参数--config.my-cnf="/opt/mysqld_exporter/.my.cnf" 进行设置。
- ./mysqld_exporter --config.my-cnf="/opt/mysqld_exporter/.my.cnf"
其他参数
- usage: mysqld_exporter [<flags>]
- Flags:
- -h, --help Show context-sensitive help (also try --help-long and --help-man).
- --exporter.lock_wait_timeout=2
- Set a lock_wait_timeout on the connection to avoid long metadata locking.
- --exporter.log_slow_filter
- Add a log_slow_filter to avoid slow query logging of scrapes. NOTE: Not supported by Oracle MySQL.
- --collect.heartbeat.database="heartbeat"
- Database from where to collect heartbeat data
- --collect.heartbeat.table="heartbeat"
- Table from where to collect heartbeat data
- --collect.info_schema.processlist.min_time=0
- Minimum time a thread must be in each state to be counted
- --collect.info_schema.processlist.processes_by_user
- Enable collecting the number of processes by user
- --collect.info_schema.processlist.processes_by_host
- Enable collecting the number of processes by host
- --collect.info_schema.tables.databases="*"
- The list of databases to collect table stats for, or '*' for all
- --collect.mysql.user.privileges
- Enable collecting user privileges from mysql.user
- --collect.perf_schema.eventsstatements.limit=250
- Limit the number of events statements digests by response time
- --collect.perf_schema.eventsstatements.timelimit=86400
- Limit how old the 'last_seen' events statements can be, in seconds
- --collect.perf_schema.eventsstatements.digest_text_limit=120
- Maximum length of the normalized statement text
- --collect.perf_schema.file_instances.filter=".*"
- RegEx file_name filter for performance_schema.file_summary_by_instance
- --collect.perf_schema.file_instances.remove_prefix="/var/lib/mysql/"
- Remove path prefix in performance_schema.file_summary_by_instance
- --web.listen-address=":9104"
- Address to listen on for web interface and telemetry.
- --web.telemetry-path="/metrics"
- Path under which to expose metrics.
- --timeout-offset=0.25 Offset to subtract from timeout in seconds.
- --config.my-cnf="/home/jalright/.my.cnf"
- Path to .my.cnf file to read MySQL credentials from.
- --collect.mysql.user Collect data from mysql.user
- --collect.info_schema.tables
- Collect metrics from information_schema.tables
- --collect.info_schema.innodb_tablespaces
- Collect metrics from information_schema.innodb_sys_tablespaces
- --collect.info_schema.innodb_metrics
- Collect metrics from information_schema.innodb_metrics
- --collect.global_status Collect from SHOW GLOBAL STATUS
- --collect.global_variables
- Collect from SHOW GLOBAL VARIABLES
- --collect.slave_status Collect from SHOW SLAVE STATUS
- --collect.info_schema.processlist
- Collect current thread state counts from the information_schema.processlist
- --collect.perf_schema.tablelocks
- Collect metrics from performance_schema.table_lock_waits_summary_by_table
- --collect.perf_schema.eventsstatements
- Collect metrics from performance_schema.events_statements_summary_by_digest
- --collect.perf_schema.eventsstatementssum
- Collect metrics of grand sums from performance_schema.events_statements_summary_by_digest
- --collect.perf_schema.eventswaits
- Collect metrics from performance_schema.events_waits_summary_global_by_event_name
- --collect.auto_increment.columns
- Collect auto_increment columns and max values from information_schema
- --collect.binlog_size Collect the current size of all registered binlog files
- --collect.perf_schema.tableiowaits
- Collect metrics from performance_schema.table_io_waits_summary_by_table
- --collect.perf_schema.indexiowaits
- Collect metrics from performance_schema.table_io_waits_summary_by_index_usage
- --collect.info_schema.userstats
- If running with userstat=1, set to true to collect user statistics
- --collect.info_schema.clientstats
- If running with userstat=1, set to true to collect client statistics
- --collect.info_schema.tablestats
- If running with userstat=1, set to true to collect table statistics
- --collect.info_schema.schemastats
- If running with userstat=1, set to true to collect schema statistics
- --collect.perf_schema.file_events
- Collect metrics from performance_schema.file_summary_by_event_name
- --collect.perf_schema.file_instances
- Collect metrics from performance_schema.file_summary_by_instance
- --collect.perf_schema.replication_group_member_stats
- Collect metrics from performance_schema.replication_group_member_stats
- --collect.perf_schema.replication_applier_status_by_worker
- Collect metrics from performance_schema.replication_applier_status_by_worker
- --collect.engine_innodb_status
- Collect from SHOW ENGINE INNODB STATUS
- --collect.heartbeat Collect from heartbeat
- --collect.slave_hosts Scrape information from 'SHOW SLAVE HOSTS'
- --collect.info_schema.innodb_cmp
- Collect metrics from information_schema.innodb_cmp
- --collect.info_schema.innodb_cmpmem
- Collect metrics from information_schema.innodb_cmpmem
- --collect.info_schema.query_response_time
- Collect query response time distribution if query_response_time_stats is ON.
- --collect.engine_tokudb_status
- Collect from SHOW ENGINE TOKUDB STATUS
- --log.level="info" Only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal]
- --log.format="logger:stderr"
- Set the log target and format. Example: "logger:syslog?appname=bob&local=7" or "logger:stdout?json=true"
- --version Show application version.
部署服务
直接注册成systemd服务。
- ```bash
- #!/bin/bash
- VERSION="0.12.1"
- wget -t 100 -c https://github.com/prometheus/mysqld_exporter/releases/download/v${VERSION}/mysqld_exporter-${VERSION}.linux-amd64.tar.gz
- if [ ! -e mysqld_exporter-${VERSION}.linux-amd64.tar.gz ]
- then
- echo "安装包下载失败"
- exit 1
- fi
- tar xvfz mysqld_exporter-${VERSION}.linux-amd64.tar.gz -C /opt/
- cd /opt
- ln -s mysqld_exporter-${VERSION}.linux-amd64 mysqld_exporter
- cat > /etc/systemd/system/mysqld_exporter.service <<EOF
- [Unit]
- Description=mysqld_exporter
- After=network.target
- [Service]
- Type=simple
- WorkingDirectory=/opt/mysqld_exporter
- ExecStart=/opt/mysqld_exporter/mysqld_exporter --config.my-cnf="/opt/mysqld_exporter/.my.cnf"
- LimitNOFILE=65536
- PrivateTmp=true
- RestartSec=2
- StartLimitInterval=0
- Restart=always
- [Install]
- WantedBy=multi-user.target
- EOF
- ```
- systemctl daemon-reload
- systemctl enable mysqld_exporter
- systemctl start mysqld_exporter
配置prometheus Job
默认端口是9104
- - job_name: 'mysqld_exporter'
- # metrics_path defaults to '/metrics'
- # scheme defaults to 'http'.
- static_configs:
- - targets: ['localhost:9104']
指标展示
指标可以通过prometheus的WebUI进行查看
- http://[promethe server ip]:9090
如果需要画图,可以直接使用grafana,有人已经配置好了图形可以通过grafana官方下的dashboard找到mysqld_exporter相关的dashboard就可以直接使用了,配置好prometheus数据源,直接导入grafana就可以直接展示了。
前言 作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么...
RSS是2004年最热门的互联网词汇之一,不过,相对于 博客(BLOG )来说,RSS的知...
实战之金融时间序列分析 Part 1 概述 平台 获取股票数据 需求 函数 index_compon...
前几天偶然看到大家在讨论一道面试题,而且答案也不够统一,我感觉蛮有意思,在...
在软件开发中,程序在高并发的情况下,为了保证一致性或者说安全性,我们通常都...
jsp 显示springmvc modelmap传递的对象 最近在做一个小网站,功能非常基础,决定...
Rem 布局适配 Vant 中的样式默认使用 px 作为单位,如果需要使用 rem 单位,推荐...
IT之家3月5日消息微软免费工具集 PowerToys 今日发布了 v0.33.1 版 。新版本的变...
Redis基本数据类型 1. 字符串:redis没有直接使用C语言传统的字符串表示,而是自...
一、实现效果 主要是IO和Sharedpreferences的数据持久化对于后者xml更为方便易实...