Commit Graph

47 Commits

Author SHA1 Message Date
Michael Friedrich 17615ac444 Redis: Dump host and service state events
fixes #5163
2017-04-12 16:58:08 +02:00
Thomas Gelf ed2ebdf0d0 RedisWriter: publish Icinga 2 stats as a simple "keepalive"
Use case: a reader subscribes to config changes. As they happen rarely, chances
are good that the connection will time out in the meantime. Now, a reconnect is
easy - but you wouldn't know whether you missed any config changes. So you are
required to issue a new sync to be on the safe side. Given a 60sec connection
timeout (think: SSL layer, firewalls etc) when no traffic happens this would be
too expensive.

Some kind of a heartbeat available for subscription would allow subscribers to
artificially keep the connection alive. As a first simple solution to this I'd
suggest to publish CIB data, that might be useful anyways.

refs #4991
fixes #5098

Signed-off-by: Michael Friedrich <michael.friedrich@icinga.com>
2017-03-29 10:17:03 +02:00
Michael Friedrich 2f84ff84b2 Fix object deletion on restart
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich f76f655dc1 Rename source file
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich af3e2c429f Add exception handler for Redis WorkQueue
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich a5556cbaae Add log message for config/status dump end for Redis
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich 91b8decaac Fix possible crash on startup status updates in Redis
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich 3310cc30ae Fix hash value for empty custom attributes
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 9de4c8bc58 Fix memory leak in RedisWriter::ExecuteQuery
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner dac9775b93 Add COUNT parameter for SCAN
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 28b2345a3b Updated remaining queries to use ExecuteQuery()
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 844e2bf68c Replace existing queries with ExecuteQuery() calls
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich fcd9e3666d Implement config dump/update/delete publishing; fix runtime created object creation
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 75bfd775b9 Implement RedisWriter::ExecuteQuery
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich f29a82bcfe Add properties and vars config checksums
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 6178ca3886 Use GetHostService() instead of casts
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 6b48a36192 Implement the db_index property for the RedisWriter class
fixes #5081
2017-03-29 10:17:03 +02:00
Gunnar Beutner 1bbdd082b0 Use transactions for the initial config and status updates
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner c64d296edb Make sure to use pretty-printed checksums in JSON blobs; remove semicolons
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 2d9be77260 Clean up the code a bit
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 2773d93d40 Update log message
refs #4991
2017-03-29 10:17:03 +02:00
Michael Friedrich 0b466aabc0 Start working on checksum config dump
refs #4991
2017-03-29 10:17:03 +02:00
Gunnar Beutner 94aeaa2e5c Don't use raw pointers in boost::bind
refs #4991
2017-03-16 15:33:59 +01:00
Gunnar Beutner dd7862f08a Add missing freeReplyObject calls
refs #4991
2017-03-16 15:09:41 +01:00
Gunnar Beutner 62c1a64788 Merge DEL queries into one query
refs #4991
2017-03-16 15:09:41 +01:00
Gunnar Beutner 00eba25ad7 Add ASSERTs for the Redis queries
refs #4991
2017-03-16 15:09:41 +01:00
Gunnar Beutner f862923dc7 Remove some log messages
refs #4991
2017-03-16 15:09:41 +01:00
Gunnar Beutner 18e6474f1e Make sure all Redis tasks are executed on the WQ threads
refs #4991
2017-03-16 14:23:31 +01:00
Gunnar Beutner 3a5caf15eb Remove redundant check
refs #4991
2017-03-16 13:58:35 +01:00
Gunnar Beutner 04be7a1f1e Implement event handlers for config and status updates
fixes #5072
fixes #5073
refs #4991
2017-03-16 13:58:31 +01:00
Gunnar Beutner df05e24d52 Fix attribute type filter
refs #4991
2017-03-16 13:58:28 +01:00
Gunnar Beutner 0eada26b04 Only export config objects to Redis
refs #4991
2017-03-16 13:58:23 +01:00
Michael Friedrich e5c0295c9e Redis: First attempt of a reconnect config dump
refs #5072
refs #4991
2017-03-16 13:58:18 +01:00
Gunnar Beutner 96b3c7d90b Get rid of event IDs for Redis
fixes #5067
2017-03-15 15:10:58 +01:00
Gunnar Beutner 1cab2d7b16 Fix incorrect handling for SCAN results
fixes #5065
2017-03-15 14:55:41 +01:00
Gunnar Beutner 4da5f7d52c Add another log message
refs #4991
2017-03-15 14:55:37 +01:00
Gunnar Beutner a21da31ef6 Add missing free call
refs #4991
2017-03-15 14:55:19 +01:00
Gunnar Beutner 34c69d9556 Only send events to Redis when there is at least one subscriber
refs #4991
2017-03-14 15:19:02 +01:00
Gunnar Beutner 10ddcbe4d3 Implement support for expiring subscriptions
refs #4991
2017-03-14 15:19:02 +01:00
Michael Friedrich 3e98e3fb2c Better error handling and fixes
refs #4991
2017-03-14 15:18:39 +01:00
Michael Friedrich d3e3159e6b Implement event subscriptions
refs #4991
2017-03-14 14:47:06 +01:00
Michael Friedrich a8587f5697 Ensure to check the auth command return value
refs #4991
2017-03-14 14:46:58 +01:00
Gunnar Beutner b3e727e1e7 Fix spelling mistake
refs #4991
2017-02-21 11:38:50 +01:00
Rune Darrud e6ae582104 Add a log message for RedisWriter on start and stop
fixes #5006

Signed-off-by: Gunnar Beutner <gunnar.beutner@icinga.com>
2017-02-15 14:33:04 +01:00
Gunnar Beutner 6d620e75ed Improve reconnect behavior for the RedisWriter class
refs #4991
2017-02-13 14:21:13 +01:00
Gunnar Beutner 8ad567ce99 Implement UNIX domain socket support for the RedisWriter class
refs #4991
2017-02-13 14:21:13 +01:00
Gunnar Beutner 31650b0beb Add RedisWriter class
refs #4991
2017-02-09 16:40:11 +01:00