需求

最近需要给自己的服务器添加监控器,目的是监控服务器的内存、CPU、磁盘占用率,资源占用率过高的话能给自己发个提醒,当前主流的平台一般会提供邮件、短息、甚至会提供微信提醒,不过这类提醒包含的噪音太多了(夹杂着各种无关的社交信息),我只是单纯的需要接收到服务器的预警。由于服务器环境并不复杂,所以不考虑主流的与监控平台(毕竟搭建起来还是挺复杂的)。

选择产品

有很多产品支持 incoming(就是通过调用应用提供的 API 把我们自定义的消息转发送该应用),我打算使用 JBox ,因为它提供了 Android、和 iOS 客户端支持而且是开源的所以后期有什么需求都可以自己加上去(还有一点最主要的是使用起来非常简单,API 文档只有一个接口,基本没有学习成本)。

着手操作

按照 JBox 教程 来,首先新建一个自定义集成,获得一个 Webhook url

http://jbox.jiguang.cn/v1/message/dxwYTMfrC8GRhU5/vwlrqCegmp  //注意:这里填写自己集成的 Webhook url,每个集成的 Webhook 都不一样。

首先编写我们的监控脚本,这里我写了两个脚本

#内存监控脚本  monitor_memory.sh
webhook="http://jbox.jiguang.cn:80/v1/message/dxwYTMfrC8GRhU5/vwlrqCegmp" #注意:这里填写自己集成的 Webhook url
#告警阈值30G,少于则告警,频率 30分钟 检查一次normal=30#取得总内存  #取得内存分页数  freemk=`vmstat 5 2 | tail -n 1 | awk '{print $5}'`;  #每一页是4K ,所以乘以4                              freemm=`expr $freemk \* 4`;    #转换为 G                                                          freemem=`echo $freemm/1024/1024|bc`;                                          echo `date +%Y%m%d%H%M`"  Memory:" "M" all $freemem"G" avail;if [ $freemem -lt $normal ]thenecho "当前内存"$freemem"G,少于"$normal"G"        #打印告警信息    这里可以插入短信库,发送至手机title="内存告警!!"message="当前内存"$freemem"G,少于"$normal"G"memoryAlertJson='{"title":"'${title}'"'',"message":"'${message}'"}'echo $memoryAlertJson# 这里发送预警,该条消息会转发到 JBOx appcurl -H "Content-Type: application/json" -X POST -d $memoryAlertJson $webhook
fi
# 磁盘监控脚本 monitor_disk.sh
webhook="http://jbox.jiguang.cn:80/v1/message/dxwYTMfrC8GRhU5/vwlrqCegmp"
normal=10 #当超过 10% 这个值时产生告警,这里因为测试 所以设得很低,这个可以根据自己的需求来增加DiskPercent=`df |grep -w / |awk '{print $5}'|awk -F '%' '{print $1}'`;
echo $DiskPercent;
if [ $normal -lt $DiskPercent ] thenecho "硬盘 使用率告警"title="硬盘 使用率告警!!"message="当前使用率"$DiskPercent"%,大于"$normal"%"DiskAlertJson='{"title":"'${title}'"'',"message":"'${message}'"}'echo $DiskAlertJson
# 这里发送预警,该条消息会转发到 JBOx appcurl -H "Content-Type: application/json" -X POST -d $DiskAlertJson $webhook
fi

我把这两个脚本加在 crontab 执行计划里面
$ crontab -e

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
# 一分钟执行一次脚本
* * * * * /bin/bash /home/ubuntu/monitor_memory.sh >>/home/ubuntu/moniter_memory.log
* * * * * /bin/bash /home/ubuntu/monitor_disk.sh >>/home/ubuntu/monitor_disk.log


作者:HuminiOS - 极光

原文:10 分钟实现一个自己的服务器监控器

知乎专栏:极光日报

