Commit Graph

12836 Commits

Author SHA1 Message Date
Julian Brost 4ade4c757b IcingaDB: write new environment to icinga:stats stream 2021-11-05 14:14:37 +01:00
Julian Brost 525dd50859 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-05 14:14:37 +01:00
Julian Brost 6cd3a483a0 tlsutility: move hex encoding into a separate function BinaryToHex 2021-11-05 14:14:37 +01:00
Julian Brost f976e351f4
Merge pull request #9044 from Icinga/bugfix/idb-dump-buf-lost
Icinga DB init. dump: flush both buffered states and state checksums
2021-11-04 12:26:28 +01:00
Julian Brost 6b3a2ee429
Merge pull request #9029 from Icinga/feature/icingadb-history-deterministic-ids
Icinga DB: make icinga:history:stream:*#event_id deterministic
2021-11-03 12:31:21 +01:00
Alexander A. Klimov 0ff7d0a06e Icinga DB: raise icinga:schema 1 -> 2 2021-11-02 15:00:55 +01:00
Alexander A. Klimov b1714a10c2 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-02 15:00:03 +01:00
Alexander A. Klimov 5c44365c4e 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-02 15:00:03 +01:00
Alexander A. Klimov c2422c56fe 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-02 15:00:03 +01:00
Christian Gut b5132a59ef
check_ssl_cert: support --ignore-tls-renegotiation (#9042)
* check_tls_cert: support  --ignore-tls-renegotiation

Extend template, so we can support --ignore-tls-renegotiation

* Update docs
2021-11-02 12:05:30 +01:00
Alexander Aleksandrovič Klimov f5f8ccb1f4
Merge pull request #9020 from Icinga/feature/icingaeb-schema-version
Icinga DB: publish Redis schema version via XADD icinga:schema
2021-10-25 13:21:37 +02:00
Alexander A. Klimov d8b4768471 Icinga DB init. dump: flush both buffered states and state checksums
not to dump x states, but only x - (x % bulk) state checksums.
2021-10-21 13:49:24 +02:00
Noah Hilverling a7cbf50674
Merge pull request #9030 from Icinga/Al2Klimov-patch-1
Icinga DB: don't include checkable types in history IDs
2021-10-19 14:52:43 +02:00
Alexander Aleksandrovič Klimov f6b26de20d
Merge pull request #9040 from Icinga/bugfix/icinga-db-runtime-state
Icinga DB: stream runtime state updates only to icinga:runtime:state
2021-10-19 14:40:46 +02:00
Alexander A. Klimov 4b0688047e Icinga DB: stream runtime state updates only to icinga:runtime:state
... where they belong to, not to icinga:runtime.
2021-10-18 18:11:30 +02:00
Alexander Aleksandrovič Klimov a7a2f4bed0
Merge pull request #9032 from Napsty/nrpe-payload-size
Add ITL config option for different NRPE payload size/length
2021-10-12 18:11:31 +02:00
Napsty 195fae6113 Add ITL config option for different NRPE payload size/length 2021-10-12 08:29:07 +02:00
Alexander Aleksandrovič Klimov e0339c387b
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-10-11 16:14:30 +02:00
Alexander Aleksandrovič Klimov 30a5ba3961
Merge pull request #9002 from Icinga/feature/icingadb-remove-usernotification-stream
Icinga DB: remove usernotification history stream
2021-10-08 19:16:26 +02:00
Alexander Aleksandrovič Klimov 4190d58668
Merge pull request #9011 from Icinga/bugfix/icingadb-remove-zone-parent-key
Icinga DB: Remove unused Redis key 'icinga:zone:parent'
2021-10-08 17:19:51 +02:00
Alexander Aleksandrovič Klimov ff60c1af37
Merge pull request #8895 from Icinga/bugfix/typo-8766
Fix typo
2021-10-08 17:19:20 +02:00
Noah Hilverling 750e64b974 Icinga DB: Remove unused Redis key 'icinga:zone:parent' 2021-10-08 12:06:14 +02:00
Alexander A. Klimov 3bf180a341 Fix typo
refs #8766
2021-10-08 10:27:35 +02:00
Julian Brost 544b9989f0
Merge pull request #8947 from Icinga/Al2Klimov-patch-1
Typo
2021-10-07 18:07:00 +02:00
Alexander Aleksandrovič Klimov 3d5034c8cc
Merge pull request #8924 from peteeckel/fix/check-postgres-itl-8922
[ITL] Added --datadir, --language and --perflimit for check_postgres
2021-10-04 10:50:50 +02:00
Peter Eckel 688de9dce7 [ITL] Added --datadir, --language and --perflimit for check_postgres 2021-10-01 19:53:53 +02:00
Alexander Aleksandrovič Klimov 4dd00c9eac
Merge pull request #9025 from Icinga/probot/update-authors/master/ed50a9d5295d0ceb26abb8155e28f6260b314ee0
Update AUTHORS
2021-10-01 17:43:46 +02:00
icinga-probot[bot] b267a253bd
Update AUTHORS 2021-10-01 15:42:53 +00:00
Alexander Aleksandrovič Klimov ed50a9d529
Merge pull request #9001 from Icinga/feature/icingadb-add-user-ids-to-notification-history
Icinga DB: Write IDs of notified users into notification history stream
2021-10-01 17:42:48 +02:00
Alexander Aleksandrovič Klimov a866b4211f
Merge pull request #9006 from Icinga/enhance-notification-end-time-docs
Doc: Enhance notification `end` time docs
2021-10-01 17:42:30 +02:00
Alexander Aleksandrovič Klimov 63fca8faa1
Merge pull request #9000 from haxtibal/feature/journaldlogger
JournaldLogger - log to systemd journal
2021-10-01 17:42:10 +02:00
RincewindsHat eb05418116
Update sar-perf origin (#8514) 2021-10-01 17:41:23 +02:00
Peter Eckel fd9f69b3a2
Make http_header repeatable (fixes #8573) (#8574)
* Made http_header repeatable (fixes #8573)

* Removed explicit repeat_key option for a default setting

* Fixed closing backtick
2021-10-01 17:40:38 +02:00
Alexander Aleksandrovič Klimov 0c22a84a01
Merge pull request #8927 from peteeckel/fix/check-ssl-cert-itl-8925
[ITL] Added --proxy for check_ssl_cert
2021-10-01 17:38:14 +02:00
Alexander Aleksandrovič Klimov fe363eafcd
Merge pull request #8929 from peteeckel/fix/check-postgresql-itl-8928
[ITL] Added the option to set PGCONTROLDATA for check_postgres
2021-10-01 17:37:34 +02:00
Alexander A. Klimov 0182d793ac 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-10-01 15:58:57 +02:00
Alexander Aleksandrovič Klimov 8a704fb0f0
Merge pull request #9015 from Icinga/probot/update-authors/master/13a2490bda59efa692dc059302a300db942a36d4
Update AUTHORS
2021-09-28 09:57:44 +02:00
icinga-probot[bot] cfd871914b
Update AUTHORS 2021-09-27 14:34:05 +00:00
Alexander Aleksandrovič Klimov 13a2490bda
Merge pull request #9013 from RincewindsHat/correct_some_typos
Correct typos in documentation and examples
2021-09-27 16:33:59 +02:00
Alexander Aleksandrovič Klimov 6cf0673c11
Merge pull request #9010 from Icinga/feature/icingadb-scheduling_source
Make CheckResult#scheduling_source available to Icinga DB
2021-09-27 16:31:16 +02:00
RincewindsHat 767464f947 Correct typos in documentation and examples 2021-09-24 14:33:44 +02:00
Tobias Deiminger eb8f67335e Define SD_JOURNAL_SUPPRESS_LOCATION more locally
add_definitions would set SD_JOURNAL_SUPPRESS_LOCATION for all targets
in directory and sub-directories. However, another future target might
want the opposite, so define it as local as possible to journaldlogger.cpp.

To make this work, we must take journaldlogger.cpp out of the unity
build, because all files from a unity of share compiler definitions.
2021-09-23 16:08:39 +02:00
Tobias Deiminger 272191840f Update documentation for JournaldLogger 2021-09-23 16:08:39 +02:00
Tobias Deiminger 1f13af957d Update nano and vim syntax for JournaldLogger 2021-09-23 16:08:39 +02:00
Tobias Deiminger 4d678fcef0 Add available feature journald.conf in /etc
Similar to the other loggers, add a predefined object JournaldLogger in
features-available that will log messages >= warning, with default facility
LOG_USER. It is disabled by default, and can be enabled with:
$ sudo icing2 feature enable journald
2021-09-23 16:08:39 +02:00
Tobias Deiminger 173caa42aa Add a JournaldLogger
As proposed in #8857, this adds a Logger subclass that writes structured
log messages via journald's native protocol by calling sd_journal_sendv.
The feature therefore depends on the systemd library. sd_journal_sendv is
available since the early days (systemd v38), so a version check is
probably superflous.

We add the following fields to each record:
- MESSAGE: The log message
- PRIORITY (aka severity): Numeric severity as in RFC5424 section 6.2.1
- SYSLOG_FACILITY: Numeric facility as in RFC5424 section 6.2.1
- SYSLOG_IDENTIFIER: If provided, use value from configuration.
  Else use systemd's default behaior, which is to determine the field
  by using libc's program_invocation_short_name, resulting in "icinga2".
- ICINGA2_FACILITY: Facility as in Log::Log(..., String facility, ...),
  e.g. "ApiListener"
- some more fields are added automatically by systemd

Fields are stored indexed, so we can do fast queries for certain field
values. Example:

$ journalctl -t icinga2 ICINGA2_FACILITY=ApiListener -n 5

Syslog compatiblity is ratained because good old tag, severity and facility
is stored along, and systemd can forward to syslog daemons.

See also https://systemd.io/JOURNAL_NATIVE_PROTOCOL/.
2021-09-23 16:08:11 +02:00
Alexander A. Klimov 755fc72a66 Make CheckResult#scheduling_source available to Icinga DB 2021-09-22 16:57:49 +02:00
Yonas Habteab b97d5a31d7 Doc: Enhance notification `end` time docs 2021-09-20 09:34:15 +02:00
Julian Brost a018151eaf
Merge pull request #9005 from Icinga/probot/sync-changelog/806a8cab06721f160544a8c15da2d9aaec55c30f
CHANGELOG.md: add v2.13.1
2021-09-17 12:11:41 +02:00
Noah Hilverling 48e8fe1c60 CHANGELOG.md: add v2.13.1 2021-09-17 10:10:14 +00:00