下载并解压安装sql_exporter
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/
修改主配置文件
cd /usr/local/
mv sql_exporter-0.5.linux-amd64 sql_exporter
cd /usr/local/sql_exporter
cat /usr/local/sql_exporter/config.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查询配置文件
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()
编写启动脚本并启动
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
- 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)