diff options
| author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2001-09-01 11:50:42 +0000 |
|---|---|---|
| committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2001-09-01 11:50:42 +0000 |
| commit | d6695b516efde0ee340fd580902e8511bfaa8d48 (patch) | |
| tree | d19f50a64b4009f543f3b79b68ea576aac200bd7 /src | |
| parent | 2748fdac3983f03dca3ee735d61672f46229e7f0 (diff) | |
| download | zabbix-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.c | 176 | ||||
| -rw-r--r-- | src/zabbix_agent/sysinfo.h | 5 | ||||
| -rw-r--r-- | src/zabbix_agent/zabbix_agent.c | 6 |
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); |
