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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 小米的创新发展模式_小米生态链模式简介

    小米的创新发展模式_小米生态链模式简介自从雷军召开小米手机发布会后,小米手机是否能做成,销量多少就成为业界一大话题。小米手机的关键词一度成为百度十大热门关键词。这一现象在产品界恐怕仅有苹果的iPhone才有此殊荣。 但业界绝大部分人士不看好,特别是手机界专业人士。最近小米手机又传出零配件供应问题,专业人士更是质疑声一片。做软件的到底不会做硬件,互联网销售在手机领域不行的论断不绝于耳。而形成反差的是,在市场上小米手机的预订却是火热异

  • 利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM

    利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM

  • HTTP和HTTPS的区别

     CA认证电子商务认证授权机构(CA,CertificateAuthority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任HeartbleedHeartbleed漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进行…

  • python 面试题集锦(附答案)

    python 面试题集锦(附答案)

    2021年11月10日
  • mybatiscodehelperpro 激活码(注册激活)

    (mybatiscodehelperpro 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • 带通滤波器电路图设计(转)

    带通滤波器电路图设计(转)转自:http://www.elecfans.com/dianlutu/187/20180224638878_a.html带通滤波器电路图设计(一)传统的带通滤波器设计方法中涉及了很多复杂的理论分析和计算。针对上述缺点,介绍一种使用EDA软件进行带通滤波器的设计方案,详细阐述了使用FilterPro软件进行有源带通滤波器电路的设计步骤,然后给出了在Proteus中对所设计的滤波器进行仿真分析和测试的方法。测试结果表明,使用该方法设计的带通滤波器具有性能稳定。设计难度小等优点,也为滤波器的设计提供了一个

发表回复

您的电子邮箱地址不会被公开。

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