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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
(5)数据库服务器(以甘肃数据库为例,脚本解释参照甘肃 web)

 
 
  1. #!/bin/bash  
  2. #ip  
  3. db_ip=$(/sbin/ifconfig eth0|grep "inet addr"|cut -d : -f 2|awk '{print $1}')  
  4. #name  
  5. db_name=$(hostname)  
  6. monitor_name=database 
  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. #cpu service  
  29. alert_cpu='80' 
  30. db_cpu_idle="$(top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d .)" 
  31. db_cpu="$(echo 100 - $db_cpu_idle|/usr/bin/bc)" 
  32. #memory service  
  33. alert_mem='100' 
  34. db_mem="$(/usr/bin/free -m|grep Mem|awk '{print $4}')" 
  35. db_swap="$(/usr/bin/free -m|grep Swap|awk '{print $3}')" 
  36. alert_swap='0' 
  37. #memory log  
  38. memory_worklog='/usr/local/monitor/logs/mem_work_log' 
  39. memory_downlog='/usr/local/monitor/logs/mem_down_log' 
  40. #load service  
  41. cpu_count="$(grep -c 'model name' /proc/cpuinfo)" 
  42. alert_load="$(echo $cpu_count/2|/usr/bin/bc)" 
  43. db_load="$(uptime|awk '{print $NF}'|cut -f 1 -d .)" 
  44. db_load_15="$(uptime|awk '{print $NF}')" 
  45. #load log  
  46. load_worklog='/usr/local/monitor/logs/load_work_log' 
  47. load_downlog='/usr/local/monitor/logs/load_down_log' 
  48. #io service  
  49. alert_io='80' 
  50. db_io_idle_back="$(/usr/bin/iostat|awk 'NR==4{print $NF}'|cut -f 1 -d .)" 
  51. db_io_idle="$(echo 100 - $db_io_idle_back|/usr/bin/bc)" 
  52. #io log  
  53. io_worklog='/usr/local/monitor/logs/io_work_log' 
  54. io_downlog='/usr/local/monitor/logs/io_down_log' 
  55. #hardware service  
  56. db_hardware_error="$(dmesg|grep -i error|wc -l)" 
  57. db_info_error="$(dmesg|grep -i error)" 
  58. #hardware error log  
  59. hard_worklog='/usr/local/monitor/logs/hard_work_log' 
  60. hard_downlog='/usr/local/monitor/logs/hard_down_log' 
  61. #message service  
  62. db_message_error_count="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error|wc -l)"  
  63. db_message_error="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error)"  
  64. #message error log  
  65. message_worklog='/usr/local/monitor/logs/message_work_log' 
  66. message_downlog='/usr/local/monitor/logs/message_down_log' 
  67. #user service  
  68. db_user_count="$(/usr/bin/who|wc -l)" 
  69. db_user_info="$(/usr/bin/who)" 
  70. #user  log  
  71. user_worklog='/usr/local/monitor/logs/user_work_log' 
  72. user_downlog='/usr/local/monitor/logs/user_down_log' 
  73. #disk service  
  74. alert_disk='80' 
  75. db_disk="$(/bin/df -H|sort -k5nr|grep -vE 'Filesystem|tmpfs|cdrom'|awk '{print $5 " " $1}')"  
  76. db_disk_use=$(echo $db_disk|awk '{print $1}'|cut -d '%' -f1)  
  77. db_disk_partition=$(echo $db_disk|awk '{print $2}')  
  78. #disk log  
  79. disk_worklog='/usr/local/monitor/logs/disk_work_log' 
  80. disk_downlog='/usr/local/monitor/logs/disk_down_log' 
  81. #cpu log  
  82. cpu_worklog='/usr/local/monitor/logs/cpu_work_log' 
  83. cpu_downlog='/usr/local/monitor/logs/cpu_down_log' 
  84. #notification mail  
  85. email='denglei@ctfo.com' 
  86. #monitor  
  87. if [ ! -d "$loghere" ];then  
  88.     mkdir $loghere  
  89. fi  
  90. #check cpu_idle  
  91. #check cpu_idle  
  92. if [ $db_cpu -ge $alert_cpu ];then  
  93.     echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $db_cpu"|/bin/mail -s "Notification ShengFen: $here Server: $db_name Service: cpu_use  was Exceed Threshold value: 80%" $email  
  94.     echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $db_cpu" >> $cpu_downlog-$day  
  95.     /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $cpu_table values ('','$here','$db_name','$db_ip','$monitor_name','cpu_use','$alert_cpu','$db_cpu','abnormal',now())";  
  96. else  
  97.     echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $db_cpu" >> $cpu_worklog-$day  
  98.     /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $cpu_table values ('','$here','$db_name','$db_ip','$monitor_name','cpu_use','$alert_cpu','$db_cpu','normal',now())";  
  99. fi  
  100. #check memory  
  101. if [ $db_mem -le $alert_mem ];then  
  102.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: memory Monitor_Server: $monitor_name Free_mem: $db_mem"|/bin/mail -s "Notification ShengFen: $here Server: $db_name Service: memory  was Exceed Threshold value" $email  
  103.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: memory Monitor_Server: $monitor_name Free_mem: $db_mem" >> $memory_downlog-$day  
  104.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$db_name','$db_ip','$monitor_name','memory','$alert_mem','$db_mem','abnormal',now())";  
  105. else  
  106.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: memory Monitor_Server: $monitor_name Free_mem: $db_mem" >> $memory_worklog-$day  
  107.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$db_name','$db_ip','$monitor_name','memory','$alert_mem','$db_mem','normal',now())";  
  108. fi  
  109. #check swap  
  110. if [ $db_swap -gt $alert_swap ];then  
  111.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: swap Monitor_Server: $monitor_name Swap_db: $db_swap"|/bin/mail -s "Notification ShengFen: $here Server: $db_name Service: swap Ip: $db_ip was Exceed Threshold value" $email  
  112.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: swap Monitor_Server: $monitor_name Swap_db: $db_swap" >> $memory_downlog-$day  
  113.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $memory_table values ('','$here','$db_name','$db_ip','$monitor_name','swap','$alert_swap','$db_swap','abnormal',now())";  
  114. else  
  115.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: swap Monitor_Server: $monitor_name Swap_db: $db_swap" >> $memory_worklog-$day  
  116.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$db_name','$db_ip','$monitor_name','swap','$alert_swap','$db_swap','normal',now())";  
  117. fi  
  118. #check load_15  
  119. if [ $db_load -ge $alert_load ];then  
  120.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: load_15 Monitor_Server: $monitor_name Load_use: $db_load_15"|/bin/mail -s "Notification ShengFen: $here Server: $db_name Service: load_15 Ip: $db_ip was Exceed Threshold value" $email   
  121.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: load_15 Monitor_Server: $monitor_name Load_use: $db_load_15" >> $load_downlog-$day  
  122.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $load_table values ('','$here','$db_name','$db_ip','$monitor_name','load_15','$alert_load','$db_load_15','abnormal',now())";  
  123. else  
  124.         echo "$now ShengFen: $here Server: $server Ip: $ip Service: load Monitor_Server: $monitor_name Load_use: $db_load_15" >> $load_worklog-$day  
  125.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $load_table values ('','$here','$db_name','$db_ip','$monitor_name','load_15','$alert_load','$db_load_15','normal',now())";  
  126. fi  
  127. #check io_idle  
  128. if [ $db_io_idle -ge $alert_io ];then  
  129.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $db_io_idle"|/bin/mail -s "Notification ShengFen: $here Server: $db_name Service: io_use  was Exceed Threshold value: 80%" $email  
  130.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $db_io_idle" >> $io_downlog-$day  
  131.         /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $io_table values ('','$here','$db_name','$db_ip','$monitor_name','io_use','$alert_io','$db_io_idle','abnormal',now())";  
  132. else  
  133.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $db_io_idle" >> $io_worklog-$day  
  134.         /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $io_table values ('','$here','$db_name','$db_ip','$monitor_name','io_use','$alert_io','$db_io_idle','normal',now())";  
  135. fi  
  136. #check hareware error info  
  137. if [ $db_hardware_error -gt 0 ];then  
  138.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: hardware_error Monitor_Server: $monitor_name Error: $db_info_error"|/bin/mail -s "Notification ShengFen: $here Server: $db_name Service: hardware_error  were some hardware imformation error" $email  
  139.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: hardware_error Monitor_Server: $monitor_name Error: $db_info_error" >> $hard_downlog-$day  
  140.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $hardware_table values ('','$here','$db_name','$db_ip','$monitor_name','hardware_error','0','$db_hardware_error','abnormal',now())";  
  141. else  
  142.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: hardware_error Monitor_Server: $monitor_name Error: Nothing" >> $hard_worklog-$day  
  143.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $hardware_table values ('','$here','$db_name','$db_ip','$monitor_name','hardware_error','0','$db_hardware_error','normal',now())";  
  144. fi  
  145. #check message error  
  146. if [ $db_message_error_count -ge 1 ];then  
  147.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: message_error Monitor_Server: $monitor_name Message_error: $db_message_error"|/bin/mail -s "Notification ShengFen: $here Server: $db_name Service: message_error  were some message imformation error" $email  
  148.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: message_error Monitor_Server: $monitor_name Message_error: $db_message_error" >> $message_downlog-$day  
  149.         /usr/bin/mysql-h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $message_table values ('','$here','$db_name','$db_ip','$monitor_name','message_error','1','$db_message_error_count','abnormal',now())";  
  150. else  
  151.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: message_error Monitor_Server: $monitor_name Message_error: Nothing" >> $message_worklog-$day  
  152.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $message_table values ('','$here','$db_name','$db_ip','$monitor_name','message_error','1','$db_message_error_count','normal',now())";  
  153. fi  
  154. #check user  
  155. if [ $db_user_count -ge 3 ];then  
  156.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: user Monitor_Server: $monitor_name User: $db_user_info"|/bin/mail -s "Notification ShengFen: $here Server: $db_name  Service: user  was Exceed Threshold value: 3" $email  
  157.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: user Monitor_Server: $monitor_name User: $db_user_info" >> $user_downlog-$day  
  158.         /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $user_table values ('','$here','$db_name','$db_ip','$monitor_name','user','3','$db_user_count','abnormal',now())";  
  159. else  
  160.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: user Monitor_Server: $monitor_name User: normal" >> $user_worklog-$day  
  161.         /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $user_table values ('','$here','$db_name','$db_ip','$monitor_name','user','3','$db_user_count','normal',now())";  
  162. fi  
  163. #check disk  
  164. if [ $db_disk_use -ge $alert_disk ];then  
  165.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $db_disk_partition ($db_disk_use%)"|/bin/mail -s "Warning!!! $here Server: $db_name Service: disk_use  was Exceed Threshold value : $alert_disk% " $email  
  166.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $db_disk_partion ($db_disk_use%)" >> $disk_downlog-$day  
  167.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $disk_table values ('','$here','$db_name','$db_ip','$monitor_name','disk_use','$alert_disk','$db_disk_partition','$db_disk_use','abnormal',now())";  
  168. else  
  169.         echo "$now ShengFen: $here Server: $db_name Ip: $db_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $db_disk_partition ($db_disk_use%)" >> $disk_worklog-$day  
  170.         /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $disk_table values ('','$here','$db_name','$db_ip','$monitor_name','disk_use','$alert_disk','$db_disk_partition','$db_disk_use','normal',now())";  
  171. fi  
