`

shell实现查询数据库发送邮件和短信报警

 
阅读更多

    使用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;

分享到:
评论

相关推荐

    运维 - 日常运维常用 shell 脚本.zip

    6. **监控与报警**:运维脚本会监控系统资源(CPU、内存、磁盘空间等),当达到预设阈值时发送报警通知(例如通过邮件或短信)。 7. **备份与恢复**:定期备份数据是保障业务连续性的重要措施,脚本可能包含自动...

    运维 - 常用运维 shell 脚本合集.zip

    10. **报警与通知脚本**:当系统出现异常时,脚本可以发送邮件或短信通知运维人员,以便快速响应。例如,结合`mail`、`sendmail`或第三方API实现。 熟练掌握这些运维Shell脚本知识点,不仅可以提升运维工作的效率,...

    运维管理系统方案(范本模板).docx

    1. **实时邮件和短信报警**:快速通知运维人员,提高故障响应速度。 2. **B/S结构**:允许远程管理和配置,不受地理位置限制。 3. **Python通信**:利用Python进行服务器间的数据交换和指令执行。 4. **故障统计*...

    运维管理系统方案.pdf

    - 监控服务器端:负责数据采集、分析和报警,使用Python编程和LAMP服务器,通过邮件和短信发送报警信息,并存储错误日志。 - 被监控服务器端:安装Python服务,部署Python程序和Shell脚本,接收并执行监控服务器的...

    cacti流量监控

    1. **二次开发**:可以根据实际需求对Cacti进行定制,例如增加短信报警功能,使用Shell脚本和短信发送工具。 2. **数据存储**:可以优化数据存储方式,使用关系型数据库持久保存性能数据,提高数据检索效率。 3. **...

    linux监控系统 基于 nodejs expressjs mongoosejs .zip

    这可以通过邮件、短信或推送通知实现,报警策略需要灵活配置。 9. **安全性**: 系统应考虑安全性问题,例如限制访问权限、加密传输数据、防止SQL注入等,确保监控数据不被非法访问或篡改。 10. **扩展性**: 随着...

    开发程序实现nginx代理节点状态检查及WEB展示

    5. **报警机制**:当检测到异常时,可以通过邮件、短信或其他通知方式提醒管理员。 结合上述步骤,我们可以构建一个实用的Nginx代理节点监控系统。通过Shell脚本的定时执行和Web应用的实时展示,我们可以有效地监控...

    MonitorAgent

    - **报警模块**:实现报警通知功能,可能包括发送邮件、短信或其他消息。 - **数据存储**:用于保存监控数据,如MySQL、Redis或日志文件。 - **报告和可视化工具**:如Grafana、Prometheus等,用于展示监控数据和...

    HostMonitor介绍.doc

    它提供了丰富的功能,包括56种测试工具和27种报警机制,用于监测网络中的各种服务,如TCP服务、UDP、网络连通性、路由、DNS、FTP、SMTP、POP3、端口、URL、Web Service、SQL Server、数据库表空间、硬盘空间、文件...

    zabbix监控4.0的资源

    - 当触发器激活时,Zabbix可以发送邮件、短信或推送通知,确保问题及时解决。 - 用户可以自定义通知策略,根据时间、事件严重性等因素设置通知方式和频率。 10. **集成与API**: - Zabbix 4.0提供了RESTful API...

    go-task task计划任务

    Golang的`net/smtp`包提供了SMTP协议的实现,可以用来发送邮件。需要设置SMTP服务器地址、端口、用户名、密码等信息。 ### 5. 模板引擎 `tpl`目录可能包含了项目中的模板文件,用于生成邮件或者其他输出格式。...

    在Linux利用python3监控服务器的运行服务

    - 当发现服务异常或资源使用超过预设阈值时,可以发送邮件、短信或者通过API推送报警信息。可以使用`smtplib`库发送邮件,`requests`库调用HTTP API。 7. **数据可视化**: - 如果需要图形化展示监控数据,可以...

    毕设项目基于SpringBoot+Vue的轻量级定时任务管理系统源码+数据库+项目说明(含前端+后端).zip

    22. 邮件告警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件; 23. 运行报表:支持实时查看运行数据,以及调度报表,如调度日期分布图,任务组执行比例比例分布图等; 24. 事件触发:除了"Cron方式"和...

    最新版xxl-job任务调度文件

    8. **通知机制**:当任务执行成功或失败时,XXL-JOB可以发送通知,如邮件、短信等,确保开发团队及时了解任务状态。 9. **持久化存储**:任务调度和执行信息存储在数据库中,保证了数据的安全性和一致性。 10. **...

    Laravel开发-server-monitor-app

    可以集成邮件、短信、微信等通知渠道,利用Laravel的任务调度(Cron Jobs)定时检查服务器状态并发送警报。 9. **性能优化** 考虑到服务器监控可能涉及大量数据读写,对数据库进行适当的索引优化,使用缓存减少...

    python 交换机路由器 路由表监测

    7. **报警系统**:当发现异常时,Python可以发送邮件、短信或利用API调用第三方服务(如Slack、钉钉)进行报警,通知网络管理员。 8. **性能优化**:对于大规模网络环境,可能需要考虑并发处理多个设备,这里可以...

    chenggong.rar_linux温度采集

    9. **报警机制**:当温度超过预设阈值时,程序可能通过邮件、短信或消息队列(如RabbitMQ)发送报警通知。 10. **部署与配置**:程序可能包含部署脚本和配置文件,方便用户在不同环境下的快速安装和配置。 综上所...

    shell监控脚本实例—监控mysql主从复制

    对于正常运行的情况,脚本会先检查是否有之前的报警日志文件存在,如果存在则删除该日志文件并发送确认信息(通过短信或电子邮件)通知管理人员复制状态正常。如果没有报警文件,则认为之前没有问题发生,不进行操作...

Global site tag (gtag.js) - Google Analytics