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

请求用于MySQL高连接数/连接突增的Zabbix触发器配置方案

Zabbix MySQL连接数告警触发器配置方案

当然有很多开发者和运维同学都配置过这类触发器,我自己也在生产环境里部署过类似规则,分享两个实用的配置思路给你:

一、固定阈值告警(连接数持续过高)

这个场景适合检测连接数长期超出合理范围的情况,核心是监控MySQL的Threads_connected指标:

  1. 确认已采集对应监控项
    先确保你的Zabbix已经配置了MySQL监控,Threads_connected这个指标在官方的Template DB MySQL模板里是默认自带的,直接关联模板就能采集。

  2. 触发器表达式

    last(/MySQL/threads_connected)>{$MYSQL.MAX_CONNECTED}
    

    这里的{$MYSQL.MAX_CONNECTED}是自定义宏,建议设置为MySQL配置中max_connections的70%-80%(比如max_connections是1000,就把宏设为800),既能提前预警,又不会因临时波动误报。

  3. 优化细节

    • 给触发器加恢复条件last(/MySQL/threads_connected)<{$MYSQL.MAX_CONNECTED} and time()>lastchange()+300,意思是连接数降到阈值以下且持续5分钟后再恢复告警,避免状态频繁切换。

二、连接突增告警(短时间内连接数暴涨)

这个场景用来检测异常的连接激增(比如爬虫攻击、应用bug导致的连接泄漏),需要用到Zabbix的变化率函数:

  1. 两种可选的触发器表达式

    • 方案一:检测5分钟内连接数的增量总和

      delta(/MySQL/threads_connected,300)>{$MYSQL.CONN_SPIKE_THRESHOLD}
      

      delta函数会计算过去300秒(5分钟)内Threads_connected的增量总和,比如你可以把阈值宏设为200,代表5分钟内新增200个连接就触发告警。

    • 方案二:检测当前连接数与10分钟前的差值

      change(/MySQL/threads_connected,600)>{$MYSQL.CONN_SPIKE_THRESHOLD}
      

      change函数是用当前值减去600秒(10分钟)前的值,适合检测短时间内的大幅跳变。

  2. 优化细节

    • 结合Threads_running指标做二次判断:比如添加and last(/MySQL/threads_running)>{$MYSQL.MIN_RUNNING_THREADS},过滤掉连接数高但实际运行线程少的闲置连接场景。
    • 设置依赖关系:依赖MySQL服务存活的触发器,避免MySQL宕机时触发误报。

额外小贴士

  • 把这些触发器加到Template DB MySQL模板里,所有关联的MySQL主机都能直接继承配置,不用重复设置。
  • 告警信息里可以加入变量,比如MySQL连接数突增:当前{ITEM.LASTVALUE},5分钟内新增{DELTA(300)}个连接,方便快速定位问题。

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

火山引擎 最新活动