注意: web、交换、引擎服务器里监控内容除了资源监控(如硬盘、io、cpu、用户
、负载、日志错误信息、登录硬件错误信息、内存),还包括应用服务监控,而备用与数据库服务器的监控没有应用服务器监控,只有资源监控。
6 mysql数据库内容与解释
之前的 shell监控脚本部署完成后,会在监控的时候,把监控的数据一部分写入到本机的日志里,另外一个部分写入到mysql数据库,所以在mysql里会专门的建立一个数据库与数据表,接收shell监控写入的数据。
1)数据库表名的结构
数据表有 10个,分别是cpu、disk、hardware、io、load、memory、message、service、user、device。在创建各自省份的时候,会在表名前加入省份名称中文拼音,比如像创建甘肃省的cpu表,在数据库里找个表名为gansu_cpu。
A、 cpu、hardware、io、load、memory、message、user这些表的字段一样,内容为:

 
 
  1. 字段                   类型                  解释  
  2. id                      int(10)             编号,主要为监控此服务的次数  
  3. province                varchar(30)         省份名称  
  4. server                  varchar(30)          监控主机名称,主要是监控主机hostname的名称  
  5. ip                      varchar(20)          监控主机的ip  
  6. monitor_server       varchar(30)          监控主机的类型,我这里分别有web、交换、引擎、备用、数据库  
  7. service                 varchar(20)          监控的服务名称  
  8. alert                   int(10)              监控服务的阀值  
  9. value                   int(10)              监控服务的当前值  
  10. status                  varchar(10)          监控服务器的状态,normal与abnormal  
  11. date                    datetime             监控服务的时间  
