配置 Prometheus 通过 query-exporter 自定义 SQL 抓取云上MySQL 监控指标

现今,数据构建和管理方式通常分为自建模式(IaaS)和托管模式(PaaS)。在 Prometheus 监控架构中,对于自建模式,我们通常可以选择使用 node-exportermysql-exporter 采集节点和 MySQL 数据库的数据。

对于托管数据库,由于无法直接访问服务器,我们无法直接采集数据。在这种情况下,我们可以选择以下几种场景进行监控:

  1. 云厂商监控服务: 利用云厂商提供的监控服务,通过集成其监控服务,完成对托管数据库的监控。

  2. 自开发采集服务: 自己开发数据采集服务,通过云服务商提供的 API 或其他方式,定制数据采集和监控流程。

  3. 第三方采集服务: 使用第三方的监控服务,如 query-exporter。这类服务可以通过 SQL 查询的方式直接采集托管数据库中保存在 performance_schema 的数据。

在这种情况下,query-exporter 是一种第三方采集服务,它允许通过 SQL 查询方式采集托管数据库的性能指标,尤其是保存在 performance_schema 的数据。这种灵活的方式允许我们在托管环境中实现数据库监控,并集成到 Prometheus 监控系统中。

1 query-exporter 安装版本与数据库支持

query-exporter 作者当前发布版本关系如下:

1 query-exporter Snaps 安装版 支持数据库如下:

  • PostgreSQL (postgresql://)
  • MySQL (mysql://)
  • SQLite (sqlite://)
  • Microsoft SQL Server (mssql://)
  • IBM DB2 (db2://) on supported architectures (x86_64, ppc64le and s390x)

2 query-exporter 容器版 支持数据库如下:

  • PostgreSQL (postgresql://)
  • MySQL (mysql://)
  • SQLite (sqlite://)
  • Microsoft SQL Server (mssql://)
  • IBM DB2 (db2://)
  • Oracle (oracle://)
  • ClickHouse (clickhouse+native://)

2 创建 query-expoter 访问数据库权限

注意:exporter 的密码不要有 @ 符号,会导致认证错误

CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';

3 安装 query-exporter

query-exporter支持单一进程采集多数据库实例功能

# 创建 query-expoter 目录,用于为容器提供持久化配置
mkdir -pv /usr/local/query-expoter 
cd /usr/local/query-expoter 
touch config.yaml

4 配置 query-exporter 以 docker 形式启动

通过容器方式启动服务,可以在主机通过容器直接部署,也可以部署到k8s中,示例以容器为准

-v /usr/local/query-expoter/config.yaml:/config.yaml 将本地config.yaml 挂载到 容器的 /config.yaml

-p 将容器9560端口映射到主机

docker run -p 9560:9560/tcp -v "/usr/local/query-expoter/config.yaml:/config.yaml" -d --restart=always  docker.io/adonato/query-exporter:latest

5 配置 query-exporter 的数据库认证

注意:

  • 示例配置构建在 Oracle云(OCI) 托管 MySQL 数据库,其他云厂商托管数据库需提前确认指标数据的存储方式。
  •  OCI云系统性能数据存储: performance_schema 库。
  • 表达式中 metrics 指标的命名与queries.mysql_mem_seconds.metrics 存在对应关系。
  • 表达式中 queries.mysql_mem_seconds.sql输出的列,要与queries.mysql_mem_seconds.metrics名称对应,示例为内存数据采集。
# vim /usr/local/query-expoter/config.yaml

########################
支持多 databases 配置
########################

databases:
  db1:
    dsn: mysql://exporter:xxx@aws.rds.com:3306/performance_schema
    labels:
      modes: Primary DB system
      db_instance: oci.rds.com:3306
  db2:
    dsn: mysql://exporter:xxxx@oci.mds.com:3306/performance_schema
    labels:
      modes: Read replicas DB system
      db_instance: oci.mds.com:3306



########################
查询指标提前声明对应指标类型
指标数据主要为使用率指标
类型采用 gauge

注意:配置中 metrics 指标的命名与queries.mysql_mem_seconds.metrics 存在对应关系
########################
metrics:
  oci_mds_mem_total_bytes:
    type: gauge
    description: A sample gauge
  oci_mds_mem_free_bytes:
    type: gauge
    description: A sample gauge
  oci_mds_mem_used_bytes:
    type: gauge
    description: A sample gauge
  oci_mds_mem_available_bytes:
    type: gauge
    description: A sample gauge


########################
注意:配置中 metrics 指标的命名与queries.mysql_mem_seconds.metrics 存在对应关系

datebases中的db1和db2与 datbases 配置对应

sql输出的列,要与queries.mysql_mem_seconds.metrics名称对应,示例为内存数据采集
########################
queries:
  mysql_mem_seconds:
    interval: 15
    databases: [db1,db2]
    metrics:
      - oci_mds_mem_total_bytes
      - oci_mds_mem_free_bytes
      - oci_mds_mem_used_bytes
      - oci_mds_mem_available_bytes

    sql: >
      select
          total_bytes as oci_mds_mem_total_bytes,
          free_bytes as oci_mds_mem_free_bytes,
          used_bytes as oci_mds_mem_used_bytes,
          available_bytes as oci_mds_mem_available_bytes
      from performance_schema.system_memory_stats;

6 Prometheus 配置 query_exporter

- job_name: "query_expoter"
    static_configs:
      - targets: ["127.0.0.1:9560"]
        "labels": {
          "app": "MySQL"
    }
    metric_relabel_configs:
      - source_labels: [db_instance]
        target_label: instance

7 参考资料

Prometheus metric 介绍

Understanding metric types | Prometheus

query-exporter 官方github

https://github.com/albertodonato/query-exporter

query-expoter Snap 安装说明

https://github.com/albertodonato/query-exporter?tab=readme-ov-file#install-from-snap

query-expoter Docker 运行说明

https://github.com/albertodonato/query-exporter?tab=readme-ov-file#run-in-dockr

🚀 炸鸡物料库 🚀

🔍 内容定位: IT技术领域,云计算、云原生、DevOps 和 AI 等相关的技术资讯、实践和经验分享。面向开发、系统和云计算,提供实用的技术内容。

🎯 目标受众: 面向开发者、系统管理员和云计算从业者,提供实用的技术内容。

🗓️ 更新频率:每周更新,每次分享都为您带来有价值的技术内容。

🤝 互动与反馈: 鼓励读者留言、评论,有问题随时提问,我们将积极互动并提供帮助。

💌 订阅方式: 扫描二维码或搜索“炸鸡物料库”关注,不错过每一篇精彩内容。

🌐 合作与分享: 如果您有技术分享或合作计划,欢迎联系我们,共同成长!

  • 31
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要在Windows上配置Prometheus的process-exporter,可以按照以下步骤进行操作: 1. 下载process-exporter的Windows版本,可以从process-exporter的官方GitHub页面上下载:https://github.com/ncabatoff/process-exporter/releases 2. 将下载的可执行文件解压缩到一个合适的目录中,例如C:\Program Files\process-exporter。 3. 编写一个process-exporter配置文件,指定需要监控的进程以及相关参数,例如: ``` process_names: - firefox.exe - chrome.exe windows_exporter: log_queries: true ``` 将该配置文件保存为process-exporter.yml。 4. 在Prometheus配置文件prometheus.yml中添加以下内容,以启用process-exporter: ``` scrape_configs: - job_name: 'process-exporter' static_configs: - targets: ['localhost:9256'] ``` 注意,process-exporter默认监听端口9256。 5. 保存并重新启动Prometheus和process-exporter。 现在,Prometheus就可以监控Windows上的进程了。可以通过Prometheus的web界面来查看相关的指标,并使用PromQL语言进行查询和分析。例如,可以使用以下查询来查看chrome.exe的CPU使用率: ``` 100 * (1 - avg by (instance)(rate(process_cpu_seconds_total{process_name="chrome.exe"}[5m]))) ``` ### 回答2: 配置Prometheus的process-exporter可以通过以下步骤完成: 1. 首先,从Process Exporter的GitHub页面(https://github.com/ncabatoff/process-exporter)下载最新版本的二进制文件。根据操作系统的类型,选择对应的二进制文件,例如Windows选择`.exe`文件。 2. 将下载的二进制文件解压缩到一个适当的位置,例如C:\process-exporter。 3. 在解压缩目录中创建一个名为`process-exporter.yml`的配置文件,该文件将定义要监控的进程列表和其他选项。 4. 在配置文件中指定要监控的进程。例如,可以在`process_names`部分添加以下行来监控一个名为`my_process`的进程: ```yaml process_names: - my_process ``` 你也可以添加多个进程名称,按需监控。 5. 配置Prometheus以收集process-exporter指标。在Prometheus配置文件(prometheus.yml)中添加以下具有适当地址和端口的`scrape_configs`部分: ```yaml scrape_configs: - job_name: 'process_exporter' static_configs: - targets: ['localhost:9256'] ``` 这将告诉Prometheus在本地主机上的9256端口上收集来自process-exporter指标。 6. 保存并关闭Prometheus配置文件。 7. 打开一个命令提示符窗口,并导航到process-exporter的解压缩目录。 8. 在命令提示符中运行以下命令启动process-exporter: ```bash process-exporter.exe --config.path=process-exporter.yml ``` 9. 确保Prometheus服务器正在运行,然后重新加载配置文件。 10. 访问Prometheus的Web界面,并导航到“Targets”选项卡。您应该看到一个名为`process_exporter`的目标显示为"UP",表示process-exporterPrometheus之间的连接正常。 11. 接下来,您可以在Prometheus中使用适当的查询来检索和可视化process-exporter提供的指标数据。 通过按照以上步骤配置和启动process-exporter,您将能够监控和收集有关指定进程的性能指标,并将其集成到Prometheus监控系统中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值