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