下面是我的 mysql数据库里甘肃cpu截图

B、 disk数据表的内容
 

 
 
  1. 字段                   类型                 解释  
  2. id                      int(10)             编号,主要为监控此服务的次数  
  3. province                varchar(30)         省份名称  
  4. server                  varchar(30)          监控主机名称,主要是监控主机hostname的名称  
  5. ip                      varchar(20)          监控主机的ip  
  6. monitor_server       varchar(30)          监控主机的类型,我这里分别有web、交换、引擎、备用、数据库  
  7. service                 varchar(20)          监控的服务名称  
  8. alert                   int(10)              监控服务的阀值  
  9. partition               varchar(30)          最大硬盘的分区名称  
  10. value                   int(10)              监控服务的当前值  
  11. status                  varchar(10)          监控服务器的状态,normal与abnormal  
  12. date                    datetime             监控服务的时间  
下面是我的 mysql里甘肃disk的截图

C、 service数据表的内容
 

 
 
  1. 字段                   类型                  解释  
  2. id                      int(10)             编号,主要为监控此服务的次数  
  3. province                varchar(30)         省份名称  
  4. server                  varchar(30)          监控主机名称,主要是监控主机hostname的名称  
  5. ip                      varchar(20)          监控主机的ip  
  6. monitor_server       varchar(30)          监控主机的类型,我这里分别有web、交换、引擎、备用、数据库  
  7. service                 varchar(20)          监控的服务名称  
  8. status                  varchar(10)          监控服务器的状态,normal与abnormal  
  9. date                    datetime             监控服务的时间  
