(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、用户
、负载、日志错误信息、登录硬件错误信息、内存),还包括应用服务监控,而备用与数据库服务器的监控没有应用服务器监控,只有资源监控。
6mysql数据库内容与解释
之前的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截图

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

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的截图

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

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截图

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

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数据表的截图

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

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