专门做护肤品的网站是,传奇霸业官网下载,最新新闻热点事件摘抄,广告合作亲爱的读者们#x1f44b; 欢迎加入【30天精通Prometheus】专栏#xff01;#x1f4da; 在这里#xff0c;我们将探索Prometheus的强大功能#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。#x1f680; Prometheus是云原生和DevOps的… 亲爱的读者们 欢迎加入【30天精通Prometheus】专栏 在这里我们将探索Prometheus的强大功能并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。 Prometheus是云原生和DevOps的核心监控工具我们将从基础概念开始逐步涵盖配置、查询、告警和可视化。 在接下来的30天里我们将解锁Prometheus的实战技巧通过案例和分享助你深入理解其工作原理。 目标30天后你将熟练掌握Prometheus为未来的项目挑战做好准备 这是一段精彩旅程期待你的加入 文章目录 一、mysqld_exporter概述二、安装mysqld_exporter2.1 访问mysqld_exporter官方网站 2.2 选择适合的版本2.3 下载mysqld_exporter⬇️2.4 解压安装包2.5 在数据库创建监控用户并授权2.6 运行mysqld_exporter 三、mysqld_exporter指标和配置详解3.1 mysqld_exporter.service 四、实战演练生产环境搭建指南4.1 创建普通用户管理mysqld_exporter4.2 解压mysqld_exporter.tar.gz4.3 将mysqld_exporter集成到Prometheus配置中✂️4.4 更改mysqld_exporter软件包名称✂️4.5 编辑mysqld_exporter.service文件4.6 启动mysqld_exporter.service4.7 查看服务是否正常启动 相关资料下载地址 一、mysqld_exporter概述
定义 mysqld_exporter是一个开源的监控工具专门设计用于收集和导出MySQL数据库的性能指标以便进行监控和分析。它是Prometheus监控框架的一部分可以将收集到的数据格式化为Prometheus可以识别的格式。
功能 1.数据收集mysqld_exporter能够连接到MySQL数据库并从中收集各种性能指标如查询执行时间、缓存使用情况、表锁定情况、线程状态等。 2.数据导出收集到的数据会被格式化为Prometheus可以理解的metrics格式这样Prometheus就能抓取并存储这些数据。 3.兼容性mysqld_exporter支持多种MySQL版本并能很好地与Prometheus及其他监控工具集成。
应用场景
IT运维和数据库管理对于需要管理和监控大量MySQL数据库实例的企业或组织mysqld_exporter是一个不可或缺的工具。它可以帮助IT运维团队实时了解每个数据库的性能状况及时发现并解决问题。云服务提供商云服务提供商可以利用mysqld_exporter为他们的客户提供详细的数据库性能报告从而提升服务质量。开发和测试环境在软件开发和测试过程中开发人员和测试人员可以使用mysqld_exporter来监控数据库性能以确保应用程序与数据库的交互是高效的。
二、安装mysqld_exporter
注意事项和常见问题 1.权限问题在安装mysqld_exporter之前确保当前用户有足够的权限来执行安装命令和访问相关目录。在Linux系统中可能需要使用sudo来提升权限。 2.防火墙和安全组设置mysqld_exporter默认监听9104端口或其他自定义端口。确保服务器的防火墙规则允许从Prometheus服务器到该端口的流量。如果部署在云服务上还应在安全组中配置相应的入站规则。 3.配置文件和服务管理如果使用systemd来管理mysqld_exporter应确保/etc/systemd/system/mysqld_exporter.service文件配置正确服务能够正常启动、停止和重启。 4.日志和错误排查定期检查mysqld_exporter的日志以便及时发现和解决问题。如果使用systemd可以通过journalctl -u mysqld_exporter命令查看日志。 5.版本兼容性在安装前检查mysqld_exporter的版本是否与你的MySQL数据库和Prometheus版本兼容。 6.安装路径和权限确保mysqld_exporter的安装路径具有适当的权限以便服务能够正常访问和执行。同时确保任何配置文件如.my.cnf的路径和权限也设置正确。
2.1 访问mysqld_exporter官方网站
打开浏览器访问mysqld_exporter的官方下载页面通常位于Prometheus官方网站的子目录下https://prometheus.io/download/#mysqld_exporter
2.2 选择适合的版本
在下载页面你将看到不同操作系统的mysqld_exporter二进制包。根据你的操作系统选择适合的版本。例如如果你使用的是Linux 64位系统就选择mysqld_exporter-x.x.x.linux-amd64.tar.gz其中x.x.x是版本号。
2.3 下载mysqld_exporter⬇️
点击所选版本的下载链接将mysqld_exporter的二进制包下载到你的本地计算机。
2.4 解压安装包
将下载的mysqld_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具如tar来完成这个步骤。解压后你将看到一个名为mysqld_exporter-x.x.x.linux-amd64的目录其中包含kafka_exporter的二进制文件和其他相关文件。
tar -xzf mysqld_exporter-x.x.x.linux-amd64.tar.gz2.5 在数据库创建监控用户并授权
-- 创建监控用户
CREATE USER exporter% IDENTIFIED BY exporter!#2024 WITH MAX_USER_CONNECTIONS 3;-- 授权
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO exporter%;2.6 运行mysqld_exporter
进入解压后的目录并运行mysqld_exporter服务器。在Linux下你可以使用如下命令。这样就使用默认的配置启动mysqld_exporter服务器。如果一切正常你应该能在终端看到mysqld_exporter的启动日志。
cd mysqld_exporter-x.x.x.linux-amd64# 将密码添加至变量
export MYSQLD_EXPORTER_PASSWORDexporter!#2024# 启动服务
/home/deploy/mysqld_exporter/mysqld_exporter \
--exporter.lock_wait_timeout2 \
--mysqld.addresslocalhost:3307 \
--mysqld.usernameexporter \
--collect.global_status \
--collect.global_variables \
--collect.info_schema.replica_host \
--collect.info_schema.tables \
--collect.info_schema.tables.databases* \
--collect.engine_innodb_status \
--web.listen-address0.0.0.0:9104 \
--log.levelinfo \
--log.formatlogfmt 三、mysqld_exporter指标和配置详解
黑色作为默认文本颜色。绿色表示常规配置项橙色表示具有互斥参数的配置项 / 建议开启根据自己的场景确定需求蓝色不重要的配置项 / 建议不开启红色表示关键信息和警告 / 最好开启
注意
1.相关参数配置建议仅供参考具体要以自己生产的实际需要自行配置。2.以下配置参数介绍是基于mysqld_exporter 0.15.1版本说明的其它版本会有不同。
3.1 mysqld_exporter.service
连接与超时设置
- -exporter.lock_wait_timeout2 设置连接上的元数据锁超时时间。在某些情况下当mysql_exporter尝试收集信息时可能会遇到需要等待元数据锁的情况。设置一个合理的超时时间可以避免长时间等待。- -timeout-offset 从超时时间中减去的偏移量。允许你从超时时间中减去一个偏移量。在某些情况下你可能想要稍微减少超时时间以避免在某些操作上的不必要等待。- -config.my-cnf 读取MySQL凭据的.my.cnf文件路径。这个文件通常包含连接 MySQL 服务器所需的用户名、密码和其他认证参数。- -mysqld.address“localhost:3306” 指定了mysql_exporter用于连接到 MySQL 服务器的地址包括主机名和端口。- -mysqld.usernameMYSQLD.USERNAME 用于连接到 MySQL 服务器的用户名。- -[no-]collect.heartbeat 控制mysql_exporter是否从 pt-heartbeat 工具收集心跳数据。pt-heartbeat 是一个常用的 MySQL 监控工具它通过在数据库中定期插入心跳记录来监控复制延迟和其他性能问题。启用这个选项允许mysql_exporter收集与这些心跳记录相关的指标。- -[no-]collect.info_schema.query_response_time 控制mysql_exporter是否收集查询响应时间分布。为了收集这些数据MySQL 服务器需要启用 query_response_time_stats 功能通常是通过设置系统变量来完成的。启用这个选项后mysql_exporter 将能够暴露关于查询响应时间的统计信息。
收集控制 全局状态与变量 - -[no-]collect.global_status 控制是否从 MySQL 的 SHOW GLOBAL STATUS 命令中收集指标。SHOW GLOBAL STATUS 命令提供了关于 MySQL 服务器全局状态的信息包括连接数、查询数、缓存使用情况等。启用这个选项后mysql_exporter 将能够暴露这些指标给 Prometheus从而允许你监控和分析 MySQL 服务器的整体性能和健康状况。默认是开启的关闭的话在启动参数添加- -no-collect.global_status- -[no-]collect.global_variables 控制是否从 MySQL 的 SHOW GLOBAL VARIABLES 命令中收集指标。SHOW GLOBAL VARIABLES 命令显示了 MySQL 服务器的全局系统变量这些变量定义了服务器的各种配置和设置。启用这个选项后mysql_exporter 将能够暴露这些变量的值给 Prometheus允许你监控和分析 MySQL 服务器的配置和设置。默认是开启的关闭的话在启动参数添加- -no-collect.global_variables 从属和复制状态 为什么要收集这些指标 复制监控通过收集这些指标你可以监控 MySQL 主从复制的性能和健康状况。例如你可以检查复制延迟、错误、连接状态等以确保数据在主从服务器之间同步的正确性和及时性。 故障排查当复制出现问题时这些指标可以帮助你快速定位问题并进行故障排查。例如你可以检查复制线程的状态、错误消息等来确定问题所在。 告警和通知当某些关键复制指标超出阈值时如复制延迟过长你可以配置 Prometheus 发送告警通知以便及时响应并解决问题。 - -[no-]collect.slave_status 控制 mysql_exporter 是否从 MySQL 的 SHOW SLAVE STATUS 命令中收集指标。SHOW SLAVE STATUS 命令提供了关于 MySQL 从服务器的复制状态的信息包括复制线程的状态、I/O 和 SQL 线程的延迟等。启用这个选项后你可以监控 MySQL 复制的性能和健康状况。- -[no-]collect.slave_hosts 控制 mysql_exporter 是否从 SHOW SLAVE HOSTS 命令中抓取信息。SHOW SLAVE HOSTS 命令显示了从服务器的主机信息这些信息通常用于 MySQL 的复制过滤器replication filters。启用这个选项后你可以获取关于复制主机配置的信息。- -[no-]collect.info_schema.replica_host 控制 mysql_exporter 是否从 information_schema.replica_host_status 表中收集指标。这个表提供了关于复制主机状态的信息类似于 SHOW SLAVE STATUS 但以表的形式呈现。启用这个选项后你可以通过 information_schema 数据库监控复制主机的状态。注意在一些较新的 MySQL 版本中“slave”术语已被“replica”替代 用户与权限 为什么要收集这些指标 安全审计通过监控用户权限的分配和变化你可以确保只有授权的用户能够访问数据库并遵守最小权限原则。这有助于减少潜在的安全风险。 性能分析虽然直接从 mysql.user 表中收集的数据可能不直接反映数据库性能但了解哪些用户正在尝试连接或执行操作可以为你提供有关潜在性能瓶颈的线索。 合规性检查在某些行业或组织中可能需要定期审计数据库的访问权限以确保符合内部策略或外部法规的要求。通过收集这些指标你可以更容易地满足这些合规性要求。 - -[no-]collect.mysql.user.privileges 控制 mysql_exporter 是否从 mysql.user 表中收集用户权限相关的指标。mysql.user 表存储了 MySQL 用户账户信息包括用户名、主机名以及他们被授予的权限。启用这个选项后你可以监控用户权限的分配和变化有助于安全审计和合规性检查。- -[no-]collect.mysql.user 控制从 mysql.user 表中收集的数据。启用这个选项通常意味着除了用户权限外还会收集其他用户相关的指标尽管具体的指标取决于 mysql_exporter 的实现。这些指标可能包括用户账户的数量、特定用户的连接尝试等。 进程列表与线程状态 - -[no-]collect.info_schema.processlist 控制 mysql_exporter 是否从 information_schema.processlist 表中收集当前线程状态计数。information_schema.processlist 提供了关于当前在 MySQL 服务器上执行的线程即客户端连接的信息包括它们正在执行的查询、状态等。启用这个选项后你可以监控查询的执行时间、线程状态等有助于识别潜在的瓶颈或问题。- -collect.info_schema.processlist.min_time 设置线程在每个状态中必须保持的最小时间以秒为单位以便被 mysql_exporter 计数。例如如果设置为 5则只有当线程在某个特定状态如 System lock 或 Query中停留至少 5 秒时该状态才会被计数。有助于过滤掉短暂的、可能不重要的状态变化。- -[no-]collect.info_schema.processlist.processes_by_user 控制是否按用户收集进程数。启用后mysql_exporter 将为每个 MySQL 用户计算当前正在执行的线程数并暴露这些指标。有助于识别哪些用户正在执行大量查询或可能消耗过多资源。- -[no-]collect.info_schema.processlist.processes_by_host 与按用户收集进程数类似但它是按主机名即客户端的 IP 地址或主机名进行收集的。启用后你可以监控来自不同主机的连接数有助于识别潜在的恶意活动、流量模式或其他与主机相关的行为。 表与模式统计 - -[no-]collect.info_schema.tables 控制 mysql_exporter 是否从 information_schema.tables 收集关于表的指标。information_schema.tables 表包含了关于数据库中所有表的信息如行数、数据长度、索引长度等。启用这个选项后你可以监控表的增长、使用情况和性能。- -collect.info_schema.tables.databases“*” 指定mysql_exporter 应该为哪些数据库收集表统计信息。你可以提供一个数据库名称的列表或者使用 * 来表示收集所有数据库的表统计信息。例如如果你只想监控 mydb1 和 mydb2 这两个数据库的表你可以设置这个参数为 --collect.info_schema.tables.databases“mydb1,mydb2”。- -[no-]collect.info_schema.tablestats 控制是否收集表统计信息但注意这里的描述中提到了 userstat1。然而在标准的 MySQL 和 mysql_exporter 中并没有一个直接名为 userstat 的系统变量或配置选项。可能是这里有一些混淆或特定环境的自定义设置。通常要收集表统计信息你只需要启用 --collect.info_schema.tables。但如果你的环境中确实有与 userstat 相关的自定义设置那么你可能需要确保它已启用如果它是用于控制表统计信息收集的开关。- -[no-]collect.info_schema.schemastats 与 --[no-]collect.info_schema.tablestats 类似这个参数控制是否收集模式schema统计信息。但同样地标准 MySQL 和 mysql_exporter 中并没有直接名为 schemastats 的指标或设置。模式统计信息通常是通过收集各个表的统计信息来间接获得的。
InnoDB 与存储引擎状态
- -[no-]collect.info_schema.innodb_metrics 控制 mysql_exporter 是否从 information_schema.innodb_metrics 表中收集 InnoDB 存储引擎的指标。这个表包含了各种与 InnoDB 相关的度量如缓冲池的使用情况、行操作计数等。- -[no-]collect.engine_innodb_status 控制 mysql_exporter 是否通过执行 SHOW ENGINE INNODB STATUS 命令来收集 InnoDB 存储引擎的详细状态信息。这个命令的输出包含了大量的关于 InnoDB 内部操作的信息如锁等待、事务、死锁等。这些信息对于深入分析和诊断 InnoDB 的性能问题非常有用。- -[no-]collect.info_schema.innodb_cmp 控制 mysql_exporter 是否从 information_schema.innodb_cmp 表中收集 InnoDB 的压缩统计信息。这个表包含了关于 InnoDB 压缩页操作的统计如压缩和未压缩的页数、压缩操作的次数等。- -[no-]collect.info_schema.innodb_cmpmem 控制 mysql_exporter 是否从 information_schema.innodb_cmpmem 表中收集 InnoDB 的压缩内存使用统计信息。这个表提供了关于 InnoDB 压缩缓冲池内存使用的度量。- -[no-]collect.engine_tokudb_status 如果你的 MySQL 服务器支持 TokuDB 存储引擎控制 mysql_exporter 是否通过执行 SHOW ENGINE TOKUDB STATUS 命令来收集 TokuDB 存储引擎的状态信息。与 InnoDB 类似这个命令的输出包含了大量的关于 TokuDB 内部操作的信息有助于分析和诊断 TokuDB 的性能问题。
性能模式 (perf_schema)
事件语句 - -[no-]collect.perf_schema.eventsstatements 控制 mysql_exporter 是否从 performance_schema.events_statements_summary_by_digest 表中收集 SQL 语句的性能指标。这个表包含了关于 SQL 语句执行的摘要信息如执行次数、执行时间、锁等待时间等。通过收集这些信息可以分析哪些 SQL 语句是性能瓶颈并进行相应的优化。 文件与I/O - -[no-]collect.perf_schema.file_events 控制是否从 performance_schema.file_summary_by_event_name 表中收集文件 I/O 事件的相关指标。这个表提供了关于文件 I/O 操作的摘要信息如读/写操作的次数、字节数等。通过监控这些指标可以了解数据库服务器的磁盘 I/O 使用情况从而进行性能调优或硬件升级。- -[no-]collect.perf_schema.file_instances 控制是否从 performance_schema.file_summary_by_instance 表中收集文件实例的 I/O 指标。这个表提供了关于单个文件实例如表空间文件、日志文件等的 I/O 操作摘要信息。通过监控特定文件的 I/O 情况可以更精确地定位性能问题。 内存与等待事件 - -[no-]collect.perf_schema.memory_events 控制是否从 performance_schema.memory_summary_global_by_event_name 表中收集内存事件的指标。这个表提供了关于 MySQL 服务器内存使用情况的摘要信息如各种内存对象的分配和释放次数、当前使用量等。通过监控这些指标可以了解 MySQL 服务器的内存使用情况并进行相应的调优或扩展。- -[no-]collect.perf_schema.eventswaits 控制是否从 performance_schema.events_waits_summary_global_by_event_name 表中收集等待事件的指标。这个表提供了关于 MySQL 服务器内部等待事件的摘要信息如锁等待、I/O 等待等。通过监控这些指标可以了解 MySQL 服务器的等待情况并找出可能的性能瓶颈。 复制组状态 - -[no-]collect.perf_schema.replication_group_members 控制是否从 performance_schema.replication_group_members 表中收集复制组成员的指标。这个表提供了关于 MySQL 组复制中组成员的状态信息如成员的角色主节点、从节点等、连接状态等。通过监控这些指标可以了解组复制的状态和性能并进行相应的故障排查或调优。
Web服务与监听
–web.telemetry-path/metrics 指定mysql_exporter 暴露指标的 HTTP 路径。Prometheus 或其他监控工具将从这个路径拉取 MySQL 相关的监控指标。默认路径通常是 /metrics但你可以根据需要进行更改。–web.listen-address 设置mysql_exporter 监听的地址和端口以便暴露指标和可能的 Web 界面尽管 mysql_exporter 通常不提供一个完整的 Web 界面只是暴露指标。例如你可以设置为 :9104 来监听所有可用的网络接口上的 9104 端口。你也可以指定特定的 IP 地址和端口组合如 127.0.0.1:9104 来仅监听本地回环地址。–[no-]web.systemd-socket 控制 mysql_exporter 是否使用 systemd 套接字激活来监听连接而不是传统的端口监听。当在 systemd 管理的系统中运行时这个选项允许 mysql_exporter 通过 systemd 套接字监听连接这可以提供更高级的启动和重启行为。默认情况下这个选项是禁用的即不使用 systemd 套接字激活但如果你正在一个 systemd 管理的环境中运行并且想要利用这种特性你可以启用它。- -web.config.file 允许指定一个实验性的配置文件路径该文件可以包含用于配置 mysql_exporter Web 服务的选项如启用 TLS 加密或基本认证。请注意这个选项是实验性的并且可能不是所有版本的 mysql_exporter 都支持。
日志配置
- -[no-]exporter.log_slow_filter 控制 mysql_exporter 是否添加一个慢查询日志过滤器。当启用时即不使用 --no-exporter.log_slow_filtermysql_exporter 会尝试在查询 MySQL 时避免触发 MySQL 的慢查询日志。这是有用的因为当 mysql_exporter 定期从 MySQL 收集指标时它可能会执行大量的短查询这些查询本身并不慢但如果频繁发生可能会填满慢查询日志。- -log.levelinfo 日志消息的严重程度。常见的日志级别包括debug、info、warn、error等。设置为info级别意味着kafka_exporter将记录信息性消息以及更严重级别的消息如警告和错误但会忽略调试级别的消息。选择合适的日志级别可以帮助你关注重要的日志事件同时避免日志中充斥过多不必要的细节。- -log.formatlogfmt 指定日志消息的输出格式。logfmt是一种简洁的键值对格式易于阅读和解析。除了logfmt外还可能支持其他格式如JSON等。选择适当的日志格式可以简化日志分析过程特别是当你使用日志分析工具或系统时。
四、实战演练生产环境搭建指南
4.1 创建普通用户管理mysqld_exporter
useradd deploy4.2 解压mysqld_exporter.tar.gz
注意: 我的是x86所以使用mysqld_exporter-0.15.1.linux-amd64.tar.gz您可以使用uname -a命令查看系统架构
tar xvf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /home/deploy/4.3 将mysqld_exporter集成到Prometheus配置中✂️ 将mysqld_exporter集成到Prometheus配置中确保数据能够正常采集。编辑Prometheus的配置文件通常是prometheus.yml在scrape_configs部分添加mysqld_exporter的配置。告诉Prometheus将采集localhost:9104的数据。
scrape_configs:# The job name is added as a label jobjob_name to any timeseries scraped from this config.- job_name: mysqld_exporterstatic_configs:- targets: [localhost:9104]4.4 更改mysqld_exporter软件包名称✂️
mv /home/deploy/mysqld_exporter-0.15.1.linux-amd64 /home/deploy/mysqld_exporter4.5 编辑mysqld_exporter.service文件
cat /etc/systemd/system/mysqld_exporter.service EOF
[Unit]
DescriptionMysqld Exporter
Afternetwork.target [Service]
Typesimple
Userdeploy
Groupdeploy
EnvironmentMYSQLD_EXPORTER_PASSWORDexporter!#2024
ExecStart/home/deploy/mysqld_exporter/mysqld_exporter \
--exporter.lock_wait_timeout2 \
--mysqld.addresslocalhost:3307 \
--mysqld.usernameexporter \
--collect.global_status \
--collect.global_variables \
--collect.info_schema.replica_host \
--collect.info_schema.tables \
--collect.info_schema.tables.databases* \
--collect.engine_innodb_status \
--web.listen-address0.0.0.0:9104 \
--log.levelinfo \
--log.formatlogfmt
Restarton-failure [Install]
WantedBymulti-user.target
EOF4.6 启动mysqld_exporter.service
sudo systemctl daemon-reloadsudo systemctl enable --now mysqld_exporter.service4.7 查看服务是否正常启动
# 查看service服务是否启动
sudo systemctl status mysqld_exporter.service# 查看端口是否存在
sudo ss -ntulp | grep 9104相关资料下载地址
官方文档https://prometheus.io/docs/introduction/overview/下载地址https://github.com/prometheus/prometheus/releases/tag/v2.52.0文档地址https://prometheus.io/docs/prometheus/latest/installation/离线包下载链接https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码yqpt