下面是我的 mysql数据库里甘肃service截图

D、 device

 
 
  1. 字段                   类型                   解释  
  2. id                      int(10)              编号,主要为监控此服务的次数  
  3. name                    varchar(255)          设备的名称  
  4. ip                      varchar(30)          设备的ip  
  5. mac                  varchar(30)          设备的mac  
  6. type                    varchar(30)          设备的类型  
  7. jifang_name          varchar(255)            机房的名称  
  8. raw_name                varchar(255)            机架的名称  
  9. raw_location            varchar(45)          机架的位置  
  10. assets_code          varchar(30)          财产编号  
  11. state                   varchar(30)          设备状态  
  12. price                   int(10)              设备的架构  
下面是我的 device数据表的截图

2)数据库的建立
我建立的数据库为 monitor,创建的语句为:
create database monitor;
3)数据库表的建立
数据表建立有 2个方式:
1、使用 create_database.sh脚本建立,脚本内容如下:

 
 
  1. #!/bin/bash  
  2. #mysql info  
  3. mysql_ip='1.1.1.1' 
  4. ##数据库的ip  
  5. mysql_username='root' 
  6. ##数据库的登录用户  
  7. mysql_passwd='****' 
  8. ##数据库的登录密码  
  9. mysql_database='monitor' 
  10. ##需要登录的数据库  
  11. here='gansu' 
  12. ##创建数据库的省份名称  
  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. ##创建数据库的表名  
  23. #create table memory  
  24.  mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $memory_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  25. #create table load  
  26. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $load_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  27. #create table io  
  28. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $io_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  29. #create table hardware  
  30. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $hardware_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  31. #create table message  
  32. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $message_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  33. #create table user  
  34. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $user_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  35. #create table disk  
  36. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $disk_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,partition varchar(30) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  37. #create table cpu  
  38. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $cpu_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,alert int(10) not null,value int(10) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
  39. #create table service  
  40. mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "create table $service_table(id int(10) not null primary key auto_increment,province varchar(30) not null,server varchar(30) not null,ip varchar(20) not null,monitor_server varchar(30) not null,service varchar(20) not null,status varchar(10) not null,date datetime)ENGINE=InnoDB DEFAULT CHARSET=utf8;"  
