脚本监控MySQL服务器

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介:

使用Redis监控的方式,监控MySQL服务器

  1. #! /bin/bash
  2. #告警条件:
  3. #磁盘使用率超过70%
  4. #内存使用率超过50%
  5. #CPU使用率超过700%(服务器是24核心的)
  6. #空闲线程小于50
  7. #出现错误或者警告日志

  8. disk_target=70
  9. mem_target=50
  10. cpu_target=700
  11. idle_target=50

  12. port=3306
  13. password='root'

  14. #设置错误日志的位置
  15. alert_file=/home/lihuilin/mysql/data/mysql.51vv.err
  16. alert_file_bak=$alert_file.bak

  17. error_msg=''
  18. serverip='127_0_0_1'
  19. alert_url='http://IP:port/servlet?to=dba&title=MySQLError('$serverip')&content='

  20. #设置监控日志的位置
  21. logfile=/home/lihuilin/monitor_mysql.log


  22. pid=$(ps -ef | grep -w mysqld | grep -v grep | awk '{print $2}')
  23. if [ "$pid" == "" ] ; then
  24.     echo "[ERROR]MySQL is shutdown." >> $logfile
  25.     error_msg=$error_msg"+MySQL_is_shutdown"
  26. else
  27.     topcontent=$(top --p $pid -n 1 | grep $pid | awk '/mysqld/{print $0}')
  28.     cpuusage=$(echo $topcontent | awk '{print $9}')
  29.     memusage=$(echo $topcontent | awk '{print $10}')
  30.     diskusage=$(df -| grep % | awk 'NR!=1' | tr -' ' | cut -' ' -f 2-| awk '{ sub(/%/,"",$4); if($4>'$disk_target') {print $0} }')
  31.     idleThread=$(mysql -uroot -p$password -P$port -'show full processlist\G' | grep 'State: $' | wc -l)
  32.     alert_content=$(diff $alert_file $alert_file_bak | grep -'ERROR|Warning' | sed 's/\./_/g' | sed 's/:/_/g'| sed 's/ /_/g' | sed 's/-/_/g')


  33.     echo $(date) >> $logfile
  34.     if [ "$alert_content" != "" ] ; then
  35.         echo "[ERROR]$alert_content" >> $logfile
  36.         error_msg=$error_msg"+errorlog#"
  37.         error_msg=$error_msg$alert_content
  38.     fi

  39.     if [ $(echo "scale=2; $memusage>$mem_target" | bc) -eq 1 ] ; then
  40.         echo "[ERROR]Memory usage:$memusage" >> $logfile
  41.         error_msg=$error_msg"+memtarget#$mem_target"
  42.         error_msg=$error_msg"+memusage#$memusage"    
  43.     else
  44.         echo "[INFO]Memory usage:$memusage" >> $logfile
  45.     fi

  46.     if [ $(echo "scale=2; $cpuusage>$cpu_target" | bc) -eq 1 ] ; then
  47.         echo "[ERROR]CPU usage:$cpuusage" >> $logfile
  48.         error_msg=$error_msg"+cpu_target#$cpu_target" 
  49.         error_msg=$error_msg"+cpu_usage#$cpuusage"
  50.     else
  51.         echo "[INFO]CPU usage:$cpuusage" >> $logfile
  52.     fi

  53.     if [ "$diskusage" != "" ] ; then
  54.         echo "[ERROR]Disk usage:$diskusage" >> $logfile
  55.         error_msg=$error_msg"+diskspace#"$diskusage
  56.     fi

  57.     if [ $idleThread -le $idle_target ] ; then
  58.         echo "[ERROR]Idle thread:$idleThread" >> $logfile
  59.         error_msg=$error_msg"+idle_target#$idle_target"
  60.         error_msg=$error_msg"+idleThread#$idleThread"
  61.     else
  62.         echo "[INFO]Idle thread:$idleThread" >> $logfile
  63.     fi
  64. fi

  65. if [ "$error_msg" != '' ] ; then
  66.     error_msg=$(echo $error_msg | sed 's/\./_/g' | sed 's/:/_/g'| sed 's/ /_/g' | sed 's/-/_/g'| sed 's/\///g')
  67.     error_msg=$(echo $error_msg | sed 's/\[/_/g' | sed 's/\]/_/g')
  68.     curl $alert_url$error_msg
  69. fi

  70. cp -rf $alert_file $alert_file_bak
这里比较费劲的是监控磁盘剩余空间
下图的这种结果是没有办法使用awk抽取数据的。
可以使用如下命令,格式化数据
  1. df -h | grep % | awk 'NR!=1' | tr -s ' ' | cut -d ' ' -f 2-6

格式化之后就可以使用awk了。


本文转自ICT时空dbasdk的博客,原文链接:脚本监控MySQL服务器 ,如需转载请自行联系原博主。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
|
11月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
775 28
|
11月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
504 28
|
12月前
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
12月前
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
监控 关系型数据库 MySQL
如何解决 MySQL 数据库服务器 CPU 飙升的情况
大家好,我是 V 哥。当 MySQL 数据库服务器 CPU 飙升时,如何快速定位和解决问题至关重要。本文整理了一套实用的排查和优化套路,包括使用系统监控工具、分析慢查询日志、优化 SQL 查询、调整 MySQL 配置参数、优化数据库架构及检查硬件资源等步骤。通过一个电商业务系统的案例,详细展示了从问题发现到解决的全过程,帮助你有效降低 CPU 使用率,提升系统性能。关注 V 哥,掌握更多技术干货。
1753 0
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
431 10
|
5月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
5月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
593 8
|
5月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。

推荐镜像

更多