diff options
| author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2002-09-10 19:22:49 +0000 |
|---|---|---|
| committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2002-09-10 19:22:49 +0000 |
| commit | 92da417d9d453f426f5ce1b55715b6ffdfe9348e (patch) | |
| tree | 67bb13a99cf9dd8b9bdd25210b4617866d237364 /src | |
| parent | 91985c337f43c00900c04d5fd679e6d36ee05b1a (diff) | |
| download | zabbix-92da417d9d453f426f5ce1b55715b6ffdfe9348e.tar.gz zabbix-92da417d9d453f426f5ce1b55715b6ffdfe9348e.tar.xz zabbix-92da417d9d453f426f5ce1b55715b6ffdfe9348e.zip | |
- added parameter StatFile to zabbix_agentd.conf (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@492 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
| -rw-r--r-- | src/zabbix_agent/sysinfo.c | 91 | ||||
| -rw-r--r-- | src/zabbix_agent/sysinfo.h | 6 | ||||
| -rw-r--r-- | src/zabbix_agent/zabbix_agentd.c | 54 |
3 files changed, 143 insertions, 8 deletions
diff --git a/src/zabbix_agent/sysinfo.c b/src/zabbix_agent/sysinfo.c index c3ad4ddc..ce008252 100644 --- a/src/zabbix_agent/sysinfo.c +++ b/src/zabbix_agent/sysinfo.c @@ -111,6 +111,14 @@ COMMAND commands[AGENT_MAX_USER_COMMANDS]= {"filesize[*]" ,FILESIZE, 0, "/etc/passwd"}, + {"netloadin1[*]" ,NETLOADIN1, 0, "lo"}, + {"netloadin5[*]" ,NETLOADIN5, 0, "lo"}, + {"netloadin15[*]" ,NETLOADIN15, 0, "lo"}, + + {"netloadout1[*]" ,NETLOADOUT1, 0, "lo"}, + {"netloadout5[*]" ,NETLOADOUT5, 0, "lo"}, + {"netloadout15[*]" ,NETLOADOUT15, 0, "lo"}, + {"swap[free]" ,SWAPFREE, 0, 0}, {"swap[total]" ,SWAPTOTAL, 0, 0}, @@ -588,6 +596,89 @@ float PROCCNT(const char * procname) #endif } +float get_stat(const char *key) +{ + FILE *f; + char line[MAX_STRING_LEN+1]; + char name1[MAX_STRING_LEN+1]; + char name2[MAX_STRING_LEN+1]; + + f=fopen("/tmp/zabbix_agentd.tmp","r"); + if(f==NULL) + { + return FAIL; + } + while(fgets(line,MAX_STRING_LEN,f)) + { + if(sscanf(line,"%s %s\n",name1,name2)==2) + { + if(strcmp(name1,key) == 0) + { + fclose(f); + return atof(name2); + } + } + + } + fclose(f); + return FAIL; +} + +float NETLOADIN1(char *interface) +{ + char key[MAX_STRING_LEN+1]; + + sprintf(key,"netloadin1[%s]",interface); + + return get_stat(key); +} + +float NETLOADIN5(char *interface) +{ + char key[MAX_STRING_LEN+1]; + + sprintf(key,"netloadin5[%s]",interface); + + return get_stat(key); +} + +float NETLOADIN15(char *interface) +{ + char key[MAX_STRING_LEN+1]; + + sprintf(key,"netloadin15[%s]",interface); + + return get_stat(key); +} + +float NETLOADOUT1(char *interface) +{ + char key[MAX_STRING_LEN+1]; + + sprintf(key,"netloadout1[%s]",interface); + + return get_stat(key); +} + +float NETLOADOUT5(char *interface) +{ + char key[MAX_STRING_LEN+1]; + + sprintf(key,"netloadout5[%s]",interface); + + return get_stat(key); +} + +float NETLOADOUT15(char *interface) +{ + char key[MAX_STRING_LEN+1]; + + sprintf(key,"netloadout15[%s]",interface); + + return get_stat(key); +} + + float INODE(const char * mountPoint) { #ifdef HAVE_SYS_STATVFS_H diff --git a/src/zabbix_agent/sysinfo.h b/src/zabbix_agent/sysinfo.h index 94a0f550..1167abda 100644 --- a/src/zabbix_agent/sysinfo.h +++ b/src/zabbix_agent/sysinfo.h @@ -25,6 +25,12 @@ float INODE(const char * mountPoint); float INODETOTAL(const char * mountPoint); float KERNEL_MAXPROC(void); float KERNEL_MAXFILES(void); +float NETLOADIN1(char *interface); +float NETLOADIN5(char *interface); +float NETLOADIN15(char *interface); +float NETLOADOUT1(char *interface); +float NETLOADOUT5(char *interface); +float NETLOADOUT15(char *interface); float PING(void); float SHAREDMEM(void); float TOTALMEM(void); diff --git a/src/zabbix_agent/zabbix_agentd.c b/src/zabbix_agent/zabbix_agentd.c index 793154bb..8a975967 100644 --- a/src/zabbix_agent/zabbix_agentd.c +++ b/src/zabbix_agent/zabbix_agentd.c @@ -47,6 +47,7 @@ int stats_request=0; static char *CONFIG_HOSTS_ALLOWED = NULL; static char *CONFIG_PID_FILE = NULL; static char *CONFIG_LOG_FILE = NULL; +static char *CONFIG_STAT_FILE = NULL; static int CONFIG_AGENTD_FORKS = AGENTD_FORKS; static int CONFIG_NOTIMEWAIT = 0; static int CONFIG_TIMEOUT = AGENT_TIMEOUT; @@ -222,6 +223,7 @@ void init_config(void) {"Server",&CONFIG_HOSTS_ALLOWED,0,TYPE_STRING,PARM_MAND,0,0}, {"PidFile",&CONFIG_PID_FILE,0,TYPE_STRING,PARM_OPT,0,0}, {"LogFile",&CONFIG_LOG_FILE,0,TYPE_STRING,PARM_OPT,0,0}, + {"StatFile",&CONFIG_STAT_FILE,0,TYPE_STRING,PARM_OPT,0,0}, {"Timeout",&CONFIG_TIMEOUT,0,TYPE_INT,PARM_OPT,1,30}, {"NoTimeWait",&CONFIG_NOTIMEWAIT,0,TYPE_INT,PARM_OPT,0,1}, {"ListenPort",&CONFIG_LISTEN_PORT,0,TYPE_INT,PARM_OPT,1024,32767}, @@ -235,6 +237,10 @@ void init_config(void) { CONFIG_PID_FILE=strdup("/tmp/zabbix_agentd.pid"); } + if(CONFIG_STAT_FILE == NULL) + { + CONFIG_STAT_FILE=strdup("/tmp/zabbix_agentd.tmp"); + } } /* int check_security(int sockfd) @@ -394,7 +400,7 @@ void child_main(int i,int listenfd, int addrlen) } } -void collect_statistics() +void collect_stat() { #define INTERFACE struct interface_type INTERFACE @@ -410,12 +416,14 @@ void collect_statistics() int received_load15; }; - FILE *file; + FILE *file,*fileout; char *s; char line[MAX_STRING_LEN+1]; - int i; + int i,j; + int i1,j1; char a[MAX_STRING_LEN+1]; char b[MAX_STRING_LEN+1]; + char interface[MAX_STRING_LEN+1]; char *token; INTERFACE interfaces[128]= @@ -429,21 +437,54 @@ void collect_statistics() fprintf(stderr, "Cannot open config file [%s] [%m]\n","/proc/net/dev"); return; } + fileout=fopen("/tmp/zabbix_agentd.tmp","w"); i=0; while(fgets(line,MAX_STRING_LEN,file) != NULL) { - if(strstr(line,":") == NULL) + if( (s=strstr(line,":")) == NULL) continue; + strncpy(interface,line,s-line); + interface[s-line]=0; + j1=0; + for(i1=0;i1<strlen(interface);i1++) + { + if(interface[i1]!=' ') + { + interface[j1++]=interface[i1]; + } + } + interface[j1]=0; s=strtok(line,":"); + j=0; while(s) { s = strtok(NULL," "); - printf("[%s]\n",s); + if(j==0) + { + printf("Received [%s]\n",s); + fprintf(fileout,"netloadin1[%s] %s\n", interface, s); + } + else if(j==8) + { + printf("Sent [%s]\n",s); + fprintf(fileout,"netloadout1[%s] %s\n", interface, s); + } + j++; } i++; } fclose(file); + fclose(fileout); +} + +void collect_statistics() +{ + for(;;) + { + collect_stat(); + sleep(1); + } } pid_t child_make(int i,int listenfd, int addrlen) @@ -472,9 +513,6 @@ int main() static struct sigaction phan; - collect_statistics(); - exit; - init_config(); daemon_init(); |