注意: device这个表我没有在create_database.sh脚本里创建,如果你想使用这个功能,就自己创建这个表。
2、在后头进行添加省份 php监控程序的时候,使用create_province.sh进行创立,这个在后面部分进行说明。
7、 php程序设计的web端的内容与解释
php监控程序主要是通过从 mysql数据库里获得数据,然后在网页里展示数据。
我设计的这个程序主要有 4个功能:
1、资产管理
主要是通过 device数据表进行数据的收集,通过add.php、add_device.php、list_device.php、conn.php、head.php、head_device.php进行数据的输入与展示。
2、监控详情
主要是通过各自省份的数据表进行数据的采集,比如进行甘肃省分的采集,需要用到的数据表有 gansu_cpu、gansu_disk、gansu_io、gansu_load、gansu_hardware、gansu_message、gansu_memory、gansu_user、gansu_service,通过list.php、gansu.php(各自省份的都有各自的php文件,比如广西的为guangxi.php)、conn.php、head.php、province.php进行数据的展示。
3、当日报警
主要是通过各自省份的数据表进行数据的采集,比如进行甘肃省分的采集,需要用到的数据表有 gansu_cpu、gansu_disk、gansu_io、gansu_load、gansu_hardware、gansu_message、gansu_memory、gansu_user、gansu_service,通过warn.php、gansu_warn.php(各自省份的都有各自的php文件,比如广西的为guangxi_warn.php)、conn.php、head.php、warn_province.php。

下一篇文章地址:

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

http://dl528888.blog.51cto.com/2382721/1035252




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



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
218 0
|
1月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
180 3
|
2月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
53 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
94 3
|
1月前
|
消息中间件 数据采集 运维
一份运维监控的终极秘籍!监控不到位,宕机两行泪
【10月更文挑战第25天】监控指标的采集分为基础监控和业务监控。基础监控涉及CPU、内存、磁盘等硬件和网络信息,而业务监控则关注服务运行状态。常见的监控数据采集方法包括日志、JMX、REST、OpenMetrics等。Google SRE提出的四个黄金指标——错误、延迟、流量和饱和度,为监控提供了重要指导。错误监控关注系统和业务错误;延迟监控关注服务响应时间;流量监控关注系统和服务的访问量;饱和度监控关注服务利用率。这些指标有助于及时发现和定位故障。
99 1
|
2月前
|
运维 关系型数据库 MySQL
运维|MySQL 数据库被黑,心力交瘁
前一阵有一个测试用的 MySQL 数据库被黑了,删库勒索的那种,这里记录一下事情经过,给自己也敲个警钟。
42 2
|
2月前
|
运维 Prometheus 监控
运维之眼:监控的艺术与实践
在信息技术飞速发展的今天,运维监控已成为保障系统稳定运行的关键。本文将探讨运维监控的重要性,介绍常用的监控工具和方法,并通过实际案例分析,展示如何有效地实施监控策略,以确保系统的高可用性和性能。
|
2月前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
48 1
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
40 2
|
2月前
|
Ubuntu 关系型数据库 MySQL
Linux系统MySQL安装
【10月更文挑战第19天】本文介绍了在 Linux 系统上安装 MySQL 的步骤,包括安装前准备、安装 MySQL、启动 MySQL 服务、配置 MySQL 以及验证安装。适用于 Ubuntu/Debian 和 CentOS/Fedora 系统,提供了详细的命令示例。
244 1