Eric Lippmann
8c18708819
Icinga DB: Sync groups earlier
...
Host and service groups are structural information that are used
for Web filters and should therefore be synchronized as soon as
possible.
2021-11-10 17:34:21 +01:00
Alexander A. Klimov
315a08ed9f
Icinga DB: sync checkables along with their states first
...
`WorkQueue#ParallelFor(x, false, y)` will enqueue x's items in FIFO order,
so x has to start with host and service.
2021-11-10 17:34:14 +01:00
Julian Brost
4658fbd0b4
Icinga DB: set value in milliseconds for program_start in stats/heartbeat
2021-11-10 17:33:26 +01:00
Julian Brost
d774ae1186
IcingaDB: actually write parent to parent_id of zones
...
This fixes that the code used the wrong variable. Previously, it was written to
Redis that each zone is its own parent (if it has a parent at all).
2021-11-10 17:29:53 +01:00
Alexander A. Klimov
9fa92aff97
Icinga DB: raise icinga:schema 1 -> 2
2021-11-10 17:24:55 +01:00
Alexander A. Klimov
1b06444b8d
Icinga DB: make icinga:history:stream:*#event_id deterministic
...
... i.e. UUID -> SHA1(env, eventType, x...) given that SHA1(env, x...) = type-specific ID.
Rationale: allow both masters to write the same history concurrently (while not
in split-brain), so that REPLACE INTO deduplicates the same events written twice.
* ack: SHA1(env, "ack_set"|"ack_clear", checkable.name, setTime)
* comment: SHA1(env, "comment_add"|"comment_remove", comment.name)
* downtime: SHA1(env, "downtime_start"|"downtime_end", downtime.name)
* flapping: SHA1(env, "flapping_start"|"flapping_end", checkable.name, startTime)
* notification: SHA1(env, "notification", notification.name, notificationType, sendTime)
* state: SHA1(env, "state_change", checkable.name, changeTime)
2021-11-10 17:24:55 +01:00
Alexander A. Klimov
6a75d5121b
Icinga DB: make icinga:history:stream:notification#id deterministic
...
... i.e. UUID -> SHA1(x..., send time) given that SHA1(x...) = notification id.
Rationale: allow both masters to write the same notification history concurrently (while
not in split-brain), so that REPLACE INTO deduplicates the same events written twice.
2021-11-10 17:24:55 +01:00
Alexander A. Klimov
4f6c87402e
Icinga DB: make icinga:history:stream:state#id deterministic
...
... i.e. UUID -> SHA1(x..., check time) given that SHA1(x...) = checkable id.
Rationale: allow both masters to write the same state history concurrently (while
not in split-brain), so that REPLACE INTO deduplicates the same events written twice.
2021-11-10 17:24:55 +01:00
Alexander A. Klimov
2bb5ed0cb3
Icinga DB: introduce icinga:history:stream:downtime#scheduled_by
...
... with the Downtime#scheduled_by attribute.
2021-11-10 17:16:47 +01:00
Alexander A. Klimov
2afbfa67d3
Icinga DB init. dump: flush both buffered states and state checksums
...
not to dump x states, but only x - (x % bulk) state checksums.
2021-11-10 17:03:00 +01:00
Noah Hilverling
afb2635e76
Merge pull request #9074 from Icinga/bugfix/icinga-checksum-state-growing-2.13
...
Icinga DB: clean up vanished objects from icinga:checksum:*:state
2021-11-10 16:48:30 +01:00
Noah Hilverling
1f1c1b39d0
Merge pull request #9073 from Icinga/feature/icingadb-remove-usernotification-stream-2.13
...
Icinga DB: remove usernotification history stream
2021-11-10 16:48:14 +01:00
Noah Hilverling
c1c2135df1
Merge pull request #9072 from Icinga/feature/icingadb-scheduling_source-2.13
...
Make CheckResult#scheduling_source available to Icinga DB
2021-11-10 16:47:52 +01:00
Noah Hilverling
268252bd17
Merge pull request #9071 from Icinga/feature/icingadb-add-user-ids-to-notification-history-2.13
...
Icinga DB: Write IDs of notified users into notification history stream
2021-11-10 15:51:55 +01:00
Noah Hilverling
bb55946367
Merge pull request #9068 from Icinga/bugfix/icinga-db-runtime-state-2.13
...
Icinga DB: stream runtime state updates only to icinga:runtime:state
2021-11-10 15:51:46 +01:00
Noah Hilverling
e9991bff46
Merge pull request #9069 from Icinga/feature/icingaeb-schema-version-2.13
...
Icinga DB: publish Redis schema version via XADD icinga:schema
2021-11-10 15:51:20 +01:00
Noah Hilverling
89223a16c9
Merge pull request #9070 from Icinga/bugfix/dont-include-checkable-types-in-history-id-2.13
...
Icinga DB: don't include checkable types in history IDs
2021-11-10 15:51:04 +01:00
Alexander A. Klimov
5801e548d7
Icinga DB: publish Redis schema version via XADD icinga:schema
...
... to be able both to subscribe for its change and to just fetch it.
2021-11-10 13:21:46 +01:00
Alexander Aleksandrovič Klimov
998e040b9a
Icinga DB: don't include checkable types in history IDs
...
... as they’re unnecessary for being distinguish across types.
Services always have a ! in the name, hosts never do.
2021-11-10 13:19:54 +01:00
Alexander A. Klimov
51b230f69b
Icinga DB: stream runtime state updates only to icinga:runtime:state
...
... where they belong to, not to icinga:runtime.
2021-11-10 13:17:41 +01:00
Julian Brost
7661bee296
Icinga DB: remove usernotification history stream
...
These will be added to the normal notification stream so there is no more need
for this extra stream.
2021-11-10 13:16:14 +01:00
Noah Hilverling
c141091d4c
Icinga DB: Remove unused Redis key 'icinga:zone:parent'
2021-11-10 13:14:54 +01:00
Julian Brost
f8d4eaab70
Icinga DB: Write IDs of notified users into notification history stream
2021-11-10 13:08:22 +01:00
Alexander A. Klimov
4daaaacd35
Make CheckResult#scheduling_source available to Icinga DB
2021-11-10 13:06:19 +01:00
Alexander A. Klimov
b0a72ceb2f
Icinga DB: clean up vanished objects from icinga:checksum:*:state
...
... not to let it grow non-stop.
2021-11-10 13:01:23 +01:00
Julian Brost
b98f939c7f
RedisConnection: remove now redundant setting of TLS verification parameters
...
This is now done in UnbufferedAsioTlsStream.
2021-08-19 11:06:19 +02:00
Alexander Aleksandrovič Klimov
40c186515b
Merge pull request #8942 from Icinga/bugfix/idb-hashes
...
Icinga DB: keep state checksums consistent
2021-07-29 21:54:58 +02:00
Julian Brost
6fa44c8e4e
Merge pull request #8941 from Icinga/bugfix/icingadb-init-all-connections-before-sync
...
Icinga DB: ensure all connections are ready on first use
2021-07-29 17:33:29 +02:00
Alexander Aleksandrovič Klimov
afca6c001e
Merge pull request #8916 from Icinga/feature/icingadb-last_comment_id
...
Icinga DB: introduce Checkable#last_comment_id
2021-07-29 17:29:51 +02:00
Alexander A. Klimov
8476627e91
Icinga DB: keep state checksums consistent
...
I.e. make hashes in hashmaps and stream the same.
2021-07-29 12:43:40 +02:00
Alexander A. Klimov
5c10fffa3b
Icinga DB: introduce Checkable#last_comment_id
2021-07-29 12:22:12 +02:00
Alexander A. Klimov
173a93c487
Split IcingaDB#SendStatusUpdate(), separate stream and history
2021-07-29 12:22:12 +02:00
Alexander Aleksandrovič Klimov
5923950e61
Merge pull request #8919 from Icinga/bugfix/idb-del-state-chksm
...
Icinga DB: HDEL also icinga:checksum:*:state, not only icinga:*:state
2021-07-29 11:08:33 +02:00
Julian Brost
929ebd0f6c
IcingaDB: start initial sync after all child connections are established
...
Icinga started the initial config sync right after the first Redis connection
was established. If any other connections would take longer to connect than
when it's first needed, queries were discarded.
2021-07-28 15:27:32 +02:00
Julian Brost
a50120c399
IcingaDB: start parent connection after children are initialized
...
The loop in the connected callback of the parent connection uses m_Rcons which
previously was only initialized after that connection was already started.
2021-07-28 15:27:20 +02:00
Julian Brost
f4b2bbc7af
Merge pull request #8940 from Icinga/bugfix/redisconnection-reset-callback
...
RedisConnection: copy callback before calling it
2021-07-28 15:19:26 +02:00
Julian Brost
9d5ae0f6fa
Merge pull request #8899 from Icinga/feature/icingadb-connect_timeout
...
Introduce IcingaDB#connect_timeout
2021-07-28 13:52:00 +02:00
Julian Brost
4c7199fd7d
RedisConnection: copy callback before calling it
...
This allows the callback to call RedisConnection::SetConnectedCallback() to set
another callback for this connection. This sets m_ConnectedCallback and thereby
destroys the std::function while it's running resulting in undefined behavior.
By operating on a copy, m_ConnectedCallback can be set without affecting the
currently running callback.
2021-07-28 11:34:17 +02:00
Noah Hilverling
ff2abaa687
Merge pull request #8917 from Icinga/bugfix/idb-state-del-prio
...
Icinga DB: HDEL from *:state with same prio as HSET
2021-07-28 11:08:10 +02:00
Alexander A. Klimov
0919df5aa1
Introduce IcingaDB#connect_timeout
2021-07-27 21:59:09 +02:00
Alexander Aleksandrovič Klimov
9169c805a8
Merge pull request #8933 from Icinga/bugfix/icinga-db-only-start-multiple-redis-connections-after-the-first-one-succeeded-8920
...
Icinga DB: only start multiple Redis connections after the first one succeeded
2021-07-27 21:52:21 +02:00
Alexander Aleksandrovič Klimov
4d2f694805
Merge pull request #8897 from Icinga/feature/icingadb-pass-db
...
RedisConnection: AUTH and SELECT
2021-07-27 21:51:46 +02:00
Alexander Aleksandrovič Klimov
2d75bbd8ed
Merge pull request #8915 from Icinga/bugfix/icingadb-prio-state
...
Icinga DB: priorize state > config
2021-07-27 20:22:26 +02:00
Noah Hilverling
dcb5fcc7ba
Merge pull request #8923 from Icinga/bugfix/idb-del-icinga-nextupdate-
...
Icinga DB: DEL icinga:nextupdate:* along with the other keys to delete
2021-07-27 19:05:43 +02:00
Noah Hilverling
07cb6cd1cb
Merge pull request #8930 from Icinga/bugfix/wq-balance
...
WorkQueue#ParallelFor(): optionally don't pre-glue items together to chunks of different size
2021-07-27 19:05:26 +02:00
Noah Hilverling
07145d2e61
Merge pull request #8913 from Icinga/feature/remove-child-downtimes
...
API Action "remove-downtime": Also remove child downtimes
2021-07-27 18:02:15 +02:00
Alexander A. Klimov
e45b43a4d9
Icinga DB: only start multiple Redis connections after the first one succeeded
...
refs #8920
2021-07-27 12:21:04 +02:00
Alexander A. Klimov
e1e8ec2ea2
RedisConnection: AUTH and SELECT
...
... or PING to trigger NOAUTH.
2021-07-27 12:05:27 +02:00
Alexander A. Klimov
fcda3a7283
Icinga DB: HDEL also icinga:checksum:*:state, not only icinga:*:state
...
... as they belong together.
2021-07-26 17:35:56 +02:00
Alexander A. Klimov
392fd8a75c
Icinga DB: HDEL from *:state with same prio as HSET
...
... to ensure the right modifications order per key.
2021-07-26 17:30:38 +02:00