脚本监控MySQL服务器

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
+关注继续查看

使用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服务器 ,如需转载请自行联系原博主。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
25天前
|
监控 数据可视化 Java
visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优
本文档主要总结在window本地环境远程对linux服务断的JVM虚拟机进行监控与调优的方法。
17 0
|
26天前
|
监控 关系型数据库 调度
盘点5个.Net开发的服务器进程监控、性能监控、任务调度的开源项目
盘点5个.Net开发的服务器进程监控、性能监控、任务调度的开源项目
29 0
|
2月前
|
传感器 JSON 监控
Springboot + oshi 实现对服务器硬件的监控
OSHI是一个免费的基于JNA的(本机)Java操作系统和硬件信息库。它不需要安装任何额外的本地库,旨在提供跨平台实现来检索系统信息,如操作系统版本、进程、内存和CPU使用情况、磁盘和分区、设备、传感器等。
30 0
|
5月前
|
运维 监控 网络协议
【运维】Zabbix Agent安装——监控服务器冒红灯检查步骤
【运维】Zabbix Agent安装——监控服务器冒红灯检查步骤
|
5月前
|
运维 监控 网络协议
【运维】Zabbix Agent安装--被监控服务器
【运维】Zabbix Agent安装--被监控服务器
|
5月前
|
监控 安全 Ubuntu
这个不到 4MB 的项目,竟然可以监控整个服务器!
项目源码地址:docs.qq.com/doc/DVHRQUVhKVkN2dUha
50 0
|
5月前
|
监控 Linux 网络安全
Zabbix Agent安装--被监控服务器
Zabbix Agent安装--被监控服务器
|
6月前
|
监控 Linux
linux服务器显卡监控脚本
linux服务器显卡监控脚本
73 0
|
7月前
|
Prometheus 监控 Cloud Native
Prometheus: ansible+consul自动发现,监控服务器
Prometheus: ansible+consul自动发现,监控服务器
241 0
|
11月前
|
SQL 监控 前端开发
.Net服务器性能监控,应用耗时统一监控平台
系统用于集群的性能监控,应用耗时监控管理,统一日志管理等多维度的性能监控分析。用于监控Windows服务器监控,支持定义插件扩展、Cpu、内存、磁盘读写、网络、iis等性能直播监控,应用好事监控、数据库性能、慢Sql监控、Api监控。
138 0
.Net服务器性能监控,应用耗时统一监控平台
推荐文章
更多