脚本监控MySQL服务器

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

使用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 alertfilealert_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 alerturlerror_msg
  69. fi

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

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


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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
39
分享
相关文章
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
88 12
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
110 1
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
364 1
|
3月前
|
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
123 1
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
128 3
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
41 0
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
MySQL数据库中给表添加字段并设置备注的脚本编写
通过上述步骤,你可以在MySQL数据库中给表成功添加新字段并为其设置备注。这样的操作对于保持数据库结构的清晰和最新非常重要,同时也帮助团队成员理解数据模型的变化和字段的具体含义。在实际操作中,记得调整脚本以适应具体的数据库和表名称,以及字段的详细规范。
119 8
监控Linux服务器
详细介绍了如何监控Linux服务器,包括监控CPU、内存、磁盘存储和带宽的使用情况,以及使用各种系统监控工具如vmstat、iostat、sar、top和dstat来分析系统性能,并推荐了一些开源监控系统。
74 0
监控Linux服务器

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等