前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简易实现Redis监控自动短信告警

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

作者头像
星哥玩云
发布2022-07-01 16:40:35
6380
发布2022-07-01 16:40:35
举报
文章被收录于专栏:开源部署开源部署

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

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

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

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

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

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

  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 redis-server | 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=$(redis-cli -p $redisport config get maxmemory | awk 'NR==2 {print $1}')
  18. used_memory=$(redis-cli -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 '/redis-server/{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=$(redis-cli -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运算

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档