Prometheus监控MySQL

一、mysql监控项

1、QPS(每秒查询率)、TPS(每秒事务的处理数量);

2、mysql请求流量带宽、响应流量带宽、网络、内存、cup等资源的占用

3、监控主从(show slave status\G);

4、锁表情况

5、监控缓冲池使用情况;

6、慢查询数量、当前连接数、吞吐量;

7、端口和服务状态、正常运行的时间

8、Handler 统计信息

   提供了关于数据库引擎如何执行行的选择、更新、插入和修改方面的内部统计数据。它们是 MySQL 查询执行引擎和存储引擎之间的接口之一。

1. Handler_read_rnd_next

  • 含义:
    • 这个计数器在服务器执行全表扫描时增加。它表示 MySQL 从存储引擎获取下一行,通常是按照存储顺序。
  • 解读:
    • 如果这个值很高,说明执行了很多全表扫描。这通常意味着缺乏适当的索引,或者查询未能有效利用索引。
  • 优化建议:
    • 检查查询结构,确保相关字段上有适当的索引,以便减少全表扫描。

2. Handler_read_key

  • 含义:
    • 每当通过索引查找到某一行时,这个计数器都会增加。这意味着使用了索引来获取数据。
  • 解读:
    • 如果这个值较高,通常是好事,说明查询正在有效地利用索引。高效的 reads 通常依赖于良好设计的索引。
  • 优化建议:
    • 确保常用查询基于优化过的索引来读取数据。可以通过分析查询计划来确认索引的使用情况。

3. Handler_read_next

  • 含义:
    • 这个计数器在请求存储引擎读取“下一个”索引条目时增加。通常用于索引扫描。
  • 解读:
    • 如果这个值很高,意味着执行了大量的索引扫描。虽然索引扫描通常比全表扫描效率更高,但它仍可能指向未能高效使用索引的查询,特别是在索引列选择性较差的情况下。
  • 优化建议:
    • 检查索引的选择性和查询是否能通过更优化的结构减少扫描的行数。

二、mysqld_export

1、prometheus抓取任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- job_name: 'mysqld_exporter'
    params:
      auth_module: [heaxxx-myxx]
    static_configs:
      - targets:
        - mysql_master:3306
        - mysql_slave:3306
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__ # 给__address__标签设置一个新的固定值,由replacement的值进行替换
        replacement: mysqld_exporter:9104

2、docker swarm 部署mysqld_exporter yml文件,开启大部分的采集项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
mysqld_exporter:
    image: "xx/mysqld-exporter:v0.15.0"
    extra_hosts:
      - "mysql_master:ip"
      - "mysql_slave:ip"
    command:
      - --config.my-cnf=/etc/my.cnf  # 指定 MySQL 配置文件
      - --collect.global_status       # 收集全局状态变量
      - --collect.global_variables    # 收集全局变量
      - --collect.info_schema.innodb_metrics  # 收集 InnoDB 相关的指标
      - --collect.info_schema.tablestats      # 收集表统计信息
      - --collect.info_schema.query_response_time  # 收集查询响应时间
      - --collect.heartbeat           # 收集心跳信息
      - --collect.heartbeat.database=monitor  # 指定心跳数据库
      - --collect.heartbeat.table=heartbeat    # 指定心跳表
      - --collect.binlog_size         # 收集二进制日志大小
      - --collect.slave_hosts         # 收集从属主机信息
      - --collect.slave_status  # 新加入
      - --collect.mysql.user          # 收集 MySQL 用户信息
      - --collect.info_schema.userstats  # 收集用户统计信息
      - --collect.engine_innodb_status  # 收集 InnoDB 引擎状态信息
      - --collect.info_schema.processlist  # 收集当前进程列表
      - --collect.info_schema.tables   # 收集表信息
      - --collect.perf_schema.tablelocks  # 收集表锁信息
      - --collect.perf_schema.file_events  # 收集文件事件信息
      - --collect.perf_schema.eventswaits  # 收集事件等待信息
      - --collect.perf_schema.indexiowaits  # 收集索引 I/O 等待信息
      - --collect.perf_schema.tableiowaits  # 收集表 I/O 等待信息
       
#  mysqld_exporter 参数,--[no-]collect表示可以开启或者禁用
#  剩余可选:
    --collect.info_schema.processlist.min_time=0  # 设置最小时间过滤,以收集信息模式中的进程列表
    --collect.info_schema.tables.databases="*"  # 要收集表统计的数据库列表,使用 "*" 表示所有数据库
    --collect.perf_schema.eventsstatements.limit=250  # 设置性能模式下事件语句收集的最大数量
    --collect.perf_schema.eventsstatements.timelimit=86400  # 设置性能模式下事件语句收集的时间限制(秒)
    --collect.perf_schema.eventsstatements.digest_text_limit=120  # 设置性能模式下语句摘要的文本长度限制
    --collect.perf_schema.file_instances.filter=".*"  # 设置文件实例收集的过滤表达式
    --collect.perf_schema.file_instances.remove_prefix="/var/lib/mysql/"  # 从收集的文件实例中移除指定前缀
    --collect.perf_schema.memory_events.remove_prefix="memory/"  # 从收集的内存事件中移除指定前缀
    --[no-]collect.mysql.user.privileges  # 启用或禁用从 mysql.user 收集用户权限信息
    --[no-]collect.info_schema.processlist.processes_by_user  # 启用或禁用按用户分组的进程统计收集
    --[no-]collect.info_schema.processlist.processes_by_host  # 启用或禁用按主机分组的进程统计收集
    --[no-]collect.heartbeat.utc  # 启用或禁用 UTC 时间戳的心跳数据收集
    --[no-]collect.info_schema.innodb_tablespaces  # 启用或禁用收集 InnoDB 表空间相关信息
    --[no-]collect.info_schema.innodb_metrics  # 启用或禁用收集 InnoDB 相关的指标
    --[no-]collect.slave_status  # 启用或禁用收集从节点状态信息,包括复制相关数据
    --[no-]collect.perf_schema.eventsstatements  # 启用或禁用收集性能模式下的事件语句信息
    --[no-]collect.perf_schema.eventsstatementssum  # 启用或禁用收集性能模式下事件语句的汇总信息
    --[no-]collect.auto_increment.columns  # 启用或禁用收集自增列的统计信息
    --[no-]collect.perf_schema.replication_group_member_stats  # 启用或禁用收集复制组成员的统计信息
    --[no-]collect.perf_schema.replication_applier_status_by_worker  # 启用或禁用收集按工作线程划分的复制应用程序状态信息
    --[no-]collect.sys.user_summary  # 启用或禁用收集用户摘要信息
    --[no-]collect.perf_schema.file_instances  # 启用或禁用收集文件实例的信息
    --[no-]collect.perf_schema.memory_events  # 启用或禁用收集内存事件的信息
    --[no-]collect.perf_schema.replication_group_members  # 启用或禁用收集复制组成员信息
    --[no-]collect.info_schema.innodb_cmpmem  # 启用或禁用收集 InnoDB 压缩内存相关信息
    --[no-]collect.info_schema.clientstats  # 启用或禁用收集客户端统计信息,需在 userstat=1 下使用
    --[no-]collect.info_schema.schemastats  # 启用或禁用收集模式统计信息,需在 userstat=1 下使用
    --[no-]collect.info_schema.innodb_cmp  # 启用或禁用收集 InnoDB 压缩相关信息
    --[no-]collect.info_schema.replica_host  # 启用或禁用收集复制主机相关信息

三、grafana 模版文件

1、模版一

2、模版2

  

 

posted @   凡人半睁眼  阅读(643)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示