news 2026/4/16 13:52:04

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手搭建基于Prometheus + Grafana的高效且全面的数据库监控体系(部署指南)

数据库监控是保障系统稳定运行的“眼睛”。

本文将带你从零开始,搭建一套基于 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版本

/** 下载*/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

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

/** 生产环境启动*/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,依旧从官网下载

/** 下载 */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

可以按照默认方式启动

# 启动 node_exportercd node_exporter-1.91.linux-amd64nohup ./node_exporter & /**默认端口9100*/

2.2.2 监控MySQL

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

# 下载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监控账号​​​​​​​

/** 创建账号 */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';/** 注意,不同版本对权限要求不一致,启动时注意查看日志,如权限不足则继续授权或创建对应的账号 */

配置文件修改​​​​​​​

cd mysqld_exporter-0.18.0.linux-amd64vim .my.cnf /** 添加如下配置 */[client]port=3306user=mysql_monitorpassword=Mysql_monitor@2025

启动监控脚本

nohup ./mysqld_exporter --config.my-cnf=.my.cnf &

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

2.3 预警部署

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

#获取最新版本号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.gzcd alertmanager-${LATEST_VERSION}.linux-amd64

创建配置文件

​​​​​​​​​​​​
vim alertmanager.yml# 添加内容,示例如下global:smtp_smarthost: 'localhost:25'smtp_from: 'alertmanager@your-domain.com'route:group_by: ['alertname', 'cluster']group_wait: 30sgroup_interval: 5mrepeat_interval: 3hreceiver: 'default-receiver'receivers:- name: 'default-receiver'email_configs:- to: 'alerts@your-domain.com'

启动服务

nohup ./alertmanager &

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

2.4 可视化展示

2.4.1 安装Grafana

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

  • 下载并安装

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

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

运行如下脚本​​​​​​​

wget https://dl.grafana.com/oss/release/grafana-6.3.3-1.x86_64.rpmsudo yum localinstall grafana-6.3.3-1.x86_64.rpm
  • 启动grafana

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

启动grafana

/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,默认端口9104

PostgreSQL: 使用postgres_exporter,默认端口9187

Redis: 使用redis_exporter,默认端口9121

MongoDB: 使用mongodb_exporter,默认端口9216

SQL Server: 使用sqlserver_exporter,默认端口9399

Oracle: 使用oracledb_exporter,默认端口9161

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

MySQL: 3306

PostgreSQL: 5432

Redis: 6379

MongoDB:27017-27019

SQL SERVER: 1433

Oracle: 1521

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

外网

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

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

4. 总结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 15:28:10

MySQL8.0.40编译安装!

近期MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。1. 下载源码选择对应的版本、选择源码、操作系统如果没有登录或者没有MySQL官网账号,可以选择只下载2. 进行编…

作者头像 李华
网站建设 2026/4/16 12:26:45

批量生成AI数字人视频?试试HeyGem WebUI版本的强大功能

批量生成AI数字人视频?试试HeyGem WebUI版本的强大功能 在短视频内容井喷的今天,企业与创作者面临的不再是“有没有内容”,而是“能不能高效地产出大量高质量内容”。尤其是在教育、营销、客服等需要高度定制化但又重复性强的场景中&#xff…

作者头像 李华
网站建设 2026/4/4 8:25:18

C#中Lambda表达式多参数的极致运用(仅限高级开发者掌握的秘技)

第一章:C#中Lambda表达式多参数的极致运用(仅限高级开发者掌握的秘技)在C#高级编程实践中,Lambda表达式不仅是简化委托调用的利器,更是函数式编程范式的核心载体。当涉及多个参数时,Lambda展现出惊人的表达…

作者头像 李华
网站建设 2026/4/10 7:26:51

揭秘C# 12新特性:集合表达式如何彻底改变字典赋值方式

第一章:C# 12集合表达式与字典赋值的革新C# 12 引入了集合表达式(Collection Expressions)这一重要语言特性,极大简化了数组、列表和字典等集合类型的初始化语法。开发者现在可以使用统一的表达式语法创建和组合集合,提…

作者头像 李华
网站建设 2026/4/14 22:32:50

C#字典性能瓶颈?用集合表达式一行代码解决初始化难题

第一章:C#字典性能瓶颈?用集合表达式一行代码解决初始化难题在处理大量键值对数据时,传统的 C# 字典初始化方式往往会导致冗长的代码和潜在的性能开销。尤其是在需要预加载配置项或映射表的场景下,逐条添加元素不仅影响可读性&…

作者头像 李华
网站建设 2026/4/16 1:56:26

C#跨平台资源占用优化秘籍,掌握这4个技巧让你的应用轻如鸿毛

第一章:C#跨平台资源占用优化概述在现代软件开发中,C#凭借.NET平台的跨平台能力(如.NET 5及.NET Core)被广泛应用于Windows、Linux和macOS等多系统环境。然而,跨平台运行带来的资源调度差异使得内存使用、CPU占用和启动…

作者头像 李华