首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日志看懂了吗?DBA必会的性能监控工具Prometheus、Zabbix、Nagios攻略

日志看懂了吗?DBA必会的性能监控工具Prometheus、Zabbix、Nagios攻略

作者头像
IT咸鱼
发布2025-05-20 19:02:17
发布2025-05-20 19:02:17
42800
代码可运行
举报
运行总次数:0
代码可运行

作为DBA工程师,你会发现数据库性能出现问题时,监控工具就像医生的听诊器。掌握性能监控工具使用方法,不仅能及时发现风险,还能准确定位问题。今天,我和你聊聊三款主流监控工具的特点、搭建方法和实际调试经验——无论你是管理云原生环境还是传统IT系统,都能从中获得有用的信息。下面我将分部分介绍。

#一、工具对比:哪款更适合你的环境?

数据库性能问题千头万绪,监控工具各有千秋。我们先来看三款工具的特点:

#1. Prometheus:专为云原生打造的实时监控利器

  • 优势 通过“node_exporter”采集服务器的CPU、内存、磁盘等基础指标,用“blackbox_exporter”监控HTTP服务状态。支持PromQL查询语言,能够像写SQL那样灵活查询数据变化。适用于Kubernetes、微服务集群、分布式系统监控。
  • 不足之处 官方界面相对简陋,很多场景需要借助Grafana进行可视化。告警规则配置依赖Alertmanager,对新手来说规则编写和调试过程可能需要多花心思。

一次实际应用中,有位团队在微服务集群中使用Prometheus收集数据,发现对某个服务的响应速度开始下降,通过PromQL查询准确定位问题点,随后迅速调整代码,使性能恢复正常。这个案例充分说明了Prometheus在动态环境中的优势。

#2. Zabbix:稳定企业监控的全能选手

  • 优势 内置了针对多种数据库(如MySQL、PostgreSQL)的模板,能够监控数据库连接数、慢查询、磁盘利用率等。事件处理、告警配置十分灵活,支持邮件、短信、即时通信工具多种通知方式。适合传统企业系统的集中化监控。
  • 不足之处 当监控项数据较多时,Zabbix Server的数据库往往会成为瓶颈;自定义监控项需要编写脚本,对新手操作起来有一定挑战性。 在某企业中,Zabbix被用来监控多个数据库实例,虽然初期配置复杂但运维人员很快摸清节奏。后期通过调整数据库参数和采集间隔,逐步解决了监控延迟问题,从而让监控体系变得更加稳定可靠。

#3. Nagios:插件众多、适应性强的老牌卫士

  • 优势 拥有丰富的插件生态,可以通过各种插件进行灵活扩展。对轻量级服务监控较为适合,核心程序只负责告警,而具体数据采集则由各类插件负责处理。适用于特定场景中对数据采集精度要求不高的环境。
  • 不足之处 默认界面风格陈旧,用户体验偏老旧;不自动保存历史数据,需要额外配置插件实现数据存储。 在一些小型项目中,Nagios凭借较低的资源占用获得好评。有一位同事使用Nagios监控多个轻量级服务,通过自定义脚本解决了告警延迟的问题,最终实现了对业务系统状态的快速反馈。

小提示:选择监控工具时不要只看功能描述,关键在于系统规模、数据采集需求以及维护成本。对于分布式、大规模动态环境,Prometheus更能发挥优势;而传统企业或者对可视化要求较高的系统,Zabbix则更适用;对简单轻量监控,Nagios是个不错的选择。


#二、动手实战:搭建Prometheus监控平台

下面我详细介绍如何在一台服务器上搭建Prometheus监控平台,同时监控一台MySQL服务器的性能数据。实验环境基于CentOS系统,适合入门运维的新手试用。

#环境准备

  • •操作系统:CentOS 7.9(或其他兼容版本)
  • •目标主机:一台MySQL数据库服务器,IP地址假定为192.168.1.100
  • •监控服务器:用来安装Prometheus和Grafana,建议单独部署

