Prometheus + Granafa 构建MySQL监控平台( 三 )

同样的,更具根据Prometheus 慢查询语句我们也可以查询倒他某段时间内的增长率:
rate(mysql_global_status_slow_queries[5m])
连接数监控监控客户端连接情况相当重要,因为一旦可用连接耗尽,新的客户端连接就会遭到拒绝 。MySQL 默认的连接数限制为 151 。
MariaDB [(none)]> SHOW VARIABLES LIKE 'max_connections';+-----------------+-------+| Variable_name| Value |+-----------------+-------+| max_connections | 151|+-----------------+-------+当然我们可以修改配置文件的形式来增加这个数值 。与之对应的就是当前连接数量,当我们当前连接出来超过系统设置的最大值之后常会出现我们看到的Too many
connections(连接数过多),下面我查找一下当前连接数:
MariaDB [(none)]> SHOW GLOBAL STATUS LIKE "Threads_connected";+-------------------+-------+| Variable_name| Value |+-------------------+-------+| Threads_connected | 41|+-------------------+-------当然mysql 还提供Threads_running 这个指标,帮助你分隔在任意时间正在积极处理查询的线程与那些虽然可用但是闲置的连接 。
MariaDB [(none)]> SHOW GLOBAL STATUS LIKE "Threads_running";+-----------------+-------+| Variable_name| Value |+-----------------+-------+| Threads_running | 10|+-----------------+-------+如果服务器真的达到 max_connections
限制,它就会开始拒绝新的连接 。在这种情况下,
Connection_errors_max_connections
指标就会开始增加,同时,追踪所有失败连接尝试的Aborted_connects 指标也会开始增加 。
MySQLD Exporter返回的样本数据中:
# HELP mysql_global_variables_max_connections Generic gauge metric from SHOW GLOBAL VARIABLES.# TYPE mysql_global_variables_max_connections gaugemysql_global_variables_max_connections 151表示最大连接数
# HELP mysql_global_status_threads_connected Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_threads_connected untypedmysql_global_status_threads_connected 41表示当前的连接数
# HELP mysql_global_status_threads_running Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_threads_running untypedmysql_global_status_threads_running 1表示当前活跃的连接数
# HELP mysql_global_status_aborted_connects Generic metric from SHOW GLOBAL STATUS.# TYPE mysql_global_status_aborted_connects untypedmysql_global_status_aborted_connects 31累计所有的连接数
# HELP mysql_global_status_connection_errors_total Total number of MySQL connection errors.# TYPE mysql_global_status_connection_errors_total countermysql_global_status_connection_errors_total{error="internal"} 0#服务器内部引起的错误、如内存硬盘等mysql_global_status_connection_errors_total{error="max_connections"} 0#超出连接处引起的错误当然根据prom表达式,我们可以查询当前剩余可用的连接数:
mysql_global_variables_max_connections - mysql_global_status_threads_connected
查询mysq拒绝连接数
mysql_global_status_aborted_connects
缓冲池情况:MySQL 默认的存储引擎 InnoDB
使用了一片称为缓冲池的内存区域,用于缓存数据表与索引的数据 。缓冲池指标属于资源指标,而非工作指标,前者更多地用于调查(而非检测)性能问题 。如果数据库性能开始下滑,而磁盘
I/O 在不断攀升,扩大缓冲池往往能带来性能回升 。
默认设置下,缓冲池的大小通常相对较小,为 128MiB 。不过,MySQL 建议可将其扩大至专用数据库服务器物理内存的 80% 大小 。我们可以查看一下:
MariaDB [(none)]> show global variables like 'innodb_buffer_pool_size';+-------------------------+-----------+| Variable_name| Value|+-------------------------+-----------+| innodb_buffer_pool_size | 134217728 |+-------------------------+-----------+MySQLD Exporter返回的样本数据中,使用
mysql_global_variables_innodb_buffer_pool_size来表示 。
# HELP mysql_global_variables_innodb_buffer_pool_size Generic gauge metric from SHOW GLOBAL VARIABLES.# TYPE mysql_global_variables_innodb_buffer_pool_size gaugemysql_global_variables_innodb_buffer_pool_size 1.34217728e+08Innodb_buffer_pool_read_requests记录了正常从缓冲池读取数据的请求数量 。可以通过以下指令查看MariaDB [(none)]> SHOW GLOBAL STATUS LIKE "Innodb_buffer_pool_read_requests";+----------------------------------+-------------+| Variable_name| Value|+----------------------------------+-------------+| Innodb_buffer_pool_read_requests | 38465 |+----------------------------------+-------------+MySQLD
Exporter返回的样本数据中,使用
mysql_global_status_innodb_buffer_pool_read_requests来表示 。


推荐阅读