首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >手把手搭建基于Prometheus + Grafana的高效且全面的数据库监控体系(附部署指南)

手把手搭建基于Prometheus + Grafana的高效且全面的数据库监控体系(附部署指南)

作者头像
俊才
发布2026-01-07 17:35:31
发布2026-01-07 17:35:31
9630
举报
文章被收录于专栏:数据库干货铺数据库干货铺

数据库监控是保障系统稳定运行的“眼睛”。 本文将带你从零开始,搭建一套基于 Prometheus + Grafana 的高性能、可视化数据库监控平台,涵盖主机、数据库、日志、告警与仪表盘配置等,适用于生产环境!

数据库的监控方案有很多,例如用zabbix、赤兔等,本文通过开源组件,并配合可自定义的脚本等方式,设计一套高效、全面的数据库监控方案。欢迎留言交流。

1. 整体架构

数据库监控是观察数据库运行情况的"眼睛",是保障数据库稳定、高效运行的关键环节之一。Prometheus + Grafana是目前最流行的数据库监控工具组合之一,其使用灵活、社区活跃。其中Prometheus负责监控数据按照时间序列采集和存储,Grafana 用于构建强大的可视化仪表盘。

1.1 监控对象

  • 操作系统: 主机状态、CPU(CPU使用率、CPU load等)、内存(内存使用率、swap等)、磁盘(磁盘使用情况、IO读写速度、IO延迟等)、网络(进出流量、socket连接状态等)、文件打开数等
  • 数据库: 数据库状态、连接数、内存使用、TPS、QPS、慢SQL、并发数、数据延迟、锁等待、死锁等
  • 日志: 操作系统日志、数据库日志
  • 其他: 自定义监控(长事务、表增量、大表等)

1.2 数据采集

  • 客户端方式: 对于主机、操作系统、各类数据库均有对应的监控客户端,直接部署(数据库客户端需要在被监控的数据库开通对应的数据库监控账号及授权)
  • 其他采集端: 对于日志类及自定义监控项需要借助logstash或自定义采集程序来获取数据

1.3 监控数据存储

因使用Prometheus进行采集、监控,因此数据存储于Prometheus的TSDB中(时序库,可以自定义存储时长,对于过期数据自动清理,且监控检索效率高)

1.4 数据展示

因grafana提供了丰富的展示面板,因此可以通过grafana进行图形化展示。另外grafana上也可以自定义面板,用来满足不同的数据图形化展示。

1.5 监控预警

  • 配置预警规则: 可以根据主机、各类数据库制定预警规则
  • 预警通知: 对匹配到的预警规则项Prometheus alert会发出相应预警(邮件、短信、或者其他webhook)
  • 自定义预警: 配置自定义程序进行定制化预警

2. 部署方案

2.1 Prometheus服务端部署

2.1.1 Prometheus 服务端程序安装

Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面

可登录官网进行下载,官网下载地址:https://prometheus.io/download/

根据操作系统类别选择文件进行下载,本次部署在linux上且选择LTS版本

代码语言:javascript
复制
/**  下载*/
wget https://github.com/prometheus/prometheus/releases/download/v3.5.0/prometheus-3.5.0.linux-amd64.tar.gz
/**  解压*/
tar -zxvf prometheus-3.5.0.linux-amd64.tar.gz

2.1.2 启动prometheus

生产环境可参考如下方式启动

代码语言:javascript
复制
/** 生产环境启动*/nohup ./prometheus --config.file=prometheus.yml --web.enable-lifecycle --storage.tsdb.retention.time=60d   &
  


--web.enable-lifecycle  加上此参数可以远程热加载配置文件,无需重启prometheus,调用指令是curl -X POST http://ip:9090/-/reload
-- storage.tsdb.retention.time 数据默认保存时间为15天,启动时加上此参数可以控制数据保存时间

其他的参数及配置可以在prometheus.yml中调整及配置

2.2 客户端部署

根据不同的需求,官网上有不同的客户端可用于下载部署,本次按照监控Linux主机及MySQL数据库为例进行相关部署操作。

2.2.1 监控linux主机

下载监控linux主机的node_exporter,依旧从官网下载

代码语言:javascript
复制
/**  下载  */
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz
/**  解压  */
tar  -zxvf node_exporter-1.9.1.linux-amd64.tar.gz

可以按照默认方式启动

代码语言:javascript
复制
#  启动 node_exporter
cd  node_exporter-1.91.linux-amd64 
nohup ./node_exporter  &   /**默认端口9100*/

2.2.2 监控MySQL

下载监控MySQL的mysqld_exporter,依旧从官网下载

代码语言:javascript
复制
#  下载 
wget  https://github.com/prometheus/mysqld_exporter/releases/download/v0.18.0/mysqld_exporter-0.18.0.linux-amd64.tar.gz
#  解压 
tar -zxvf  mysqld_exporter-0.18.0.linux-amd64.tar.gz

在MySQL里配置MySQL监控账号

代码语言:javascript
复制
/**  创建账号  */
mysql> CREATE USER 'mysql_monitor'@'localhost' identified by 'Mysql_monitor@2025'; 
/** 授权 */
mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'mysql_monitor'@'localhost'; 
mysql> GRANT SELECT ON performance_schema.* TO 'mysql_monitor'@'localhost';
/** 注意,不同版本对权限要求不一致,启动时注意查看日志,如权限不足则继续授权或创建对应的账号 */

配置文件修改

代码语言:javascript
复制
cd mysqld_exporter-0.18.0.linux-amd64
vim .my.cnf /**  添加如下配置 */
[client]
port=3306
user=mysql_monitor
password=Mysql_monitor@2025

启动监控脚本