#步骤1:安装Prometheus

下载Prometheus最新版本 打开终端输入以下命令:

代码语言:javascript
代码运行次数:0
运行
复制
wget https://github.com/prometheus/prometheus/releases/download/v2.40.1/prometheus-2.40.1.linux-amd64.tar.gz

解压安装包

代码语言:javascript
代码运行次数:0
运行
复制
tar -xvf prometheus-2.40.1.linux-amd64.tar.gz

cd prometheus-2.40.1.linux-amd64

编辑配置文件 打开prometheus.yml文件,添加采集MySQL数据的任务。具体配置如下:

代码语言:javascript
代码运行次数:0
运行
复制
global:

scrape_interval:15s

scrape_configs:

-job_name:'mysql'

static_configs:

-targets: ['192.168.1.100:9104']  # 指定mysqld_exporter的地址和端口

文件中各项含义:

  • scrape_interval: 指定数据采集的频率。15秒是个不错的频率,既能实时反映数据,又不至于产生太多负载。
  • static_configs: 固定的目标地址列表,表示需要监控哪些主机。

启动Prometheus 执行命令启动服务:

代码语言:javascript
代码运行次数:0
运行
复制
./prometheus --config.file=prometheus.yml

启动后,你可以在浏览器中访问http://<监控服务器IP>:9090查看Prometheus界面,查询数据是否正常采集。

#步骤2:部署mysqld_exporter

Prometheus不直接采集MySQL数据,需要一个中间件程序——mysqld_exporter。接下来在MySQL服务器上搭建数据采集端:

下载mysqld_exporter

代码语言:javascript
代码运行次数:0
运行
复制
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz

tar -xvf mysqld_exporter-0.14.0.linux-amd64.tar.gz

cd mysqld_exporter-0.14.0.linux-amd64

配置MySQL账号 为了让mysqld_exporter能正确采集数据,在MySQL数据库中创建专用账号:

代码语言:javascript
代码运行次数:0
运行
复制
CREATEUSER'exporter'@'localhost' IDENTIFIED BY'123456';

GRANT PROCESS, REPLICATION CLIENT ON*.*TO'exporter'@'localhost';

FLUSH PRIVILEGES;

这步确保mysqld_exporter能获取数据库的运行信息。

启动mysqld_exporter 设置数据源连接字符串并启动:

代码语言:javascript
代码运行次数:0
运行
复制
export DATA_SOURCE_NAME="exporter:123456@(localhost:3306)/"

./mysqld_exporter

服务默认监听9104端口,Prometheus会根据配置文件采集这个端口上的指标数据。

#步骤3:安装Grafana,搭建可视化仪表盘

Grafana能够把采集到的数据以图表形式展示,步骤如下:

安装Grafana

根据操作系统选择合适安装包,在CentOS系统上使用yum:

代码语言:javascript
代码运行次数:0
运行
复制
yum install -y grafana-9.5.2.rpm

systemctl start grafana-server

systemctl enable grafana-server

添加数据源和导入仪表盘

  • •打开浏览器访问http://<监控服务器IP>:3000,使用默认账号密码登录(admin/admin)。
  • •在Grafana控制台中,进入“数据源”配置,选择Prometheus,输入Prometheus服务器地址,如http://<监控服务器IP>:9090,保存配置。
  • •导入仪表盘:Grafana社区提供大量预设模板,输入仪表盘ID(如7362)导入后,即可看到实时MySQL监控数据。

各项指标如查询量、连接数、慢查询统计等会直观展示在仪表板上。通过设置告警规则,你还可以做到当指标超过设定阈值时及时收到提醒。


#三、安装Zabbix监控平台:企业级监控的另一条路

接下来介绍如何使用Zabbix来监控数据库性能。Zabbix适用于需要集中管理大量监控项的环境,具有丰富的报警和模板功能。

