zoukankan      html  css  js  c++  java
  • nagios插件之监控if8接口日志(新接口)

    vi check_if8_log.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #include <errno.h>
    
    #define OK       0   
    #define WARNING  1   
    #define CRITICAL 2   
    #define UNKNOWN  3   
    
    #define LEN 400000
    
    int exitstatus=OK;
    char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"};
    
    char status_information[LEN];
    char performance_data[LEN];
    
    //#define LOG_FILE_DIR "/opt/smb_win_113_dir/log"
    //#define LOG_FILE_DIR "/home/weihu/tmp_2_140"
    //#define LOG_FILE_DIR "/opt/smb_win_113_dir/log"
    //#define LOG_FILE_DIR "/home/neo/check_log/cti_log/if8_log_test"
    #define LOG_FILE_DIR "/opt/smb/win_10_28_dir/UltraRouter/log"
    
    //#define OLD_FILE_FAILED "/home/nagios/check_if8_log/113/log_tmp_400.file"
    //#define OLD_FILE_NO_ANSWER "/home/nagios/check_if8_log/113/log_tmp_404.file"
    //#define OLD_FILE_QUEUE "/home/nagios/check_if8_log/113/log_tmp_queue.file"
    
    //#define OLD_FILE_FETCH_400_FAILED "/home/neo/check_log/cti_log/if8_log_test/log_tmp_fetch_400.file"
    #define OLD_FILE_FETCH_400_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_fetch_400.file"
    #define OLD_FILE_FETCH_404_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_fetch_404.file"
    
    //#define OLD_FILE_FETCH_TIMEOUT_FAILED "/home/neo/check_log/cti_log/if8_log_test/log_tmp_fetch_Timeout.file"
    #define OLD_FILE_FETCH_TIMEOUT_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_fetch_Timeout.file"
    
    //#define OLD_FILE_VOICE_TIMEOUT_FAILED "/home/neo/check_log/cti_log/if8_log_test/log_tmp_voice_timeout.file"
    
    //#define OLD_FILE_INFORM_400_FAILED "/home/neo/check_log/cti_log/if8_log_test/log_tmp_inform_400.file"
    #define OLD_FILE_INFORM_400_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_inform_400.file"
    #define OLD_FILE_INFORM_404_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_inform_404.file"
    
    //#define OLD_FILE_INFORM_TIMEOUT_FAILED "/home/neo/check_log/cti_log/if8_log_test/log_tmp_inform_Timeout.file"
    #define OLD_FILE_INFORM_TIMEOUT_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_inform_Timeout.file"
    
    //#define OLD_FILE_QUEUE "/home/neo/check_log/cti_log/if8_log_test/log_tmp_queue.file"
    
    //#define OLD_FILE_HTTP_CODE_500_FAILED "/home/neo/check_log/cti_log/if8_log_test/log_tmp_http_code_500.file"
    #define OLD_FILE_HTTP_CODE_500_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_http_code_500.file"
    #define OLD_FILE_HTTP_CODE_502_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_http_code_502.file"
    #define OLD_FILE_HTTP_CODE_503_FAILED "/home/nagios/check_log/UltraRouter/10_28/log_tmp_http_code_503.file"
    
    //----------
    //http response code返回500
    char error_str_now_http_code_500[LEN]={0};
    char error_str_old_http_code_500[LEN]={0};
    
    //http code 500 line
    int err_http_code_500_line=0;
    int err_http_code_500_count=0;
    int err_http_code_500_mark=0;
    //--------------------
    
    //----------
    //http response code返回502
    char error_str_now_http_code_502[LEN]={0};
    char error_str_old_http_code_502[LEN]={0};
    
    //http code 502 line
    int err_http_code_502_line=0;
    int err_http_code_502_count=0;
    int err_http_code_502_mark=0;
    //--------------------
    
    //----------
    //http response code返回503
    char error_str_now_http_code_503[LEN]={0};
    char error_str_old_http_code_503[LEN]={0};
    
    //http code 503 line
    int err_http_code_503_line=0;
    int err_http_code_503_count=0;
    int err_http_code_503_mark=0;
    //--------------------
    //----------
    //fetchRoutingData返回400
    char error_str_now_fetch_resp_400[LEN]={0};
    char error_str_old_fetch_resp_400[LEN]={0};
    
    //fetchRoutingData line
    int err_fetch_resp_400_line=0;
    int err_fetch_resp_400_count=0;
    int err_fetch_resp_400_mark=0;
    //--------------------
    //----------
    //fetchRoutingData返回404
    char error_str_now_fetch_resp_404[LEN]={0};
    char error_str_old_fetch_resp_404[LEN]={0};
    
    //fetchRoutingData line
    int err_fetch_resp_404_line=0;
    int err_fetch_resp_404_count=0;
    int err_fetch_resp_404_mark=0;
    //--------------------
    //----------
    //fetchRoutingData Timtout
    char error_str_now_fetch_resp_Timeout[LEN]={0};
    char error_str_old_fetch_resp_Timeout[LEN]={0};
    
    // fetch resp timeout line
    int err_fetch_resp_Timeout_line=0;
    int err_fetch_resp_Timeout_count=0;
    int err_fetch_resp_Timeout_mark=0;
    //--------------------
    //----------
    //informRoutingResult返回400
    char error_str_now_inform_resp_400[LEN]={0};
    char error_str_old_inform_resp_400[LEN]={0};
    
    //informRoutingResult line
    int err_inform_resp_400_line=0;
    int err_inform_resp_400_count=0;
    int err_inform_resp_400_mark=0;
    //--------------------
    //----------
    //informRoutingResult返回404
    char error_str_now_inform_resp_404[LEN]={0};
    char error_str_old_inform_resp_404[LEN]={0};
    
    //informRoutingResult line
    int err_inform_resp_404_line=0;
    int err_inform_resp_404_count=0;
    int err_inform_resp_404_mark=0;
    //--------------------
    //----------
    
    //informRoutingResult Timtout
    char error_str_now_inform_resp_Timeout[LEN]={0};
    char error_str_old_inform_resp_Timeout[LEN]={0};
    
    // inform resp timeout line
    int err_inform_resp_Timeout_line=0;
    int err_inform_resp_Timeout_count=0;
    int err_inform_resp_Timeout_mark=0;
    //--------------------
    
    //------------下行能够去掉了
    //char error_str_now_404[LEN]={0};
    //char error_str_old_404[LEN]={0};
    
    //char error_str_now_queue[LEN]={0};
    //char error_str_old_queue[LEN]={0};
    
    //char today_start_time[32];
    
    int all_line=0;
    int err_line=0;
    
    //int err_400_line=0;
    
    
    // queue full
    //int err_queue_line=0;
    
    
    
    
    //wait voice timtout
    //char error_str_now_wait_voice_timeout[LEN]={0};
    //char error_str_old_wait_voice_timeout[LEN]={0};
    
    //wait voice timeout line
    //int err_wait_voice_timeout_line=0;
    //int err_wait_voice_timeout_count=0;
    //int err_wait_voice_timeout_mark=0;
    
    //fetch and inform response 400 count
    
    //fetch and inform response 400 mark
    
    //fetch and inform response 404 line
    
    //fetch and inform response 404 count
    
    //fetch and  inform response 404 mark
    
    ////int err_queue_count=0;
    ////int err_queue_mark=0;
    
    int check_old_file(void) {
    	int ret;
    	FILE *fp_old;
    	char readbuf[4000];
    
    	//OLD_FILE_FAILED,fetch resp 400
    	fp_old=fopen(OLD_FILE_FETCH_400_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_FETCH_400_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_FETCH_400_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_fetch_resp_400,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_FETCH_400_FAILED error.
    ");
    		return -1;
    	}
    
    	//OLD_FILE_FAILED,fetch resp 404
    	fp_old=fopen(OLD_FILE_FETCH_404_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_FETCH_404_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_FETCH_404_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_fetch_resp_404,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_FETCH_404_FAILED error.
    ");
    		return -1;
    	}
    
    	//OLD_FILE_FAILED,fetch resp Timeout
    	fp_old=fopen(OLD_FILE_FETCH_TIMEOUT_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_fetch_resp_Timeout,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    
    
    
    	//OLD_FILE_FAILED,voice timeout
    /*	fp_old=fopen(OLD_FILE_VOICE_TIMEOUT_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_wait_voice_timeout,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    */
    
    	//OLD_FILE_FAILED,inform resp 400
    	fp_old=fopen(OLD_FILE_INFORM_400_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_INFORM_400_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_INFORM_400_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_inform_resp_400,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_INFORM_400_FAILED error.
    ");
    		return -1;
    	}
    
    	//OLD_FILE_FAILED,inform resp 404
    	fp_old=fopen(OLD_FILE_INFORM_404_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_INFORM_404_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_INFORM_404_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_inform_resp_404,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_INFORM_404_FAILED error.
    ");
    		return -1;
    	}
    
    	//OLD_FILE_FAILED,inform resp Timeout
    	fp_old=fopen(OLD_FILE_INFORM_TIMEOUT_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_inform_resp_Timeout,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_FETCH_TIMEOUT_FAILED error.
    ");
    		return -1;
    	}
    
    	//--1 OLD_FILE_HTTP_CODE_500_FAILED
    	fp_old=fopen(OLD_FILE_HTTP_CODE_500_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_HTTP_CODE_500_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_HTTP_CODE_500_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_http_code_500,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_HTTP_CODE_500_FAILED error.
    ");
    		return -1;
    	}
    
    	//--2 OLD_FILE_HTTP_CODE_502_FAILED
    	fp_old=fopen(OLD_FILE_HTTP_CODE_502_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_HTTP_CODE_502_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_HTTP_CODE_502_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_http_code_502,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_HTTP_CODE_502_FAILED error.
    ");
    		return -1;
    	}
    
    	//--3 OLD_FILE_HTTP_CODE_503_FAILED
    	fp_old=fopen(OLD_FILE_HTTP_CODE_503_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_HTTP_CODE_503_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_HTTP_CODE_503_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_http_code_503,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_HTTP_CODE_503_FAILED error.
    ");
    		return -1;
    	}
    
    	//OLD_FILE_NO_ANSWER,inform resp 404	
    /*	fp_old=fopen(OLD_FILE_INFORM_404_FAILED,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_INFORM_404_FAILED error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_INFORM_404_FAILED error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_inform_resp_404,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_INFORM_404_FAILEDerror.
    ");
    		return -1;
    	}
    */
    	//OLD_FILE_QUEUE
    /*	fp_old=fopen(OLD_FILE_QUEUE,"a+");
    	if(fp_old==NULL) {
    		fprintf(stderr,"check_old_file() is fopen() OLD_FILE_QUEUE error.
    ");
    		return -1;
    	}
    
    	ret=fseek(fp_old,0,SEEK_SET);
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() is fseek() OLD_FILE_QUEUE error.
    ");
    		return -1;
    	}
    	else {
    		fgets(error_str_old_queue,4000,fp_old);
    	}
    
            ret=fclose(fp_old);
    	if(ret==EOF) {
    		fprintf(stderr,"check_old_file() is fclose() OLD_FILE_QUEUE error.
    ");
    		return -1;
    	}
    //	printf("%s",error_str_old);
    //	printf("-------------------------
    ");
    */	
    	return 0;
    }
    
    int write_old_file(char *old_file,char *error_str) {
    	int ret;
    	FILE *fp_old;
    
    	fp_old=fopen(old_file,"w");
    	if(fp_old==NULL) {
           		fprintf(stderr,"write_old_file() is fopen() error.
    ");
    	}
    
    	ret=fprintf(fp_old,"%s",error_str);
    	if(ret<0) {
    		fprintf(stderr,"write_old_file() if fprintf() fp_old error.
    ");
    		return -1;
    	}
    
    	ret=fclose(fp_old);
    	if(ret==EOF) {
           		fprintf(stderr,"write_old_file() is fclose() error.
    ");
    	}
    
    	return 0;
    }
    
    int parse_log_file(char *log_file) {
    	FILE *fp;
    	long int *position;
    	char readbuf[4000];
    	char readbuf_tmp[4000];
    	int size=4000,line=0,line_bak;
    	char *str;
    
    	int ret;
    
    	int mark;
    	char *p,*str_date;
    
    	position=(long int *)malloc(sizeof(long int)*size);
    	position[0]=0;
    
    	fp=fopen(log_file,"r");
            if(fp==NULL) {
            //      fprintf(stderr,"mytail() is fopen() error %s
    ",log_file);
            //      perror("mytail() is fopen() error,");
            //      exit(-1);
    
    		if(errno==ENOENT) {
                    //	sprintf(status_information,"Log file no create, Fetch_resp_400_num=%d, Fetch_resp_404_num=%d, Fetch_resp_Timeout_num=%d, Wait_voice_timeout_num=%d, Inform_resp_400_num=%d, Inform_resp_404_num=%d, Error_queue_num=%d",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_wait_voice_timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_queue_count);
                    //	sprintf(status_information,"Log file no create, Fetch_resp_400_num=%d, Inform_resp_400_num=%d",err_fetch_resp_400_count, err_inform_resp_400_count);
    			sprintf(status_information,"Log file no create, Fetch_resp_400_1001_num=%d Fetch_resp_404_num=%d Fetch_resp_Timeout_num=%d Inform_resp_400_1004_num=%d Inform_resp_404_num=%d Inform_resp_Timeout_num=%d Http_code_500_num=%d Http_code_502_num=%d Http_code_503_num=%d",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_inform_resp_Timeout_count, err_http_code_500_count, err_http_code_502_count, err_http_code_503_count);
    
                    //	sprintf(performance_data,"Fetch_resp_400_num=%d;;;; Fetch_resp_404_num=%d;;;; Fetch_resp_Timeout_num=%d;;;; Wait_voice_timeout_num=%d;;;; Inform_resp_400_num=%d;;;; Inform_resp_404_num=%d;;;; Error_queue_num=%d;;;;",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_wait_voice_timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_queue_count);
                    //	sprintf(performance_data,"Fetch_resp_400_num=%d;;;; Inform_resp_400_num=%d;;;;",err_fetch_resp_400_count, err_inform_resp_400_count);
    			sprintf(performance_data,"Fetch_resp_400_1001_num=%d;;;; Fetch_resp_404_num=%d;;;; Fetch_resp_Timeout_num=%d;;;; Inform_resp_400_1004_num=%d;;;; Inform_resp_404_num=%d;;;; Inform_resp_Timeout_num=%d;;;; Http_code_500_num=%d;;;; Http_code_502_num=%d;;;; Http_code_503_num=%d;;;;",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_inform_resp_Timeout_count,err_http_code_500_count, err_http_code_502_count, err_http_code_503_count);
    
                    	exitstatus=WARNING;
                    	printf("%s: %s | %s
    ",exit_status[exitstatus],status_information,performance_data);
    
                    	exit(exitstatus);
    		} else {
                            exitstatus=WARNING;
                            printf("parse() fopen() other error.
    ");
    
                            exit(exitstatus);
    		}
            }
    
    	while(fgets(readbuf,sizeof(readbuf),fp)!=NULL) {
    		if(++line==size) {
    			size*=2;
    			position=(long int *)realloc(position,sizeof(long int)*size);
    		}
    
    		position[line]=ftell(fp);
    	}
    
    	all_line=line;
    	line_bak=line;
    
    	while(line--) {
    		mark=0;
    
    		ret=fseek(fp,position[line],SEEK_SET);	
    		if(ret==-1) {
    			perror("mytail() is fseek()");
    			return -1;
    		}
    
    		str=fgets(readbuf,sizeof(readbuf),fp);
    		if(str==NULL) {
    			fprintf(stderr,"mytail() is fgets() error.
    ");
    			return -1;
    		}
    
    /*
    		strcpy(readbuf_tmp,readbuf);
    		for(p=strtok(readbuf_tmp,","");p;p=strtok(NULL,","")) {
    			str_date=p;
    
    			mark++;
    
    			if(mark==12) break;
    		}
    */
    
    	//	printf("mark=%d,str_date=%s
    ",mark,str_date);
    
    /*
    		if(strcmp(str_date,today_start_time)<0) {
    			break;
    		}
    */
    	//	printf("mark=%d,str_date=%s
    ",mark,str_date);
    
    	//	if(strcmp(str_date,today_start_time)>=0 && line!=1) {
    		//	printf("-----------------
    ");
    
    			//fetch resp 400
    		//	if(strstr(readbuf,"(400)") && err_400_mark==0) {
    		//	if(strstr(readbuf,"(400)") && strstr(readbuf,"fetchRoutingData]Response") && err_fetch_resp_400_mark==0) {
    			if(strstr(readbuf,"myHttpWebRequest") && strstr(readbuf,">1001<") && strstr(readbuf,"routingdata") && err_fetch_resp_400_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_fetch_resp_400,readbuf)) {
    					err_fetch_resp_400_line=line+1;
    					err_fetch_resp_400_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_fetch_resp_400,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_fetch_resp_400_count==1) {
    						ret=write_old_file(OLD_FILE_FETCH_400_FAILED,error_str_now_fetch_resp_400);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_fetch_resp_400 error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_fetch_resp_400_mark=1;
    				}
    
    			}
    
    			//fetch resp 404
    		//	if(strstr(readbuf,"(404)") && strstr(readbuf,"fetchRoutingData]Response") && err_fetch_resp_404_mark==0) {
    			if(strstr(readbuf,"远程server返回错误: (404)") && strstr(readbuf,"routingdata") && err_fetch_resp_404_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_fetch_resp_404,readbuf)) {
    					err_fetch_resp_404_line=line+1;
    					err_fetch_resp_404_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_fetch_resp_404,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_fetch_resp_404_count==1) {
    						ret=write_old_file(OLD_FILE_FETCH_404_FAILED,error_str_now_fetch_resp_404);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_fetch_resp_404 error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_fetch_resp_404_mark=1;
    				}
    
    			}
    
    			// fetch resp Timeout
    		//	if(strstr(readbuf,"Timeout") && strstr(readbuf,"fetchRoutingData]Response") && err_fetch_resp_Timeout_mark==0) {
    			if(strstr(readbuf,"myHttpWebRequest") && strstr(readbuf,"操作超时") && strstr(readbuf,"routingdata") && err_fetch_resp_Timeout_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_fetch_resp_Timeout,readbuf)) {
    					err_fetch_resp_Timeout_line=line+1;
    					err_fetch_resp_Timeout_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_fetch_resp_Timeout,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_fetch_resp_Timeout_count==1) {
    						ret=write_old_file(OLD_FILE_FETCH_TIMEOUT_FAILED,error_str_now_fetch_resp_Timeout);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_fetch_resp_Timeout error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_fetch_resp_Timeout_mark=1;
    				}
    
    			}
    
    			// wait voice timeout
    		//	if(strstr(readbuf,"timeout") && strstr(readbuf,"wait call arrive") && err_voice_timeout_mark==0) {
    		/*	if(strstr(readbuf,"wait call arrive timeout") && err_wait_voice_timeout_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_wait_voice_timeout,readbuf)) {
    					err_wait_voice_timeout_line=line+1;
    					err_wait_voice_timeout_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_wait_voice_timeout,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_wait_voice_timeout_count==1) {
    						ret=write_old_file(OLD_FILE_VOICE_TIMEOUT_FAILED,error_str_now_wait_voice_timeout);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_fetch_resp_Timeout error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_wait_voice_timeout_mark=1;
    				}
    
    			}
    */
    			//inform resp 400
    		//	if(strstr(readbuf,"(400)") && strstr(readbuf,"informRoutingResult]Response") && err_inform_resp_400_mark==0) {
    			if(strstr(readbuf,"myHttpWebRequest") && strstr(readbuf,">1004<") && strstr(readbuf,"routingresult") && err_inform_resp_400_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_inform_resp_400,readbuf)) {
    					err_inform_resp_400_line=line+1;
    					err_inform_resp_400_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_inform_resp_400,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_inform_resp_400_count==1) {
    						ret=write_old_file(OLD_FILE_INFORM_400_FAILED,error_str_now_inform_resp_400);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_inform_resp_400 error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_inform_resp_400_mark=1;
    				}
    
    			}	
    
    			//inform resp 404
    		//	if(strstr(readbuf,"(404)") && strstr(readbuf,"informRoutingResult]Response") && err_inform_resp_404_mark==0) {
    			if(strstr(readbuf,"远程server返回错误: (404)") && strstr(readbuf,"routingresult") && err_inform_resp_404_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_inform_resp_404,readbuf)) {
    					err_inform_resp_404_line=line+1;
    					err_inform_resp_404_count++;
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_inform_resp_404,readbuf);
    				//	printf("error_str_now_404=%s
    ",error_str_now_404);
    
    					if(err_inform_resp_404_count==1) {
    						ret=write_old_file(OLD_FILE_INFORM_404_FAILED,error_str_now_inform_resp_404);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_inform_resp_404 error.
    ");
    							return -1;
    						}
    					}
    				}
    				else {
    					err_inform_resp_404_mark=1;
    				}
    			}
    
    			// inform resp Timeout
    		//	if(strstr(readbuf,"Timeout") && strstr(readbuf,"fetchRoutingData]Response") && err_fetch_resp_Timeout_mark==0) {
    			if(strstr(readbuf,"myHttpWebRequest") && strstr(readbuf,"操作超时") && strstr(readbuf,"routingresult") && err_inform_resp_Timeout_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_inform_resp_Timeout,readbuf)) {
    					err_inform_resp_Timeout_line=line+1;
    					err_inform_resp_Timeout_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_inform_resp_Timeout,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_inform_resp_Timeout_count==1) {
    						ret=write_old_file(OLD_FILE_INFORM_TIMEOUT_FAILED,error_str_now_inform_resp_Timeout);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_inform_resp_Timeout error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_inform_resp_Timeout_mark=1;
    				}
    
    			}
    	
    			// http resp 500
    			if(strstr(readbuf,"远程server返回错误: (500) 内部server错误") && err_http_code_500_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_http_code_500,readbuf)) {
    					err_http_code_500_line=line+1;
    					err_http_code_500_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_http_code_500,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_http_code_500_count==1) {
    						ret=write_old_file(OLD_FILE_HTTP_CODE_500_FAILED,error_str_now_http_code_500);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_http_code_500 error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_http_code_500_mark=1;
    				}
    
    			}
    
    			// http resp 502
    			if(strstr(readbuf,"远程server返回错误: (502) 错误的网关") && err_http_code_502_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_http_code_502,readbuf)) {
    					err_http_code_502_line=line+1;
    					err_http_code_502_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_http_code_502,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_http_code_502_count==1) {
    						ret=write_old_file(OLD_FILE_HTTP_CODE_502_FAILED,error_str_now_http_code_502);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_http_code_502 error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_http_code_502_mark=1;
    				}
    
    			}
    
    			// http resp 503
    			if(strstr(readbuf,"远程server返回错误: (503) server不可用") && err_http_code_503_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_http_code_503,readbuf)) {
    					err_http_code_503_line=line+1;
    					err_http_code_503_count++;
    
    					//	strcat(error_str,readbuf);
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_http_code_503,readbuf);
    				//	printf("error_str_now_400=%s
    ",error_str_now_400);
    
    					if(err_http_code_503_count==1) {
    						ret=write_old_file(OLD_FILE_HTTP_CODE_503_FAILED,error_str_now_http_code_503);
    						if(ret==-1) {
    							fprintf(stderr,"parse_log_file() is write_old_file() error_str_now_http_code_503 error.
    ");
    							return -1;
    						}
    					}
    
    				} 
    				else {
    					err_http_code_503_mark=1;
    				}
    
    			}
    			//check queue
    		/*	if(strstr(readbuf,"队列已满") && err_queue_mark==0) {
    			//	printf("-----------------
    ");
    
    				if(strcmp(error_str_old_queue,readbuf)) {
    					err_queue_line=line+1;
    					err_queue_count++;
    					//	printf("readbuf=%s
    ",readbuf);
    					strcpy(error_str_now_queue,readbuf);
    				//	printf("error_str_now_404=%s
    ",error_str_now_404);
    
    					if(err_queue_count==1) {
    						ret=write_old_file(OLD_FILE_QUEUE,error_str_now_queue);
    						if(ret==-1) {
    							fprintf(stderr,"parse_logfile() is write_old_file() error_str_now_queue error.
    ");
    							return -1;
    						}
    					}
    				}
    				else {
    					err_queue_mark=1;
    				}
    			}
    */
    
    	//	}
    
    	//	if(err_fetch_resp_400_mark==1 && err_fetch_resp_404_mark==1 && err_fetch_resp_Timeout_mark==1 && err_wait_voice_timeout_mark==1 && err_inform_resp_400_mark==1 && err_inform_resp_404_mark==1 && err_queue_mark==1) {
    		if(err_fetch_resp_400_mark==1 && err_fetch_resp_404_mark==1 && err_fetch_resp_Timeout_mark==1 && err_inform_resp_400_mark==1 && err_inform_resp_404_mark==1 && err_inform_resp_Timeout_mark==1 && err_http_code_500_mark==1 && err_http_code_502_mark==1 && err_http_code_503_mark==1) {
    			break;
    		}
    	}
    
    //	printf("err_400_count=%d,error_str_now_400=%s
    ",err_400_count,error_str_now_400);
    
    //	printf("err_404_count=%d,error_str_now_404=%s
    ",err_404_count,error_str_now_404);
    
    
    	ret=fclose(fp);
    	if(ret==EOF) {
    		fprintf(stderr,"mytail() is fclose() error
    ");
    	}
    
    	return 0;
    }
    
    int main(void) {
    	int fd,ret;
    
    	char if8_log_file[128];
    
    	char nowtime[128];
    	char hostname[128];
    
    /*
    	int exitstatus=OK;
    	char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"}; 
    
    	char status_information[LEN];
    	char performance_data[LEN];
    */
    
    	time_t timestamp;
            struct tm *p1;
    
           // timestamp=time(NULL)-86400;
            timestamp=time(NULL);
            p1=localtime(×tamp);
    
    //	sprintf(if8_log_file,"%s/log%d%02d%02d.Log",LOG_FILE_DIR,1900+p1->tm_year,1+p1->tm_mon,p1->tm_mday);
    	sprintf(if8_log_file,"%s/UltraRouter%d%02d%02d.log",LOG_FILE_DIR,1900+p1->tm_year,1+p1->tm_mon,p1->tm_mday);
    ////	printf("if8_log_file=%s
    ",if8_log_file);
    
    //	sprintf(today_start_time,"%d-%02d-%02d %s
    ",p1->tm_year+1900,p1->tm_mon+1,p1->tm_mday,"16-00-00");
    //	printf("today_start_time=%s
    ",today_start_time);
    
    	ret=gethostname(hostname,sizeof(hostname));
            if(ret==-1) {
                    fprintf(stderr,"gethostname() error.
    ");
                    exit(-1);
            }
    
    	ret=check_old_file();
    	if(ret==-1) {
    		fprintf(stderr,"check_old_file() error.
    ");
    		exit(-1);
    	}
    //	printf("error_str_old_400=%s
    ",error_str_old_400);
    //	printf("error_str_old_404=%s
    ",error_str_old_404);
    
    	ret=parse_log_file(if8_log_file);
    	if(ret==-1) {
    		fprintf(stderr,"mytail() error.
    ");
    		exit(-1);
    	}
    
    //	printf("%s
    ",nowtime);
    //	printf("hostname=%s
    ",hostname);
    
    //	printf("err_400_line=%d
    ",err_400_line);
    //	printf("err_404_line=%d
    ",err_404_line);
    
    ////	printf("all_line=%d
    ",all_line);
    
    
    ////	printf("-------------------------------
    ");
    
    //	if(err_400_count>=10 && err_400_count<=20 || err_404_count>=10 && err_404_count<=20) {
    //	if(err_fetch_resp_400_count>=10 && err_fetch_resp_400_count<=20 || err_fetch_resp_404_count>=10 && err_fetch_resp_404_count<=20 || err_fetch_resp_Timeout_count>=10 && err_fetch_resp_Timeout_count<=20 || err_wait_voice_timeout_count>=20 && err_wait_voice_timeout_count<=30 || err_inform_resp_400_count>=10 && err_inform_resp_400_count<=20  || err_inform_resp_404_count>=10 && err_inform_resp_404_count<=20) {
    	if(err_fetch_resp_400_count>=10 && err_fetch_resp_400_count<=20 || err_fetch_resp_404_count>=10 && err_fetch_resp_404_count<=20 || err_fetch_resp_Timeout_count>=10 && err_fetch_resp_Timeout_count<=20 || err_inform_resp_400_count>=10 && err_inform_resp_400_count<=20 || err_inform_resp_404_count>=10 && err_inform_resp_404_count<=20 || err_inform_resp_Timeout_count>=10 && err_inform_resp_Timeout_count<=20 || err_http_code_500_count>=10 && err_http_code_500_count<=20 || err_http_code_502_count>=10 && err_http_code_502_count<=20 || err_http_code_503_count>=10 && err_http_code_503_count<=20) {
    		exitstatus=WARNING;
    	}
    //	else if(err_400_count>11 && err_400_count<=20 || err_404_count>11 && err_404_count<=20 || err_queue_count>=1) {
    //	else if(err_fetch_resp_400_count>20 || err_fetch_resp_404_count>20 || err_fetch_resp_Timeout_count>20 || err_wait_voice_timeout_count>30 || err_inform_resp_400_count>20 || err_inform_resp_404_count>20 || err_queue_count>0) {
    	else if(err_fetch_resp_400_count>20 || err_fetch_resp_404_count>20 || err_fetch_resp_Timeout_count>20 || err_inform_resp_400_count>20 || err_inform_resp_404_count>20 || err_inform_resp_Timeout_count>20 || err_http_code_500_count>20 || err_http_code_502_count>20 || err_http_code_503_count>20) {
    		exitstatus=CRITICAL;
    	}
    
    //	sprintf(status_information,"Current Fetch_resp_400_num=%d, Fetch_resp_404_num=%d, Fetch_resp_Timeout_num=%d, Wait_voice_timeout_num=%d, Inform_resp_400_num=%d, Inform_resp_404_num=%d, Error_queue_num=%d",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_wait_voice_timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_queue_count);
    	sprintf(status_information,"Current Fetch_resp_400_1001_num=%d Fetch_resp_404_num=%d Fetch_resp_Timeout_num=%d Inform_resp_400_1004_num=%d Inform_resp_404_num=%d Inform_resp_Timeout_num=%d Http_code_500_num=%d Http_code_502_num=%d Http_code_503_num=%d",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_inform_resp_Timeout_count, err_http_code_500_count, err_http_code_502_count, err_http_code_503_count);
    
    //	sprintf(performance_data,"Fetch_resp_400_num=%d;;;; Fetch_resp_404_num=%d;;;; Fetch_resp_Timeout_num=%d;;;; Wait_voice_timeout_num=%d;;;; Inform_resp_400_num=%d;;;; Inform_resp_404_num=%d;;;; Error_queue_num=%d;;;;",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_wait_voice_timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_queue_count);
    	sprintf(performance_data,"Fetch_resp_400_1001_num=%d;;;; Fetch_resp_404_num=%d;;;; Fetch_resp_Timeout_num=%d;;;; Inform_resp_400_1004_num=%d;;;; Inform_resp_404_num=%d;;;; Inform_resp_Timeout_num=%d;;;; Http_code_500_num=%d;;;; Http_code_502_num=%d;;;; Http_code_503_num=%d;;;;",err_fetch_resp_400_count, err_fetch_resp_404_count, err_fetch_resp_Timeout_count, err_inform_resp_400_count, err_inform_resp_404_count, err_inform_resp_Timeout_count,err_http_code_500_count, err_http_code_502_count, err_http_code_503_count);
    
    	printf("%s: %s | %s
    ",exit_status[exitstatus],status_information,performance_data);
    	
    	return exitstatus;
    }
  • 相关阅读:
    手把手带你画一个 时尚仪表盘 Android 自定义View
    新手自定义view练习实例之(二) 波浪view
    新手自定义view练习实例之(一) 泡泡弹窗
    增加辅助的数据库组件
    解决Plugin is too old,please update to a more recent version,or set ANDROID_DAILY_OVERRIDE..
    Android 自定义View -- 简约的折线图
    android 开源图表库MPChart最简单使用方法示例教程Demo--折线图 柱状图
    改善database schema
    题解报告:hdu 2057 A + B Again
    hdu 2087 剪花布条(KMP入门)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5163648.html
Copyright © 2011-2022 走看看