需求

最近需要给自己的服务器添加监控器,目的是监控服务器的内存、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 ]

then

echo "当前内存"$freemem"G,少于"$normal"G" #打印告警信息 这里可以插入短信库,发送至手机

title="内存告警!!"

message="当前内存"$freemem"G,少于"$normal"G"

memoryAlertJson='{"title":"'${title}'"'',"message":"'${message}'"}'

echo $memoryAlertJson

# 这里发送预警,该条消息会转发到 JBOx app

curl -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 ]

then

echo "硬盘 使用率告警"

title="硬盘 使用率告警!!"

message="当前使用率"$DiskPercent"%,大于"$normal"%"

DiskAlertJson='{"title":"'${title}'"'',"message":"'${message}'"}'

echo $DiskAlertJson

# 这里发送预警,该条消息会转发到 JBOx app

curl -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

监控自动上传自己的服务器,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. oracle给换服务器,Oracle数据库更换服务器10分钟切换方案

    1. 迁移环境: 源: IP地址 Oracle版本 数据库SID 操作系统版本 10.1.124.50 10.2.0.5 hsdb Redhat 6.6 目标: IP地址 Oracle版本 数据库SI ...

  8. oracle更换年,Oracle数据库更换服务器10分钟切换方案

    1. 迁移环境: 源: IP地址 Oracle版本 数据库SID 操作系统版本 10.1.124.50 10.2.0.5 hsdb Redhat 6.6 目标: IP地址 Oracle版本 数据库SI ...

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

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

最新文章

  1. Java项目:医院住院管理系统(java+SSM+jsp+mysql+maven)
  2. IDEA一定要懂的32条快捷键
  3. farbox editor是个好东西
  4. Linux内存申请机制
  5. TensorFlow学习笔记之五(卷积神经网络)
  6. linux操作系统之终端
  7. PWA(Progressive Web App)入门系列:Cache Storage Cache
  8. 【留言板 Message Board】
  9. element 修改表单值后表单验证无效_element 表单自定义校验规则
  10. 机器学习九大挑战(转载)
  11. formData:解决formData使用append追加后console仍为空
  12. 老男孩Linux架构师实战课程14期教程
  13. 查询GPU时无进程运行,但是显存却被占用了
  14. Mac下好用的软件推荐系统设置
  15. 【目标定位】基于matlab粒子滤波的定位算法【含Matlab源码 2161期】
  16. 国产Linux系统UOS安装
  17. 超简单,用Python Pyecharts制作可视化大屏
  18. TP6集成JWT的步骤。
  19. PDF编辑管理工具Cisdem PDFMaster Mac
  20. 网络广播直播通告:Microsoft Project 2010项目管理概览

热门文章

  1. 魅族手机一键修改屏幕参数
  2. 【shell】dirname $0和readlink用法
  3. 深入理解容器技术——聊聊服务容器化三大助力
  4. 代码review_学习笔记_1
  5. java-php-python-自考学位系统计算机毕业设计
  6. 日本重启商业捕鲸,技术想拯救它们
  7. 2022杭电多校第二场
  8. 密室逃脱游戏解决方案-森林迷宫-炸弹人等
  9. Hibernate 介绍与入门
  10. Stream流—常用简单方法