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 1000 #define MIN_LEN 100 #define CMD1 "ps -efL | grep apache-tomcat-cuservice |grep -v grep | wc -l" #define CMD2 "ps -efL | grep apache-tomcat-finance |grep -v grep | wc -l" #define CMD3 "ps -efL | grep apache-tomcat-interface |grep -v grep | wc -l" #define CMD4 "ps -efL | grep apache-tomcat-payment |grep -v grep | wc -l" #define CMD5 "ps -efL | grep apache-tomcat-7.0.41 |grep -v grep | wc -l" int i=0; int exitstatus=OK; char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"}; char cuservice_count[MIN_LEN]={0}; char finance_count[MIN_LEN]={0}; char interface_count[MIN_LEN]={0}; char payment_count[MIN_LEN]={0}; char tomcat7041_count[MIN_LEN]={0}; char status_information[LEN]={0}; char performance_data[LEN]={0}; char *cmd_array[]={"ps -efL | grep apache-tomcat-cuservice |grep -v grep | wc -l","ps -efL | grep apache-tomcat-finance |grep -v grep | wc -l","ps -efL | grep apache-tomcat-interface |grep -v grep | wc -l","ps -efL | grep apache-tomcat-payment |grep -v grep | wc -l","ps -efL | grep apache-tomcat-7.0.41 |grep -v grep | wc -l"}; int parse_cmd(char *cmd_array) { // printf("%s\n",cmd_array); int ret; FILE *fp; char readbuf[MIN_LEN]={0}; char cmd_string[MIN_LEN]={0}; // strncpy(cmd_string,cmd_array,MIN_LEN); // sprintf(cmd_string,cmd_array,strlen(cmd_array)); // printf("cmd_string=%s\n",cmd_string); // int i; // char *p,*str; // memset(readbuf,0,MIN_LEN); fp=popen(cmd_array,"r"); // fp=popen(cmd_string,"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"); } // printf("readbuf=%s\n",readbuf); // printf("i=%d\n",i); switch (i) { case 0: strncpy(cuservice_count,readbuf,MIN_LEN); // printf("0000000000\n"); break; case 1: strncpy(finance_count,readbuf,MIN_LEN); // printf("1111111111\n"); break; case 2: strncpy(interface_count,readbuf,MIN_LEN); // printf("2222222222\n"); break; case 3: strncpy(payment_count,readbuf,MIN_LEN); // printf("3333333333\n"); break; case 4: strncpy(tomcat7041_count,readbuf,MIN_LEN); // printf("4444444444\n"); break; default: // printf("5555555555\n"); break; } // } ret=fclose(fp); if(fp==NULL) { fprintf(stderr,"popen() error.\n"); return -1; } return 0; } int main() { int ret; // clean // memset(cuservice_count,0,MIN_LEN); // memset(finance_count,0,MIN_LEN); // memset(interface_count,0,MIN_LEN); // memset(payment_count,0,MIN_LEN); // memset(tomcat7041_count,0,MIN_LEN); for(i=0;i<5;i++) { ret=parse_cmd(cmd_array[i]); 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("cuservice_count=%s\n",cuservice_count); // printf("finance_count=%s\n",finance_count); // printf("interface_count=%s\n",interface_count); // printf("payment_count=%s\n",payment_count); // printf("tomcat7041_count=%s\n",tomcat7041_count); if(atoi(cuservice_count)<400 && atoi(finance_count)<400 && atoi(interface_count)<400 && atoi(payment_count)<400 && atoi(tomcat7041_count)<400) { exitstatus=OK; } else if(atoi(cuservice_count)>=400 && atoi(cuservice_count)<450 || atoi(finance_count)>=400 && atoi(finance_count)<450 || atoi(interface_count)>=400 && atoi(interface_count)<450 || atoi(payment_count)>=400 && atoi(payment_count)<450 || atoi(tomcat7041_count)>=400 && atoi(tomcat7041_count)<450) { exitstatus=WARNING; } else if(atoi(cuservice_count)>=450 || atoi(finance_count)>=450 || atoi(interface_count)>=450 || atoi(payment_count)>=450 || atoi(tomcat7041_count)>=450) { exitstatus=CRITICAL; } sprintf(status_information,"cuservice_count=%s, finance_count=%s, interface_count=%s, payment_count=%s, tomcat7041_count=%s",cuservice_count,finance_count,interface_count,payment_count,tomcat7041_count); sprintf(performance_data,"cuservice_count=%s;400;450;0; finance_count=%s;400;450;0; interface_count=%s;400;450;0; payment_count=%s;400;450;0; tomcat7041_count=%s;400;450;0;",cuservice_count,finance_count,interface_count,payment_count,tomcat7041_count); printf("%s: %s | %s\n",exit_status[exitstatus],status_information,performance_data); return exitstatus; }