Loading [MathJax]/jax/output/HTML-CSS/jax.js

运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:
现在开始介绍php+mysql+shell监控系统
1 、目的
       此监控系统主要是通过 php+mysql+shell的方式,通过shell脚本对各个机器的其各个服务进行监控,达到及时的了解其各个应用服务的状态(如果宕掉与启动),在检测应用服务宕掉时,记录在日志里与mysql数据库服务器里,同时进行服务宕掉的邮件提示,并自动启动宕掉的应用服务;在检测应该服务启动时,同时进行服务启动的邮件提示,所有的监控内容都能在php制作的web里进行浏览,同时能根据mysql里的数据,把资源监控数据视图化,在浏览数据的时候,更方便。
2 、实现的机制
       监控方式主要是通过 shell脚本的实现,针对应用服务运行的端口进行监控,如果其端口开启,则证明此服务运行,反之则此服务没有运行。
3 、监控的应用服务
       监控的应用服务有:
A、应用服务器的服务监控
web: http、yu_tomcat、tomcat 共3个
交换:  pas、ppas、mas、mmas、cas共5个
引擎: memcache、datastorageservice、http、dbstatserver共4个
B:应用服务器的资源监控
硬盘使用率、 cpu使用率、硬件启动信息错误、i/o使用率、15分钟内的负载、内存使用率(包括内存与swap)、日志错误信息、当前用户登录数
4 、已经监控的省份
       目前天津、广西、贵州、海南、河北、河南、湖北、湖南、宁夏、陕西、青海、西藏、新疆、包头、甘肃、江西都已经部署完成,经过 3个月的测试,没有发现问题。
