目录
- 概述
- 环境准备
- 普罗米修斯简介
- mysql安装
- mysqld_exporter安装
- 启动参数列表
概述
prometheus(普罗米修斯) 是一个开源系统监控和报警工具包,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。
环境准备
- mysql 5.5以上
- mysql_exporter 0.11.0
普罗米修斯简介
功能
- 根据指标名称和key/value标识组成一个多维度的时间序列数据模型
- 具有一种利用多维度数据模型灵活查询的一种语言PromQL
- 不依赖分布存储,每个服务节点都是独立的
- 时序数据收集通过http的pull模型
- 通过中介网关支持推送时间序列
- 通过服务发现或静态配置发现目标
- 图形化支持多种模式
组件
普罗修斯是开源的,它的生态中有很多可选组件,选用组件时需要注意它们的许可说明,大体组件有以下几类:
- 普罗米修斯服务 (整理存储数据)
- 客户端库(查询数据进行可视化等操作)
- 推送数据的jobs(收集数据)
- 推送数据的exporer(收集数据)
- 报警管理器(根据指标进行报警)
架构
此图来自官网,博主对架构图标注了注释
mysql搭建
这里可以参考博主以前的博文 centos 7下源码安装mysql5.7--一步一步亲测操作完成
mysql_exporter安装
查看系统版本
#lsb_release -a
下载
全系统版本下载地址: https://github.com/prometheus/mysqld_exporter/releases
查看系统版本
#lsb_release -a
选择版本下载
#mkdir -P /opt/packages && cd /opt/packages
#wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.11.0/mysqld_exporter-0.11.0.linux-amd64.tar.gz
安装
#mkdir /opt/softs && cd /opt/softs
#tar -zxvf /opt/packages/mysqld_exporter-0.11.0.linux-amd64.tar.gz
创建mysql授权
进入mysql命令行
>CREATE USER 'mysqld_exporter'@'%' IDENTIFIED BY 'mysqld_exporter_password' WITH MAX_USER_CONNECTIONS 3;
>GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'%';
>flush privileges;
mysqld_exporter: 为数据库用户名,自行定义
mysqld_exporter_password: 为数据库用户对应的密码,自行定义
配置mysql_exporter
#cd /opt/softs/mysqld_exporter-0.11.0.linux-amd64
#vim .my.cnf
.my.cnf配置内容如下:
就是配置上面授权的数据库用户名以及密码
[client]
user=mysqld_exporter
password=mysqld_exporter_password
启动mysql_exporter
#export DATA_SOURCE_NAME='mysqld_exporter:mysqld_exporter_password@tcp(172.16.0.142:3316)/'
#/opt/softs/mysqld_exporter-0.11.0.linux-amd64/mysqld_exporter --config.my-cnf="/opt/environment/mysqld_exporter-0.11.0.linux-amd64/.my.cnf"
这是临时启动,环境变量,应该配置到文件里面去,启动命令需要设置为开机启动
开放exporter端口
#firewall-cmd --get-active-zones
#firewall-cmd --zone=public --add-port=9104/tcp --permanent
#firewall-cmd --reload
开机启动
这里就不赘述了,给出几种开机启动的方案,自行选择
- supervisor
- rc.local
- systemd
举例通过supervisor开机启动:
点击查看博主关于supervisor的安装与配置博文,这里就只给出supervisor的配置项:
#vim /etc/supervisor/conf.d/mysqld-exporter.conf
配置内容如下:
[program:mysqld-exporter]
environment=DATA_SOURCE_NAME='mysqld_exporter:mysqld_exporter_password@tcp(172.16.0.142:3316)/'
directory = /opt/softs/mysqld_exporter-0.11.0.linux-amd64/
command =/opt/softs/mysqld_exporter-0.11.0.linux-amd64/mysqld_exporter --config.my-cnf="/opt/softs/mysqld_exporter-0.11.0.linux-amd64/.my.cnf"
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /opt/softs/mysqld_exporter-0.11.0.linux-amd64/mysqld_exporter.log
启动参数列表
收集器参数
参数名 | MySQL 版本 | 作用 |
---|---|---|
collect.auto_increment.columns | 5.1 | 自增列最大值 |
collect.binlog_size | 5.1 | binlog文件大小 |
collect.engine_innodb_status | 5.1 | 从SHOW ENGINE INNODB STATUS 命令收集 |
collect.engine_tokudb_status | 5.6 | 从SHOW ENGINE TOKUDB STATUS 命令收集 . |
collect.global_status | 5.1 | 从SHOW GLOBAL STATUS命令收集 (默认可用) |
collect.global_variables | 5.1 | 从SHOW GLOBAL VARIABLES命令收集 (默认可用) |
collect.info_schema.clientstats | 5.5 | 如果使用userstat=1运行,则设置为true以收集客户端统计信息。 |
collect.info_schema.innodb_metrics | 5.6 | 收集information_schema.innodb_metrics 指标. |
collect.info_schema.innodb_tablespaces | 5.7 | 收集information_schema.innodb_sys_tablespaces 指标. |
collect.info_schema.innodb_cmp | 5.5 | 收集information_schema.innodb_cmp中的innoDB压缩表指标 |
collect.info_schema.innodb_cmpmem | 5.5 | 收集information_schema.innodb_cmpmem中InnoDB 缓冲池指标 . |
collect.info_schema.processlist | 5.1 | 收集 information_schema.processlist中的线程状态 |
collect.info_schema.processlist.min_time | 5.1 | 线程在每个状态的最小时间. (默认: 0) |
collect.info_schema.query_response_time | 5.5 | 如果query_response_time_stats 设置的 ON,则收集查询响应时间. |
collect.info_schema.tables | 5.1 | 收集information_schema.tables中的指标 (默认开启) |
collect.info_schema.tables.databases | 5.1 | 为所有数据库收集表统计信息. |
collect.info_schema.tablestats | 5.1 | 如果tablestats=1, 收集数据表统计数据. |
collect.info_schema.userstats | 5.1 | 如果userstat=1, 收集用户统计数据. |
collect.perf_schema.eventsstatements | 5.6 | 收集performance_schema.events_statements_summary_by_digest中的指标. |
collect.perf_schema.eventsstatements.digest_text_limit | 5.6 | 标准语句的最大长度. (默认: 120) |
collect.perf_schema.eventsstatements.limit | 5.6 | 根据响应时间限制语句的事件数量. (默认: 250) |
collect.perf_schema.eventsstatements.timelimit | 5.6 | 限制最后出现的事件事件. 单位:秒(默认: 86400) |
collect.perf_schema.eventswaits | 5.5 | 收集performance_schema.events_waits_summary_global_by_event_name中的指标. |
collect.perf_schema.file_events | 5.6 | 收集performance_schema.file_summary_by_event_name中的指标. |
collect.perf_schema.file_instances | 5.5 | 收集performance_schema.file_summary_by_instance中的指标. |
collect.perf_schema.indexiowaits | 5.6 | 收集performance_schema.table_io_waits_summary_by_index_usage中的指标. |
collect.perf_schema.tableiowaits | 5.6 | 收集performance_schema.table_io_waits_summary_by_table中的指标. |
collect.perf_schema.tablelocks | 5.6 | 收集performance_schema.table_lock_waits_summary_by_table中的指标. |
collect.perf_schema.replication_group_member_stats | 5.7 | 收集performance_schema.replication_group_member_stats中的指标. |
collect.slave_status | 5.1 | 收集SHOW SLAVE STATUS (默认可用) |
collect.slave_hosts | 5.1 | 收集SHOW SLAVE HOSTS信息 |
collect.heartbeat | 5.1 | 收集数据库实例心跳 |
collect.heartbeat.database | 5.1 | 收集某数据库心跳. (默认 heartbeat) |
collect.heartbeat.table | 5.1 | 收集某表的心跳. (默认 heartbeat) |
常用参数
参数名 | 描述 |
---|---|
config.my-cnf | .my.cnf路径. (默认: ~/.my.cnf ) |
log.level | 日志级别 (默认: info) |
exporter.lock_wait_timeout | 为连接设置lock_wait_timeout 以免长时间锁定元数据. (默认: 2 秒) |
exporter.log_slow_filter | 增加log_slow_filter避免损坏的查询日志记录很慢. 注意: 不支持Oracle MySQL. |
web.listen-address | 设置监听的地址和端口 |
web.telemetry-path | 公开指标的路径 |
version | 打印信息的版本 |