DBAtlas · 数据库运维图谱

使用 Prometheus + Grafana 监控数据库

监控难度: 中级耗时: 60–120 分钟

搭建一台集中监控服务器(Prometheus、Alertmanager、Grafana),并在被监控服务器上部署 node_exporter 以及所选的数据库 exporter:PostgreSQL、MySQL、Oracle、SQL Server、MongoDB、Redis、Elasticsearch。内容包括最小权限的监控用户、systemd 服务、基础告警规则、邮件/webhook 通知、datasource provisioning 和现成的 dashboard。本指南是各数据库安装指南末尾“接入监控”步骤的延续;完成后得到一套在单一界面查看所有服务器指标、出现问题时发送通知的监控体系。

架构: 1 台监控服务器 + 被监控服务器

开始之前

  • 监控服务器和被监控 Linux 服务器运行受支持的操作系统;时钟已同步(chrony)。时钟偏差会导致 Prometheus 中出现 "out of bounds" 错误和误告警。
  • 监控服务器上 /var/lib/prometheus 有足够的磁盘空间:… 台服务器 × … 天至少需要数 GB;建议使用单独的磁盘/LV。至少需要 2 个 CPU 和 4 GB 内存。
  • 从监控服务器(…)到每台服务器的 exporter 端口已开放:9100(node)…、9187(PostgreSQL)……、9104(MySQL)……、9161(Oracle)……、9216(MongoDB)……、9121(Redis)……、9114(Elasticsearch)……;到 SQL Server 服务器的 ……。用户到监控服务器的 …(Grafana)已开放。
  • 各服务器可以通过 HTTPS 访问 github.com(exporter 和 Prometheus 二进制文件),监控服务器还可以访问 …rpm.grafana.com…apt.grafana.com…;如无法访问,请在其他机器上下载文件后复制过来。
  • PostgreSQL 服务器的 pg_hba.conf 中有 host all all 127.0.0.1/32 scram-sha-256(或更严格的规则):exporter 通过本地 TCP 使用密码连接。
  • 在每个数据库上都有一个可以创建监控用户的管理员账户(PostgreSQL:postgres,MySQL:root,Oracle:SYSDBA,SQL Server:sysadmin,MongoDB:userAdmin,Redis:有 ACL 权限的用户,Elasticsearch:elastic)。
  • 在密码库中为监控用户的密码建立条目。密码在各步骤中交互式输入,只写入对应 exporter 用户可读的文件(0600)。

指南阶段

  • 准备 — 安装基础工具并同步时钟 · 防火墙:对监控服务器开放 exporter 端口 · 防火墙:开放 Grafana 端口
  • node_exporter(操作系统指标) — 下载并安装 node_exporter · 定义 node_exporter 服务 · 启动 node_exporter
  • PostgreSQL:postgres_exporter — 创建监控角色(pg_monitor) · 设置监控角色的密码 · 下载并安装 postgres_exporter · 写入连接设置和密码文件 · 定义 postgres_exporter 服务 · 启动 postgres_exporter
  • MySQL:mysqld_exporter — 创建监控用户和 exporter 凭据文件 · 下载并安装 mysqld_exporter · 定义 mysqld_exporter 服务 · 启动 mysqld_exporter
  • Oracle:oracledb_exporter — 创建监控用户 · 下载并安装 oracledb_exporter · 写入 exporter 配置 · 定义 oracledb_exporter 服务 · 启动 oracledb_exporter
  • SQL Server:sql_exporter — 创建监控 login(在 SQL Server … 上) · 下载并安装 sql_exporter · 写入目标配置(…) · 定义 sql_exporter 服务模板 · 启动 sql_exporter(…)
  • MongoDB:mongodb_exporter — 创建监控用户(mongosh) · 下载并安装 mongodb_exporter · 写入凭据文件 · 定义 mongodb_exporter 服务 · 启动 mongodb_exporter
  • Redis:redis_exporter — 创建监控用户(ACL) · 下载并安装 redis_exporter · 写入凭据文件 · 定义 redis_exporter 服务 · 启动 redis_exporter
  • Elasticsearch:elasticsearch_exporter — 创建监控角色和用户 · 下载并安装 elasticsearch_exporter · 写入 CA 证书和凭据文件 · 定义 elasticsearch_exporter 服务 · 启动 elasticsearch_exporter
  • Prometheus — 下载并安装 Prometheus · 定义 scrape 目标(prometheus.yml) · 编写告警规则 · 验证配置 · 定义 Prometheus 服务 · 启动 Prometheus
  • Alertmanager — 下载并安装 Alertmanager · 编写通知配置 · 验证配置 · 定义 Alertmanager 服务 · 启动 Alertmanager
  • Grafana — 定义 Grafana 软件源 · 定义 Grafana 软件源 · 安装 Grafana · 配置安全设置 · 定义 Prometheus datasource(provisioning) · 定义 dashboard provisioning …
  • 验证 — 检查所有目标均为 UP · 检查规则已加载 · 发送测试告警 · 检查 Grafana dashboard
  • 安装后工作 — 备份监控系统 · 执行安全检查清单
按您的环境打开分步计划 →