代码语言:javascript
复制
nohup   ./mysqld_exporter --config.my-cnf=.my.cnf  &

其他自定义的监控也可以编写相应的采集程序将监控数据存储于Prometheus、ES或MySQL等其他存储中。

2.3 预警部署

预警使用alertmanager进行管理,部署步骤如下:

代码语言:javascript
复制
#获取最新版本号
LATEST_VERSION=$(curl -s https://api.github.com/repos/prometheus/alertmanager/releases/latest | grep tag_name | cut -d'"' -f4)
#下载二进制文件
wget https://github.com/prometheus/alertmanager/releases/download/${LATEST_VERSION}/alertmanager-${LATEST_VERSION}.linux-amd64.tar.gz
# 解压
tar xvf alertmanager-${LATEST_VERSION}.linux-amd64.tar.gz
cd alertmanager-${LATEST_VERSION}.linux-amd64

创建配置文件

代码语言:javascript
复制
vim alertmanager.yml
# 添加内容,示例如下
global:
  smtp_smarthost: 'localhost:25'
  smtp_from: 'alertmanager@your-domain.com'
route:
  group_by: ['alertname', 'cluster']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 3h
  receiver: 'default-receiver'
receivers:
- name: 'default-receiver'
  email_configs:
  - to: 'alerts@your-domain.com'
启动服务
代码语言:javascript
复制
nohup ./alertmanager  &

部署完毕后可以在通过页面查看告警信息 http://ip:9093

2.4 可视化展示

2.4.1 安装Grafana

Grafana是一个可视化面板(Dashboard),有着丰富的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus等数据源。

  • 下载并安装

下载地址:https://grafana.com/grafana/download

选择最新的版本进行安装,按照网站的提示运行脚本即可(监控服务器需可访问外网,如无法访问外网可与我沟通如何离线快速部署)。

运行如下脚本

代码语言:javascript
复制
wget https://dl.grafana.com/oss/release/grafana-6.3.3-1.x86_64.rpm
sudo yum localinstall grafana-6.3.3-1.x86_64.rpm

  • 启动grafana

安装完成后,grafana服务默认已安装,配置文件为/etc/grafana/grafana.ini,如需修改路径及端口,可在该文件中修改

启动grafana

代码语言:javascript
复制
/etc/init.d/grafana-server  start
  • 登录grafana

访问页面http://服务器IP:3000 ,默认账号、密码admin/admin 首次登录将提示修改密码,建议修改

2.4.2 配置仪表盘

  • 下载各监控仪表盘

以上模板grafana官方网站均有,可以根据自己的需要下载对应的模板,对应地址为https://grafana.com/grafana/dashboards。找到对应的仪表盘模板后进入下载

  • 配置数据源

本次使用的为prometheus数据源,因此配置一个prometheus的数据源。如果之前在grafana上没有配置过数据源 登录后会提示创建

选择prometheus,配置prometheus地址

最终save & Test即可

  • 导入仪表盘

将下载的模板导入

修改名称及数据源 选择import即可

  • 配置完成后即可查看各监控情况

主机监控如下

MySQL

3. 资源需求

部署相关监控服务端、客户端、采集程序等,需要相关的服务器资源、网络及数据库权限等。对应的资源需求列表如下:

资源

需求

说明

服务器

8C 32G内存 1T以上存储 * 2台

部署Prometheus服务端、Alertmanager、grafana、MySQL 等,2台用于高可用部署,避免单点故障

虚拟IP或域名

1个VIP或内网域名

用于高可用切换后登录页面等无需做调整变更

告警接口

短信、电话、飞书等告警接口

根据不同预警级别的不同分别进行各渠道告警通知

网络端口

3000

grafana可视化页面端口

9090

Prometheus

9093

alertmanager告警页面端口

9100、9182

Prometheus主机客户端端口

MySQL: 使用mysqld_exporter,默认端口9104PostgreSQL: 使用postgres_exporter,默认端口9187Redis: 使用redis_exporter,默认端口9121MongoDB: 使用mongodb_exporter,默认端口9216SQL Server: 使用sqlserver_exporter,默认端口9399Oracle: 使用oracledb_exporter,默认端口9161

Prometheus各类数据库客户端端口(如需其他的再另行添加)

MySQL: 3306PostgreSQL: 5432Redis: 6379MongoDB:27017-27019SQL SERVER: 1433Oracle: 1521

各类数据库默认端口(如需其他的再另行添加),用于代理监控及自定义监控

外网

访问外网,用于部署相关依赖组件

如有可代理访问的ngnix、yum源、pip源等,可以不开放外网

4. 总结

通过 Prometheus + Grafana + Exporter + Alertmanager 四件套,你可以快速构建一套企业级数据库监控平台,实现全方位性能洞察、实时可视化展示、智能告警通知、低成本、高扩展、易维护的数据库监控系统,全面提升监控的覆盖面及及时性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库干货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库的监控方案有很多,例如用zabbix、赤兔等,本文通过开源组件,并配合可自定义的脚本等方式,设计一套高效、全面的数据库监控方案。欢迎留言交流。
  • 1. 整体架构
    • 1.1 监控对象
    • 1.2 数据采集
    • 1.3 监控数据存储
    • 1.4 数据展示
    • 1.5 监控预警
  • 2. 部署方案
    • 2.1 Prometheus服务端部署
      • 2.1.1 Prometheus 服务端程序安装
      • 2.1.2 启动prometheus
    • 2.2 客户端部署
      • 2.2.1 监控linux主机
      • 2.2.2 监控MySQL
    • 2.3 预警部署
    • 2.4 可视化展示
      • 2.4.1 安装Grafana
      • 2.4.2 配置仪表盘
  • 3. 资源需求
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档