You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Zabbix监控远程服务器数据库性能?求指导及替代方案

Hey Alan, 别担心,Zabbix完全能搞定你的数据库监控需求,我给你一步步拆解配置方法,要是实在觉得麻烦,再给你推荐几个专用的数据库监控工具~

一、用Zabbix监控远程数据库(以MySQL为例)

1. 先在被监控的数据库服务器上做配置

首先得给Zabbix分配一个能查询数据库状态的专用账号,避免用root权限:

  • 登录你的MySQL,执行以下SQL创建只读用户:
CREATE USER 'zabbix_monitor'@'localhost' IDENTIFIED BY '你的安全密码';
-- 赋予必要权限:查看进程、复制状态、读取系统库
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'zabbix_monitor'@'localhost';
FLUSH PRIVILEGES;

为了避免把密码明文写在配置里,我们给zabbix用户创建一个MySQL配置文件:

# 创建zabbix用户的配置目录
mkdir -p /var/lib/zabbix
# 创建配置文件
touch /var/lib/zabbix/.my.cnf
# 设置权限,只有zabbix用户能读写
chmod 600 /var/lib/zabbix/.my.cnf
chown zabbix:zabbix /var/lib/zabbix/.my.cnf

编辑这个.my.cnf文件,填入刚才创建的账号信息:

[client]
user=zabbix_monitor
password=你的安全密码
host=localhost

接下来修改Zabbix Agent的配置,添加自定义监控参数:
打开/etc/zabbix/zabbix_agentd.conf,在文件末尾添加这些UserParameter(按需选择):

# 监控每分钟查询数(QPS):累计查询数除以60秒
UserParameter=mysql.qps,mysql -e "SHOW GLOBAL STATUS LIKE 'Queries'" | awk '{if(NR==2) print $$2/60}'
# 监控单查询平均执行时间:总查询数除以服务器运行时间(秒)
UserParameter=mysql.avg_exec_time,mysql -e "SHOW GLOBAL STATUS LIKE 'Uptime'; SHOW GLOBAL STATUS LIKE 'Queries'" | awk '{if(NR==2) uptime=$$2; if(NR==4) queries=$$2} END {print queries/uptime}'
# 可选:监控当前数据库连接数
UserParameter=mysql.connections,mysql -e "SHOW GLOBAL STATUS LIKE 'Threads_connected'" | awk '{if(NR==2) print $$2}'

添加完后重启Zabbix Agent生效:

systemctl restart zabbix-agent

2. 在Zabbix Server端验证并配置监控项

先测试一下能不能拿到数据,在Zabbix Server上执行:

zabbix_get -s 你的数据库服务器IP -k mysql.qps

如果返回一个数字,说明配置没问题。

接下来登录Zabbix Web界面配置可视化:

  • 进入「配置」→「主机」,找到你的数据库服务器,点击「监控项」→「创建监控项」
  • 填写监控项信息:
    • 名称:MySQL 每分钟查询数(QPS)
    • 键值:mysql.qps
    • 类型:Zabbix agent
    • 数据类型:数字(浮点)
    • 更新间隔:60秒
  • 用同样的方法创建「MySQL 平均查询执行时间」的监控项,键值填mysql.avg_exec_time

如果你想要更省心的配置,可以直接用Zabbix官方的Template DB MySQL模板:

  • 进入「配置」→「模板」→「导入」,导入官方的MySQL模板(对应你的Zabbix版本)
  • 把模板链接到你的数据库主机,就能自动获取几十种数据库监控指标,不用自己写UserParameter。
二、如果Zabbix不符合预期,推荐这些工具

要是觉得Zabbix的数据库监控不够灵活,或者想要更专业的数据库洞察,试试这些工具:

  • Prometheus + Grafana:当下最流行的云原生监控组合,用mysql_exporter采集数据库指标,Grafana提供超多预定义的精美仪表盘,配置简单,扩展性强。
  • Percona Monitoring and Management (PMM):Percona出品的专用数据库监控工具,集成了Prometheus和Grafana,针对MySQL、MongoDB做了深度优化,能监控慢查询、锁等待、缓存命中率等细节,生产环境用起来很顺手。
  • Nagios:老牌监控工具,通过check_mysql插件就能快速监控数据库连接状态、QPS等指标,适合已经在用Nagios的团队。

内容的提问来源于stack exchange,提问作者Alan

火山引擎 最新活动