尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

sql_exporter核心概念完全指南:5分钟看懂Target、Job、Collector、Query与Metric

sql_exporter核心概念完全指南:5分钟看懂Target、Job、Collector、Query与Metric sql_exporter核心概念完全指南5分钟看懂Target、Job、Collector、Query与Metric【免费下载链接】sql_exporterDatabase agnostic SQL exporter for Prometheus项目地址: https://gitcode.com/gh_mirrors/sqle/sql_exportersql_exporter是一款面向 Prometheus 的数据库无关型 SQL 监控导出器database agnostic SQL exporter它不依赖特定数据库你只需通过配置文件编写 SQL 查询就能把 MySQL、PostgreSQL、SQL Server、ClickHouse 等任意数据库的数据变成 Prometheus 指标。对新手来说理解它的五大核心概念——Target、Job、Collector、Query、Metric是上手配置的第一步 一图理解sql_exporter 是如何工作的sql_exporter 部署在数据库服务器旁边Prometheus 定时抓取它的/metrics端点每次抓取会同步执行配置中定义的 SQL 查询。整个体系可以类比为一套监控流水线Job任务→ Target监控对象→ Collector采集器→ QuerySQL 查询→ Metric指标概念一句话解释对应源码Target一个被监控的数据库实例通过 DSN 连接target.goJob共享同一组采集器的一批 Targetjob.goCollector一组相关 SQL 查询与指标的集合collector.goQuery具体执行的 SQL 语句可被多个指标复用query.goMetric最终暴露在/metrics的 Prometheus 指标metric.go所有配置项的定义都集中在 config/config.go 中想深入细节可以直接查阅该文件。 核心概念 1Target监控目标Target 就是你要监控的那个数据库实例它由一个数据源名称DSN标识例如sqlserver://prom_user:prom_passworddbserver1:1433。sql_exporter 会利用 DSN 中://前的 schema 部分自动选择对应的 Go 驱动。Target 的每次采集流程见 target.go 中的Collect方法先对数据库执行 Ping判断目标是否可达若可达则并行运行它绑定的所有 Collector自动导出up1/0表示目标是否存活和scrape_duration_seconds本次抓取耗时两个内置指标。小提示当数据库不可达时/metrics会返回 HTTP 500Prometheus 便自动记录up0——这意味着你不需要写任何代码就能获得数据库宕机告警。 核心概念 2Job监控任务Job 是一组使用相同采集器的 Target 集合对应源码定义Job is a collection of targets with the same collectors appliedjob.go。配置中你二选一单 Target 模式直接写target段适合一台 sql_exporter 盯一个库的简单场景最常用多 Job 模式用jobs段定义多个任务每个任务下用static_configs列出若干 Target并为它们打上统一的job、instance标签及自定义标签。# 单 Target 模式见 examples/sql_exporter.yml target: data_source_name: sqlserver://prom_user:prom_passworddbserver1.example.com:1433 collectors: [mssql_standard]多 Job 模式让监控同类的 10 个 MySQL 实例变得非常简单只需在同一个 Job 里罗列它们即可标签完全一致便于在 Grafana 里做聚合对比。️ 核心概念 3Collector采集器Collector 是一组逻辑相关的 SQL 查询与指标的集合比如查询统计、I/O 统计、InnoDB 状态。它是 sql_exporter 最核心的抽象——采集什么内容完全由你在配置中定义。Collector 有两种定义方式见 config/config.go 的CollectorConfig内联定义直接写在sql_exporter.yml的collectors段下独立文件放在*.collector.yml文件中通过collector_files通配符加载便于跨环境共享和复用。项目自带一份开箱即用的 SQL Server 标准采集器包含死锁数、缓冲池命中率、I/O 等待等常用指标非常适合作为编写自定义采集器的模板examples/mssql_standard.collector.yml⚡性能技巧Collector 支持min_interval配置。设为 0默认时每次抓取都执行查询设为非零值后采集器会使用缓存collector.go 中的cachingCollector间隔内的重复抓取直接返回上次的结果——对昂贵查询特别友好。 核心概念 4QuerySQL 查询Query 就是真正执行的 SQL 语句。一个 Collector 可以包含多条 Query多条 Query 会并发执行见 query.go 的Collect方法。Query 有两种写法字面量查询直接内嵌在 Metric 下的query字段命名查询在 Collector 的queries段中定义多个 Metric 通过query_ref引用同一条查询——一次查询、多份指标避免重复扫描。完整示例见 documentation/sql_exporter.yml 中的io_stall查询。Query 返回的结果列分两类Key 列映射为指标的标签labelValue 列成为指标的数值一个 Value 列直接取值多个 Value 列时需用value_label指明标签名。 核心概念 5Metric指标Metric 是最终暴露在/metrics端点的 Prometheus 指标每个 Metric 必须声明四要素见 config/config.go 的MetricConfig及 metric.go 中的MetricFamily字段说明metric_name指标名如mssql_deadlockstype类型目前支持gauge与counterhelp人类可读的描述文本query/query_ref数据来源二者必填其一此外还可以附加key_labels来自查询结果的动态标签、static_labels固定键值对、value_label多值列的标签名。以 examples/mssql_standard.collector.yml 中的死锁指标为例key_labels把结果列db变成标签values指定cntr_value列为数值——一条查询即可生成mssql_log_growths{dbmydb} 5这样的指标。 五大概念如何协作用一次 Prometheus 抓取串起全部流程Prometheus 访问/metrics触发 sql_exporter 依次处理每个Job下的每个Target每个 Target Ping 数据库后并行运行其Collector列表每个 Collector 并发执行自己的Query查询结果按key_labels/values映射规则填充Metric统一附加job、instance等常量标签所有 Metric 汇入/metrics响应。 记住这条主线Job 管哪些库用同一套采集规则Target 管连哪个库Collector 管采集什么主题Query 管怎么查Metric 管怎么呈现。 上手建议与延伸阅读完整配置文件模板含所有字段注释documentation/sql_exporter.yml单 Target 模式示例examples/sql_exporter.yml配置解析与校验逻辑config/config.go快速启动克隆仓库后执行go build ./cmd/sql_exporter再运行./sql_exporter -help查看所有命令行参数默认监听:9399/metrics只需 5 分钟掌握这五个概念的分工你就能轻松读懂甚至从零编写 sql_exporter 配置把任意数据库变成 Prometheus 监控体系中的一员 【免费下载链接】sql_exporterDatabase agnostic SQL exporter for Prometheus项目地址: https://gitcode.com/gh_mirrors/sqle/sql_exporter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表