mysubmail 短信报警
https://www.mysubmail.com/chs/documents/developer/YPWD84 文本文档
官网:
www.mysubmail.com
操作流程:
快速接入短信 API接口并测试发送操作指引
仅需6步 即可完成 API短信发送
1. SDK开发包下载链接与代码示例
https://www.mysubmail.com/chs/documents/developer/index
2. 短信验证码 API介绍文档
https://www.mysubmail.com/chs/documents/developer/t2f1J2
3. 一分钟实名认证
https://www.mysubmail.com/chs/account/settings#/agreement
4. 创建短信项目模板
https://www.mysubmail.com/chs/sms/templates
5. 创建短信项目发送 AppID
https://www.mysubmail.com/chs/sms/apps
6. 提交并发送API测试短信
操作流程:
快速接入短信 API接口并测试发送操作指引
仅需6步 即可完成 API短信发送
1. SDK开发包下载链接与代码示例
2. 短信验证码 API介绍文档
3. 一分钟实名认证
4. 创建短信项目模板
5. 创建短信项目发送 AppID
6. 提交并发送API测试短信
脚本如下:
#!/bin/bash
Mail_User="yinhuanyi_cn@163.com"
Tel_User="18670236750"
User=root
Password=123456
Host=localhost
MySQL_Login="mysql -u$User -h$Host -p$Password"
# 检查数据库的复制情况
Check_Repl(){
# 将 yes yes 0 赋值 给一个arguments数组
arguments=(`$MySQL_Login -e "show slave status\G" | awk -F: '/_Running|_Behind_/{print $NF}'`)
# 判断下argument数组中的最后一个元素是否是null,如果是Null这么给其赋值一个延时值
expr ${arguments[2]} + 1 &> /dev/null
retval=$?
if [ $retval -ne 0 ];then
arguments[2]=500
fi
if [ "${arguments[0]}" == "Yes" -a "${arguments[1]}" == "Yes" -a "${arguments[2]}" -lt 100 ];then
# 数据库复制正常
echo " MySQL repl is healthy "
return 0
else
# 如果复制有错误,延时超过阈值,
echo "MySQL repl is wrong"
echo "Trying to repair it"
# set global sql_slave_skip_counter=1 是跳过一个event事物
# 这种解决方式应用于:当允许主从数据可以微小不一致的情况下
# 如果必须主从数据库一致,那么应该使用备份还原的方式,将数据恢复再同步(切记)
$MySQL_Login -e "stop slave; set global sql_slave_skip_counter=1; start slave;" && echo "slave restart ok" || echo "slave restart failed"
fi
return 1
}
# 发送邮件报警
Send_Mail(){
# 设置主题
Subject="mysql repl is wrong"
# 发送邮件
echo "$1 MySQL repl is wrong, Deal with it as quickly as possible " | mail -s "$Subject" "$Mail_User"
}
# 发送短信报警(这里试用submail给大家演示发送短信报警, 微信报警自行搞定)
Send_DX(){
# 拿到报警时间
TIME=$1
# 这是appid
APPID=17468
# 这是指纹识别码
SIGNATURE=a930ebc11c16ca1ee99b24548cda1273
# 发送短信网关
HTTP=
https://api.mysubmail.com/message/send.json
# 发送短信
# curl -d "appid=17468&to=18670236750&content=【MySQL】MySQL主从复制出现问题,请立即处理&signature=a930ebc11c16ca1ee99b24548cda1273"
https://api.mysubmail.com/message/send.json
}
# 发送消息
Send_Message(){
# 拿到当前系统时间
Time=`date "+%F %T"`
# 发送短信
Send_DX $Time
# 发送邮件
Send_Mail $Time
}
# 主函数入口
Main(){
while true; do
# 先检查数据库复制是否有问题
Check_Repl
retval=$?
if [ $retval -eq 0 ];then
echo "MySQL repl is healthy"
else
# 如果有问题发送
Send_Message
fi
# 让监控脚本30秒执行一次
sleep 30
done
}
# 所有的任务从这里开始执行
Main
Mail_User="yinhuanyi_cn@163.com"
Tel_User="18670236750"
User=root
Password=123456
Host=localhost
MySQL_Login="mysql -u$User -h$Host -p$Password"
# 检查数据库的复制情况
Check_Repl(){
# 将 yes yes 0 赋值 给一个arguments数组
arguments=(`$MySQL_Login -e "show slave status\G" | awk -F: '/_Running|_Behind_/{print $NF}'`)
# 判断下argument数组中的最后一个元素是否是null,如果是Null这么给其赋值一个延时值
expr ${arguments[2]} + 1 &> /dev/null
retval=$?
if [ $retval -ne 0 ];then
arguments[2]=500
fi
if [ "${arguments[0]}" == "Yes" -a "${arguments[1]}" == "Yes" -a "${arguments[2]}" -lt 100 ];then
# 数据库复制正常
echo " MySQL repl is healthy "
return 0
else
# 如果复制有错误,延时超过阈值,
echo "MySQL repl is wrong"
echo "Trying to repair it"
# set global sql_slave_skip_counter=1 是跳过一个event事物
# 这种解决方式应用于:当允许主从数据可以微小不一致的情况下
# 如果必须主从数据库一致,那么应该使用备份还原的方式,将数据恢复再同步(切记)
$MySQL_Login -e "stop slave; set global sql_slave_skip_counter=1; start slave;" && echo "slave restart ok" || echo "slave restart failed"
fi
return 1
}
# 发送邮件报警
Send_Mail(){
# 设置主题
Subject="mysql repl is wrong"
# 发送邮件
echo "$1 MySQL repl is wrong, Deal with it as quickly as possible " | mail -s "$Subject" "$Mail_User"
}
# 发送短信报警(这里试用submail给大家演示发送短信报警, 微信报警自行搞定)
Send_DX(){
# 拿到报警时间
TIME=$1
# 这是appid
APPID=17468
# 这是指纹识别码
SIGNATURE=a930ebc11c16ca1ee99b24548cda1273
# 发送短信网关
HTTP=
# 发送短信
# curl -d "appid=17468&to=18670236750&content=【MySQL】MySQL主从复制出现问题,请立即处理&signature=a930ebc11c16ca1ee99b24548cda1273"
}
# 发送消息
Send_Message(){
# 拿到当前系统时间
Time=`date "+%F %T"`
# 发送短信
Send_DX $Time
# 发送邮件
Send_Mail $Time
}
# 主函数入口
Main(){
while true; do
# 先检查数据库复制是否有问题
Check_Repl
retval=$?
if [ $retval -eq 0 ];then
echo "MySQL repl is healthy"
else
# 如果有问题发送
Send_Message
fi
# 让监控脚本30秒执行一次
sleep 30
done
}
# 所有的任务从这里开始执行
Main
在linux中操作
curl -d 'appid=17490&to=18720170604&content=【abc】abc&signature=4d8efbb6b2343a69b7820621d11ded8b'