Noah Hilverling
950b78d8cd
Merge pull request #9088 from Icinga/bugfix/icingadb-log-queries-debug-level-2.13
...
Icinga DB: only log queries at debug level
2021-11-12 17:57:48 +01:00
Noah Hilverling
4fd1b153fa
IcingaDB::AddObjectDataToRuntimeUpdates(): Copy data before modifying
2021-11-12 17:55:47 +01:00
Noah Hilverling
6ddac83d81
Dictionary: Make sure underlaying map is ordered
2021-11-12 17:55:47 +01:00
Noah Hilverling
2d2b165a79
Icinga DB: Make sure object relationships are handled correctly
2021-11-12 17:55:47 +01:00
Julian Brost
3254ebd0be
Icinga DB: only log queries at debug level
2021-11-12 16:37:34 +01:00
Noah Hilverling
73d98cc2ff
Merge pull request #9083 from Icinga/bugfix/icingadb-improve-object-identifier-function-2.13
...
IcingaDB: Remove GetObjectIdentifiersWithoutEnv()
2021-11-12 13:04:07 +01:00
Noah Hilverling
65a39bfd27
Merge pull request #9085 from Icinga/bugfix/icingadb-prefix-command_id-2.13
...
IcingaDB: Prefix command_id with command type
2021-11-12 13:03:57 +01:00
Noah Hilverling
b55e924e8b
IcingaDB: Prefix command_id with command type
2021-11-12 10:19:18 +01:00
Noah Hilverling
d164d66808
IcingaDB: Remove GetObjectIdentifiersWithoutEnv()
...
Having the command type be a part of the command ID isn't needed anywhere. Removing this simplifies the way we generate IDs in general, because we don't need Prepend() anymore.
The command type was only needed to prevent ID collisions within the command_envvar and command_argument tables. Those tables have since been separated into {check,event,notification}command_envvar and {check,event,notification}command_argument tables.
2021-11-12 10:18:33 +01:00
Noah Hilverling
3fdcfaf0ca
Merge pull request #9082 from Icinga/feature/icingadb-environment-2.13
...
Icinga DB: decouple environment from Icinga 2 Environment constant
2021-11-12 09:56:18 +01:00
Julian Brost
9a5ba28e0c
Icinga DB: increase Redis schema version
...
PR #9036 introduces some incompatible changes to the Redis schema, most
importantly where Icinga DB has to read the environment from: now it has to use
a new top-level key of the icinga:stats message instead of a value in the
IcingaApplication part of that message.
2021-11-11 16:58:16 +01:00
Julian Brost
d3ec8a9ba8
IcingaDB: export environment_id via API
...
Primarily required for Icinga DB integration tests at the moment, but could
also be helpful in other situations.
2021-11-11 16:58:16 +01:00
Julian Brost
b98b951f85
IcingaDB: write new environment to icinga:stats stream
2021-11-11 16:58:16 +01:00
Julian Brost
42fc3cdcfc
IcingaDB: introduce a new environment ID derived from the CA public key
...
In order to avoid changes to the environment ID, it is now no longer derived
from the Environment constant but instead from the public key of the CA
certificate. This ensures that it is different between clusters by default, so
no additional changes have to be done to allow two clusters to use Icinga DB to
write into the same database.
To prevent the ID from changing when the CA certificate is replaced, it is also
persisted into the file /var/lib/icinga2/icingadb.env, so if that file exists,
it takes precedence over the CA certificate.
2021-11-11 16:58:16 +01:00
Julian Brost
1dcba7d127
tlsutility: move hex encoding into a separate function BinaryToHex
2021-11-11 16:58:16 +01:00
Noah Hilverling
e1dbfa1011
Merge pull request #9076 from Icinga/feature/icingadb-history-deterministic-ids-2.13
...
Icinga DB: make icinga:history:stream:*#event_id deterministic
2021-11-11 16:57:10 +01:00
Noah Hilverling
20828dc6e4
Merge pull request #9084 from Icinga/add-downtime-duration-and-service-state-host-id-streams-2.13
...
Icinga DB: Add `downtime.duration` & `service_state.host_id` to Redis
2021-11-11 15:27:52 +01:00
Noah Hilverling
b536caa4dc
Merge pull request #9081 from Icinga/feature/sync-checkables-states-first-2.13
...
Icinga DB: sync checkables along with their states first
2021-11-11 15:27:42 +01:00
Noah Hilverling
c05866686f
Merge pull request #9079 from Icinga/bugfix/idb-dump-buf-lost-2.13
...
Icinga DB init. dump: flush both buffered states and state checksums
2021-11-11 15:27:35 +01:00
Noah Hilverling
bf46fc447f
Merge pull request #9080 from Icinga/feature/scheduled_by-2.13
...
Icinga DB: introduce icinga:history:stream:downtime#scheduled_by
2021-11-11 15:27:28 +01:00
Noah Hilverling
88a16ff752
Merge pull request #9078 from Icinga/bugfix/icingadb-zone-parent-2.13
...
IcingaDB: actually write parent to parent_id of zones
2021-11-11 14:18:40 +01:00
Noah Hilverling
46aa8c9e65
Merge pull request #9077 from Icinga/bugfix/icingadb-program-start-milliseconds-2.13
...
Icinga DB: set value in milliseconds for program_start in stats/heartbeat
2021-11-11 12:24:11 +01:00
Yonas Habteab
ca2f54352f
Icinga DB: Add service_state.host_id
to Redis
2021-11-11 10:34:24 +01:00
Yonas Habteab
f470c52819
Icinga DB: Add downtime.duration
& scheduled_duration
to Redis
2021-11-11 10:34:24 +01:00
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
Henrik Triem
052e5e7ca2
Merge pull request #9075 from Icinga/bugfix/icingadb-remove-zone-parent-key-2.13
...
Icinga DB: Remove unused Redis key 'icinga:zone:parent'
2021-11-10 15:35:56 +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