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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
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.\n");
return -1;
} ret=fseek(fp_old,0,SEEK_SET);
if(ret==-1) {
fprintf(stderr,"check_old_file() is fseek() OLD_FILE_QUEUE error.\n");
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.\n");
return -1;
}
// printf("%s",error_str_old);
// printf("-------------------------\n");
*/
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.\n");
} ret=fprintf(fp_old,"%s",error_str);
if(ret<0) {
fprintf(stderr,"write_old_file() if fprintf() fp_old error.\n");
return -1;
} ret=fclose(fp_old);
if(ret==EOF) {
fprintf(stderr,"write_old_file() is fclose() error.\n");
} 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\n",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\n",exit_status[exitstatus],status_information,performance_data); exit(exitstatus);
} else {
exitstatus=WARNING;
printf("parse() fopen() other error.\n"); 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.\n");
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\n",mark,str_date); /*
if(strcmp(str_date,today_start_time)<0) {
break;
}
*/
// printf("mark=%d,str_date=%s\n",mark,str_date); // if(strcmp(str_date,today_start_time)>=0 && line!=1) {
// printf("-----------------\n"); //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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_fetch_resp_400,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_fetch_resp_404,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_fetch_resp_Timeout,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_wait_voice_timeout,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_inform_resp_400,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
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("-----------------\n"); if(strcmp(error_str_old_inform_resp_404,readbuf)) {
err_inform_resp_404_line=line+1;
err_inform_resp_404_count++;
// printf("readbuf=%s\n",readbuf);
strcpy(error_str_now_inform_resp_404,readbuf);
// printf("error_str_now_404=%s\n",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.\n");
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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_inform_resp_Timeout,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_http_code_500,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
return -1;
}
} }
else {
err_http_code_500_mark=1;
} } // http resp 502
if(strstr(readbuf,"远程server返回错误: (502) 错误的网关") && err_http_code_502_mark==0) {
// printf("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_http_code_502,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
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("-----------------\n"); 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\n",readbuf);
strcpy(error_str_now_http_code_503,readbuf);
// printf("error_str_now_400=%s\n",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.\n");
return -1;
}
} }
else {
err_http_code_503_mark=1;
} }
//check queue
/* if(strstr(readbuf,"队列已满") && err_queue_mark==0) {
// printf("-----------------\n"); if(strcmp(error_str_old_queue,readbuf)) {
err_queue_line=line+1;
err_queue_count++;
// printf("readbuf=%s\n",readbuf);
strcpy(error_str_now_queue,readbuf);
// printf("error_str_now_404=%s\n",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.\n");
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\n",err_400_count,error_str_now_400); // printf("err_404_count=%d,error_str_now_404=%s\n",err_404_count,error_str_now_404); ret=fclose(fp);
if(ret==EOF) {
fprintf(stderr,"mytail() is fclose() error\n");
} 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\n",if8_log_file); // sprintf(today_start_time,"%d-%02d-%02d %s\n",p1->tm_year+1900,p1->tm_mon+1,p1->tm_mday,"16-00-00");
// printf("today_start_time=%s\n",today_start_time); ret=gethostname(hostname,sizeof(hostname));
if(ret==-1) {
fprintf(stderr,"gethostname() error.\n");
exit(-1);
} ret=check_old_file();
if(ret==-1) {
fprintf(stderr,"check_old_file() error.\n");
exit(-1);
}
// printf("error_str_old_400=%s\n",error_str_old_400);
// printf("error_str_old_404=%s\n",error_str_old_404); ret=parse_log_file(if8_log_file);
if(ret==-1) {
fprintf(stderr,"mytail() error.\n");
exit(-1);
} // printf("%s\n",nowtime);
// printf("hostname=%s\n",hostname); // printf("err_400_line=%d\n",err_400_line);
// printf("err_404_line=%d\n",err_404_line); //// printf("all_line=%d\n",all_line); //// printf("-------------------------------\n"); // 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\n",exit_status[exitstatus],status_information,performance_data); return exitstatus;
}
nagios插件之监控if8接口日志(新接口)的更多相关文章
- linux rtc中废弃的接口和新的接口
1. 废弃的接口 rtc_tm_to_time 2. 替换废弃接口的新接口 rtc_tm_sub
- (转)Nagios 配置及监控
Nagios 配置及监控 原文:http://blog.csdn.net/linuxlsq/article/details/52606824 Nagios 监控 在互联网日益发展的今天,监控的重要性已 ...
- nagios安装及监控Linux主机
服务端的操作:##################################安装lamp环境及依赖包########################## 24 rpm -ivh gd-de ...
- zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程
zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程 因为Zabbix自带的MySQL监控没有提供可以直接使用的Key,所以一般不采用 ...
- nagios加入被监控的机器
此工作大约用时: 30min 准备工作, 在被监控机上 yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel 0 ...
- nagios添加check_logfiles监控注意事项
为被监控机器添加日志监控,需注意: 1.确认被监控机器/usr/local/nagios/libexec下是否已存在check_logfiles插件,如没有,需要copy进来: 2.确认被监控机器/u ...
- SpringSecurity权限管理系统实战—二、日志、接口文档等实现
系列目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战 ...
- 如何监控 Log4j2 异步日志遇到写入瓶颈
如何监控 Log4j2 异步日志遇到写入瓶颈 在之前的一篇文章中(一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位),我们详细分析了一个经典的 Log4j2 异步日志阻塞问题的定位,主要原因还 ...
- Nagios利用NSClient++监控Windows主机
在Nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的.其功能类似于check_nrpe.不过还需要搭配另外一个软件NSClient++,它则类似于NRP ...
随机推荐
- C 语言中实现数据与方法的封装
在 C 语言中可以用结构体代替类,用函数指针代替成员方法,实现数据成员与成员方法的封装,在客户端写出的程序与 C++ 类似,唯一的不同是 C 语言中调用函数指针成员时必须将本对象的地址传给函数,因为 ...
- android之ListPreference的用法_PreferenceActivity用法
首先,我们明确,preference是和数据存储相关的. 其次,它能帮助我们方便的进行数据存储!为什么这个地方一定要强调下方便的这个词呢?原因是,我们可以根本就不使用,我们有另外的N种办 ...
- JDK5新特性之线程同步集合(五)
一. 传统集合: 传统方式下的Collection在迭代集合时, 不同意对集合进行改动: public class CollectionModifyExceptionTest { public sta ...
- mysql binlog参数设置
1.mysql有许多系统变量,可以设置,系统变量设置不同,不同的系统将导致执行状态. 故mysql提供两组命令,分别查看系统设置和执行状态. 1.系统设置: SHOW [GLOBAL | SESSIO ...
- 配置基于NotePad++工具下的C#开发环境
1.打开NotePad++,打开Notepad++的插件(plugins)菜单-->Plugin Manager-->Show Plugin Manager-->勾选NppExec- ...
- canvas、image src、data url、blob file conversion
//canvas.toDataURL('image/jpeg'), and convert to blob,blob is a File Object. but UC don't support fu ...
- Aandroid Error之 新导入工程报Unable to resolve target 'android-18'和R cannot be resolved
有段时间没有写安卓了,今天导入以前的项目,结果看到控制台打印出了这样一句:Unable to resolve target 'android-18', 解决方法: 项目->属性->Andr ...
- Struct和Class的区别
转载至:http://blog.csdn.net/yuliu0552/article/details/6717915 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数 ...
- Direct2D WIC绘制图片
绘制图片需要用到WIC,WIC的功能包括: 编解码图片.也可以自定义图片解码插件. 读取图片元数据. 图像处理(最高支持每通道32位). 内置支持一些流行的格式.包括:BMP v5, GIF 89a/ ...
- Java集合框架:Set、List、Map等介绍
目录 1.Java集合类基本概念 2.Java集合类架构层次关系 1.Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上来讲,数组是我们一个很好的选择,前提是我们事先已经明确知道 ...