今天在github上看到看到作者domdanrtsey的两款巡检脚本完成OS系统和MySQL数据库巡检,脚本是平时使用的命令的堆积,但是比较特别是作者将脚本输出成html格式,这样就可以通过浏览器完成系统os或者mysql数据库状态巡检。在运用中可以将脚本加入定时任务crontab中,定时完成巡检工作,然后运维人员通过浏览器完成一系列检查。有这个模板后,检查统计项可根据实际需要自行添加,然后再html界面可以使用前端bootstrap等等来美化显示,也可以增加告警功能。
相比于zabbix专业的开源项目,笔者觉得这个简单简洁,可以完成自定义的监控。
作者domdanrtsey的github项目请参考: ,在此也表示感谢。
下载下来的脚本是没有执行x权限的,需要添加。运行脚本(需要root权限)后得到html文件,然后复制到目录:cp 192.168.31.82os_mysql_simple_summary.html /var/www/html/就可以了。
1、oswatch
举例一个”cpu使用率“检查项目:
create_html_head "cpu使用率" >> $file_output
create_table_head1 >> $file_output
get_cpuuse
create_tr3 "/tmp/tmp_cpuuse_`date +%y%m%d`.txt"
create_table_end >> $file_output
脚本oswatch.sh输出都用函数包装好,检查功能在函数get_cpuuse中,其他都是html格式的封装函数。
get_cpuuse将得到的信息写入txt文件中:mpstat -P ALL 10 6 >>/tmp/tmp_cpuuse_`date +%y%m%d`.txt 。
create_tr3函数使用cat $1将文件中的数据打印到hmtl文件中。
2、mywatch
举例一个”cpu使用率“检查项目:
create_html_head "Running Status of Database" >> $file_output
create_table_head1 >> $file_output
my_stat_info
create_tr3 "/tmp/tmpmy_stat_`date +%y%m%d`.txt"
create_table_end >> $file_output
和上面的一样。my_stat_info将得到的信息写入txt文件中:${mysql_cmd} -e status >>/tmp/tmpmy_stat_`date +%y%m%d`.txt 。 create_tr3函数使用cat $1将文件中的数据打印到hmtl文件中。
上面的两个脚本都是利用txt文件来作为数据中间缓存。而且脚本执行和客户端访问html是分开的,定时任务执行sh脚本生成html,客户端访问时html。客户端频繁刷新或者恶意攻击的情况下,如果直接调用命令的话会给linux服务器造成很大的压力,分开的话就没有这个顾虑!
触类旁通,笔者一些写过一篇文章:php语言怎么执行shell脚本语言 。
shell_exec函数,通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回,这个函数就将架起php和shell之间的桥梁。如果网页频繁刷新,那么
shell_exec会将所有命令不断执行,那么后果可想而知,cpu、内存、磁盘io等等都会有很大的负担。如果要解决的话,最简单的可以借鉴上面的方法将命令与php分开,然后php读取脚本写到文件中的内容。