#环境准备

  • •操作系统:CentOS 7.9
  • •数据库服务器和Zabbix Server分别部署在不同的主机上更佳(也可以先在同一台机器上演示)。

#步骤1:安装Zabbix Server

添加Zabbix仓库

参考官方文档,执行以下命令:

代码语言:javascript
代码运行次数:0
运行
复制
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-2.el7.noarch.rpm

yum clean all

安装Zabbix Server及前端(含Apache、PHP支持)

代码语言:javascript
代码运行次数:0
运行
复制
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

配置数据库

在MySQL中创建Zabbix数据库和用户:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE DATABASE zabbix CHARACTERSET utf8 COLLATE utf8_bin;

CREATEUSER'zabbix'@'localhost' IDENTIFIED BY'zabbix_password';

GRANTALL PRIVILEGES ON zabbix.*TO'zabbix'@'localhost';

FLUSH PRIVILEGES;

导入Zabbix初始化数据库脚本:

代码语言:javascript
代码运行次数:0
运行
复制
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix_password zabbix

编辑配置文件

修改/etc/zabbix/zabbix_server.conf文件,设置数据库连接信息:

代码语言:javascript
代码运行次数:0
运行
复制
DBPassword=zabbix_password

启动服务

开启Zabbix Server和Agent:

代码语言:javascript
代码运行次数:0
运行
复制
systemctl start zabbix-server zabbix-agent httpd

systemctl enable zabbix-server zabbix-agent httpd

#步骤2:配置Zabbix前端

在浏览器中访问http://<Zabbix服务器IP>/zabbix,根据向导逐步配置:

  • •输入数据库信息、服务器信息等。
  • •配置完成后登录Zabbix控制台,默认账号密码通常为Admin/zabbix。

#步骤3:添加监控项

Zabbix提供了针对MySQL的监控模板,选择模板后自动采集数据库状态、慢查询和连接数等指标。同时可自定义项:

  • •新建一个监控项,设置为使用“zabbix_agentd”的查询方式。
  • •调整采集频率和历史数据保存周期,确保系统负载合理。

实际应用中,某公司使用Zabbix监控后,曾发现部分主机由于长期未做数据清理,导致监控数据库性能下降。调整采集间隔和清理历史数据后,监控系统恢复了正常状态。


#四、部署Nagios监控平台:轻量化监控体验

虽然Nagios界面较旧,但在特定场景下依然拥有优势。下面介绍Nagios的基础安装和常见插件使用方法。

#环境准备

  • •操作系统:CentOS 7.x
  • •小型环境下监控几个应用和数据库实例

#步骤1:安装Nagios Core

创建用户及依赖安装

代码语言:javascript
代码运行次数:0
运行
复制
yum install -y httpd php gcc glibc glibc-common wget unzip

useradd nagios

usermod -a -G nagios apache

下载并编译Nagios

代码语言:javascript
代码运行次数:0
运行
复制
cd /tmp

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.7.tar.gz

tar -zxvf nagios-4.4.7.tar.gz

cd nagios-4.4.7

./configure --with-httpd-conf=/etc/httpd/conf.d

make all

make install

make install-init

make install-commandmode

make install-config

make install-webconf

设置Nagios管理员账号密码

代码语言:javascript
代码运行次数:0
运行
复制
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

按提示设置密码。

启动服务

代码语言:javascript
代码运行次数:0
运行
复制
systemctl restart httpd

systemctl start nagios

systemctl enable nagios

访问http://<服务器IP>/nagios登录监控界面。

#步骤2:添加和测试插件

Nagios依靠插件采集数据。例如使用check_pgactivity来监控PostgreSQL或者其他自定义插件采集MySQL性能。

  • •将插件脚本放置到/usr/local/nagios/libexec目录下。
  • •编辑配置文件/usr/local/nagios/etc/objects/commands.cfg,定义新的监控命令。
  • •在主机配置文件中添加对应服务项,重新加载Nagios配置。

