Prometheus监控mysql实例

Stella981
• 阅读 1144

目录

  • 概述
  • 环境准备
  • 普罗米修斯简介
  • mysql安装
  • mysqld_exporter安装
  • 启动参数列表

概述

    prometheus(普罗米修斯) 是一个开源系统监控和报警工具包,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。

环境准备

  • mysql 5.5以上
  • mysql_exporter 0.11.0

普罗米修斯简介

功能

  • 根据指标名称和key/value标识组成一个多维度的时间序列数据模型
  • 具有一种利用多维度数据模型灵活查询的一种语言PromQL
  • 不依赖分布存储,每个服务节点都是独立的
  • 时序数据收集通过http的pull模型
  • 通过中介网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 图形化支持多种模式

组件

    普罗修斯是开源的,它的生态中有很多可选组件,选用组件时需要注意它们的许可说明,大体组件有以下几类:

  • 普罗米修斯服务 (整理存储数据)
  • 客户端库(查询数据进行可视化等操作)
  • 推送数据的jobs(收集数据)
  • 推送数据的exporer(收集数据)
  • 报警管理器(根据指标进行报警)

架构

此图来自官网,博主对架构图标注了注释

Prometheus监控mysql实例

mysql搭建

    这里可以参考博主以前的博文 centos 7下源码安装mysql5.7--一步一步亲测操作完成

mysql_exporter安装

查看系统版本

#lsb_release -a

下载

全系统版本下载地址: https://github.com/prometheus/mysqld\_exporter/releases

查看系统版本

#lsb_release -a

 Prometheus监控mysql实例

选择版本下载

#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

打印信息的版本

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这