10 分钟实现一个自己的服务器监控器
需求
最近需要给自己的服务器添加监控器,目的是监控服务器的内存、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 分钟实现一个自己的服务器监控器相关推荐
- 监控自动上传自己的服务器,10 分钟实现一个自己的服务器监控器
需求 最近需要给自己的服务器添加监控器,目的是监控服务器的内存.CPU.磁盘占用率,资源占用率过高的话能给自己发个提醒,当前主流的平台一般会提供邮件.短息.甚至会提供微信提醒,不过这类提醒包含的噪音太 ...
- pythonhelloworld项目,10分钟搭建一个小型网页(python django)(hello world!)
10分钟搭建一个小型网页(python django)(hello world!) 1.安装django pip install django 安装成功后,在Scripts目录下存在django-ad ...
- 10分钟出一个块的BCH,可以作为日常支付?
中本聪创建比特币的初衷是希望其成为全球支付的货币,作为继承中本聪衣钵的比特币现金更是在这方面不断的努力.比特币平均10分钟出一个块,交易确认的时间也是10分钟左右.10分钟的支付确认时间对于日常支付来 ...
- mysql connection闪退重连_玩家排位巅峰赛开局闪退,重连失败,10分钟后一个提示让他懵了...
#游戏圈中的春节# 王者荣耀排位赛460是经常的事情,不过闪退还是比较少见的,玩家排位巅峰赛开局闪退,重新登录游戏之后,重连一直失败,10分钟后一个提示让他懵了. 460的情况大家都经历过,这是很多原 ...
- 直播视频讲解-【10分钟完成一个物联网应用】快上车
直播视频讲解-[10分钟完成一个物联网应用] Java编程哦 Josh操作系统能做什么? 它降低了智能物联网应用开发的难度,给未来大量的创造性应用提供了广阔的平台. 它能让一个高中生甚至是初中生在十分 ...
- 10分钟开发一个游戏服务器
前言 安利一个游戏服务器框架colyseus,使用起来十分简单,只需要一丢丢的代码就可以实现一个状态同步的服务器,10分钟主题,废话不多说,Let's Rock! 安装&项目设置 使用np ...
- 不需要程序员,产品经理也能10分钟打造一个深度学习模型
想要给产品加上图像识别或声音识别的AI能力需要做哪些工作? 第一步:定义和明确需求,第二步:采集和标注大量的数据,第三步:写算法.调参数,第四步:校验模型效果并持续反复第二步和第三步,第五步:将模型做 ...
- python scrapy 入门,10分钟完成一个爬虫
在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...
- 10分钟搭建一个免费个人博客网站
一个程序员怎么能不拥有自己的博客,本文让10分钟快速搭建部署好自己的博客 准备工作 有Gitee账号 有安装git 会 markdown 编写文档 Node.js 版本 >= 8.6 博客采用V ...
最新文章
- Android Studio下的目录结构
- ISP PIPLINE (九_2) Denoise 之 time domain denoise
- 如何通过反射调用扩展方法?
- maven项目,提示One or more constraints have not been satisfied
- Linux怎么处理binray文件,Linux下如何反汇编arm raw binary文件
- 图解算法学习笔记(九):动态规划
- Java Generics示例教程 - 通用方法,类,接口
- C语言与汇编“硬在哪里”——什么是面向硬件?
- win11如何显示所有应用图标 Windows11显示所有应用图标的设置方法
- python eval函数_Python基础元素语法总结
- 关于树形插件展示中数据结构转换的算法
- oracle判断时间条件相等_判断条件的先后顺序,会引起索引失效么?
- CentOS配置Tomcat开机启动
- 【SQL基础】SQL增删改查基本语句
- 谷歌云盘文件快速下载方法
- 数值计算方法第一章—数值计算引论
- 澳大利亚网络空间安全体系建设论析
- vue去除input在360兼容模式下删除图标
- 百度wz竞价开户推广营销的四大好处
- HDU3665Seaside(最短路径)