实际操作中,曾有同事通过调整check_interval参数,优化了告警延迟问题。通过不断实验修改参数后,监控数据更加实时、告警更及时,极大减少了因为监控滞后带来的损失。


#五、故障排查与问题处理实例

在搭建和使用监控系统过程中,新手常会遇到各类问题。下面列出一些常见问题及我的处理经验:

#1. Prometheus目标显示DOWN

  • 现象:Prometheus Targets页面中,mysqld_exporter目标状态为“DOWN”。
  • 排查方法
    • •确认目标服务器9104端口是否开放,使用firewall-cmd --list-ports检查。
    • •通过命令curl http://192.168.1.100:9104/metrics检测是否能获取数据。
    • •检查exporter日志,确认是否有数据库连接错误。 我的经验是,当出现这种情况时,往往是防火墙配置或exporter环境变量设置不对,多检查这两处大多数问题能迎刃而解。

#2. Zabbix数据显示不全

  • 现象:监控数据库的部分指标缺失或延迟严重。
  • 处理方案
    • •检查Zabbix Server所在的数据库负载,调整参数如innodb_buffer_pool_size及历史数据保留周期。
    • •调整采集间隔,把非关键监控项的间隔设为300秒,降低系统负载。 某次实际操作中发现,数据库监控数据因采集频率过高而导致Zabbix数据库卡顿,调整后系统运行更加平稳。

#3. Nagios告警延迟

  • 现象:报警响应时间过长,实际系统异常后大约10分钟才触发警报。
  • 解决办法
    • •修改服务项中的check_interval参数,将检测频次提高至1分钟。
    • •更新插件脚本,确保数据采集实时性。 此外,同事还部署了额外的通知方式(如飞书机器人),使得一旦异常发生能立即收到提醒,避免了因网络延迟或参数设置导致的报警滞后。

适当学习编写自定义脚本 虽然现有插件和模板能满足大部分需求,但有时定制化需求会迫使你编写简单的采集脚本。推荐初学者掌握Python或Shell编程,用于数据采集和格式化输出,这对提升自身监控系统的灵活性大有帮助

各位读完这篇内容后,有没有发现监控工具其实并不是遥不可及的黑科技?我希望你能试着搭建一个属于自己的监控平台,去验证每条指令、每个配置项的效果。如果在操作中遇到什么问题、觉得哪部分不够详细或有其他改进建议,请反馈给我;你们的每个建议、每个真实案例都将帮助更多新人提高技能,也让我不断完善后续内容。

欢迎大家分享你们的实战经验、调试过程中的心得体会以及任何指针错误。你们的反馈对进一步改进运维监控的教学内容至关重要。期待你的留言和交流。

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

本文分享自 IT咸鱼 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • #一、工具对比:哪款更适合你的环境?
    • #1. Prometheus:专为云原生打造的实时监控利器
    • #2. Zabbix:稳定企业监控的全能选手
    • #3. Nagios:插件众多、适应性强的老牌卫士
  • #二、动手实战:搭建Prometheus监控平台
    • #环境准备
    • #步骤1:安装Prometheus
    • #步骤2:部署mysqld_exporter
    • #步骤3:安装Grafana,搭建可视化仪表盘
  • #三、安装Zabbix监控平台:企业级监控的另一条路
    • #环境准备
    • #步骤1:安装Zabbix Server
    • #步骤2:配置Zabbix前端
    • #步骤3:添加监控项
  • #四、部署Nagios监控平台:轻量化监控体验
    • #环境准备
    • #步骤1:安装Nagios Core
    • #步骤2:添加和测试插件
  • #五、故障排查与问题处理实例
    • #1. Prometheus目标显示DOWN
    • #2. Zabbix数据显示不全
    • #3. Nagios告警延迟
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档