当前位置:  技术问答>linux和unix

Linux下如何监控cpu,io和内存,并且达到一定阀值做一些操作啊

    来源: 互联网  发布时间:2016-12-21

    本文导语:  案例:监控指标1、CPU空闲,不低于30%;2、IO await不能大于50(具体时间单位不知道,不过使用vmstat里面有一个wa的值表示IO await);3、内存占用率不能大于6G(一共8G的内存)。       触发动作:每5分钟执行一次...

案例:监控指标1、CPU空闲,不低于30%;2、IO await不能大于50(具体时间单位不知道,不过使用vmstat里面有一个wa的值表示IO await);3、内存占用率不能大于6G(一共8G的内存)。
      触发动作:每5分钟执行一次监控周期,如果连续三个周期都有其中的一个指标触发阀值,则执行hagrp -swith命令切换主备。使用hastatus -sum命令查询切换是否成功。成功之后过5分钟,重启主机。


ps:使用vmstat命令可以查询主机状态,其中id指空闲cpu占有率,wa指IO等待时间,free指空闲内存大小。
ps:使用hastatus -sum可以查询切换是否成功如果State下的状态为online则表示切换成功。


那位大神能够帮忙设计下啊,在Linux下面的用c和c++都可以。

|


#include 
#include 
#include    //头文件
struct occupy        //声明一个occupy的结构体
{
        char name[20];      //定义一个char类型的数组名name有20个元素
        unsigned int user;  //定义一个无符号的int类型的user
        unsigned int nice;  //定义一个无符号的int类型的nice
        unsigned int system;//定义一个无符号的int类型的system
        unsigned int idle;  //定义一个无符号的int类型的idle
};
float g_cpu_used;           //定义一个全局的float类型g_cpu_used
int cpu_num;                //定义一个全局的int类型cup_num
void cal_occupy(struct occupy *, struct occupy *);  //声明无类型的函数cal_occupy包含两个结构体参数
void get_occupy(struct occupy *);                   //声明无类型的函数get_occupy包含一个结构体参数
int main()                  //主函数开始 
{
  struct occupy ocpu[10];   //定义occupy结构体变量名是ocpu含10个元素
  struct occupy ncpu[10];   //定义occupy结构体变量名是ncpu含10个元素
  int i;                    //定义一个局部int变量i
  
  cpu_num = sysconf(_SC_NPROCESSORS_ONLN);   //系统调用返回cpu的个数赋给cpu_num
  for(;;)                                    //死循环
  {  
      sleep(1);                               //等待1秒
      get_occupy(ocpu);                       //调用get函数带回结构体数组第一次
      sleep(1);                               //等待1秒 
      get_occupy(ncpu);                       //调用get函数带回结构体数组第二次
      for (i=0; iuser + o->nice + o->system +o->idle);//第一次(用户+优先级+系统+空闲)的时间再赋给od
    nd = (double) (n->user + n->nice + n->system +n->idle);//第二次(用户+优先级+系统+空闲)的时间再赋给od
    scale = 100.0 / (float)(nd-od);       //100除强制转换(nd-od)之差为float类型再赋给scale这个变量
    id = (double) (n->user - o->user);    //用户第一次和第二次的时间之差再赋给id
    sd = (double) (n->system - o->system);//系统第一次和第二次的时间之差再赋给sd
    g_cpu_used = ((sd+id)*100.0)/(nd-od); //((用户+系统)乖100)除(第一次和第二次的时间差)再赋给g_cpu_used
}
void
get_occupy (struct occupy *o) //对无类型get函数含有一个形参结构体类弄的指针O
{
    FILE *fd;         //定义文件指针fd
    int n;            //定义局部变量n为int类型
    char buff[1024];  //定义局部变量buff数组为char类型大小为1024
                                                                                                              
    fd = fopen ("/proc/stat", "r"); //以R读的方式打开stat文件再赋给指针fd
    fgets (buff, sizeof(buff), fd); //从fd文件中读取长度为buff的字符串再存到起始地址为buff这个空间里
    for(n=0;n

    
 
 

您可能感兴趣的文章:

  • linux系统下如何监控和获取用户行为(高分悬赏)
  • 求助:用windows监控linux系统资源
  • 基于Linux的云监控
  • Linux服务器监控 XMonitor-Client
  • Linux下出色的性能监控软件有哪些?
  • linux下的监控软件。
  • Linux文件系统安全监控 inotify-sync
  • Linux 文件监控工具 FileMonitor
  • Linux硬件监控 lm-sensors
  • linux性能监控
  • linux 下监控用户或者进程的流量
  • Web服务器/前端 iis7站长之家
  • 如何linux下监控进程及其子进程占用资源?
  • linux下怎么监控串口?
  • Linux下如何编程实现监控鼠标和键盘的动作
  • Linux网络监控工具 ntop
  • 关于Linux下的网络监控软件的问题
  • 大虾请问:在windows平台下监控linux桌面的软件
  • linux进程监控问题
  • 求一个linux监控进程的shell程序
  • 请问:构建嵌入式linux环境时,“Linux内核的移植”是达到什么目的啊?
  • LINUX下C++编程如何控制光标的位置,以达到在指定位置输出字符
  • linux下程序启动后cpu占用率达到101%--102%
  • Linux的时钟精度达到多高?
  • LINUX下访问oracle时sleeping的线程过多,达到300多个,造成系统拥堵!
  • 如何达到我这种linux下的系统调用效果
  • 我这里有一个LINUX的Windows下的虚拟机,达到5G,我怎么让大家来用?
  • 在上Linux进行C/C++编程时, 怎样才能达到二个独立的程序工作?
  • 请教如何将多台linux的时间,以一台时间为标准达到同步,请高手指教
  • 请教linux高手 能不能在centos的系统平均负载 达到一个定值的时候自动运行某个命令
  • linux9下显示器刷新率只能达到75,大家的刷新率能到多少?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下free命令显示的内存使用情况分析
  • 哪位前辈给解释下linux下虚拟内存和物理内存的关系!
  • Linux内存文件系统(ramdisk)的三种实现方式
  • linux下内存泄露检测工具 mtrace 如果记录.so文件中的内存信息
  • linux内存文件系统ramfs实现原理
  • 有人熟悉DMA吗?我要实现内存中的内存的“搬动”。(LINUX)
  • linux下进程占用内存空间详解
  • 如何让linux没有到达内存瓶颈时回收内存页并占用最少资源
  • Linux 共享内存介绍及实现代码
  • 请教关于linux内存管理问题,如何给定义的变量指定固定内存段
  • Linux/Centos/Ubuntu清除系统缓存释放内存命令介绍
  • 在Linux上用C语言编写的函数里面申请了一块内存,并且返回这块内存,最终它需要释放吗?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 在SUSE linux下jar文档的运行,提示内存泄露,指定最大最小内存后只能在十几分钟才能打开,求各位大虾指点!
  • 我的redhat linux7.3因为内存有些少,所以我想随时查看内存的使用情况该如何去做,还有我想关掉(而不是切换)图形界面应该用什么命令
  • 请教!Linux系统C开发的程序,为什么我的程序运行时内存持续增长,程序退出后内存也没有降低?
  • 虚拟机上的Linux怎么修改Linux内存
  • 问个LINUX内存分配的问题。
  • linux9.0下内存占用一直是95%以上怎么解决
  • linux下查看java项目虚拟内存很大,请高手指点下
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3