一、分析nginx运行状态
1.概述
脚本:check_server.sh
利用操作系统命令:
网络命令:ping(检查网络是否正常连接)、nslookup(检查dns)、nm-tool(检查路由网络是否通畅)、tracertroute(检查路由网络是否通畅)、dig(检查路由网络是否通畅)、telent、(检查路由网络是否通畅)、curl(检查http的响应值是否成功)
监控进程:ps、netstat、pgrep(查看进程或者端口)
应用运行状态监控脚本:
利用客户端命令、工具:
应用客户端:mysql、ab、mongo、php、jstack
第三方工具包:nginxstatus、nagios-libexec
服务端接口支持:
1.nginx - http_stub_status_module
2.nutcracker监控集群(redis、memcache)
3.Mongodb
2.nginx监控脚本
脚本部分内容--详细函数编写:
Resettem=$(tput sgr 0)
Nginxserver='http://192.168.38.132/nginx_status'
Check_Nginx_Server() //定义一个函数,将其封装到一起
{
Status_code=$(curl -m 5 -s -w %{http_code} ${Nginxserver} -o /dev/null)
//判断其状态大于500的就输出错误
if [ $Status_code -eq 000 -o $Status_code -ge 500 ];then
echo -e '\E[32m' "check http server error! Response status code is " $Resettem$Status_code
else
Http_content=$(curl -s ${Nginxserver})
echo -e '\E[32m' "check http server ok! \n" $Resettem $Http_content
fi
}
Check_Nginx_Server //调用这个函数
运行结果图示命令详解释:
curl -m 5 -s -w %{http_code} ip/nginx_status -o /dev/null
-m:设置其最大传输时间
-s:静音模式,不做其他输出
-w:显示http对应的状态码
-o /dev/null :摒弃输出
二、利用shell监控mysql
1.mysql主从复制状态监控
前提:
1.搭建主从复制环境
2.基于mysql客户端连接,获取主从复制状态
监控:
mysql>show slave status\G;
Slave_IO_Running-IO //线程是否连接到主服务器上
Second_Behind_Master //主从同步的延时时间
2.主从复制状态函数编写
图示nc -z -w2 ip 数据库端口(默认3306)
nc:检查端口是否连通
-z:简单的检查端口的测试,不做过多的往服务端发送数据
-w2:连接超时
脚本部分内容--详细函数编写:
执行结果图示Mysql_Slave_Server='你的ip'
Check_Mysql_Server(){
nc -z -w2 ${Mysql_Slave_Server } 3306 &>dev/null //检查数据库端口是否连通,并将结果输入空文件中
if [ $? -eq 0 ];then //判读,如果查询到的上一条命令的返回值是0,则输出连接成功
echo "Connect ${Mysql_Slave_Server} OK!"
fi
}
Check_MySql_Server //调用这个函数
3.主从复制状态建立Mysql监控普通用户
前提:
给用户rep密码是imooc'用户单独赋予一个权限1.确定mysql的主从是配置完毕的。
2.建议给监控,单独配置一个用户,避免安全问题以及一些权限问题。
结果图示连接mysql根据mysql的查询语句获取mysql状态的主从信息
mysql -u rep -pimooc -h192.168.38.132 -e "show slave status\G"
详解:-u 用户名
-p 密码
-h 地址ip
-e 执行的命令
4.主从复制状态建立Mysql监控主从同步延时
部分脚本--监控主从同步延时代码:
图示 整个监控脚本的输出将从服务器的用户名和密码写入:
Mysql_User='rep'
Mysql_Pass='imooc'
后续补上完整脚本~~
网友评论