summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2002-09-10 19:22:49 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2002-09-10 19:22:49 +0000
commit92da417d9d453f426f5ce1b55715b6ffdfe9348e (patch)
tree67bb13a99cf9dd8b9bdd25210b4617866d237364 /src
parent91985c337f43c00900c04d5fd679e6d36ee05b1a (diff)
downloadzabbix-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.c91
-rw-r--r--src/zabbix_agent/sysinfo.h6
-rw-r--r--src/zabbix_agent/zabbix_agentd.c54
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();