summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-10 13:34:58 +0000
committeralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-10 13:34:58 +0000
commit495799b2aa61aab23d74d7faa110a0cd09d59bf0 (patch)
treef25c991e9a2c9db854dab7919700c70d9ee99ea8
parentabafe94bd653f8510dba94760607869ff31b248d (diff)
More changes for distributed monitoring.
git-svn-id: svn://svn.zabbix.com/trunk@3335 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r--create/data/data.sql137
-rw-r--r--create/schema/schema.sql24
-rw-r--r--include/common.h7
-rw-r--r--src/libs/zbxdbhigh/db.c16
-rw-r--r--src/zabbix_server/nodewatcher/history.c148
-rw-r--r--src/zabbix_server/trapper/nodehistory.c43
6 files changed, 305 insertions, 70 deletions
diff --git a/create/data/data.sql b/create/data/data.sql
index 50a7e1ef..914d9cb2 100644
--- a/create/data/data.sql
+++ b/create/data/data.sql
@@ -60,6 +60,16 @@ INSERT INTO rights VALUES (3,2,'Default permission','R',0);
-- Dumping data for table `hosts`
--
+INSERT INTO hosts VALUES (10010,'a0',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10011,'a1',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10012,'a2',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10013,'a3',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10014,'a4',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10015,'a5',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10016,'a6',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10017,'a7',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10018,'a8',1,'127.0.0.1',10050,0,0,'',0,0,0);
+INSERT INTO hosts VALUES (10019,'a9',1,'127.0.0.1',10050,0,0,'',0,0,0);
--INSERT INTO hosts VALUES (10001,'Unix_t',0,'',10000,3,0,'',0,0,0);
INSERT INTO hosts VALUES (10001,'Unix_t',1,'127.0.0.1',10050,0,0,'',0,0,0);
INSERT INTO hosts VALUES (10002,'Windows_t',0,'',10000,3,0,'',0,0,0);
@@ -67,6 +77,17 @@ INSERT INTO hosts VALUES (10004,'Standalone_t',0,'',10000,3,0,'',0,0,0);
INSERT INTO hosts VALUES (10003,'MySQL_t',0,'',10000,3,0,'',0,0,0);
INSERT INTO hosts VALUES (10007,'SNMP_t',0,'',161,3,0,'',0,0,0);
+INSERT INTO items VALUES (19020,0,'','',161,10010,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19021,0,'','',161,10011,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19022,0,'','',161,10012,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19023,0,'','',161,10013,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19024,0,'','',161,10014,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19025,0,'','',161,10015,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19026,0,'','',161,10016,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19027,0,'','',161,10017,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19028,0,'','',161,10018,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (19029,0,'','',161,10019,'Ping to the server (TCP)','agent.ping',001,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+
--
-- Dumping data for table `groups`
--
@@ -160,43 +181,43 @@ insert into help_items values(0,'vm.memory.size[&lt;mode&gt;]','Amount of memory
-- Dumping data for table items
--
-INSERT INTO items VALUES (10001,0,'','',161,10001,'Free memory','vm.memory.size[free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10002,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
-INSERT INTO items VALUES (10003,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/tmp,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
-INSERT INTO items VALUES (10004,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/usr,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
-INSERT INTO items VALUES (10005,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/,free]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10006,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/opt,free]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10007,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/tmp,free]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10008,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/usr,free]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10009,0,'','',161,10001,'Number of processes','proc.num[]',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10001,0,'','',161,10001,'Free memory','vm.memory.size[free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10002,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
+INSERT INTO items VALUES (10003,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/tmp,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
+INSERT INTO items VALUES (10004,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/usr,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
+INSERT INTO items VALUES (10005,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/,free]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10006,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/opt,free]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10007,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/tmp,free]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10008,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/usr,free]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10009,0,'','',161,10001,'Number of processes','proc.num[]',30,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10010,0,'','',161,10001,'Processor load','system.cpu.load[,avg1]',5,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10011,0,'','',161,10001,'Processor load5','system.cpu.load[,avg5]',10,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10012,0,'','',161,10001,'Processor load15','system.cpu.load[,avg15]',20,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10013,0,'','',161,10001,'Number of running processes','system[procrunning]',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10014,0,'','',161,10001,'Free swap space','system.swap.size[,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10015,0,'','',161,10001,'Size of $1','filesize[/var/log/syslog]',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10016,0,'','',161,10001,'Number of users connected','system.users.num',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10013,0,'','',161,10001,'Number of running processes','system[procrunning]',30,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10014,0,'','',161,10001,'Free swap space','system.swap.size[,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10015,0,'','',161,10001,'Size of $1','filesize[/var/log/syslog]',30,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10016,0,'','',161,10001,'Number of users connected','system.users.num',30,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10017,0,'','',161,10001,'Checksum of $1','vfs.file.cksum[/etc/inetd.conf]',600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10018,0,'','',161,10001,'Checksum of $1','vfs.file.cksum[/vmlinuz]',600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10019,0,'','',161,10001,'Checksum of $1','vfs.file.cksum[/etc/passwd]',600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10020,0,'','',161,10001,'Ping to the server (TCP)','agent.ping',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10021,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/home,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
-INSERT INTO items VALUES (10022,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/home,free]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10023,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/var,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
-INSERT INTO items VALUES (10024,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/opt,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
+INSERT INTO items VALUES (10020,0,'','',161,10001,'Ping to the server (TCP)','agent.ping',30,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10021,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/home,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
+INSERT INTO items VALUES (10022,0,'','',161,10001,'Free number of inodes on $1','vfs.fs.inode[/home,free]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10023,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/var,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
+INSERT INTO items VALUES (10024,0,'','',161,10001,'Free disk space on $1','vfs.fs.size[/opt,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','1','',0,'',0,0,'');
INSERT INTO items VALUES (10025,0,'','',161,10001,'Host uptime (in sec)','system.uptime',300,7,365,0,NULL,NULL,NULL,0,0,'','s',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10026,0,'','',161,10001,'Total memory','vm.memory.size[total]',1800,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10027,0,'','',161,10001,'Shared memory','vm.memory.size[shared]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10028,0,'','',161,10001,'Buffers memory','vm.memory.size[buffers]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10029,0,'','',161,10001,'Cached memory','vm.memory.size[cached]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10030,0,'','',161,10001,'Total swap space','system.swap.size[,total]',1800,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10031,0,'','',161,10001,'Email (SMTP) server is running','net.tcp.service[smtp]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10032,0,'','',161,10001,'FTP server is running','net.tcp.service[ftp]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10033,0,'','',161,10001,'SSH server is running','net.tcp.service[ssh]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10034,0,'','',161,10001,'Telnet server is running','net[listen_23]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10035,0,'','',161,10001,'WEB server is running','net[listen_80]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10036,0,'','',161,10001,'POP3 server is running','net.tcp.service[pop]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10037,0,'','',161,10001,'IMAP server is running','net.tcp.service[imap]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10026,0,'','',161,10001,'Total memory','vm.memory.size[total]',1800,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10027,0,'','',161,10001,'Shared memory','vm.memory.size[shared]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10028,0,'','',161,10001,'Buffers memory','vm.memory.size[buffers]',30,7,365,0,NULL,NULL,NULL,3,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10029,0,'','',161,10001,'Cached memory','vm.memory.size[cached]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10030,0,'','',161,10001,'Total swap space','system.swap.size[,total]',1800,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10031,0,'','',161,10001,'Email (SMTP) server is running','net.tcp.service[smtp]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10032,0,'','',161,10001,'FTP server is running','net.tcp.service[ftp]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10033,0,'','',161,10001,'SSH server is running','net.tcp.service[ssh]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10034,0,'','',161,10001,'Telnet server is running','net[listen_23]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10035,0,'','',161,10001,'WEB server is running','net[listen_80]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10036,0,'','',161,10001,'POP3 server is running','net.tcp.service[pop]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10037,0,'','',161,10001,'IMAP server is running','net.tcp.service[imap]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10038,0,'','',161,10001,'Checksum of $1','vfs.file.cksum[/usr/sbin/sshd]',600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10039,0,'','',161,10001,'Checksum of $1','vfs.file.cksum[/usr/bin/ssh]',600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10040,0,'','',161,10001,'Checksum of $1','vfs.file.cksum[/etc/services]',600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
@@ -205,31 +226,31 @@ INSERT INTO items VALUES (10042,0,'','',161,10001,'Number of disks read operatio
INSERT INTO items VALUES (10043,0,'','',161,10001,'Number of disks write operations','io[disk_wio]',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10044,0,'','',161,10001,'Number of block read from disks','io[disk_rblk]',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10045,0,'','',161,10001,'Number of block written to disks','io[disk_wblk]',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10046,0,'','',161,10001,'News (NNTP) server is running','net.tcp.service[nntp]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10047,0,'','',161,10001,'Number of running processes inetd','proc_cnt[inetd]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10048,0,'','',161,10001,'Number of running processes apache','proc_cnt[httpd]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10049,0,'','',161,10001,'Number of running processes mysqld','proc_cnt[mysqld]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10050,0,'','',161,10001,'Number of running processes syslogd','proc_cnt[syslogd]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10051,0,'','',161,10001,'Number of running processes sshd','proc_cnt[sshd]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10052,0,'','',161,10001,'Number of running processes $1','proc_cnt[zabbix_agentd]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10053,0,'','',161,10001,'Number of running processes $1','proc_cnt[zabbix_server]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10046,0,'','',161,10001,'News (NNTP) server is running','net.tcp.service[nntp]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10047,0,'','',161,10001,'Number of running processes inetd','proc_cnt[inetd]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10048,0,'','',161,10001,'Number of running processes apache','proc_cnt[httpd]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10049,0,'','',161,10001,'Number of running processes mysqld','proc_cnt[mysqld]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10050,0,'','',161,10001,'Number of running processes syslogd','proc_cnt[syslogd]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10051,0,'','',161,10001,'Number of running processes sshd','proc_cnt[sshd]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10052,0,'','',161,10001,'Number of running processes $1','proc_cnt[zabbix_agentd]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10053,0,'','',161,10001,'Number of running processes $1','proc_cnt[zabbix_server]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10055,0,'','',161,10001,'Maximum number of processes','kern[maxproc]',1800,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10056,0,'','',161,10001,'Maximum number of opened files','kern[maxfiles]',1800,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10057,0,'','',161,10001,'Host name','system.hostname',1800,7,365,0,NULL,NULL,NULL,0,1,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10058,0,'','',161,10001,'Host information','system.uname',1800,7,365,0,NULL,NULL,NULL,0,1,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10059,0,'','',161,10001,'Version of zabbix_agent(d) running','agent.version',1800,7,365,0,NULL,NULL,NULL,0,1,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10060,0,'','',161,10001,'WEB (HTTP) server is running','net.tcp.service[http]',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10061,0,'','',161,10001,'Host status','status',60,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10062,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10063,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/opt,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10064,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/tmp,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10065,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/usr,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10066,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/home,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10067,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10068,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/opt,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10069,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/tmp,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10070,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/usr,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10071,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/home,total]',3600,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10060,0,'','',161,10001,'WEB (HTTP) server is running','net.tcp.service[http]',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10061,0,'','',161,10001,'Host status','status',60,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10062,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10063,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/opt,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10064,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/tmp,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10065,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/usr,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10066,0,'','',161,10001,'Total number of inodes on $1','vfs.fs.inode[/home,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10067,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10068,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/opt,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10069,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/tmp,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10070,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/usr,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10071,0,'','',161,10001,'Total disk space on $1','vfs.fs.size[/home,total]',3600,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10072,0,'','',161,10001,'Incoming traffic on interface lo (1min)','netloadin1[lo]',5,7,365,0,NULL,NULL,NULL,0,0,'','Bps',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10073,0,'','',161,10001,'Incoming traffic on interface lo (5min)','netloadin5[lo]',10,7,365,0,NULL,NULL,NULL,0,0,'','Bps',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10074,0,'','',161,10001,'Incoming traffic on interface lo (15min)','netloadin15[lo]',20,7,365,0,NULL,NULL,NULL,0,0,'','Bps',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
@@ -260,18 +281,18 @@ INSERT INTO items VALUES (10408,0,'','',161,10001,'Number of read operations on
INSERT INTO items VALUES (10409,0,'','',161,10001,'Number of write operations on disk hdb (1min)','disk_write_ops1[hdb]',5,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10410,0,'','',161,10001,'Number of write operations on disk hdb (5min)','disk_write_ops5[hdb]',10,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10411,0,'','',161,10001,'Number of write operations on disk hdb (15min)','disk_write_ops15[hdb]',20,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10412,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/,used]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10413,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/opt,used]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10412,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/,used]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10413,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/opt,used]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10414,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/var,used]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10415,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/tmp,used]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10416,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/usr,used]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10417,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/home,used]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10415,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/tmp,used]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10416,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/usr,used]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10417,0,'','',161,10001,'Used disk space on $1','vfs.fs.size[/home,used]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10418,0,'','',161,10001,'Temperature of mainboard','sensor[temp1]',30,7,365,0,NULL,NULL,NULL,0,0,'','C',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10419,0,'','',161,10001,'Temperature of CPU 1of2','sensor[temp2]',30,7,365,0,NULL,NULL,NULL,0,0,'','C',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10420,0,'','',161,10001,'Temperature of CPU 2of2','sensor[temp3]',30,7,365,0,NULL,NULL,NULL,0,0,'','C',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10090,0,'','',161,10002,'Free memory','vm.memory.size[free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
-INSERT INTO items VALUES (10091,0,'','',161,10002,'Free disk space on $1','vfs.fs.size[c:,free]',30,7,365,0,NULL,NULL,NULL,0,0,'','B',1,0,NULL,'',0,'','','1','',0,'',0,0,'');
-INSERT INTO items VALUES (10098,0,'','',161,10002,'Number of processes','proc.num[]',30,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10090,0,'','',161,10002,'Free memory','vm.memory.size[free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
+INSERT INTO items VALUES (10091,0,'','',161,10002,'Free disk space on $1','vfs.fs.size[c:,free]',30,7,365,0,NULL,NULL,NULL,0,3,'','B',1,0,NULL,'',0,'','','1','',0,'',0,0,'');
+INSERT INTO items VALUES (10098,0,'','',161,10002,'Number of processes','proc.num[]',30,7,365,0,NULL,NULL,NULL,0,3,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10099,0,'','',161,10002,'Processor load','system.cpu.load[,avg1]',5,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10100,0,'','',161,10002,'Processor load5','system.cpu.load[,avg5]',10,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
INSERT INTO items VALUES (10101,0,'','',161,10002,'Processor load15','system.cpu.load[,avg15]',20,7,365,0,NULL,NULL,NULL,0,0,'','',0,0,NULL,'',0,'','','0','',0,'',0,0,'');
diff --git a/create/schema/schema.sql b/create/schema/schema.sql
index 650cfa37..49abce50 100644
--- a/create/schema/schema.sql
+++ b/create/schema/schema.sql
@@ -22,7 +22,7 @@
--
CREATE TABLE nodes (
- nodeid {bigint} DEFAULT '0' NOT NULL,
+ nodeid {integer} DEFAULT '0' NOT NULL,
name {varchar}(64) DEFAULT '' NOT NULL,
timezone {integer} DEFAULT '0' NOT NULL,
ip {varchar}(15) DEFAULT '' NOT NULL,
@@ -302,6 +302,17 @@ CREATE TABLE history_uint (
CREATE INDEX history_uint_1 ON history_uint (itemid, clock);
+CREATE TABLE history_uint_sync (
+ id {serial},
+ nodeid {integer} DEFAULT '0' NOT NULL,
+ itemid {bigint} DEFAULT '0' NOT NULL,
+ clock {integer} DEFAULT '0' NOT NULL,
+ value {bigint} DEFAULT '0' NOT NULL,
+ PRIMARY KEY (id)
+) {create_table_opt};
+
+CREATE INDEX history_uint_sync_1 ON history_uint_sync (nodeid, id);
+
CREATE TABLE history_str (
itemid {bigint} DEFAULT '0' NOT NULL,
clock {integer} DEFAULT '0' NOT NULL,
@@ -310,6 +321,17 @@ CREATE TABLE history_str (
CREATE INDEX history_str_1 ON history_str (itemid, clock);
+CREATE TABLE history_str_sync (
+ id {serial},
+ nodeid {integer} DEFAULT '0' NOT NULL,
+ itemid {bigint} DEFAULT '0' NOT NULL,
+ clock {integer} DEFAULT '0' NOT NULL,
+ value {varchar}(255) DEFAULT '' NOT NULL,
+ PRIMARY KEY (id)
+) {create_table_opt};
+
+CREATE INDEX history_str_sync_1 ON history_str_sync (nodeid, id);
+
CREATE TABLE hosts (
hostid {bigint} DEFAULT '0' NOT NULL,
host {varchar}(64) DEFAULT '' NOT NULL,
diff --git a/include/common.h b/include/common.h
index d0413664..e35c9dd5 100644
--- a/include/common.h
+++ b/include/common.h
@@ -217,6 +217,13 @@
#define ZBX_TYPE_TEXT 4
#define ZBX_TYPE_UINT 5
+/* Flags for node history exchange */
+#define ZBX_TABLE_HISTORY 0
+#define ZBX_TABLE_HISTORY_UINT 1
+#define ZBX_TABLE_HISTORY_STR 2
+#define ZBX_TABLE_HISTORY_LOG 3
+#define ZBX_TABLE_HISTORY_TEXT 4
+
/* Flags */
#define ZBX_SYNC 1
#define ZBX_NOSYNC 2
diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c
index c4dda150..657834ff 100644
--- a/src/libs/zbxdbhigh/db.c
+++ b/src/libs/zbxdbhigh/db.c
@@ -1341,14 +1341,14 @@ int DBadd_history(zbx_uint64_t itemid, double value, int clock)
DBexecute("insert into history (clock,itemid,value) values (%d," ZBX_FS_UI64 ",%f)",
clock,itemid,value);
+ DBadd_trend(itemid, value, clock);
+
if(CONFIG_MASTER_NODEID>=0)
{
DBexecute("insert into history_sync (nodeid,clock,itemid,value) values (%d,%d," ZBX_FS_UI64 ",%f)",
get_nodeid_by_id(itemid),clock,itemid,value);
}
- DBadd_trend(itemid, value, clock);
-
return SUCCEED;
}
@@ -1361,6 +1361,12 @@ int DBadd_history_uint(zbx_uint64_t itemid, zbx_uint64_t value, int clock)
DBadd_trend(itemid, (double)value, clock);
+ if(CONFIG_MASTER_NODEID>=0)
+ {
+ DBexecute("insert into history_uint_sync (nodeid,clock,itemid,value) values (%d,%d," ZBX_FS_UI64 "," ZBX_FS_UI64 ")",
+ get_nodeid_by_id(itemid),clock,itemid,value);
+ }
+
return SUCCEED;
}
@@ -1374,6 +1380,12 @@ int DBadd_history_str(zbx_uint64_t itemid, char *value, int clock)
DBexecute("insert into history_str (clock,itemid,value) values (%d," ZBX_FS_UI64 ",'%s')",
clock,itemid,value_esc);
+ if(CONFIG_MASTER_NODEID>=0)
+ {
+ DBexecute("insert into history_str_sync (nodeid,clock,itemid,value) values (%d,%d," ZBX_FS_UI64 ",'%s')",
+ get_nodeid_by_id(itemid),clock,itemid,value_esc);
+ }
+
return SUCCEED;
}
diff --git a/src/zabbix_server/nodewatcher/history.c b/src/zabbix_server/nodewatcher/history.c
index 53828ba4..69dcfaa4 100644
--- a/src/zabbix_server/nodewatcher/history.c
+++ b/src/zabbix_server/nodewatcher/history.c
@@ -56,6 +56,148 @@ extern int CONFIG_NODEID;
/******************************************************************************
* *
+ * Function: process_node_history_str *
+ * *
+ * Purpose: process new history_str data *
+ * *
+ * Parameters: *
+ * *
+ * Return value: SUCCESS - processed succesfully *
+ * FAIL - an error occured *
+ * *
+ * Author: Alexei Vladishev *
+ * *
+ * Comments: *
+ * *
+ ******************************************************************************/
+static int process_node_history_str(int nodeid, int master_nodeid)
+{
+ DB_RESULT result;
+ DB_ROW row;
+ char *data;
+ char tmp[MAX_STRING_LEN];
+ char sql[MAX_STRING_LEN];
+ int found = 0;
+
+ zbx_uint64_t id;
+ zbx_uint64_t itemid;
+
+#define DATA_MAX 1024*1024
+
+// zabbix_log( LOG_LEVEL_WARNING, "In process_node(local:%d, event_lastid:" ZBX_FS_UI64 ")",nodeid, event_lastid);
+ /* Begin work */
+
+ data = malloc(DATA_MAX);
+ memset(data,0,DATA_MAX);
+
+ zbx_snprintf(tmp,sizeof(tmp),"History|%d|%d\n", CONFIG_NODEID, nodeid);
+ strncat(data,tmp,DATA_MAX);
+
+ zbx_snprintf(sql,sizeof(sql),"select id,itemid,clock,value from history_str_sync where nodeid=%d order by id", nodeid);
+
+ result = DBselectN(sql, 100000);
+ while((row=DBfetch(result)))
+ {
+ ZBX_STR2UINT64(id,row[0])
+ ZBX_STR2UINT64(itemid,row[1])
+// zabbix_log( LOG_LEVEL_WARNING, "Processing itemid " ZBX_FS_UI64, itemid);
+ found = 1;
+ zbx_snprintf(tmp,sizeof(tmp),"%d|%s|%s|%s\n", ZBX_TABLE_HISTORY_STR,row[1],row[2],row[3]);
+ strncat(data,tmp,DATA_MAX);
+ }
+ if(found == 1)
+ {
+// zabbix_log( LOG_LEVEL_WARNING, "Sending [%s]",data);
+ if(send_to_node(master_nodeid, nodeid, data) == SUCCEED)
+ {
+// zabbix_log( LOG_LEVEL_WARNING, "Updating nodes.history_lastid");
+ DBexecute("update nodes set history_str_lastid=" ZBX_FS_UI64 " where nodeid=%d", id, nodeid);
+ DBexecute("delete from history_str_sync where nodeid=%d and id<=" ZBX_FS_UI64, nodeid, id);
+ }
+ else
+ {
+ zabbix_log( LOG_LEVEL_WARNING, "Not updating nodes.history_str_lastid");
+ }
+ }
+ DBfree_result(result);
+ free(data);
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Function: process_node_history_uint *
+ * *
+ * Purpose: process new history_uint data *
+ * *
+ * Parameters: *
+ * *
+ * Return value: SUCCESS - processed succesfully *
+ * FAIL - an error occured *
+ * *
+ * Author: Alexei Vladishev *
+ * *
+ * Comments: *
+ * *
+ ******************************************************************************/
+static int process_node_history_uint(int nodeid, int master_nodeid)
+{
+ DB_RESULT result;
+ DB_ROW row;
+ char *data;
+ char tmp[MAX_STRING_LEN];
+ char sql[MAX_STRING_LEN];
+ int found = 0;
+
+ zbx_uint64_t id;
+ zbx_uint64_t itemid;
+
+#define DATA_MAX 1024*1024
+
+// zabbix_log( LOG_LEVEL_WARNING, "In process_node(local:%d, event_lastid:" ZBX_FS_UI64 ")",nodeid, event_lastid);
+ /* Begin work */
+
+ data = malloc(DATA_MAX);
+ memset(data,0,DATA_MAX);
+
+ zbx_snprintf(tmp,sizeof(tmp),"History|%d|%d\n", CONFIG_NODEID, nodeid);
+ strncat(data,tmp,DATA_MAX);
+
+ zbx_snprintf(sql,sizeof(sql),"select id,itemid,clock,value from history_uint_sync where nodeid=%d order by id", nodeid);
+
+ result = DBselectN(sql, 100000);
+ while((row=DBfetch(result)))
+ {
+ ZBX_STR2UINT64(id,row[0])
+ ZBX_STR2UINT64(itemid,row[1])
+// zabbix_log( LOG_LEVEL_WARNING, "Processing itemid " ZBX_FS_UI64, itemid);
+ found = 1;
+ zbx_snprintf(tmp,sizeof(tmp),"%d|%s|%s|%s\n", ZBX_TABLE_HISTORY_UINT,row[1],row[2],row[3]);
+ strncat(data,tmp,DATA_MAX);
+ }
+ if(found == 1)
+ {
+// zabbix_log( LOG_LEVEL_WARNING, "Sending [%s]",data);
+ if(send_to_node(master_nodeid, nodeid, data) == SUCCEED)
+ {
+// zabbix_log( LOG_LEVEL_WARNING, "Updating nodes.history_lastid");
+ DBexecute("update nodes set history_uint_lastid=" ZBX_FS_UI64 " where nodeid=%d", id, nodeid);
+ DBexecute("delete from history_uint_sync where nodeid=%d and id<=" ZBX_FS_UI64, nodeid, id);
+ }
+ else
+ {
+ zabbix_log( LOG_LEVEL_WARNING, "Not updating nodes.history_uint_lastid");
+ }
+ }
+ DBfree_result(result);
+ free(data);
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
* Function: process_node_history *
* *
* Purpose: process new history data *
@@ -102,7 +244,7 @@ static int process_node_history(int nodeid, int master_nodeid)
ZBX_STR2UINT64(itemid,row[1])
// zabbix_log( LOG_LEVEL_WARNING, "Processing itemid " ZBX_FS_UI64, itemid);
found = 1;
- zbx_snprintf(tmp,sizeof(tmp),"%s|%s|%s\n", row[1],row[2],row[3]);
+ zbx_snprintf(tmp,sizeof(tmp),"%d|%s|%s|%s\n", ZBX_TABLE_HISTORY,row[1],row[2],row[3]);
strncat(data,tmp,DATA_MAX);
}
if(found == 1)
@@ -146,9 +288,9 @@ static void process_node(int nodeid, int master_nodeid)
// zabbix_log( LOG_LEVEL_WARNING, "In process_node(local:%d, master_nodeid:" ZBX_FS_UI64 ")",nodeid, master_nodeid);
process_node_history(nodeid, master_nodeid);
-/* process_node_history_uint(nodeid, master_nodeid);
+ process_node_history_uint(nodeid, master_nodeid);
process_node_history_str(nodeid, master_nodeid);
- process_node_history_log(nodeid, master_nodeid);
+/* process_node_history_log(nodeid, master_nodeid);
process_node_trends(nodeid, master_nodeid);*/
}
diff --git a/src/zabbix_server/trapper/nodehistory.c b/src/zabbix_server/trapper/nodehistory.c
index 2fdfa700..57560bbc 100644
--- a/src/zabbix_server/trapper/nodehistory.c
+++ b/src/zabbix_server/trapper/nodehistory.c
@@ -64,20 +64,51 @@ extern int process_event(DB_EVENT *event);
static int process_record(int nodeid, char *record)
{
char tmp[MAX_STRING_LEN];
+ int table;
zbx_uint64_t itemid;
int timestamp;
double value;
+ zbx_uint64_t value_uint;
+ int res = FAIL;
zabbix_log( LOG_LEVEL_DEBUG, "In process_record [%s]", record);
zbx_get_field(record,tmp,0,'|');
- sscanf(tmp,ZBX_FS_UI64,&itemid);
- zbx_get_field(record,tmp,1,'|');
- timestamp=atoi(tmp);
- zbx_get_field(record,tmp,2,'|');
- value=atof(tmp);
+ table=atoi(tmp);
+ if(table == ZBX_TABLE_HISTORY)
+ {
+ zbx_get_field(record,tmp,1,'|');
+ sscanf(tmp,ZBX_FS_UI64,&itemid);
+ zbx_get_field(record,tmp,2,'|');
+ timestamp=atoi(tmp);
+ zbx_get_field(record,tmp,3,'|');
+ value=atof(tmp);
+
+ res = DBadd_history(itemid, value, timestamp);
+ }
+ else if(table == ZBX_TABLE_HISTORY_UINT)
+ {
+ zbx_get_field(record,tmp,1,'|');
+ sscanf(tmp,ZBX_FS_UI64,&itemid);
+ zbx_get_field(record,tmp,2,'|');
+ timestamp=atoi(tmp);
+ zbx_get_field(record,tmp,3,'|');
+ sscanf(tmp,ZBX_FS_UI64,&value_uint);
+
+ res = DBadd_history_uint(itemid, value_uint, timestamp);
+ }
+ else if(table == ZBX_TABLE_HISTORY_STR)
+ {
+ zbx_get_field(record,tmp,1,'|');
+ sscanf(tmp,ZBX_FS_UI64,&itemid);
+ zbx_get_field(record,tmp,2,'|');
+ timestamp=atoi(tmp);
+ zbx_get_field(record,tmp,3,'|');
+
+ res = DBadd_history_str(itemid, tmp, timestamp);
+ }
- return DBadd_history(itemid, value, clock);
+ return res;
}
/******************************************************************************