shell脚本监控网站,异常则进行邮件报警

服务器系统centos7.6
1、安装邮箱服务,一般服务器都已经安装了,查看是否安装。
yum list mailx
rpm -qa | grep mail
查看是已经安装了。
img
未安装的执行命令安装即可。
yum -y install mailx
配置mail,配置文件路径/etc/mail.rc

vim /etc/mail.rc
在尾部加入以下内容
set from=12345678@139.com ###(发送邮箱账号)
set smtp=smtp.139.com ###(发送邮箱smtp服务器地址,很多人使用的是qq的,qq的就需要修改,smtp.qq.com)
set smtp-auth-user=12345678 ###(发送邮箱账号,这里只需要写你的邮箱账号,不需要写@后面的字符)
set smtp-auth-password=123456abc ###(邮箱的密码)
set smtp-auth=login ###(登陆方式,这个不用改)
img
保存退出。

这里会使用到你邮箱的smtp服务,一般你的邮箱这个服务是关闭的,需要登录你的邮箱开启这个服务。我是139的邮箱,登陆邮箱开启这个服务。
img
smtp使用25,465端口,需要在防火墙放行此端口。
测试给邮箱发送一个邮件
echo “服务器存在异常,请登录服务器进行查看” | mail -s “服务器报警” 123@qq.com
img
mail邮箱服务搭建完成。

2、检测网站是否健康运行
定义需要监控的网站地址,脚本30秒探测一次,当检测到网站返回状态不为200时,隔三秒在进行探测,三秒后再次探测不为200时则进行告警。

#!/bin/bash
#定义探测网站的列表
web_list=("https://www.zph.com" "https://okayfancy.com" "https://test.com")

#定义告警函数
function alert() {
	echo "$(date): $1 状态为:$2  请及时查看!"
	echo echo "$(date): $1 状态为:$2  请及时查看 !!!" | mail -s "服务器异常" mail1-test.com
}

#循环探测每个网站
while true; do
	for website in ${web_list[@]}; do
		response=$(curl -s -w %{http_code} $website -o /dev/null)
		if [ $response -ne 200 ]; then
			echo "$(date): $website 状态 $response"
			#如果状态异常,隔三秒在进行探测。隔三秒在进行探测还是异常则进行告警
			sleep 3
			response=$(curl -s -w %{http_code} $website -o /dev/null)
			if [ $response -ne 200 ]; then
				alert $website $response
			fi
		fi
	done
        sleep 30
done

#本地输出结果
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以使用下面的Shell脚本监控http进程的CPU和内存使用情况,并在达到阈值时发送报警邮件。这个脚本可以在Linux环境下运行。 ```bash #!/bin/bash # 进程名 process_name="httpd" # CPU、内存阈值(百分比) cpu_threshold=90 mem_threshold=90 # 收件人邮箱地址 to_email="[email protected]" # 获取进程PID pid=$(pgrep $process_name) # 获取进程CPU、内存使用情况 cpu_usage=$(ps -p $pid -o %cpu | grep -v CPU | awk '{print $1}') mem_usage=$(ps -p $pid -o %mem | grep -v MEM | awk '{print $1}') # 判断使用情况是否超过阈值 if [[ $(echo "$cpu_usage > $cpu_threshold" | bc -l) -eq 1 ]]; then echo "CPU usage of $process_name is over $cpu_threshold%" | mail -s "CPU Alert" $to_email fi if [[ $(echo "$mem_usage > $mem_threshold" | bc -l) -eq 1 ]]; then echo "Memory usage of $process_name is over $mem_threshold%" | mail -s "Memory Alert" $to_email fi ``` 将上面的代码保存为一个Shell脚本文件,比如`monitor_http.sh`,然后给该文件执行权限: ``` chmod +x monitor_http.sh ``` 之后,可以使用cron定时任务来定时执行该脚本,比如每隔5分钟执行一次。编辑cron任务: ``` crontab -e ``` 添加下面的一行,表示每隔5分钟执行一次`monitor_http.sh`脚本: ``` */5 * * * * /path/to/monitor_http.sh ``` 修改`/path/to/monitor_http.sh`为实际脚本文件的路径。之后,当http进程的CPU或内存使用情况超过阈值时,您将会收到报警邮件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值