5 shell监控脚本内容与解释
1)web服务器(以甘肃web为例)
 
   
  1. #!/bin/bash  
  2. #ip  
  3. web_ip=(/sbin/ifconfig eth0|grep "inet addr"|cut -d : -f 2|awk '{print1}')  
  4. ##eth0网卡的ip  
  5. #name  
  6. web_name=$(hostname)  
  7. ##web主机名  
  8. monitor_name=web 
  9. ##监控的服务器是什么类型  
  10. here='gansu' 
  11. ##监控的省份  
  12. #mysql info  
  13. mysql_ip='1.1.1.1' 
  14. ##数据库的ip  
  15. mysql_username='root' 
  16. ##数据库的用户  
  17. mysql_passwd='****' 
  18. #数据库的密码  
  19. mysql_database='monitor' 
  20. ##选择的数据库  
  21. memory_table=''$here'_memory'  
  22. load_table=''$here'_load'  
  23. io_table=''$here'_io'  
  24. hardware_table=''$here'_hardware'  
  25. message_table=''$here'_message'  
  26. user_table=''$here'_user'  
  27. disk_table=''$here'_disk'  
  28. cpu_table=''$here'_cpu'  
  29. service_table=''$here'_service'  
  30. ##想数据库里写入的表  
  31. #date and log  
  32. day="$(date +%Y%m%d)" 
  33. worklog='/usr/local/monitor/logs/all_work_log' 
  34. downlog='/usr/local/monitor/logs/all_down_log' 
  35. ##日志与实际  
  36. now="$(date +%Y-%m-%d-%T)" 
  37. #web service  
  38. tomcat="$(netstat -antl|grep 8080|wc -l)" 
  39. web_http="$(ps -ef|grep httpd|grep -v grep|wc -l)" 
  40. yz_tomcat="$(netstat -antl|grep 8081|wc -l)" 
  41. ##通过端口与服务在后头的运行情况监控其运行状态  
  42. #cpu service  
  43. alert_cpu='80' 
  44. ##cpu的报警阀值  
  45. web_cpu_idle="(top -b -n 1 | grep Cpu | awk '{print5}' | cut -f 1 -d .)" 
  46. web_cpu="(echo100web_cpu_idle|/usr/bin/bc)" 
  47. ##监控cpu的使用率  
  48. #memory service  
  49. alert_mem='100' 
  50. ##内存的报警阀值  
  51. web_mem="(/usr/bin/free -m|grep Mem|awk '{print4}')" 
  52. web_swap="(/usr/bin/free -m|grep Swap|awk '{print3}')" 
  53. ##memory与swap的使用率  
  54. alert_swap='0' 
  55. ##swap的报警阀值  
  56. #memory log  
  57. memory_worklog='/usr/local/monitor/logs/mem_work_log' 
  58. memory_downlog='/usr/local/monitor/logs/mem_down_log' 
  59. #load service  
  60. cpu_count="$(grep -c 'model name' /proc/cpuinfo)" 
  61. alert_load="(echocpu_count/2|/usr/bin/bc)" 
  62. web_load="(uptime|awk '{printNF}'|cut -f 1 -d .)" 
  63. web_load_15="(uptime|awk '{printNF}')" 
  64. #监控负载的使用率  
  65. #load log  
  66. load_worklog='/usr/local/monitor/logs/load_work_log' 
  67. load_downlog='/usr/local/monitor/logs/load_down_log' 
  68. #io service  
  69. alert_io='80' 
  70. web_io_idle_back="(/usr/bin/iostat|awk 'NR==4{printNF}'|cut -f 1 -d .)" 
  71. web_io_idle="(echo100web_io_idle_back|/usr/bin/bc)" 
  72. ##io的使用值  
  73. #io log  
  74. io_worklog='/usr/local/monitor/logs/io_work_log' 
  75. io_downlog='/usr/local/monitor/logs/io_down_log' 
  76. #hardware service  
  77. web_hardware_error="$(dmesg|grep -i error|wc -l)" 
  78. web_info_error="$(dmesg|grep -i error)" 
  79. ##开机启动的错误信息  
  80. #hardware error log  
  81. hard_worklog='/usr/local/monitor/logs/hard_work_log' 
  82. hard_downlog='/usr/local/monitor/logs/hard_down_log' 
  83. #message service  
  84. web_message_error_count="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error|wc -l)"  
  85. web_message_error="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error)"  
  86. ##日志的错误信息  
  87. #message error log  
  88. message_worklog='/usr/local/monitor/logs/message_work_log' 
  89. message_downlog='/usr/local/monitor/logs/message_down_log' 
  90. #user service  
  91. web_user_count="$(/usr/bin/who|wc -l)" 
  92. web_user_info="$(/usr/bin/who)" 
  93. ##当前登录的用户值  
  94. #user  log  
  95. user_worklog='/usr/local/monitor/logs/user_work_log' 
  96. user_downlog='/usr/local/monitor/logs/user_down_log' 
  97. #disk service  
  98. alert_disk='80' 
  99. web_disk="(/bin/df -H|sort -k5nr|grep -vE 'Filesystem|tmpfs|cdrom'|awk '{print5 " " $1}')"  
  100. web_disk_use=(echoweb_disk|awk '{print $1}'|cut -d '%' -f1)  
  101. web_disk_partition=(echoweb_disk|awk '{print $2}')  
  102. #硬盘使用率  
  103. #disk log  
  104. disk_worklog='/usr/local/monitor/logs/disk_work_log' 
  105. disk_downlog='/usr/local/monitor/logs/disk_down_log' 
  106. #cpu log  
  107. cpu_worklog='/usr/local/monitor/logs/cpu_work_log' 
  108. cpu_downlog='/usr/local/monitor/logs/cpu_down_log' 
  109. #notification mail  
  110. email='denglei@ctfo.com' 
  111. ##报警的接收人  
  112. #monitor  
  113. if [ ! -d "$loghere" ];then  
  114.     mkdir $loghere  
  115. fi  
  116. #check web service  
  117. if [ $web_http -ge 1 ];then  
  118.     echo "nowShengFen:here Server: webnameIp:web_ip Service: http Monitor_Server: $monitor_name is working" >> worklogday  
  119.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','webname,web_ip','$monitor_name','web_http','working',now())";  
  120. else  
  121.     /etc/init.d/httpd start  
  122.     echo "nowShengFen:here Server: webnameIp:web_ip Service: http Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: webnameService:httpwasaproblem"email  
  123.     echo "nowShengFen:here Server: webnameIp:web_ip Service: http Monitor_Server: $montior_name is down" >> downlogday  
  124.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','webname,web_ip','$monitor_name','web_http','downing',now())";  
  125. fi  
  126.  
  127. if [ $tomcat -ge 1 ];then  
  128.     echo "nowShengFen:here Server: webnameIp:web_ip Service: tomcat Monitor_Server: $monitor_name is working" >> worklogday  
  129.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','webname,web_ip','$monitor_name','tomcat','working',now())";  
  130. else  
  131.     /usr/local/monitor/shell/web_tomcat.sh  
  132.   echo "nowShengFen:here Server: webnameIp:web_ip Service: tomcat Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: webnameService:tomcatwasaproblem"email   
  133.   echo "nowShengFen:here Server: webnameIp:web_ip Service: tomcat Monitor_Server: $montior_name is down" >> downlogday  
  134.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','webname,web_ip','$monitor_name','tomcat','downing',now())";  
  135. fi  
  136. if [ $yz_tomcat -ge 1 ];then  
  137.     echo "nowShengFen:here Server: webnameService:Ip:web_ip yz_tomcat Monitor_Server: $monitor_name is working" >> worklogday  
  138.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','webname,web_ip','$monitor_name','yz_tomcat','working',now())";  
  139. else  
  140.     /usr/local/monitor/shell/web_yz_tomcat.sh  
  141.   echo "nowShengFen:here Server: webnameService:Ip:web_ip yz_tomcat Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: webnameService:yztomcatwasaproblem"email   
  142.   echo "nowShengFen:here Server: webnameService:Ip:web_ip yz_tomcat Monitor_Server: $montior_name is down" >> downlogday  
  143.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','webname,web_ip','$monitor_name','yz_tomcat','downing',now())";  
  144. fi  
  145. #check cpu_idle  
  146. if [ webcpugealert_cpu ];then  
  147.     echo "nowShengFen:here Server: webnameIp:web_ip Service: cpu_idle Monitor_Server: monitornameCpuuse:web_cpu"|/bin/mail -s "Notification ShengFen: hereServer:web_name Service: cpu_use  was Exceed Threshold value: 80%" $email  
  148.     echo "nowShengFen:here Server: webnameIp:web_ip Service: cpu_idle Monitor_Server: monitornameCpuuse:web_cpu" >> cpudownlogday  
  149.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into cputablevalues(,here','webname,web_ip','monitorname,cpuuse,alert_cpu','$web_cpu','abnormal',now())";  
  150. else  
  151.     echo "nowShengFen:here Server: webnameIp:web_ip Service: cpu_idle Monitor_Server: monitornameCpuuse:web_cpu" >> cpuworklogday  
  152.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into cputablevalues(,here','webname,web_ip','monitorname,cpuuse,alert_cpu','$web_cpu','normal',now())";  
  153. fi  
  154. #check memory  
  155. if [ webmemlealert_mem ];then  
  156.         echo "nowShengFen:here Server: webnameIp:web_ip Service: memory Monitor_Server: monitornameFreemem:web_mem"|/bin/mail -s "Notification ShengFen: hereServer:web_name Service: memory  was Exceed Threshold value" $email  
  157.         echo "nowShengFen:here Server: webnameIp:web_ip Service: memory Monitor_Server: monitornameFreemem:web_mem" >> memorydownlogday  
  158.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into memorytablevalues(,here','webname,web_ip','monitorname,memory,alert_mem','$web_mem','abnormal',now())";  
  159. else  
  160.         echo "nowShengFen:here Server: webnameIp:web_ip Service: memory Monitor_Server: monitornameFreemem:web_mem" >> memoryworklogday  
  161.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into memorytablevalues(,here','webname,web_ip','monitorname,memory,alert_mem','$web_mem','normal',now())";  
  162. fi  
  163. #check swap  
  164. if [ webswapgtalert_swap ];then  
  165.         echo "nowShengFen:here Server: webnameIp:web_ip Service: swap Monitor_Server: monitornameSwapweb:web_swap"|/bin/mail -s "Notification ShengFen: hereServer:web_name Service: swap Ip: webipwasExceedThresholdvalue"email  
  166.         echo "nowShengFen:here Server: webnameIp:web_ip Service: swap Monitor_Server: monitornameSwapweb:web_swap" >> memorydownlogday  
  167.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into memorytablevalues(,here','webname,web_ip','monitorname,swap,alert_swap','$web_swap','abnormal',now())";  
  168. else  
  169.         echo "nowShengFen:here Server: webnameIp:web_ip Service: swap Monitor_Server: monitornameSwapweb:web_swap" >> memoryworklogday  
  170.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into memorytablevalues(,here','webname,web_ip','monitorname,swap,alert_swap','$web_swap','normal',now())";  
  171. fi  
  172. #check load_15  
  173. if [ webloadgealert_load ];then  
  174.         echo "nowShengFen:here Server: webnameIp:web_ip Service: load_15 Monitor_Server: monitornameLoaduse:web_load_15"|/bin/mail -s "Notification ShengFen: hereServer:web_name Service: load_15 Ip: webipwasExceedThresholdvalue"email  
  175.         echo "nowShengFen:here Server: webnameIp:web_ip Service: load_15 Monitor_Server: monitornameLoaduse:web_load_15" >> loaddownlogday  
  176.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into loadtablevalues(,here','webname,web_ip','monitorname,load15,alert_load','$web_load_15','abnormal',now())";  
  177. else  
  178.         echo "nowShengFen:here Server: serverIp:ip Service: load Monitor_Server: monitornameLoaduse:web_load_15" >> loadworklogday  
  179.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into loadtablevalues(,here','webname,web_ip','monitorname,load15,alert_load','$web_load_15','normal',now())";  
  180. fi  
  181. #check io_idle  
  182. if [ webioidlegealert_io ];then  
  183.         echo "nowShengFen:here Server: webnameIp:web_ip Service: io_idle Monitor_Server: monitornameIouse:web_io_idle"|/bin/mail -s "Notification ShengFen: hereServer:web_name Service: io_use  was Exceed Threshold value: 80%" $email  
  184.         echo "nowShengFen:here Server: webnameIp:web_ip Service: io_idle Monitor_Server: monitornameIouse:web_io_idle" >> iodownlogday  
  185.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into iotablevalues(,here','webname,web_ip','monitorname,iouse,alert_io','$web_io_idle','abnormal',now())";  
  186. else  
  187.         echo "nowShengFen:here Server: webnameIp:web_ip Service: io_idle Monitor_Server: monitornameIouse:web_io_idle" >> ioworklogday  
  188.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into iotablevalues(,here','webname,web_ip','monitorname,iouse,alert_io','$web_io_idle','normal',now())";  
  189. fi  
  190. #check hareware error info  
  191. if [ $web_hardware_error -gt 0 ];then  
  192.         echo "nowShengFen:here Server: webnameIp:web_ip Service: hardware_error Monitor_Server: monitornameError:web_info_error"|/bin/mail -s "Notification ShengFen: hereServer:web_name Service: hardware_error  were some hardware imformation error" $email  
  193.         echo "nowShengFen:here Server: webnameIp:web_ip Service: hardware_error Monitor_Server: monitornameError:web_info_error" >> harddownlogday  
  194.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into hardwaretablevalues(,here','webname,web_ip','monitorname,hardwareerror,0,web_hardware_error','abnormal',now())";  
  195. else  
  196.         echo "nowShengFen:here Server: webnameIp:web_ip Service: hardware_error Monitor_Server: $monitor_name Error: Nothing" >> hardworklogday  
  197.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into hardwaretablevalues(,here','webname,web_ip','monitorname,hardwareerror,0,web_hardware_error','normal',now())";  
  198. fi  
  199. #check message error  
  200. if [ $web_message_error_count -ge 1 ];then  
  201.         echo "nowShengFen:here Server: webnameIp:web_ip Service: message_error Monitor_Server: monitornameMessageerror:web_message_error"|/bin/mail -s "Notification ShengFen: hereServer:web_name Service: message_error  were some message imformation error" $email  
  202.         echo "nowShengFen:here Server: webnameIp:web_ip Service: message_error Monitor_Server: monitornameMessageerror:web_message_error" >> messagedownlogday  
  203.         /usr/bin/mysql-h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into messagetablevalues(,here','webname,web_ip','monitorname,messageerror,1,web_message_error_count','abnormal',now())";  
  204. else  
  205.         echo "nowShengFen:here Server: webnameIp:web_ip Service: message_error Monitor_Server: $monitor_name Message_error: Nothing" >> messageworklogday  
  206.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into messagetablevalues(,here','webname,web_ip','monitorname,messageerror,1,web_message_error_count','normal',now())";  
  207. fi  
  208. #check user  
  209. if [ $web_user_count -ge 3 ];then  
  210.         echo "nowShengFen:here Server: webnameIp:web_ip Service: user Monitor_Server: monitornameUser:web_user_info"|/bin/mail -s "Notification ShengFen: hereServer:web_name  Service: user  was Exceed Threshold value: 3" $email  
  211.         echo "nowShengFen:here Server: webnameIp:web_ip Service: user Monitor_Server: monitornameUser:web_user_info" >> userdownlogday  
  212.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into usertablevalues(,here','webname,web_ip','monitorname,user,3,web_user_count','abnormal',now())";  
  213. else  
  214.         echo "nowShengFen:here Server: webnameIp:web_ip Service: user Monitor_Server: $monitor_name User: normal" >> userworklogday  
  215.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into usertablevalues(,here','webname,web_ip','monitorname,user,3,web_user_count','normal',now())";  
  216. fi  
  217. #check disk  
  218. if [ webdiskusegealert_disk ];then  
  219.         echo "nowShengFen:here Server: webnameIp:web_ip Service: disk_use Monitor_Server: monitornameDiskuse:web_disk_partition (webdiskusehere Server: webnameService:diskusewasExceedThresholdvalue:alert_disk% " $email  
  220.         echo "nowShengFen:here Server: webnameIp:web_ip Service: disk_use Monitor_Server: monitornameDiskuse:web_disk_partion ($web_disk_use%)" >> diskdownlogday  
  221.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into disktablevalues(,here','webname,web_ip','monitorname,diskuse,alert_disk','webdiskpartition,web_disk_use','abnormal',now())";  
  222. else  
  223.         echo "nowShengFen:here Server: webnameIp:web_ip Service: disk_use Monitor_Server: monitornameDiskuse:web_disk_partition ($web_disk_use%)" >> diskworklogday  
  224.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into disktablevalues(,here','webname,web_ip','monitorname,diskuse,alert_disk','webdiskpartition,web_disk_use','normal',now())";  
  225. fi  
2)交换服务器(以甘肃交换为例,解释内容参照甘肃web)
 
  1. #!/bin/bash  
  2. #ip  
  3. jh_ip=(/sbin/ifconfig eth0|grep "inet addr"|cut -d : -f 2|awk '{print1}')  
  4. #name  
  5. jh_name=$(hostname)  
  6. monitor_name=jiaohuan 
  7. here='gansu' 
  8. #mysql info  
  9. mysql_ip='1.1.1.1' 
  10. mysql_username='root' 
  11. mysql_passwd='****' 
  12. mysql_database='monitor' 
  13. memory_table=''$here'_memory'  
  14. load_table=''$here'_load'  
  15. io_table=''$here'_io'  
  16. hardware_table=''$here'_hardware'  
  17. message_table=''$here'_message'  
  18. user_table=''$here'_user'  
  19. disk_table=''$here'_disk'  
  20. cpu_table=''$here'_cpu'  
  21. service_table=''$here'_service'  
  22. #date and log  
  23. day="$(date +%Y%m%d)" 
  24. worklog='/usr/local/monitor/logs/all_work_log' 
  25. downlog='/usr/local/monitor/logs/all_down_log' 
  26. now="$(date +%Y-%m-%d-%T)" 
  27. loghere='/usr/local/monitor/logs' 
  28. #jiaohuan service  
  29. pas="$(ps -ef|grep pas|grep -v grep|grep -v ppas|wc -l)" 
  30. ppas="$(ps -ef|grep ppas|grep -v grep|wc -l)" 
  31. cas="$(ps -ef|grep cas|grep -v grep|wc -l)" 
  32. mas="$(ps -ef|grep mas|grep -v grep|grep -v mmas|wc -l)" 
  33. mmas="$(ps -ef|grep mmas|grep -v grep|wc -l)" 
  34. #cpu service  
  35. alert_cpu='80' 
  36. jh_cpu_idle="(top -b -n 1 | grep Cpu | awk '{print5}' | cut -f 1 -d .)" 
  37. jh_cpu="(echo100jh_cpu_idle|/usr/bin/bc)" 
  38. #memory service  
  39. alert_mem='100' 
  40. jh_mem="(/usr/bin/free -m|grep Mem|awk '{print4}')" 
  41. jh_swap="(/usr/bin/free -m|grep Swap|awk '{print3}')" 
  42. alert_swap='0' 
  43. #memory log  
  44. memory_worklog='/usr/local/monitor/logs/mem_work_log' 
  45. memory_downlog='/usr/local/monitor/logs/mem_down_log' 
  46. #load service  
  47. cpu_count="$(grep -c 'model name' /proc/cpuinfo)" 
  48. alert_load="(echocpu_count/2|/usr/bin/bc)" 
  49. jh_load="(uptime|awk '{printNF}'|cut -f 1 -d .)" 
  50. jh_load_15="(uptime|awk '{printNF}')" 
  51. #load log  
  52. load_worklog='/usr/local/monitor/logs/load_work_log' 
  53. load_downlog='/usr/local/monitor/logs/load_down_log' 
  54. #io service  
  55. alert_io='80' 
  56. jh_io_idle_back="(/usr/bin/iostat|awk 'NR==4{printNF}'|cut -f 1 -d .)" 
  57. jh_io_idle="(echo100jh_io_idle_back|/usr/bin/bc)" 
  58. #io log  
  59. io_worklog='/usr/local/monitor/logs/io_work_log' 
  60. io_downlog='/usr/local/monitor/logs/io_down_log' 
  61. #hardware service  
  62. jh_hardware_error="$(dmesg|grep -i error|wc -l)" 
  63. jh_info_error="$(dmesg|grep -i error)" 
  64. #hardware error log  
  65. hard_worklog='/usr/local/monitor/logs/hard_work_log' 
  66. hard_downlog='/usr/local/monitor/logs/hard_down_log' 
  67. #message service  
  68. jh_message_error_count="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error|wc -l)"  
  69. jh_message_error="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error)"  
  70. #message error log  
  71. message_worklog='/usr/local/monitor/logs/message_work_log' 
  72. message_downlog='/usr/local/monitor/logs/message_down_log' 
  73. #user service  
  74. jh_user_count="$(/usr/bin/who|wc -l)" 
  75. jh_user_info="$(/usr/bin/who)" 
  76. #user  log  
  77. user_worklog='/usr/local/monitor/logs/user_work_log' 
  78. user_downlog='/usr/local/monitor/logs/user_down_log' 
  79. #disk service  
  80. alert_disk='80' 
  81. jh_disk="(/bin/df -H|sort -k5nr|grep -vE 'Filesystem|tmpfs|cdrom'|awk '{print5 " " $1}')"  
  82. jh_disk_use=(echojh_disk|awk '{print $1}'|cut -d '%' -f1)  
  83. jh_disk_partition=(echojh_disk|awk '{print $2}')  
  84. #disk log  
  85. disk_worklog='/usr/local/monitor/logs/disk_work_log' 
  86. disk_downlog='/usr/local/monitor/logs/disk_down_log' 
  87. #cpu log  
  88. cpu_worklog='/usr/local/monitor/logs/cpu_work_log' 
  89. cpu_downlog='/usr/local/monitor/logs/cpu_down_log' 
  90. #notification mail  
  91. email='denglei@ctfo.com' 
  92. #monitor  
  93. if [ ! -d "$loghere" ];then  
  94.     mkdir $loghere  
  95. fi  
  96. #monitor  
  97. #jiaohuan check  
  98. if [ $pas -ge 1 ];then  
  99.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: pas Monitor_Server: $monitor_name is working" >> worklogday  
  100.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','pas','working',now())";  
  101. else  
  102.                 /usr/local/lbs/bin4.0.7.7/pas -daemon  
  103.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: pas Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: jhnameService:paswasaproblem"email  
  104.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: pas Monitor_Server: $montior_name is down" >> downlogday  
  105.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','pas','downing',now())";  
  106. fi  
  107. if [ $ppas -ge 1 ];then  
  108.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: ppas Monitor_Server: $monitor_name is working" >> worklogday  
  109.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','ppas','working',now())";  
  110. else  
  111.                 /usr/local/lbs/bin4.0.7.7/ppas -daemon  
  112.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: ppas Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: jhnameService:ppaswasaproblem"email  
  113.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: ppas Monitor_Server: $montior_name is down" >> downlogday  
  114.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','ppas','downing',now())";  
  115. fi  
  116. if [ $mas -ge 1 ];then  
  117.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: mas Monitor_Server: $monitor_name is working" >> worklogday  
  118.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','mas','working',now())";  
  119. else  
  120.                 /usr/local/lbs/bin4.0.7.7/mas -daemon  
  121.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: mas Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: jhnameService:maswasaproblem"email  
  122.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: mas Monitor_Server: $montior_name is down" >> downlogday  
  123.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','mas','downing',now())";  
  124. fi  
  125. if [ $mmas -ge 1 ];then  
  126.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: mmas Monitor_Server: $monitor_name is working" >> worklogday  
  127.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','mmas','working',now())";  
  128. else  
  129.                 /usr/local/lbs/bin4.0.7.7/mmas -daemon  
  130.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: mmas Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: jhnameService:mmaswasaproblem"email  
  131.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: mmas Monitor_Server: $montior_name is down" >> downlogday  
  132.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','mmas','downing',now())";  
  133. fi  
  134. if [ $cas -ge 1 ];then  
  135.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: cas Monitor_Server: $monitor_name is working" >> worklogday  
  136.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','cas','working',now())";  
  137. else  
  138.                 /usr/local/lbs/bin4.0.7.7/cas -daemon  
  139.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: cas Monitor_Server: monitornameisdown"|/bin/mails"NotificationShengFen:here Server: jhnameService:caswasaproblem"email  
  140.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: cas Monitor_Server: $montior_name is down" >> downlogday  
  141.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into servicetablevalues(,here','jhname,jh_ip','$monitor_name','cas','downing',now())";  
  142. fi  
  143. #check cpu_idle  
  144. if [ jhcpugealert_cpu ];then  
  145.     echo "nowShengFen:here Server: jhnameIp:jh_ip Service: cpu_idle Monitor_Server: monitornameCpuuse:jh_cpu"|/bin/mail -s "Notification ShengFen: hereServer:jh_name Service: cpu_use  was Exceed Threshold value: 80%" $email  
  146.     echo "nowShengFen:here Server: jhnameIp:jh_ip Service: cpu_idle Monitor_Server: monitornameCpuuse:jh_cpu" >> cpudownlogday  
  147.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into cputablevalues(,here','jhname,jh_ip','monitorname,cpuuse,alert_cpu','$jh_cpu','abnormal',now())";  
  148. else  
  149.     echo "nowShengFen:here Server: jhnameIp:jh_ip Service: cpu_idle Monitor_Server: monitornameCpuuse:jh_cpu" >> cpuworklogday  
  150.     /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into cputablevalues(,here','jhname,jh_ip','monitorname,cpuuse,alert_cpu','$jh_cpu','normal',now())";  
  151. fi  
  152. #check memory  
  153. if [ jhmemlealert_mem ];then  
  154.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: memory Monitor_Server: monitornameFreemem:jh_mem"|/bin/mail -s "Notification ShengFen: hereServer:jh_name Service: memory  was Exceed Threshold value" $email  
  155.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: memory Monitor_Server: monitornameFreemem:jh_mem" >> memorydownlogday  
  156.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into memorytablevalues(,here','jhname,jh_ip','monitorname,memory,alert_mem','$jh_mem','abnormal',now())";  
  157. else  
  158.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: memory Monitor_Server: monitornameFreemem:jh_mem" >> memoryworklogday  
  159.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into memorytablevalues(,here','jhname,jh_ip','monitorname,memory,alert_mem','$jh_mem','normal',now())";  
  160. fi  
  161. #check swap  
  162. if [ jhswapgtalert_swap ];then  
  163.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: swap Monitor_Server: monitornameSwapjh:jh_swap"|/bin/mail -s "Notification ShengFen: hereServer:jh_name Service: swap Ip: jhipwasExceedThresholdvalue"email  
  164.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: swap Monitor_Server: monitornameSwapjh:jh_swap" >> memorydownlogday  
  165.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into memorytablevalues(,here','jhname,jh_ip','monitorname,swap,alert_swap','$jh_swap','abnormal',now())";  
  166. else  
  167.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: swap Monitor_Server: monitornameSwapjh:jh_swap" >> memoryworklogday  
  168.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into memorytablevalues(,here','jhname,jh_ip','monitorname,swap,alert_swap','$jh_swap','normal',now())";  
  169. fi  
  170. #check load_15  
  171. if [ jhloadgealert_load ];then  
  172.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: load_15 Monitor_Server: monitornameLoaduse:jh_load_15"|/bin/mail -s "Notification ShengFen: hereServer:jh_name Service: load_15 Ip: jhipwasExceedThresholdvalue"email   
  173.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: load_15 Monitor_Server: monitornameLoaduse:jh_load_15" >> loaddownlogday  
  174.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into loadtablevalues(,here','jhname,jh_ip','monitorname,load15,alert_load','$jh_load_15','abnormal',now())";  
  175. else  
  176.         echo "nowShengFen:here Server: serverIp:ip Service: load Monitor_Server: monitornameLoaduse:jh_load_15" >> loadworklogday  
  177.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into loadtablevalues(,here','jhname,jh_ip','monitorname,load15,alert_load','$jh_load_15','normal',now())";  
  178. fi  
  179. #check io_idle  
  180. if [ jhioidlegealert_io ];then  
  181.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: io_idle Monitor_Server: monitornameIouse:jh_io_idle"|/bin/mail -s "Notification ShengFen: hereServer:jh_name Service: io_use  was Exceed Threshold value: 80%" $email  
  182.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: io_idle Monitor_Server: monitornameIouse:jh_io_idle" >> iodownlogday  
  183.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into iotablevalues(,here','jhname,jh_ip','monitorname,iouse,alert_io','$jh_io_idle','abnormal',now())";  
  184. else  
  185.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: io_idle Monitor_Server: monitornameIouse:jh_io_idle" >> ioworklogday  
  186.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into iotablevalues(,here','jhname,jh_ip','monitorname,iouse,alert_io','$jh_io_idle','normal',now())";  
  187. fi  
  188. #check hareware error info  
  189. if [ $jh_hardware_error -gt 0 ];then  
  190.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: hardware_error Monitor_Server: monitornameError:jh_info_error"|/bin/mail -s "Notification ShengFen: hereServer:jh_name Service: hardware_error  were some hardware imformation error" $email  
  191.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: hardware_error Monitor_Server: monitornameError:jh_info_error" >> harddownlogday  
  192.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into hardwaretablevalues(,here','jhname,jh_ip','monitorname,hardwareerror,0,jh_hardware_error','abnormal',now())";  
  193. else  
  194.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: hardware_error Monitor_Server: $monitor_name Error: Nothing" >> hardworklogday  
  195.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into hardwaretablevalues(,here','jhname,jh_ip','monitorname,hardwareerror,0,jh_hardware_error','normal',now())";  
  196. fi  
  197. #check message error  
  198. if [ $jh_message_error_count -ge 1 ];then  
  199.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: message_error Monitor_Server: monitornameMessageerror:jh_message_error"|/bin/mail -s "Notification ShengFen: hereServer:jh_name Service: message_error  were some message imformation error" $email  
  200.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: message_error Monitor_Server: monitornameMessageerror:jh_message_error" >> messagedownlogday  
  201.         /usr/bin/mysql-h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into messagetablevalues(,here','jhname,jh_ip','monitorname,messageerror,1,jh_message_error_count','abnormal',now())";  
  202. else  
  203.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: message_error Monitor_Server: $monitor_name Message_error: Nothing" >> messageworklogday  
  204.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into messagetablevalues(,here','jhname,jh_ip','monitorname,messageerror,1,jh_message_error_count','normal',now())";  
  205. fi  
  206. #check user  
  207. if [ $jh_user_count -ge 3 ];then  
  208.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: user Monitor_Server: monitornameUser:jh_user_info"|/bin/mail -s "Notification ShengFen: hereServer:jh_name  Service: user  was Exceed Threshold value: 3" $email  
  209.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: user Monitor_Server: monitornameUser:jh_user_info" >> userdownlogday  
  210.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into usertablevalues(,here','jhname,jh_ip','monitorname,user,3,jh_user_count','abnormal',now())";  
  211. else  
  212.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: user Monitor_Server: $monitor_name User: normal" >> userworklogday  
  213.         /usr/bin/mysql  -h mysqlipumysql_username -pmysqlpasswdmysql_database -e "insert into usertablevalues(,here','jhname,jh_ip','monitorname,user,3,jh_user_count','normal',now())";  
  214. fi  
  215. #check disk  
  216. if [ jhdiskusegealert_disk ];then  
  217.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: disk_use Monitor_Server: monitornameDiskuse:jh_disk_partition (jhdiskusehere Server: jhnameService:diskusewasExceedThresholdvalue:alert_disk% " $email  
  218.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: disk_use Monitor_Server: monitornameDiskuse:jh_disk_partion ($jh_disk_use%)" >> diskdownlogday  
  219.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into disktablevalues(,here','jhname,jh_ip','monitorname,diskuse,alert_disk','jhdiskpartition,jh_disk_use','abnormal',now())";  
  220. else  
  221.         echo "nowShengFen:here Server: jhnameIp:jh_ip Service: disk_use Monitor_Server: monitornameDiskuse:jh_disk_partition ($jh_disk_use%)" >> diskworklogday  
  222.         /usr/bin/mysql -h mysqlipumysql_username -pmysqlpasswdmysql_database  -e "insert into disktablevalues(,here','jhname,jh_ip','monitorname,diskuse,alert_disk','jhdiskpartition,jh_disk_use','normal',now())";  
  223. fi  





 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1035131,如需转载请自行联系原作者


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
348
分享
相关文章
在多用户环境中,如何确保 PHP Shell 的安全性?
在多用户环境中确保 PHP Shell 安全,需采取限制执行环境、禁用危险函数、使用安全模式、采用 `suPHP` 或 `PHP-FPM`、使用参数化查询、输入验证、转义命令、强化会话管理、合理配置错误处理、正确设置文件权限及定期更新等措施。这些策略有助于防范潜在的安全威胁。
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
129 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
163 2
在多用户环境中,如何确保 PHP Shell 的安全性?
在多用户环境中,如何确保 PHP Shell 的安全性?
shell获取多个oracle库mysql库所有的表
请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。
74 0
从命令行界面运行交互式PHP Shell
从命令行界面运行交互式PHP Shell
自动化运维:使用Ansible进行服务器配置管理深入理解PHP的垃圾回收机制
【7月更文挑战第31天】在现代IT环境中,自动化运维是提高效率、降低错误率的关键。本文将介绍如何使用Ansible——一种流行的开源自动化工具,来简化和自动化服务器的配置管理。我们将通过一个实际的代码示例,展示如何利用Ansible进行自动化部署和配置更新,确保你的服务器始终运行最新、最安全的软件版本。
40 1
自动化运维之宝:编写高效的Shell脚本
【8月更文挑战第31天】在运维的世界里,Shell脚本是一把瑞士军刀,它让日常任务变得简单而高效。本文将通过浅显易懂的语言和实际案例,带你领略Shell脚本的魅力,并教你如何打造属于自己的自动化工具箱。无论你是初学者还是资深运维,这篇文章都将为你打开一扇窗,让你看到不一样的风景。让我们一起探索Shell脚本的世界吧!

推荐镜像

更多