X、create_province.sh脚本内容
  1. #!binbash
  2. LANG="zh_CN.UTF-8"
  3. LANG=C
  4. #mysql info
  5. mysql_ip='1.1.1.1'
  6. ##数据库的ip
  7. mysql_username='root'
  8. ##数据库的用户名
  9. mysql_passwd='****'
  10. ##数据库的密码
  11. mysql_database='monitor'
  12. ##登录的数据库
  13. new_here='shanxi'
  14. ##需要添加的省份中文拼音
  15. new_name='陕西'
  16. ##需要添加省份的中文名称
  17. old_here='gansu'
  18. ##已经添加过省份中文拼音
  19. old_name='甘肃'
  20. ##已经添加过的省份中文名字
  21. memory_table=''$new_here'_memory'
  22. load_table=''$new_here'_load'
  23. io_table=''$new_here'_io'
  24. hardware_table=''$new_here'_hardware'
  25. message_table=''$new_here'_message'
  26. user_table=''$new_here'_user'
  27. disk_table=''$new_here'_disk'
  28. cpu_table=''$new_here'_cpu'
  29. service_table=''$new_here'_service'
  30. monitor_dir='/tmp/monitor'
  31. ##当前php监控存放的位置
  32. test_dir='/tmp/old'
  33. ##如果想添加新省份,临时存放的位置
  34. #create table module
  35. create_table ()
  36. {
  37. #create table memory
  38. 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;"
  39. #create table load
  40. 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;"
  41. #create table io
  42. 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;"
  43. #create table hardware
  44. 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;"
  45. #create table message
  46. 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;"
  47. #create table user
  48. 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;"
  49. #create table disk
  50. 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;"
  51. #create table cpu
  52. 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;"
  53. #create table service
  54. 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;"
  55. }
  56. #create test directory
  57. if [ ! -d "$test_dir" ];then
  58. /bin/mkdir $test_dir
  59. fi
  60. #mondiy monitor software module
  61. mondiy_software ()
  62. {
  63. #copy monitor province software
  64. /usr/bin/rsync -avz $monitor_dir/*$old_here* $test_dir/ >>/dev/null 2>&1
  65. cd $test_dir
  66. #rename old_name to here_name
  67. /usr/bin/rename $old_here $new_here *
  68. #mondiy old_here and old_name
  69. sed -i 's/'$old_here'/'$new_here'/g' *$new_here*
  70. sed -i 's/'$old_name'/'$new_name'/g' *$new_here*
  71. #mondiy province.php
  72. sed -i 's/<\/b>/ | <a href="'$new_here'.php">'$new_name'<\/a><\/b>/' $monitor_dir/province.php
  73. #mondiy warn_province.php
  74. sed -i 's/<\/b>/ | <a href="'$new_here'_warn.php">'$new_name'<\/a><\/b>/' $monitor_dir/warn_province.php
  75. #mondiy view_day_province.php
  76. sed -i 's/<\/b>/ | <a href="'$new_here'_day_view.php">'$new_name'<\/a><\/b>/' $monitor_dir/view_day_province.php
  77. #mondiy view_month_province.php
  78. sed -i 's/<\/b>/ | <a href="'$new_here'_month_view.php">'$new_name'<\/a><\/b>/' $monitor_dir/view_month_province.php
  79. #mondiy view_year_province.php
  80. sed -i 's/<\/b>/ | <a href="'$new_here'_year_view.php">'$new_name'<\/a><\/b>/' $monitor_dir/view_year_province.php
  81. #copy test_dir to monitor_dir
  82. /usr/bin/rsync -avz $test_dir/*$new_here* $monitor_dir/ >>/dev/null 2>&1
  83. #delete test_dir file
  84. /bin/rm -rf $test_dir/*$new_here*
  85. }
  86. #check table is or not exist
  87. /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "desc $io_table">>/dev/null 2>&1
  88. if [ $? -eq 0 ];then
  89. echo "$io_table is exist!"
  90. else
  91. echo "$io_table is not exist!"
  92. echo "Do you want to create $new_here table?If you want to create $new_here table,please input:(yes|no)"
  93. read -t 30 -p "Please input you choose:" choose
  94. case $choose in
  95. yes|y)
  96. echo "Now start creaet $new_here table......"
  97. create_table
  98. echo "$new_here table crease finish!"
  99. echo "Now start to mondiy monitor software......"
  100. mondiy_software
  101. echo "$new_name has been added monitor software!"
  102. ;;
  103. no|n)
  104. echo "Your choose is no,so we will to exit!"
  105. exit
  106. ;;
  107. *)
  108. echo "please input:(yes|no)"
  109. ;;
  110. esac
  111. fi
Y、数据视图化shell脚本
每个省份都是单独的一个shell脚本,脚本里包含各种省份以年、月、日为时间,以web、交换、引擎、备用、数据库为服务器类型,以disk、io、load、memory、user为视图化的服务。
下面是甘肃省份的数据视图化脚本,名字为gansu.sh,运行在php程序的images文件里,使用nohup sh gansu.sh &运行
由于脚本内容非常的多,在word里超过200页,所以就不展示了,脚本我会放到最后一页的附件里。
7、如何部署
(1)、shell监控脚本部署
把shell监控脚本存放到/usr/local/monitor/shell目录,给予755权限,然后再crontab里输入*/3 * * * * /usr/local/monitor/shell/脚本内容,使每3分钟轮询运行脚本。
(2)mysql数据库部署
可以使用create_database.sh脚本进行部署,也可以使用create_province.sh脚本部署。
(3)php程序部署
先把php程序部署到服务器里,然后添加省份的时候,使用create_province.sh来进行添加,方法为:
1、使用sh create_province.sh运行脚本
2、如果添加脚本在数据库里数据库表存在,就会出现以下情况

如果不存在

你可以输入yes或no来选择是否创建数据库表与进行添加相应省份的php文件(注意只有10秒钟的等待时间,为了节省服务器资源,我使用了read -n参数)
输入完yes后,结果如下

可以看到数据库表创建完成,php监控的省份添加完成
之后你在web里就能直接观看添加省份的监控
添加省份的数据视图化的shell文件,可以使用create_gnuplot.sh来进行添加,内容如下
  1. #!/bin/bash
  2. old_dir='/tmp/old_dir'
  3. ##当前已经存在的数据实体化脚本目录
  4. new_dir='/tmp/new_dir'
  5. ##临时存放省份的数据实体化脚本目录
  6. if [ ! -d "$new_dir" ];then
  7. mkdir $new_dir
  8. fi
  9. for i in gansu tianjin guangxi guizhou hainan hebei hunan qinghai xinjiang henan xizang baotou hubei jiangxi ningxia shanxi
  10. ##在这里输入你想添加省份的中午拼音
  11. do
  12. ls $i.sh>>/dev/null 2>&1
  13. if  [ $? -eq 0 ];then
  14. echo "$i.sh is exist!"
  15. else
  16. echo "$i.sh is not exist!"
  17. echo "Start to create $i.sh..."
  18. /usr/bin/rsync -avz $old_dir/gansu.sh $new_dir/$i.sh>>/dev/null 2>&1
  19. sed -i 's/gansu/'$i'/g' $new_dir/$i.sh
  20. /usr/bin/rsync -avz $new_dir/$i.sh $old_dir/$i.sh>>/dev/null 2>&1
  21. fi
  22. done
8、维护与升级
1、维护
       由于采用了时间方法的日志分钟,每3分钟检测一次 ,所以日常维护非常的方便,只要各位在目录的logs里,查看到有当天日志文件产生,在查看当天日志文件是否为每3分钟检测一次,如果满足上述条件,则此脚本正常运行。
2、升级
       在升级的时候,为了避免部署新的程序时监控系统检测不到相应的应用服务,而且还收到了服务宕掉的邮件提示,各位在部署新程序时,应在相应用户里(部署监控系统crontab -e所在的用户)里,在监控系统自动启动检测的那一行里,在前面加上#,例如,在交换服务器里部署新的程序,需要在root用户下,输入crontab -e,然后在*/3 * * * * /usr/local/monitor/shell/监控脚本内容的最前面,加上#,最后的结果为#*/3 * * * * /usr/local/monitor/shell/监控脚本。
9、完整监控系统页面展示
(1)shell部分
各省都有各自的shell监控脚本,我以甘肃web为例

(2)mysql数据库部分
我截图所有mysql数据表

(3)php程序部分
由于在首页里已经有了php界面展示,所以现在就不展示了。
现在这个php+mysql+shell已经成功的对生产平台监控了3个月,符合我之前的监控要求,能节省我更多的时间去做更多有用的事,现在查看平台也不需要在进入后台一个一个的查看了,可以查看各省的监控详情与监控视图,更方便的了解平台应用服务与资源的运行情况,希望我这个监控系统能对大家有更好的启发,如果您有疑问或者好的观点,希望您能留言给我,谢谢!

运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(七)相关推荐

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

    现在开始介绍php+mysql+shell监控系统 1.目的 此监控系统主要是通过php+mysql+shell的方式,通过shell脚本对各个机器的其各个服务进行监控,达到及时的了解其各个应用服务的 ...

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

    前言 记得刚来这家公司的时候,我部门就我一个运维工程师,然后就是经理,刚开始公司平台什么监控都没有,在我与经理的努力下,先搭建nagios+cacti监控平台,后来随着公司业务的增加,平台的功能与服务 ...

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

    4.监控视图 主要是通过shell脚本进行收集mysql的数据,然后同gnuplot软件进行数据视图化,然后php加载这些图片到web里显示,用到的php文件为view.php day.php.mon ...

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

    (5)数据库服务器(以甘肃数据库为例,脚本解释参照甘肃web) #!/bin/bash #ip db_ip=$(/sbin/ifconfig eth0|grep "inet addr&quo ...

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

    转载来自:http://dl528888.blog.51cto.com/2382721/1034992 前言 记得刚来这家公司的时候,我部门就我一个运维工程师,然后就是经理,刚开始公司平台什么监控都没 ...

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

    include("conn.php"); include("head.php"); include("province.php"); ?&g ...

  7. linux运维自动化脚本,linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  8. Servicehot和你说说运维自动化的那些事儿

    2019独角兽企业重金招聘Python工程师标准>>> 运维管理兜兜转转十几余载,大家的运维管理再也不是小米加步枪.人工费力拉线扛服务器的传统时代,如你所知,这些年大家张口闭口谈的都 ...

  9. 舍本求末的运维自动化技术热潮

    运维自动化是2010年开始炒得很热的一个概念,也让很多工程师.用人单位瞎激动了很久,我也跟风学过puppet和python,求职双方也经常在面试时花大量时间谈运维自动化. 但冷静下来想想,所谓自动化, ...

最新文章

  1. 使用 Eigen 库写第一个程序
  2. Go如何使用session
  3. SAP WebClient UI的会话重启原理
  4. 双绞线直连法如何才能使两台电脑实现共享
  5. dvd vlc 复制_如何使用VLC翻录DVD
  6. 结对项目开发-电梯调度
  7. 关于设置不同linux主机之间ssh免密登录简易方法
  8. Spring中的@ImportResource
  9. dubbo服务化最佳实践
  10. Int VS Integer
  11. IDEA 访问Maven私服与上传组件
  12. 炼丹手册——梯度弥散和爆炸
  13. python 类继承 baseclass_Python:Dataclass继承自base Dataclass,如何将值从base升级到新类?...
  14. 机器人基础之雅克比矩阵
  15. vue使用bulma
  16. Stewart六自由度平台正反解算法
  17. 吴军三部曲见识(三) 谈谈见识
  18. 2022-09-29 C++并发编程(二十八)
  19. Canvas之translate、scale、rotate、skew
  20. 模仿某招聘网站的Js搜索菜单

热门文章

  1. python编程从入门到精通实践_《Python编程:从入门到实践》总结_Day01
  2. linux防火墙多个 多个ip配置,iptables一次性封多个ip,使用ipset 工具
  3. python控件随窗口变化而适配_python pyqt5 设置控件随窗体拉伸
  4. 最长公共子序列-动态规划(C/C++)
  5. php用户同步,ucenter同步用户登录【转】
  6. ccd视觉定位教程_CCD与CMOS哪个更能推动工业相机市场的发展
  7. 文件夹在哪里_在Mac电脑上截图和照片放在哪里?
  8. 计算机二级mysql大题_2016年计算机二级MySQL练习题及答案
  9. c#点击按钮调出另一个窗体_在类库或winform项目中打开另一个winform项目窗体的方法...
  10. 美国签证过不了,ICLR 2020搬到埃塞俄比亚,同性恋学者:不去,保命要紧