nagios插件之监控tomcat线程数

jopen 9年前

    #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 CMD "ps -efL | grep tomcat  | wc -l"                int exitstatus=OK;        char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"};                char status_information[LEN];        char performance_data[LEN];                int parse_cmd() {                int ret;                FILE *fp;                char readbuf[1024];                        int i;                char *p,*str;                        fp=popen(CMD,"r");                if(fp==NULL) {                        fprintf(stderr,"popen() error.\n");                        return -1;                }                       // while(fgets(readbuf,1024,fp)!=NULL) {                /*                       for(p=strtok(readbuf," ");p;p=strtok(NULL," ")) {                       //      str=p;                                      sprintf(status_information,"active call=%s",p);                                      sprintf(performance_data,"call=%s;;;;",p);                                      break;                       }                              break;               */                    //  readbuf[strlen(readbuf)-1]=0;                ret=fscanf(fp,"%s",readbuf);                if(ret!=1) {                    fprintf(stderr,"fscanf() error.\n");                }                        if(atoi(readbuf)<300) {                    exitstatus=OK;                  }                else if(atoi(readbuf)>=300 && atoi(readbuf)<=400) {                    exitstatus=WARNING;                 }                else if(atoi(readbuf)>=400) {                    exitstatus=CRITICAL;                }                                sprintf(status_information,"tomcat_threads=%s",readbuf);                                sprintf(performance_data,"tomcat_threads=%s;;;;",readbuf);               // }                        ret=pclose(fp);                if(fp==NULL) {                        fprintf(stderr,"pclose() error.\n");                        return -1;                }        }                int main() {                int ret;                    ret=parse_cmd();            if(ret!=0) {                fprintf(stderr,"parse_cmd() error.\n");                       // exitstatus=CRITICAL;                       // printf("%s: - %s | %s\n",exit_status[exitstatus],status_information,performance_data);                exit(-1);            }                        printf("%s: %s | %s\n",exit_status[exitstatus],status_information,performance_data);                        return exitstatus;        }  

来自:http://blog.csdn.net/ccjsj1/article/details/42653235