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

(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='[email protected]' 
  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

你可能感兴趣的:(独立监控系统,web监控系统)