[监控]如何实现mysql 进程监控?

最近做项目时,定位一个mysql 进程告警问题,顺带了解了下mysql进程监控的实现,之前也有了解过,只是没有记录,今天特意记录下,其实很简单,大概方法如下:

  • 获取当前实例进程数
$processlist_count = $($mysql_path/mysql -h"host"-P"port" -u"user" -p"password" -e "show processlist" | wc -l)
  • 判断当前进程数是否大于阈值
if [ 当前进程数-gt 阈值 ]
then
#将当前的进程快照打印到log中
利用show full processlist 将当前的进程快照拿出来打印到log中
fi
  • 落地阈值内的mysql快照或是其他有用的log

  • 以上只是个粗浅的进程监控逻辑,可以做的更完善,比如监控sleep进程的个数,监控lock进程的个数,或者把进程告警时的slow log 也打到log中,也可以把告警时的nginx log 剥出来打到log中,亦或是把进程告警时当前机器的cpu, mem的情况也打印到log中,这样就便于监控到告警时web, db等组件的情况