1.检测数据是否被改动过
]# vim jiance.sh
#!/bin/bash
for i in `ls /etc/*.conf`
do
# i 取值 ls 查看出来的所有文件
md5sum $i >> /tmp/a.log
# md5sum是一种信息摘要算法,多用来检测数据的完整性,可以判断数据是否被改动过
done
]# chmod +x jiance.sh
]# ./jiance.sh
2.定义Nginx服务状态监控
前提是Nginx安装了–with-http_stub_status_module模块,并且在配置文件/usr/local/nginx/conf/nginx.conf中起开了stub_status功能。
vim /usr/local/nginx/conf/nginx.conf
http{
... ...
server{
... ...
location /status {
stub_status on;
}
... ...
}
}
则通过curl -s http://192.168.1.10/status可以得到Nginx的服务状态
]# curl http://192.168.2.100/status
Active connections: 1
server accepts handled requests
10 10 3
Reading: 0 Writing: 1 Waiting: 0
查看状态脚本如下:
vim nginx_status.sh
#!/bin/bash
active=$(curl -s 192.168.1.10/status | awk 'NR==1{print $3}')
accepts=$(curl -s 192.168.1.10/status | awk 'NR==3{print $1}')
handled=$(curl -s 192.168.1.10/status | awk 'NR==3{print $2}')
requests=$(curl -s 192.168.1.10/status | awk 'NR==3{print $3}')
waiting=$(curl -s 192.168.1.10/status | awk 'NR==4{print $6}')
echo "active:$active"
echo "accepts:$accepts"
echo "requests:$requests"
echo "waiting:$waiting"
#### 直接运行脚本即可显示全部内容
########手动使用脚本查询##########
#!/bin/bash
case $1 in
active)
curl -s http://192.168.2.100/status |awk '/Active/{print $NF}';;
waiting)
curl -s http://192.168.2.100/status |awk '/Waiting/{print $NF}';;
accepts)
curl -s http://192.168.2.100/status |awk 'NR==3{print $2}';;
esac
####使用方法: nginx_status.sh active或waiting或accepts来查询
3.编写监控脚本
具体监控项目如下:
1.CPU负载
2.网卡流量
3.内存剩余容量
4.磁盘剩余容量
5.计算机账户数量
6.当前登录账户数量
7.计算机当前开启的进程数量
8.本机已安装的软件包数量
#] vim jiankong.sh
#!/bin/bash
ip=`ifconfig eth0| awk '/inet/{print $2}'`
echo "本地IP是:"$ip
cpu=`uptime | awk '{print $NF}'`
echo "本机CPU最近15分钟的负载是:"$cpu
net_in=`ifconfig eth0 | awk '/RX p/{print $5}'`
echo "入站网卡的流量为:"$net_in
net_out=`ifconfig eth0 | awk '/TX p/{print $5}`
echo "出站网卡的流量为:"$net_out
mem=`free | awk '/Mem/{print $4}'`
echo "内存的剩余容量为:"$mem
disk=`df | awk '/\/$/{print $4}'`
echo "根分区剩余容量为:"$disk
user=`cat /etc/passwd | wc -l`
echo "本地账户数量为:"$user
login=`who | wc -l`
echo "当前登录计算机的账户数量为:"$login
process=`ps aux | wc -l`
echo "当前计算机启动的进程数量为:"$process
soft=`rpm -qa | wc -l`
echo "当前计算机已安装的软件数量为:"$soft
4.获取IP访问服务的次数
以Httpd服务为例,查看客户端IP访问Httpd服务的次数
]# vim count_ip
#!/bin/bash
//成功访问服务的次数和IP地址
awk '{print $1}' /etc/httpd/logs/access_log | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}'
//检测ssh登录日志,显示远程登陆账号名错误3次的IP
awk '/Invalid user/{print $10}' /var/log/secure | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' | awk '$1>3{print $2}'
//检测ssh登录日志,显示远程登陆密码错误3次的IP
awk '/Failed password/{print $11}' /var/log/secure | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' | awk '$1>3{print $2}'
5.统计页面访问量排名
分析web日志的访问量排名,获得客户机的地址和访问次数,并按照访问次数排名.
- web日志文件的每条访问记录的第一列就是客户机的IP地址,其中会有很多重复的IP地址.因此还需要统计重复记录的数量,并进行排序;
- 通过awk提取信息时,利用IP地址作为数组下标,每遇到一个重复值就将此数组元素递增1,最终就获得了这个IP地址出现的次数
- 针对文本排序输出,采用sort命令,其中-n表示按数字升序排列,而-r表示反序,-k可以指定按第几个字段来排序.
]# ceshi.sh
#!/bin/bash
awk '{ip[$1]++} END{for (i in ip){print ip[i],i}}' /var/log/httpd/access_log | sort -nr
6.统计页面的PV和UV
pv(Page View):页面的访问量,每打开一次页面或刷新一次页面,PV计数+1
UV(Unique Visitor):指独立访客访问数,一台电脑终端为一个访客
在web日志文件中,每条访问记录就是一个页面打开或刷新页面的记录,.则可以通过统计web日志文件的行数来确定网站的PV.
web日志文件的每条访问记录的第一列就是客户机的IP地址,但其中会有很多IP重复出现,我们还需要去重,在这里我们可以利用5.统计页面访问量排名的方法去重,在统计行数即可.
vim test.sh
#!/bin/bash
pv=`wc -l /usr/local/nginx/logs/access.log`
uv=`awk '{ip[$1]++} END{for (i in ip){print ip[i],i}}' /var/log/httpd/access_log | sort -nr | wc -l`
echo "点击量为(PV):" $pv
echo "访客数量(uv):" $uv