10 分钟实现一个自己的服务器监控器相关推荐

  1. 监控自动上传自己的服务器,10 分钟实现一个自己的服务器监控器

    需求 最近需要给自己的服务器添加监控器,目的是监控服务器的内存.CPU.磁盘占用率,资源占用率过高的话能给自己发个提醒,当前主流的平台一般会提供邮件.短息.甚至会提供微信提醒,不过这类提醒包含的噪音太 ...

  2. pythonhelloworld项目,10分钟搭建一个小型网页(python django)(hello world!)

    10分钟搭建一个小型网页(python django)(hello world!) 1.安装django pip install django 安装成功后,在Scripts目录下存在django-ad ...

  3. 10分钟出一个块的BCH,可以作为日常支付?

    中本聪创建比特币的初衷是希望其成为全球支付的货币,作为继承中本聪衣钵的比特币现金更是在这方面不断的努力.比特币平均10分钟出一个块,交易确认的时间也是10分钟左右.10分钟的支付确认时间对于日常支付来 ...

  4. mysql connection闪退重连_玩家排位巅峰赛开局闪退,重连失败,10分钟后一个提示让他懵了...

    #游戏圈中的春节# 王者荣耀排位赛460是经常的事情,不过闪退还是比较少见的,玩家排位巅峰赛开局闪退,重新登录游戏之后,重连一直失败,10分钟后一个提示让他懵了. 460的情况大家都经历过,这是很多原 ...

  5. 直播视频讲解-【10分钟完成一个物联网应用】快上车

    直播视频讲解-[10分钟完成一个物联网应用] Java编程哦 Josh操作系统能做什么? 它降低了智能物联网应用开发的难度,给未来大量的创造性应用提供了广阔的平台. 它能让一个高中生甚至是初中生在十分 ...

  6. 10分钟开发一个游戏服务器

    前言   安利一个游戏服务器框架colyseus,使用起来十分简单,只需要一丢丢的代码就可以实现一个状态同步的服务器,10分钟主题,废话不多说,Let's Rock! 安装&项目设置 使用np ...

  7. 不需要程序员,产品经理也能10分钟打造一个深度学习模型

    想要给产品加上图像识别或声音识别的AI能力需要做哪些工作? 第一步:定义和明确需求,第二步:采集和标注大量的数据,第三步:写算法.调参数,第四步:校验模型效果并持续反复第二步和第三步,第五步:将模型做 ...

  8. python scrapy 入门,10分钟完成一个爬虫

    在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...

  9. 10分钟搭建一个免费个人博客网站

    一个程序员怎么能不拥有自己的博客,本文让10分钟快速搭建部署好自己的博客 准备工作 有Gitee账号 有安装git 会 markdown 编写文档 Node.js 版本 >= 8.6 博客采用V ...

最新文章

  1. Android Studio下的目录结构
  2. ISP PIPLINE (九_2) Denoise 之 time domain denoise
  3. 如何通过反射调用扩展方法?
  4. maven项目,提示One or more constraints have not been satisfied
  5. Linux怎么处理binray文件,Linux下如何反汇编arm raw binary文件
  6. 图解算法学习笔记(九):动态规划
  7. Java Generics示例教程 - 通用方法,类,接口
  8. C语言与汇编“硬在哪里”——什么是面向硬件?
  9. win11如何显示所有应用图标 Windows11显示所有应用图标的设置方法
  10. python eval函数_Python基础元素语法总结
  11. 关于树形插件展示中数据结构转换的算法
  12. oracle判断时间条件相等_判断条件的先后顺序,会引起索引失效么?
  13. CentOS配置Tomcat开机启动
  14. 【SQL基础】SQL增删改查基本语句
  15. 谷歌云盘文件快速下载方法
  16. 数值计算方法第一章—数值计算引论
  17. 澳大利亚网络空间安全体系建设论析
  18. vue去除input在360兼容模式下删除图标
  19. 百度wz竞价开户推广营销的四大好处
  20. HDU3665Seaside(最短路径)

热门文章

  1. 多系统共用一个瑞星杀毒软件(转)
  2. 牛客小白月赛3 C.博弈
  3. python爬虫案例教程~淘女郎、百度百科文本、规范化爬虫
  4. 初一计算机教学论文,初中信息技术论文范文
  5. 学seo要知道什么代码
  6. 英语口语智能测试软件,口语易英语口语智能评测训系统
  7. 【BUG】DLL load failed while importing pyopenpose: 找不到指定的模块
  8. mac 连接上l2tp但是无法访问百度
  9. android刷机恢复出厂设置吗,安卓手机恢复出厂设置和双清有什么区别?
  10. 请求因HTTP状态401失败:Unauthorized 的原因?