nagios插件之hpux系统内存检查

本文介绍了一种通过运行特定命令来实时监控系统内存使用情况的方法,并提供了详细的解析过程及输出格式说明,帮助用户理解系统资源状态。

vi check_hp_mem.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define OK       0
#define WARNING  1
#define CRITICAL 2
#define UNKNOWN  3

#define LEN 1023
#define LEN_SHORT 24

int main() {
        int ret;
        FILE *fp;

        int line=0;
        char readbuf[256];

        char available_swap[LEN_SHORT];
        char used_swap[LEN_SHORT];
        char free_swap[LEN_SHORT];
        char use_percent_swap[LEN_SHORT];

        char available_mem[LEN_SHORT];
        char used_mem[LEN_SHORT];
        char free_mem[LEN_SHORT];
        char use_percent_mem[LEN_SHORT];

        int i=0,j=0;
        char *str,*str_swap,*str_mem;


        int exitstatus=OK;

        char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"};

        char status_information[LEN];
        char performance_data[LEN];


/*
        fp=fopen("1.txt","r");
        if(fp==NULL) {
                fprintf(stderr,"fopen() error.\n");
                return -1;
        }
*/

	fp=popen("/usr/sbin/swapinfo -atm","r");
        if(fp==NULL) {
                fprintf(stderr,"fopen() error.\n");
                return -1;
        }

        while(fgets(readbuf,256,fp)!=NULL) {
                line++;
        //	printf("line=%d\n",line);

                if(line==3) {
                        for(str=strtok(readbuf," %");str;str=strtok(NULL," %")) {
                                i++;

                                if(i==2) {
                                        sprintf(available_swap,"%s",str);
                                //	printf("available_swap=%s\n",available_swap);
                                }
                                else if(i==3) {
                                        sprintf(used_swap,"%s",str);
                                //	printf("used_swap=%s\n",used_swap);
                                }
                                else if(i==4) {
                                        sprintf(free_swap,"%s",str);
                                //	printf("free_swap=%s\n",free_swap);
                                }
                                else if(i==5) {
                                        sprintf(use_percent_swap,"%s",str);
                                //	printf("use_percent_swap=%s\n",use_percent_swap);
                                        break;
                                }
                        }
                }

                if(line==5) {
                        for(str=strtok(readbuf," %");str;str=strtok(NULL," %")) {
                                j++;

                                if(j==2) {
                                        sprintf(available_mem,"%s",str);
                                //	printf("available_mem=%s\n",available_mem);
                                }
                                else if(j==3) {
                                        sprintf(used_mem,"%s",str);
                                //	printf("used_mem=%s\n",used_mem);
                                }
                                else if(j==4) {
                                        sprintf(free_mem,"%s",str);
                                //	printf("free_mem=%s\n",free_mem);
                                }
                                else if(j==5) {
                                        sprintf(use_percent_mem,"%s",str);
                                //	printf("use_percent_mem=%s\n",use_percent_mem);

                                        break;
                                }
                        }
                }

        }

//      sprintf(use_percent_sawap,"%.2d",atoi(used_swap)/atoi(available_swap));
//      sprintf(use_percent_mem,"%.2d",atoi(used_mem)/atoi(available_mem));

//      printf("line=%d\n",line);

	ret=pclose(fp);
	if(ret!=NULL) {
		perror("pclose");
	}

//	printf("-------------use_percent_mem=%d\n",atoi(use_percent_mem));

	if(atoi(use_percent_mem)<=80) {
		exitstatus=OK;
	}
	else if(atoi(use_percent_mem)>80 && atoi(use_percent_mem)<90) {
		exitstatus=WARNING;
	}
	else if(atoi(use_percent_mem)>90) {
		exitstatus=CRITICAL;
	}
	else {
		exitstatus=UNKNOWN;
	}
		

        sprintf(status_information,"Memory Usage - %s%s RAM, %s%s Swap",use_percent_mem,"%",use_percent_swap,"%");
//	printf("status_information=%s\n",status_information);

        sprintf(performance_data,"phyUsed=%s%s;;;0;100 swpUsed=%s%s;;;0;100",use_percent_mem,"%",use_percent_swap,"%");
//	printf("performance_data=%s\n",performance_data);

        printf("%s: %s | %s\n",exit_status[exitstatus],status_information,performance_data);

        return exitstatus;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值