- 论坛徽章:
- 17
|
本帖最后由 ccjsj1 于 2015-06-12 10:25 编辑
以前写的检查hpux内存插件,调用swapinfo命令,取结果后按nagios格式输出,请参考:- #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=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;
- }
复制代码 |
|