阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简易实现Redis监控自动短信告警

124次阅读
没有评论

共计 2652 个字符,预计需要花费 7 分钟才能阅读完成。

如果没有企业短信网关,Redis 如何实现监控的自动短信告警呢?

1. 开通 QQ 邮箱, 并且绑定手机号。

设置之后,一旦 QQ 邮箱接收到新邮件,就会自动发送短信提醒。

http://jingyan.baidu.com/article/90808022a318b2fd91c80f9a.html

2. 制作一个 Java 程序, 可以接收请求, 并将请求内容作为邮件发送到 QQ 邮箱。

3. 在 Redis 服务器上进行脚本监控。如果监控超过阈值, 则请求 JAVA 程序代发邮件。

Ubuntu 14.04 下 Redis 安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm

Redis 集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10 下安装 Redis(图文详解)+ Jedis 连接 Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis 系列 - 安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3 安装 Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis 配置文件 redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

  1. #! /bin/bash
  2. logfile=/home/redis/redisdata/redis_monitor.log
  3. serverip=127.0.0.1
  4. redisport=6379
  5. slave_target=1
  6. mem_target=0.5
  7. cpu_target=0.5
  8. alert_url=http://IP:port/servlet?to=dba&title=RedisError($serverip)&content=
  9. error_msg=
  10. echo $(date) >> $logfile
  11. pid=$(ps ef | grep redisserver | grep v grep | awk {print $2})
  12. if [ “$pid” = ] ; then
  13. echo “[ERROR]Redis is shutdown” >>$logfile
  14. error_msg=$error_msg“+Redis_is_shutdown”
  15. else
  16. echo “[INFO]pid:$pid” >>$logfile
  17. maxmemory=$(rediscli p $redisport config get maxmemory | awk NR==2 {print $1})
  18. used_memory=$(rediscli p $redisport info memory | grep used_memory: | awk F : {print $2} | sed s/\r//g)
  19. mem_ratio=$(awk BEGIN {printf(“%.2f”,$used_memory/$maxmemory)})
  20. if [ $(echo “scale=2;$mem_ratio>$mem_target” | bc) eq 1 ] ; then
  21. echo “[ERROR]used_memory:$used_memory” >>$logfile
  22. echo “[ERROR]mem_used_ratio:$mem_ratio” >> $logfile
  23. error_msg=$error_msg“+mem_target#$mem_target”
  24. error_msg=$error_msg“+used_memory#$used_memory”
  25. error_msg=$error_msg“+mem_used_ratio#$mem_ratio”
  26. else
  27. echo “[INFO]used_memory:$used_memory” >>$logfile
  28. echo “[INFO]mem_used_ratio:$mem_ratio” >> $logfile
  29. fi
  30. cpu_ratio=$(top b p $pid n 1 | grep $pid | awk /redisserver/{print $9} | sed s/\r//g)
  31. if [ $(echo “scale=2;($cpu_ratio/100)>$cpu_target” |bc) eq 1 ] ; then
  32. echo “[ERROR]cpu_ratio:$cpu_ratio” >> $logfile
  33. error_msg=$error_msg“+cpu_target#$(echo “$cpu_target*100” | bc)”
  34. error_msg=$error_msg“+cpu_ratio#$cpu_ratio”
  35. else
  36. echo “[INFO]cpu_ratio:$cpu_ratio” >> $logfile
  37. fi
  38. slave_count=$(rediscli p $redisport info replication | awk F : /connected_slaves:/{print $2} | sed s/\r//g)
  39. if [ $slave_count ne $slave_target ] ; then
  40. echo “[ERROR]slave:$slave_count” >> $logfile
  41. error_msg=$error_msg“+slave_target#$slave_target”
  42. error_msg=$error_msg“+slave#$slave_count”
  43. else
  44. echo “[INFO]slave:$slave_count” >> $logfile
  45. fi
  46. fi
  47. if [ “$error_msg” != ] ; then
  48. curl $alert_url$error_msg
  49. fi

Shell 脚本确实写着费劲

它还居然没有浮点运算

有两个方式可以实现浮点运算。

1.$(awk ‘BEGIN {printf(“%.2f”,’$used_memory’/’$maxmemory’)}’)

2.$(echo “scale=2;$mem_ratio>$mem_target” | bc)

另外需要注意的是,top 命令的结果默认是乱码, 不能使用 awk 运算

简易实现 Redis 监控自动短信告警

使用 top -b 参数就可以解决这个问题了

简易实现 Redis 监控自动短信告警

将这个脚本添加到 crontab 以一个间隔运行。

这样就实现了简易的 Redis 监控自动短信告警功能。

Redis 的详细介绍 :请点这里
Redis 的下载地址 :请点这里

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2652字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中