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

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 ]
 
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 分钟实现一个自己的服务器监控器

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


作者:HuminiOS – 极光

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

知乎专栏:极光日报

转载于:https://my.oschina.net/jpushtech/blog/868573

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108593.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 御用导航提示页面_终实现微信位置发送到汽车导航 越用越好用

    御用导航提示页面_终实现微信位置发送到汽车导航 越用越好用我们使用微信,其中一个非常好用的功能就是发送位置。在朋友聚会或者去朋友家做客时,只需朋友发送一个微信用微信位置,我们就非常清楚的得知目的地,直接把这个位置推送给手机里的导航软件,并发起导航。然而对于习惯使用中控屏导航的车友来说,这个过程脱节了。微信位置只能使用手机导航,不能直接推送到车载导航。手动输入,无疑更加烦躁,担心输错,还要确认好几次。在最新的高德地图车机版中,我们留意到更新中“手…

    2022年5月30日
  • 图标不对齐_font manager

    图标不对齐_font manager采用如下方式可解决首先是外层:text-align:center;display:table;之后里面的i元素:vertical-align:middle;display:table-cell;

    2022年11月1日
  • java按位取反运算符_java源码补码

    java按位取反运算符_java源码补码一直纠结于位运算中的按位取反以及原码、反码、补码之间的各种关系,反正各种混淆各种懵逼。经过一小段时间才弄明白这个别人觉得很容易的问题。可能还是我基础不太好。位运算是对操作数以二进制为单位的进行的运算,位运算符则用于位运算。位运算符包括&(按位与)、|(按位或)、^(按位异或)、~(按位取反)等等…位运算符操作数可以是整型或字符型,结果为整型。按位取反是对补码进行运算,当运算完后,再将补…

    2022年8月14日
  • C#代码集

    C#代码集C#入门代码示例记录一、示例静态计算工具类1publicstaticclassCalculator2{3publicstaticdoubleAdd(doublea,doub

    2022年7月1日
  • fp5138升压电路图_大电流升压芯片

    fp5138升压电路图_大电流升压芯片外置MOS大功率升压IC

    2022年10月6日
  • 异步传输模式atm实际上是两种交换技术的结合_异步转移模式ATM

    异步传输模式atm实际上是两种交换技术的结合_异步转移模式ATMAsynchronousTransferMode(ATM)异步传输模式(ATM)ATM是一项数据传输技术。它适用于局域网和广域网,它具有高速数据传输率和支持许多种类型如声音、数据、传真、实时视频、CD质量音频和图象的通信。ATM是在LAN或WAN上传送声音、视频图象和数据的宽带技术。它是一项信元中继技术,数据分组大小固定。你可将信元想像成一种运输设备,能够把数据块从一个设备经过ATM交

    2022年9月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号