diff options
| author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-06-10 13:05:43 +0000 |
|---|---|---|
| committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-06-10 13:05:43 +0000 |
| commit | e1c4317816fc5df620b780ec17df7ce5f3dd552c (patch) | |
| tree | 52d339411f01f1d83ad2ec2a83c310a1c1467db1 /src/libs | |
| parent | 184ec36c400caf2c7c161fb2d3b6f695d65735af (diff) | |
Minor changes.
git-svn-id: svn://svn.zabbix.com/trunk@1862 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs')
| -rw-r--r-- | src/libs/zbxsysinfo/Makefile.am | 2 | ||||
| -rw-r--r-- | src/libs/zbxsysinfo/diskspace.c | 319 | ||||
| -rw-r--r-- | src/libs/zbxsysinfo/sysinfo.c | 183 |
3 files changed, 320 insertions, 184 deletions
diff --git a/src/libs/zbxsysinfo/Makefile.am b/src/libs/zbxsysinfo/Makefile.am index b6461e49..5446ccc2 100644 --- a/src/libs/zbxsysinfo/Makefile.am +++ b/src/libs/zbxsysinfo/Makefile.am @@ -1,4 +1,4 @@ SUBDIRS=. lib_LIBRARIES=libzbxsysinfo.a -libzbxsysinfo_a_SOURCES=cpu.c inodes.c sensors.c swap.c uptime.c sysinfo.c +libzbxsysinfo_a_SOURCES=cpu.c diskspace.c inodes.c sensors.c swap.c uptime.c sysinfo.c libzbxsysinfo_a_LIBADD = ../zbxcrypto/libzbxcrypto.a diff --git a/src/libs/zbxsysinfo/diskspace.c b/src/libs/zbxsysinfo/diskspace.c new file mode 100644 index 00000000..c03c6a9a --- /dev/null +++ b/src/libs/zbxsysinfo/diskspace.c @@ -0,0 +1,319 @@ +/* +** ZABBIX +** Copyright (C) 2000-2005 SIA Zabbix +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +**/ + +#include "config.h" + +#include <errno.h> + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/stat.h> +#include <sys/types.h> + +/* Definitions of uint32_t under OS/X */ +#ifdef HAVE_STDINT_H + #include <stdint.h> +#endif +#ifdef HAVE_STRINGS_H + #include <strings.h> +#endif +#ifdef HAVE_FCNTL_H + #include <fcntl.h> +#endif +#ifdef HAVE_DIRENT_H + #include <dirent.h> +#endif +/* Linux */ +#ifdef HAVE_SYS_VFS_H + #include <sys/vfs.h> +#endif +#ifdef HAVE_SYS_SYSINFO_H + #include <sys/sysinfo.h> +#endif +/* Solaris */ +#ifdef HAVE_SYS_STATVFS_H + #include <sys/statvfs.h> +#endif +/* Solaris */ +#ifdef HAVE_SYS_PROCFS_H +/* This is needed to access the correct procfs.h definitions */ + #define _STRUCTURED_PROC 1 + #include <sys/procfs.h> +#endif +#ifdef HAVE_SYS_LOADAVG_H + #include <sys/loadavg.h> +#endif +#ifdef HAVE_SYS_SOCKET_H + #include <sys/socket.h> +#endif +#ifdef HAVE_NETINET_IN_H + #include <netinet/in.h> +#endif +#ifdef HAVE_ARPA_INET_H + #include <arpa/inet.h> +#endif +/* OpenBSD/Solaris */ +#ifdef HAVE_SYS_PARAM_H + #include <sys/param.h> +#endif + +#ifdef HAVE_SYS_MOUNT_H + #include <sys/mount.h> +#endif + +/* HP-UX */ +#ifdef HAVE_SYS_PSTAT_H + #include <sys/pstat.h> +#endif + +#ifdef HAVE_NETDB_H + #include <netdb.h> +#endif + +/* Solaris */ +#ifdef HAVE_SYS_SWAP_H + #include <sys/swap.h> +#endif + +/* FreeBSD */ +#ifdef HAVE_SYS_SYSCTL_H + #include <sys/sysctl.h> +#endif + +/* Solaris */ +#ifdef HAVE_SYS_SYSCALL_H + #include <sys/syscall.h> +#endif + +/* FreeBSD */ +#ifdef HAVE_VM_VM_PARAM_H + #include <vm/vm_param.h> +#endif +/* FreeBSD */ +#ifdef HAVE_SYS_VMMETER_H + #include <sys/vmmeter.h> +#endif +/* FreeBSD */ +#ifdef HAVE_SYS_TIME_H + #include <sys/time.h> +#endif + +#ifdef HAVE_MACH_HOST_INFO_H + #include <mach/host_info.h> +#endif +#ifdef HAVE_MACH_MACH_HOST_H + #include <mach/mach_host.h> +#endif + + +#ifdef HAVE_KSTAT_H + #include <kstat.h> +#endif + +#ifdef HAVE_LDAP + #include <ldap.h> +#endif + +#include "common.h" +#include "sysinfo.h" + +int DISKUSED_PERC(const char *cmd, const char *mountPoint,double *value) +{ + double total; + double used; + + if(SYSINFO_RET_OK != DISKTOTAL(cmd, mountPoint, &total)) + { + return SYSINFO_RET_FAIL; + } + + if(SYSINFO_RET_OK != DISKUSED(cmd, mountPoint, &used)) + { + return SYSINFO_RET_FAIL; + } + + if(total == 0) + { + return SYSINFO_RET_FAIL; + } + + *value = 100*used/total; + return SYSINFO_RET_OK; +} + +int DISKFREE_PERC(const char *cmd, const char *mountPoint,double *value) +{ + double total; + double free; + + if(SYSINFO_RET_OK != DISKTOTAL(cmd, mountPoint, &total)) + { + return SYSINFO_RET_FAIL; + } + + if(SYSINFO_RET_OK != DISKFREE(cmd, mountPoint, &free)) + { + return SYSINFO_RET_FAIL; + } + + if(total == 0) + { + return SYSINFO_RET_FAIL; + } + + *value = 100*free/total; + return SYSINFO_RET_OK; +} + +int DISKFREE(const char *cmd, const char *mountPoint,double *value) +{ +#ifdef HAVE_SYS_STATVFS_H + struct statvfs s; + + if ( statvfs( (char *)mountPoint, &s) != 0 ) + { + return SYSINFO_RET_FAIL; + } + +/* return s.f_bavail * (s.f_bsize / 1024.0);*/ + *value=s.f_bavail * (s.f_frsize / 1024.0); + return SYSINFO_RET_OK; +#else + struct statfs s; + long blocks_used; + long blocks_percent_used; + + if ( statfs( (char *)mountPoint, &s) != 0 ) + { + return SYSINFO_RET_FAIL; + } + + if ( s.f_blocks > 0 ) { + blocks_used = s.f_blocks - s.f_bfree; + blocks_percent_used = (long) + (blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5); + +/* printf( + "%7.0f %7.0f %7.0f %5ld%% %s\n" + ,s.f_blocks * (s.f_bsize / 1024.0) + ,(s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0) + ,s.f_bavail * (s.f_bsize / 1024.0) + ,blocks_percent_used + ,mountPoint); +*/ + *value=s.f_bavail * (s.f_bsize / 1024.0); + return SYSINFO_RET_OK; + + } + + return SYSINFO_RET_FAIL; +#endif +} + +int DISKUSED(const char *cmd, const char *mountPoint,double *value) +{ +#ifdef HAVE_SYS_STATVFS_H + struct statvfs s; + + if ( statvfs( (char *)mountPoint, &s) != 0 ) + { + return SYSINFO_RET_FAIL; + } + +/* return (s.f_blocks-s.f_bavail) * (s.f_bsize / 1024.0);*/ + *value=(s.f_blocks-s.f_bavail) * (s.f_frsize / 1024.0); + return SYSINFO_RET_OK; +#else + struct statfs s; + long blocks_used; + long blocks_percent_used; + + if ( statfs( (char *)mountPoint, &s) != 0 ) + { + return SYSINFO_RET_FAIL; + } + + if ( s.f_blocks > 0 ) { + blocks_used = s.f_blocks - s.f_bfree; + blocks_percent_used = (long) + (blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5); + +/* printf( + "%7.0f %7.0f %7.0f %5ld%% %s\n" + ,s.f_blocks * (s.f_bsize / 1024.0) + ,(s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0) + ,s.f_bavail * (s.f_bsize / 1024.0) + ,blocks_percent_used + ,mountPoint); +*/ + *value=blocks_used * (s.f_bsize / 1024.0); + return SYSINFO_RET_OK; + + } + + return SYSINFO_RET_FAIL; +#endif +} + +int DISKTOTAL(const char *cmd, const char *mountPoint,double *value) +{ +#ifdef HAVE_SYS_STATVFS_H + struct statvfs s; + + if ( statvfs( (char *)mountPoint, &s) != 0 ) + { + return SYSINFO_RET_FAIL; + } + +/* return s.f_blocks * (s.f_bsize / 1024.0);*/ + *value= s.f_blocks * (s.f_frsize / 1024.0); + return SYSINFO_RET_OK; +#else + struct statfs s; + long blocks_used; + long blocks_percent_used; + + if ( statfs( (char *)mountPoint, &s) != 0 ) + { + return SYSINFO_RET_FAIL; + } + + if ( s.f_blocks > 0 ) { + blocks_used = s.f_blocks - s.f_bfree; + blocks_percent_used = (long) + (blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5); + +/* printf( + "%7.0f %7.0f %7.0f %5ld%% %s\n" + ,s.f_blocks * (s.f_bsize / 1024.0) + ,(s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0) + ,s.f_bavail * (s.f_bsize / 1024.0) + ,blocks_percent_used + ,mountPoint); +*/ + *value=s.f_blocks * (s.f_bsize / 1024.0); + return SYSINFO_RET_OK; + + } + + return SYSINFO_RET_FAIL; +#endif +} diff --git a/src/libs/zbxsysinfo/sysinfo.c b/src/libs/zbxsysinfo/sysinfo.c index dea2e2c8..3ea2fd9d 100644 --- a/src/libs/zbxsysinfo/sysinfo.c +++ b/src/libs/zbxsysinfo/sysinfo.c @@ -1082,189 +1082,6 @@ int NETLOADOUT15(const char *cmd, const char *parameter,double *value) return get_stat(key,value); } -int DISKUSED_PERC(const char *cmd, const char *mountPoint,double *value) -{ - double total; - double used; - - if(SYSINFO_RET_OK != DISKTOTAL(cmd, mountPoint, &total)) - { - return SYSINFO_RET_FAIL; - } - - if(SYSINFO_RET_OK != DISKUSED(cmd, mountPoint, &used)) - { - return SYSINFO_RET_FAIL; - } - - if(total == 0) - { - return SYSINFO_RET_FAIL; - } - - *value = 100*used/total; - return SYSINFO_RET_OK; -} - -int DISKFREE_PERC(const char *cmd, const char *mountPoint,double *value) -{ - double total; - double free; - - if(SYSINFO_RET_OK != DISKTOTAL(cmd, mountPoint, &total)) - { - return SYSINFO_RET_FAIL; - } - - if(SYSINFO_RET_OK != DISKFREE(cmd, mountPoint, &free)) - { - return SYSINFO_RET_FAIL; - } - - if(total == 0) - { - return SYSINFO_RET_FAIL; - } - - *value = 100*free/total; - return SYSINFO_RET_OK; -} - -int DISKFREE(const char *cmd, const char *mountPoint,double *value) -{ -#ifdef HAVE_SYS_STATVFS_H - struct statvfs s; - - if ( statvfs( (char *)mountPoint, &s) != 0 ) - { - return SYSINFO_RET_FAIL; - } - -/* return s.f_bavail * (s.f_bsize / 1024.0);*/ - *value=s.f_bavail * (s.f_frsize / 1024.0); - return SYSINFO_RET_OK; -#else - struct statfs s; - long blocks_used; - long blocks_percent_used; - - if ( statfs( (char *)mountPoint, &s) != 0 ) - { - return SYSINFO_RET_FAIL; - } - - if ( s.f_blocks > 0 ) { - blocks_used = s.f_blocks - s.f_bfree; - blocks_percent_used = (long) - (blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5); - -/* printf( - "%7.0f %7.0f %7.0f %5ld%% %s\n" - ,s.f_blocks * (s.f_bsize / 1024.0) - ,(s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0) - ,s.f_bavail * (s.f_bsize / 1024.0) - ,blocks_percent_used - ,mountPoint); -*/ - *value=s.f_bavail * (s.f_bsize / 1024.0); - return SYSINFO_RET_OK; - - } - - return SYSINFO_RET_FAIL; -#endif -} - -int DISKUSED(const char *cmd, const char *mountPoint,double *value) -{ -#ifdef HAVE_SYS_STATVFS_H - struct statvfs s; - - if ( statvfs( (char *)mountPoint, &s) != 0 ) - { - return SYSINFO_RET_FAIL; - } - -/* return (s.f_blocks-s.f_bavail) * (s.f_bsize / 1024.0);*/ - *value=(s.f_blocks-s.f_bavail) * (s.f_frsize / 1024.0); - return SYSINFO_RET_OK; -#else - struct statfs s; - long blocks_used; - long blocks_percent_used; - - if ( statfs( (char *)mountPoint, &s) != 0 ) - { - return SYSINFO_RET_FAIL; - } - - if ( s.f_blocks > 0 ) { - blocks_used = s.f_blocks - s.f_bfree; - blocks_percent_used = (long) - (blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5); - -/* printf( - "%7.0f %7.0f %7.0f %5ld%% %s\n" - ,s.f_blocks * (s.f_bsize / 1024.0) - ,(s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0) - ,s.f_bavail * (s.f_bsize / 1024.0) - ,blocks_percent_used - ,mountPoint); -*/ - *value=blocks_used * (s.f_bsize / 1024.0); - return SYSINFO_RET_OK; - - } - - return SYSINFO_RET_FAIL; -#endif -} - -int DISKTOTAL(const char *cmd, const char *mountPoint,double *value) -{ -#ifdef HAVE_SYS_STATVFS_H - struct statvfs s; - - if ( statvfs( (char *)mountPoint, &s) != 0 ) - { - return SYSINFO_RET_FAIL; - } - -/* return s.f_blocks * (s.f_bsize / 1024.0);*/ - *value= s.f_blocks * (s.f_frsize / 1024.0); - return SYSINFO_RET_OK; -#else - struct statfs s; - long blocks_used; - long blocks_percent_used; - - if ( statfs( (char *)mountPoint, &s) != 0 ) - { - return SYSINFO_RET_FAIL; - } - - if ( s.f_blocks > 0 ) { - blocks_used = s.f_blocks - s.f_bfree; - blocks_percent_used = (long) - (blocks_used * 100.0 / (blocks_used + s.f_bavail) + 0.5); - -/* printf( - "%7.0f %7.0f %7.0f %5ld%% %s\n" - ,s.f_blocks * (s.f_bsize / 1024.0) - ,(s.f_blocks - s.f_bfree) * (s.f_bsize / 1024.0) - ,s.f_bavail * (s.f_bsize / 1024.0) - ,blocks_percent_used - ,mountPoint); -*/ - *value=s.f_blocks * (s.f_bsize / 1024.0); - return SYSINFO_RET_OK; - - } - - return SYSINFO_RET_FAIL; -#endif -} - int TCP_LISTEN(const char *cmd, const char *porthex,double *value) { #ifdef HAVE_PROC |
