summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2001-09-01 11:50:42 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2001-09-01 11:50:42 +0000
commitd6695b516efde0ee340fd580902e8511bfaa8d48 (patch)
treed19f50a64b4009f543f3b79b68ea576aac200bd7 /src
parent2748fdac3983f03dca3ee735d61672f46229e7f0 (diff)
downloadzabbix-d6695b516efde0ee340fd580902e8511bfaa8d48.tar.gz
zabbix-d6695b516efde0ee340fd580902e8511bfaa8d48.tar.xz
zabbix-d6695b516efde0ee340fd580902e8511bfaa8d48.zip
- table "Supported parameters by platform" added to manual.txt
- removed recommendation of PostgreSQL from manual.txt - use of /proc was changed to native calls to sysinfo where possible git-svn-id: svn://svn.zabbix.com/trunk@180 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
-rw-r--r--src/zabbix_agent/sysinfo.c176
-rw-r--r--src/zabbix_agent/sysinfo.h5
-rw-r--r--src/zabbix_agent/zabbix_agent.c6
3 files changed, 171 insertions, 16 deletions
diff --git a/src/zabbix_agent/sysinfo.c b/src/zabbix_agent/sysinfo.c
index 59edf757..84c722c4 100644
--- a/src/zabbix_agent/sysinfo.c
+++ b/src/zabbix_agent/sysinfo.c
@@ -1,9 +1,20 @@
#include "config.h"
-#include <stdio.h>
-#include <stdlib.h>
-/* #include <mntent.h> */
-#include <sys/stat.h>
+#ifdef HAVE_STDIO_H
+ #include <stdio.h>
+#endif
+#ifdef HAVE_STDLIB_H
+ #include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+ #include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+#endif
/* Linux */
#ifdef HAVE_SYS_VFS_H
#include <sys/vfs.h>
@@ -82,6 +93,7 @@ COMMAND commands[]=
{"io[disk_wblk]" ,DISK_WBLK, 0},
{"system[procload]" ,PROCLOAD, 0},
+ {"test" ,TEST, 0},
{"system[procload5]" ,PROCLOAD5, 0},
{"system[procload15]" ,PROCLOAD15, 0},
{"system[proccount]" ,PROCCOUNT, 0},
@@ -102,6 +114,35 @@ COMMAND commands[]=
{0 ,0}
};
+void test_parameters(void)
+{
+ int i;
+ float result;
+ float (*function)();
+ char *parameter = NULL;
+ char *key = NULL;
+
+ i=0;
+ while(0 != commands[i].function)
+ {
+ key=commands[i].key;
+ function=commands[i].function;
+ parameter=commands[i].parameter;
+
+ result = function(parameter);
+ if( result == FAIL )
+ {
+ printf("UNSUPPORTED Key: %s\n",key);
+ }
+ else
+ {
+ printf("SUPPORTED Key: %s\n",key);
+ }
+
+ i++;
+ }
+}
+
float process(char *command)
{
char *p;
@@ -285,12 +326,38 @@ float CACHEDMEM(void)
float BUFFERSMEM(void)
{
- return getPROC("/proc/meminfo",7,2);
+#ifdef HAVE_SYSINFO_BUFFERRAM
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.bufferram;
+ }
+ else
+ {
+ return FAIL;
+ }
+#else
+ return FAIL;
+#endif
}
float SHAREDMEM(void)
{
- return getPROC("/proc/meminfo",6,2);
+#ifdef HAVE_SYSINFO_SHAREDRAM
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.sharedram;
+ }
+ else
+ {
+ return FAIL;
+ }
+#else
+ return FAIL;
+#endif
}
float TOTALMEM(void)
@@ -311,7 +378,20 @@ float TOTALMEM(void)
return page*pst.physical_memory;
}
#else
- return getPROC("/proc/meminfo",4,2);
+#ifdef HAVE_SYSINFO_TOTALRAM
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.totalram;
+ }
+ else
+ {
+ return FAIL;
+ }
+#else
+ return FAIL;
+#endif
#endif
}
@@ -352,13 +432,39 @@ float FREEMEM(void)
}
}
#else
- return getPROC("/proc/meminfo",5,2);
+#ifdef HAVE_SYSINFO_FREERAM
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.freeram;
+ }
+ else
+ {
+ return FAIL;
+ }
+#else
+ return FAIL;
+#endif
#endif
}
float UPTIME(void)
{
- return getPROC("/proc/uptime",1,1);
+#ifdef HAVE_SYSINFO_UPTIME
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.uptime;
+ }
+ else
+ {
+ return FAIL;
+ }
+#else
+ return FAIL;
+#endif
}
float PING(void)
@@ -392,7 +498,7 @@ float PROCLOAD(void)
return dyn.psd_avg_1_min;
}
#else
- return getPROC("/proc/loadavg",1,1);
+ return FAIL;
#endif
#endif
}
@@ -423,7 +529,7 @@ float PROCLOAD5(void)
return dyn.psd_avg_5_min;
}
#else
- return getPROC("/proc/loadavg",1,2);
+ return FAIL;
#endif
#endif
}
@@ -454,19 +560,46 @@ float PROCLOAD15(void)
return dyn.psd_avg_5_min;
}
#else
- return getPROC("/proc/loadavg",1,3);
+ return FAIL;
#endif
#endif
}
float SWAPFREE(void)
{
- return getPROC("/proc/meminfo",10,2);
+#ifdef HAVE_SYSINFO_FREESWAP
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.freeswap;
+ }
+ else
+ {
+ return FAIL;
+ }
+#else
+ return FAIL;
+#endif
+}
+
+float TEST(void)
+{
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.freeswap;
+ }
+ else
+ {
+ return FAIL;
+ }
}
float PROCCOUNT(void)
{
-#ifdef HAVE_SYS_SYSINFO_H
+#ifdef HAVE_SYSINFO_PROCS
struct sysinfo info;
if( 0 == sysinfo(&info))
@@ -484,7 +617,20 @@ float PROCCOUNT(void)
float SWAPTOTAL(void)
{
- return getPROC("/proc/meminfo",9,2);
+#ifdef HAVE_SYSINFO_TOTALSWAP
+ struct sysinfo info;
+
+ if( 0 == sysinfo(&info))
+ {
+ return (float)info.totalswap;
+ }
+ else
+ {
+ return FAIL;
+ }
+#else
+ return FAIL;
+#endif
}
float DISK_IO(void)
diff --git a/src/zabbix_agent/sysinfo.h b/src/zabbix_agent/sysinfo.h
index 11da0967..eea35095 100644
--- a/src/zabbix_agent/sysinfo.h
+++ b/src/zabbix_agent/sysinfo.h
@@ -2,7 +2,9 @@
#define MON_SYSINFO_H
float process(char *command);
-
+
+void test_parameters(void);
+
float INODE(const char * mountPoint);
float FILESIZE(const char * filename);
float DF(const char * mountPoint);
@@ -26,6 +28,7 @@ float SWAPFREE(void);
float SWAPTOTAL(void);
float TCP_LISTEN(const char *porthex);
float UPTIME(void);
+float TEST(void);
float EXECUTE(char *command);
#define COMMAND struct command_type
diff --git a/src/zabbix_agent/zabbix_agent.c b/src/zabbix_agent/zabbix_agent.c
index 3db1439a..acaee6aa 100644
--- a/src/zabbix_agent/zabbix_agent.c
+++ b/src/zabbix_agent/zabbix_agent.c
@@ -1,3 +1,5 @@
+/*#define TEST_PARAMETERS*/
+
#include "config.h"
#include <stdlib.h>
@@ -79,6 +81,10 @@ float process_input()
int main()
{
+#ifdef TEST_PARAMETERS
+ test_parameters();
+ return SUCCEED;
+#endif
if(check_security() == FAIL)
{
exit(FAIL);