使用shell脚本编写程序定时查询数据库,根据数据库结果发送短信和邮件。定时任务使用crontab实现,具体实现如下。
1. crontab 定时执行任务
crontab -e进行编辑,使用方法类似于vi,
例子:0 * * * * bash /home/work/opt/nginx/sbin/nginx_log.sh
2. 完整脚本
#!/bin/bash
if [ $# -lt 2 ]
then
echo "params error";
exit;
fi
#创建日志文件
LOG_FILE_NAME="/home/work/monitor/xxx"$1".log"
if [ ! -e "$LOG_FILE_NAME" ]
then
touch $LOG_FILE_NAME;
fi
LOG=$(date "+%Y-%m-%d %H:%M:%S");
#当前时间
current_time=$(date +%s);
echo $current_time
#查询开始时间
start_time=$(($current_time-$3))
echo $start_time;
tag=${1}
query_total_num_sql="select count(1) from unionsdkmonitor where tag like '%${tag}%' and timestamp>='${start_time}' and timestamp<='${current_time}'"
total_num=$(/usr/bin/mysql -h10.11.0.90 -P4051 -uuser -ppassword -N gamesdkmonitor -s -e "${query_total_num_sql}");
echo ${total_num};
error_result="0";
query_error_num_sql="select count(1) from unionsdkmonitor where tag like '%${tag}%' and timestamp>='${start_time}' and timestamp<='${current_time}' and result=${error_result}";
error_num=$(/usr/bin/mysql -h10.11.0.90 -P4051 -uuser -ppassword -N gamesdkmonitor -s -e "${query_error_num_sql}");
echo ${error_num}
#总条数小于5条不报警。
if [ 5 -gt ${total_num} ]
then
exit;
fi
error_per=$[error_num*100/total_num];
time=$[$3/60];
LOG=${LOG}" "$2" totalnum="${total_num}" error_num="${error_num}" error_per="${error_per}"%";
#记录日志
echo $LOG >> $LOG_FILE_NAME
#大于阀值,发送短信和邮件
echo $error_per
if [ $error_per -gt 50 ]
then
message="$2接口过去$time分钟访问$total_num次,失败$error_num次,错误率为百分之$error_per,时间"$(date "+%Y-%m-%d %H:%M:%S")".";
#xxx
phones=(xxxx xxxx)
#phones=(15011549635)
for var1 in ${phones[@]}
do
#发送短信
curl "http://ip/message.php?phone=$var1&message=$message"
done
#发送邮件
/home/liuqi/sendEmail -t xxx@xxx.com,xxx@xxx.com -f mail@xxx.com -s smtp.qiye.163.com:25 -xu xxx@xxx.com -xp Lv6bYuMW8a -m $message -u "标题"
echo $message;
fi
exit;
相关推荐
6. **监控与报警**:运维脚本会监控系统资源(CPU、内存、磁盘空间等),当达到预设阈值时发送报警通知(例如通过邮件或短信)。 7. **备份与恢复**:定期备份数据是保障业务连续性的重要措施,脚本可能包含自动...
10. **报警与通知脚本**:当系统出现异常时,脚本可以发送邮件或短信通知运维人员,以便快速响应。例如,结合`mail`、`sendmail`或第三方API实现。 熟练掌握这些运维Shell脚本知识点,不仅可以提升运维工作的效率,...
1. **实时邮件和短信报警**:快速通知运维人员,提高故障响应速度。 2. **B/S结构**:允许远程管理和配置,不受地理位置限制。 3. **Python通信**:利用Python进行服务器间的数据交换和指令执行。 4. **故障统计*...
- 监控服务器端:负责数据采集、分析和报警,使用Python编程和LAMP服务器,通过邮件和短信发送报警信息,并存储错误日志。 - 被监控服务器端:安装Python服务,部署Python程序和Shell脚本,接收并执行监控服务器的...
1. **二次开发**:可以根据实际需求对Cacti进行定制,例如增加短信报警功能,使用Shell脚本和短信发送工具。 2. **数据存储**:可以优化数据存储方式,使用关系型数据库持久保存性能数据,提高数据检索效率。 3. **...
这可以通过邮件、短信或推送通知实现,报警策略需要灵活配置。 9. **安全性**: 系统应考虑安全性问题,例如限制访问权限、加密传输数据、防止SQL注入等,确保监控数据不被非法访问或篡改。 10. **扩展性**: 随着...
5. **报警机制**:当检测到异常时,可以通过邮件、短信或其他通知方式提醒管理员。 结合上述步骤,我们可以构建一个实用的Nginx代理节点监控系统。通过Shell脚本的定时执行和Web应用的实时展示,我们可以有效地监控...
- **报警模块**:实现报警通知功能,可能包括发送邮件、短信或其他消息。 - **数据存储**:用于保存监控数据,如MySQL、Redis或日志文件。 - **报告和可视化工具**:如Grafana、Prometheus等,用于展示监控数据和...
它提供了丰富的功能,包括56种测试工具和27种报警机制,用于监测网络中的各种服务,如TCP服务、UDP、网络连通性、路由、DNS、FTP、SMTP、POP3、端口、URL、Web Service、SQL Server、数据库表空间、硬盘空间、文件...
- 当触发器激活时,Zabbix可以发送邮件、短信或推送通知,确保问题及时解决。 - 用户可以自定义通知策略,根据时间、事件严重性等因素设置通知方式和频率。 10. **集成与API**: - Zabbix 4.0提供了RESTful API...
Golang的`net/smtp`包提供了SMTP协议的实现,可以用来发送邮件。需要设置SMTP服务器地址、端口、用户名、密码等信息。 ### 5. 模板引擎 `tpl`目录可能包含了项目中的模板文件,用于生成邮件或者其他输出格式。...
- 当发现服务异常或资源使用超过预设阈值时,可以发送邮件、短信或者通过API推送报警信息。可以使用`smtplib`库发送邮件,`requests`库调用HTTP API。 7. **数据可视化**: - 如果需要图形化展示监控数据,可以...
22. 邮件告警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件; 23. 运行报表:支持实时查看运行数据,以及调度报表,如调度日期分布图,任务组执行比例比例分布图等; 24. 事件触发:除了"Cron方式"和...
8. **通知机制**:当任务执行成功或失败时,XXL-JOB可以发送通知,如邮件、短信等,确保开发团队及时了解任务状态。 9. **持久化存储**:任务调度和执行信息存储在数据库中,保证了数据的安全性和一致性。 10. **...
可以集成邮件、短信、微信等通知渠道,利用Laravel的任务调度(Cron Jobs)定时检查服务器状态并发送警报。 9. **性能优化** 考虑到服务器监控可能涉及大量数据读写,对数据库进行适当的索引优化,使用缓存减少...
7. **报警系统**:当发现异常时,Python可以发送邮件、短信或利用API调用第三方服务(如Slack、钉钉)进行报警,通知网络管理员。 8. **性能优化**:对于大规模网络环境,可能需要考虑并发处理多个设备,这里可以...
9. **报警机制**:当温度超过预设阈值时,程序可能通过邮件、短信或消息队列(如RabbitMQ)发送报警通知。 10. **部署与配置**:程序可能包含部署脚本和配置文件,方便用户在不同环境下的快速安装和配置。 综上所...
对于正常运行的情况,脚本会先检查是否有之前的报警日志文件存在,如果存在则删除该日志文件并发送确认信息(通过短信或电子邮件)通知管理人员复制状态正常。如果没有报警文件,则认为之前没有问题发生,不进行操作...