sql_exporter通过sql收集业务数据并通过prometheus+grafana展示

下载并解压安装sql_exporter

bash 复制代码
wget https://github.com/free/sql_exporter/releases/download/0.5/sql_exporter-0.5.linux-amd64.tar.gz
#解压
tar xvf sql_exporter-0.5.linux-amd64.tar.gz -C /usr/local/

修改主配置文件

bash 复制代码
cd /usr/local/
mv sql_exporter-0.5.linux-amd64 sql_exporter
cd /usr/local/sql_exporter
cat /usr/local/sql_exporter/config.yml
yml 复制代码
# Global defaults.
global:
  # Subtracted from Prometheus' scrape_timeout to give us some headroom and prevent Prometheus from timing out first.
  scrape_timeout_offset: 500ms
  # Minimum interval between collector runs: by default (0s) collectors are executed on every scrape.
  min_interval: 0s
  # Maximum number of open connections to any one target. Metric queries will run concurrently on multiple connections,
  # as will concurrent scrapes.
  max_connections: 3
  # Maximum number of idle connections to any one target. Unless you use very long collection intervals, this should
  # always be the same as max_connections.
  max_idle_connections: 3
  # Maximum number of maximum amount of time a connection may be reused. Expired connections may be closed lazily before reuse.
  # If 0, connections are not closed due to a connection's age.
  max_connection_lifetime: 5m

# The target to monitor and the collectors to execute on it.
target:
  # Data source name always has a URI schema that matches the driver name. In some cases (e.g. MySQL)
  # the schema gets dropped or replaced to match the driver expected DSN format.
  data_source_name: 'mysql://prometheus_user:prometheus_password@dbIP:3306/DBname'

  # Collectors (referenced by name) to execute on the target.
  # Glob patterns are supported (see <https://pkg.go.dev/path/filepath#Match> for syntax).
  collectors: [DBname*]

# Collector files specifies a list of globs. One collector definition is read from each matching file.
# Glob patterns are supported (see <https://pkg.go.dev/path/filepath#Match> for syntax).
collector_files: 
  - "/usr/local/sql_exporter/DBname_tables.yml"

编写sql查询配置文件

yml 复制代码
cat /usr/local/sql_exporter/DBname_tables.yml

collector_name: DBname_tables
metrics:
- metric_name: member_register_count_today
  type: gauge
  help: '当日会员注册数'
  values: [member_register_count_today]
  query: |
        SELECT COUNT(0) as 'member_register_count_today' FROM manage_member WHERE DATE(create_time)=CURDATE()

编写启动脚本并启动

bash 复制代码
cat > /usr/lib/systemd/system/sql-exporter-DBname.service <<EOF
[Unit]
Description=sql_exporter

[Service]
ExecStart=/usr/local/sql_exporter/sql_exporter -config.file /usr/local/sql_exporter/config.yml  -web.listen-address 0.0.0.0:9501
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable sql-exporter-DBname.service --now

接入prometheus

yaml 复制代码
  - job_name: 'sql'
    scrape_interval: 1m
    scrape_timeout: 50s
    static_configs:
      - targets:
        - 'localhost:9501'

prometheus热加载生效

curl -X POST http://localhost:9090/-/reload

prometheus查看监控指标是否收集

curl http://localhost:9501/metrics

grafana配置监控面板

配置会员注册趋势

复制代码
#当日
floor(delta(member_register_count_today[$__rate_interval]))>0 or (member_register_count_today*0)
昨日
floor(delta(member_register_count_today[$__rate_interval] offset 1d)) > 0 or (member_register_count_today*0)
相关推荐
w-w0w-w2 小时前
SQL注入
网络·数据库·sql
宇宙无敌暴龙战士6665 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
对空六课12 小时前
埋点上报太频繁拖性能,先做批量合并和时机控制
sql·工具选型·数据上报·埋点方案·sdk接入
java_nnnn13 小时前
Spring IoC & DI 从入门到理解:控制反转、依赖注入与 Bean 管理详解
数据库·sql·spring
code_slave(码畜)15 小时前
微服务架构落地:慢 SQL 治理与连接池调优 —— 守住数据库的最后一道防线
数据库·spring boot·sql·spring cloud·微服务·架构
码农阿豪16 小时前
MongoDB迁移到金仓数据库:商品属性继续灵活存,订单报表交给 SQL
数据库·sql·mongodb
秋名RG16 小时前
一条 SQL 语句在 MySQL 中的执行过程详解
数据库·sql·mysql
smilejingwei1 天前
TRAE 插件上新 | SQLazy:让 AI 写出可信复杂 SQL
数据库·人工智能·sql
这个DBA有点耶1 天前
主库秒级,从库延迟2小时:深挖Online DDL回放的MDL阻塞与算法降级机制
数据库·sql·dba