Commit Graph

324 Commits

Author SHA1 Message Date
Alexander A. Klimov f5abec20cf Icinga DB: serialize icinga:config:checkcommand:argument#value and #set_if as expected
I.e. keep the serializations as simple as possible:

null     => null
true     => true
42.0     => 42
"foobar" => foobar
{{42}}   => Object of type 'Function'

(["foobar"] and {"foo"="bar"} can't occur there.)
2021-04-30 15:48:47 +02:00
Noah Hilverling aca8d063dc Icinga DB: Change redis key prefix to 'icinga:*' 2021-04-27 21:27:46 +02:00
Eric Lippmann b08b30ee80
Merge pull request #8684 from Icinga/feature/icingadb-signals-for-all-types
IcingaDB: Add dump signals for type dependencies and global keys and change signal pattern
2021-04-27 21:26:52 +02:00
Noah Hilverling 60412dd991 Icinga DB: Add dump signals for type dependencies and global keys 2021-04-27 12:32:14 +02:00
Alexander Aleksandrovič Klimov 7f5225ecaa
Merge pull request #8706 from Icinga/bugfix/icingadb-endpoint-zone
Icinga DB: dump the correct icinga:config:endpoint#zone_id
2021-04-26 11:31:51 +02:00
Alexander Aleksandrovič Klimov ca9ce92b69
Merge pull request #8698 from Icinga/feature/icingadb-cache-environment-id
Icinga DB: cache environment ID instead of recomputing it every time
2021-03-26 17:16:42 +01:00
Alexander A. Klimov 7dcf48f707 Icinga DB: dump the correct icinga:config:endpoint#zone_id 2021-03-26 13:53:31 +01:00
Noah Hilverling 5c8b32618c RedisConnection::WriteRESP: Use one asio::async_write instead of many 2021-03-24 13:14:01 +01:00
Julian Brost 41f7124692 Icinga DB: cache environment ID instead of recomputing it every time 2021-03-23 17:09:32 +01:00
Alexander A. Klimov 31dacb8390 IcingaDB#UpdateAllConfigObjects(): don't modify map concurrently 2021-03-08 18:11:24 +01:00
Julian Brost a4cf81194a
Merge pull request #8650 from Icinga/feature/icingadb-delta
Icinga DB: re-insert only changed object attributes
2021-03-08 15:11:21 +01:00
Alexander A. Klimov 4eddac0e64 Icinga DB: re-insert only changed object attributes 2021-03-04 17:29:39 +01:00
Alexander Aleksandrovič Klimov 618c778430
Merge pull request #8649 from Icinga/bugfix/icingadb-deduplicate-cvs
Icinga DB: HMSET the same fields only once
2021-03-03 16:57:27 +01:00
Alexander A. Klimov ed57d31400 Icinga DB: HMSET the same fields only once 2021-02-24 13:37:36 +01:00
Alexander A. Klimov d4a91ec50d Icinga DB: don't write all types 2021-02-17 12:41:45 +01:00
Alexander Aleksandrovič Klimov ca52366a61
Merge pull request #8602 from Icinga/bugfix/icingadb-activation-priority
Delay start of IcingaDB until most config objects are activated
2021-01-28 10:01:37 +01:00
Alexander Aleksandrovič Klimov b1719883a3
Merge pull request #8604 from Icinga/bugfix/icingadb-initial-sync-delay
IcingaDB: start initial dump in callback instead of timer
2021-01-21 13:47:12 +01:00
Julian Brost 2d080f14eb IcingaDB: start initial dump in callback instead of timer
Previously, the initial config dump was started in a timer executed
every 15 seconds. During the first execution of the timer, the Redis
connection is typically not established yet. Therefore, this delayed the
initial sync by up to 15 seconds.

This commit instead triggers the sync from a callback that is executed
after the connection is successfully established.

The timer is removed completely. On first glance, it looks like it would
ensure that a lost connection is reestablished, but this is handled
internally by RedisConnection. After the config has been dumped once,
that timer wouldn't ever attempt a reconnect anyways.
2021-01-20 09:31:27 +01:00
Julian Brost 174f7f75a8 IcingaDB: wait for queries to be executed in inital sync
This delays the log message stating that the initial dump is done until
all queries are actually done and now logs a meaningful duration. In
addition, this delays the return of the function and therefore when
state variables are updated by the caller.
2021-01-19 17:14:42 +01:00
Julian Brost 509db4ab94 Delay start of IcingaDB until most config objects are activated
This commit sets the activation priority if IcingaDB objects to 100 (the
same value as IDO uses) so that it get's activated after most regular
config objects (hosts, services, ...).

Before (note how Icinga 2 continues to active objects for over a minute
after IcingaDB is started and thinks the initial dump is done):

    [2021-01-19 08:33:19 +0000] information/IcingaDB: 'icingadb' started.
    [2021-01-19 08:34:02 +0000] information/IcingaDB: Initial config/status dump finished in 28.247 seconds.
    [2021-01-19 08:35:49 +0000] information/ConfigItem: Activated all objects.

After (now activation of objects is done right after IcingaDB is
started, as it's one of the last objects to be activated):

    [2021-01-19 08:39:01 +0000] information/IcingaDB: 'icingadb' started.
    [2021-01-19 08:39:02 +0000] information/ConfigItem: Activated all objects.
    [2021-01-19 08:39:38 +0000] information/IcingaDB: Initial config/status dump finished in 21.6606 seconds.
2021-01-19 09:45:47 +01:00
Yonas Habteab 5b0bbd6351 IcingaDB: Check whether or not cr is nullptr 2021-01-18 11:38:31 +01:00
Alexander A. Klimov fc72cca70e Icinga DB: don't use the work queue for publishing stats 2020-05-15 11:17:25 +02:00
Alexander A. Klimov 35f25e99b4 IcingaDB::SerializeState(): include whether an ack is sticky 2020-04-20 14:53:55 +02:00
Noah Hilverling 595ffc438e Icinga DB - Flapping history: Add percent_state_change_start/end 2020-03-10 14:44:08 +01:00
Noah Hilverling 5ec31aed14 Downtime, Comment, Notification: Add host_id, if object_type is service 2020-03-09 10:50:02 +01:00
Alexander A. Klimov ff0efbc2a2 Drop IcingaDB#HandleEvents() 2020-03-04 14:37:17 +01:00
Alexander A. Klimov 54d555bd92 Drop IcingaDB#SendEvent() 2020-03-04 14:36:43 +01:00
Alexander A. Klimov 867481de7c Connect IcingaDB::StateChangeHandler to Checkable::OnAcknowledgementSet instead of calling it in IcingaDB#SendEvent() 2020-03-04 14:36:07 +01:00
Alexander A. Klimov efa548fbdf Connect IcingaDB::UpdateState to Checkable::OnNewCheckResult instead of calling it in IcingaDB#SendEvent() 2020-03-04 14:34:43 +01:00
Alexander A. Klimov 0d58f87b37 IcingaDB: make signal handlers synchronous
refs #7885
2020-03-04 11:09:35 +01:00
Michael Insel 5930d640e4 IcingaDB: Fix enumeral mismatch compiler warnings
This fixes 3 enumeral mismatch compiler warnings when building the
IcingaDB target.
2020-02-10 18:56:11 +01:00
Noah Hilverling b77bc7b963 IcingaDB: Fix last_update 2020-01-29 14:43:29 +01:00
Noah Hilverling 0d28ef5abe IcingaDB::UpdateState: Check for Redis connection before calling FireAndForgetQuery() 2020-01-17 13:53:05 +01:00
Alexander Aleksandrovič Klimov f11cccf874
Merge pull request #7760 from Icinga/bugfix/icingadb-manually-rescheduling-a-check-does-not-update-next_update-and-next_check-7707
IcingaDB: Fix rescheduling a check not always updating state in Redis
2020-01-16 11:58:28 +01:00
Noah Hilverling cbe1c181a1 IcingaDB: Fix rescheduling check not always updating state in Redis
fixes #7707
2020-01-16 10:51:56 +01:00
Michael Friedrich 8f5375d2bb Use IoEngine::Spawn wrapper in RedisConnection class
This avoids multiple locations for `asio::spawn` calls.
2020-01-16 09:53:24 +01:00
Noah Hilverling 6575ce920e
Merge pull request #7721 from Icinga/bugfix/icingadb-pending
IcingaDB: suppress state sync until config sync finished
2020-01-08 17:30:22 +01:00
Noah Hilverling 275ab08303 IcingaDB - Runtime updates: Use one pub/sub channel per config object type 2020-01-07 16:40:29 +01:00
Alexander A. Klimov f6f7d9b635 IcingaDB: suppress state sync until config sync finished 2019-12-18 13:41:56 +01:00
Michael Friedrich 387c2c8b79
Merge pull request #7717 from Icinga/bugfix/redisconnection-shared_ptr
RedisConnection: replace std::shared_ptr<T> with Shared<T>::Ptr
2019-12-18 13:32:16 +01:00
Michael Friedrich cbbff6b37d
Merge pull request #7716 from Icinga/bugfix/redisconnection-long-logs
RedisConnection: shorten log messages
2019-12-18 13:31:51 +01:00
Alexander A. Klimov de5b3eb2c7 RedisConnection: replace std::shared_ptr<T> with Shared<T>::Ptr 2019-12-17 12:13:30 +01:00
Alexander A. Klimov 955b612703 RedisConnection: shorten log messages 2019-12-17 11:49:54 +01:00
Alexander A. Klimov b1cc0cd767 Document RedisConnection 2019-12-17 11:44:00 +01:00
Alexander A. Klimov c6ea9bc7fe IcingaDB: update icinga:nextupdate:* on Checkable#next_check changes
refs #7707
2019-12-10 16:11:51 +01:00
Noah Hilverling 77e02031f9
Merge pull request #7690 from Icinga/feature/flapping-acknowledgement-start-time-7689
IcingaDB: include consistent IDs, start time and end time in icinga:history:stream:{flapping,acknowledgement}
2019-12-10 14:49:17 +01:00
Noah Hilverling ee40fedb2a
Merge pull request #7700 from Icinga/bugfix/icingadb-don-t-hash-hashes-7692
IcingaDB: don't hash hashes
2019-12-10 13:39:12 +01:00
Alexander A. Klimov 78189d70ef IcingaDB: don't hash hashes
refs #7692
2019-12-10 11:23:05 +01:00
Alexander A. Klimov d69cb676a7 Introduce IcingaDB#GetObjectIdentifiersWithoutEnv()
refs #7692
2019-12-10 11:22:35 +01:00
Alexander A. Klimov 4f68cfd299 IcingaDB: include consistent IDs, start time and end time in icinga:history:stream:{flapping,acknowledgement}
refs #7689
2019-12-10 10:44:26 +01:00
Alexander A. Klimov 829d07aefe Introduce Checkable#acknowledgement_last_change
refs #7689
2019-12-10 10:44:23 +01:00
Noah Hilverling e8f352f4d7 IcingaDB history: Add cancelled_by & removed_by to downtime & comment history 2019-12-09 10:30:52 +01:00
Noah Hilverling f0b8892e4a
Merge pull request #7676 from Icinga/feature/icingadb-localendpoint-id
IcingaDB#GetStats(): add endpoint_id to IcingaApplication
2019-12-06 16:59:36 +01:00
Noah Hilverling 5e23414197
Merge pull request #7699 from Icinga/bugfix/icingadb-hash-arrays-7691
Get rid of IcingaDB#CalculateCheckSum*()
2019-12-06 16:37:24 +01:00
Alexander A. Klimov e109063333 IcingaDB#GetStats(): add endpoint_id to IcingaApplication 2019-12-06 15:52:47 +01:00
Alexander A. Klimov 783586978f Get rid of IcingaDB#CalculateCheckSumProperties()
refs #7691
2019-12-06 11:25:41 +01:00
Alexander A. Klimov 9a678dce8e Get rid of IcingaDB#CalculateCheckSumVars()
refs #7691
2019-12-06 11:24:33 +01:00
Alexander A. Klimov b5ada44330 Get rid of IcingaDB#CalculateCheckSumMetadata()
refs #7691
2019-12-06 11:23:13 +01:00
Alexander A. Klimov c91154a14c Get rid of IcingaDB#CalculateCheckSumString()
refs #7691
2019-12-06 10:54:11 +01:00
Alexander A. Klimov 6fc4efccc7 Get rid of IcingaDB#CalculateCheckSumArray()
refs #7691
2019-12-06 10:47:48 +01:00
Alexander Aleksandrovič Klimov 202e90b626
Merge pull request #7693 from Icinga/feature/icingadb-remove-unnecessar-service-host-ids
IcingaDB: Remove unnecessary service_/host_ids
2019-12-05 15:04:52 +01:00
Noah Hilverling 5b8b777691 IcingaDB: Add timestamp to stats stream 2019-12-05 10:34:41 +01:00
Noah Hilverling 71ef1de964
Merge pull request #7667 from Icinga/feature/icingadb-acks-history
IcingaDB: populate icinga:history:stream:acknowledgement
2019-12-05 09:20:36 +01:00
Noah Hilverling 3e832900f6 IcingaDB: Remove unnecessary service_/host_ids 2019-12-05 07:35:05 +01:00
Alexander A. Klimov 04e13e784d IcingaDB: populate icinga:history:stream:acknowledgement 2019-12-04 15:02:14 +01:00
Noah Hilverling 92e51a3f87
Merge pull request #7684 from Icinga/bugfix/is_handled-host-down-7673
IcingaDB: update service state on Host#problem change
2019-12-04 14:43:09 +01:00
Alexander Aleksandrovič Klimov 5d40a71f8b
Merge pull request #7669 from Icinga/feature/icingadb-notification-recipients
IcingaDB: Add notification recipients
2019-12-04 11:00:53 +01:00
Noah Hilverling ea6e937760 IcingaDB: Add notification recipients 2019-12-04 10:10:36 +01:00
Alexander A. Klimov 5c45c198ff IcingaDB#SerializeState(): correct Checkable#is_{problem,handled}
refs #7673
2019-12-03 17:44:48 +01:00
Alexander A. Klimov 798c56b809 IcingaDB: update service state on Host#problem change
refs #7673
2019-12-03 17:37:51 +01:00
Alexander A. Klimov ea5403a55c Extend Checkable::OnAcknowledgementCleared by removedBy 2019-12-03 17:00:54 +01:00
Noah Hilverling b84ceccfb7
Merge pull request #7662 from Icinga/feature/icingadb-overdue
IcingaDB: populate icinga:nextupdate:*
2019-12-03 15:38:17 +01:00
Noah Hilverling 2af6f24fc4
Merge pull request #7678 from Icinga/feature/icingadb-stats-stream
IcingaDB#PublishStats(): make icinga:stats a stream
2019-12-03 12:53:40 +01:00
Noah Hilverling 355973d600
Merge pull request #7656 from Icinga/bugfix/icingadb-command-arg-value-null
IcingaDB: don't always set icinga:config:*command:{argument,envvar}#value
2019-12-03 12:53:03 +01:00
Alexander A. Klimov 416e1d72bf IcingaDB#PublishStats(): make icinga:stats a stream 2019-12-03 12:01:13 +01:00
Alexander A. Klimov c01c22ae76 IcingaDB: don't always set icinga:config:*command:{argument,envvar}#value 2019-12-03 11:57:21 +01:00
Alexander A. Klimov df7184ad64 IcingaDB: populate icinga:nextupdate:* 2019-12-02 17:21:03 +01:00
Alexander A. Klimov e391c0e7b5 RedisConnection: introduce extensible priorities 2019-12-02 17:21:00 +01:00
Alexander Aleksandrovič Klimov d2d48a2120
Merge pull request #7674 from Icinga/feature/icingadb-remove-unused-checksums
IcingaDB: Remove unused checksums
2019-12-02 16:38:28 +01:00
Noah Hilverling 1b60419a1b
Merge pull request #7677 from Icinga/bugfix/icingadb-add-ack-comment
IcingaDB#SendAddedComment(): suppress ack comments
2019-12-02 16:09:25 +01:00
Alexander A. Klimov e7aa021bd8 IcingaDB#SendAddedComment(): suppress ack comments 2019-12-02 16:06:11 +01:00
Noah Hilverling 8b6c3bdc92
Merge pull request #7660 from Icinga/bugfix/icingadb-subscription
IcingaDB: get rid of icinga:{subscription,event}*
2019-12-02 10:31:53 +01:00
Noah Hilverling 66eafd6ad2 IcingaDB: Remove unused checksums 2019-12-02 09:28:04 +01:00
Alexander A. Klimov 10c1d0e4c8 IcingaDB: don't always set Comment#expire_time 2019-11-27 15:58:19 +01:00
Noah Hilverling ce4409d1d2
Merge pull request #7657 from Icinga/feature/icingadb-host_id
IcingaDB: always set *#host_id
2019-11-27 14:38:22 +01:00
Noah Hilverling 0652aa0a6f
Merge pull request #7652 from Icinga/bugfix/icingadb-output-null
IcingaDB#SendStatusUpdate(): don't always set icinga:history:stream:state#{,long_}output
2019-11-27 14:29:26 +01:00
Alexander A. Klimov ba6550dc58 IcingaDB: get rid of icinga:{subscription,event}* 2019-11-27 11:42:09 +01:00
Alexander A. Klimov 0671d19e12 Notification_history: Rename event_time to send_time 2019-11-26 18:13:31 +01:00
Alexander A. Klimov 1bee5425b9 IcingaDB: always set icinga:history:stream:*#host_id 2019-11-26 17:36:14 +01:00
Noah Hilverling ed1cede0a7
Merge pull request #7646 from Icinga/feature/remove-comment-author
/v1/actions/remove-comment: let users specify themselves
2019-11-26 16:07:09 +01:00
Noah Hilverling 8a14f0e6f7
Merge pull request #7643 from Icinga/bugfix/icingadb-recover
IcingaDB: handle Redis restarts
2019-11-26 16:05:04 +01:00
Noah Hilverling a98c5e965c
Merge pull request #7645 from Icinga/feature/remove-downtime-author
/v1/actions/remove-downtime: let users specify themselves
2019-11-26 15:41:44 +01:00
Alexander A. Klimov 95f13d864f IcingaDB#SendStatusUpdate(): don't always set icinga:history:stream:state#{,long_}output 2019-11-26 14:28:14 +01:00
Alexander A. Klimov e522db20b1 RedisConnection#Connect(): don't give up 2019-11-26 14:16:39 +01:00
Alexander A. Klimov 407d6c0219 IcingaDB#SendStatusUpdate(): avoid CheckResult::Ptr(nullptr)->GetCheckSource() 2019-11-25 17:15:47 +01:00
Alexander A. Klimov d84efecb62 /v1/actions/remove-comment: let users specify themselves 2019-11-21 15:53:40 +01:00
Alexander A. Klimov a361bf716e /v1/actions/remove-downtime: let users specify themselves 2019-11-21 15:48:55 +01:00
Alexander A. Klimov e7ce71095a IcingaDB: handle Redis restarts 2019-11-21 12:55:01 +01:00
Noah Hilverling c8935bf14f IcingaDB: Update Redis port to use Icinga-Redis 2019-11-21 09:59:21 +01:00
Noah Hilverling b6db34747a IcingaDB: Remove redundant last_{hard/soft}_state 2019-11-14 10:57:11 +01:00
Noah Hilverling fa892b613d
Merge pull request #7608 from Icinga/bugfix/icinga-history-stream-downtime
IcingaDB: avoid duplicates in icinga:history:stream:downtime
2019-11-12 11:40:45 +01:00
Noah Hilverling 4ea236aa64 IcingaDB: Fix state on unchecked objects 2019-11-11 15:28:16 +01:00
Alexander A. Klimov 1e2739aed6 IcingaDB::NotificationSentToAllUsersHandler(): copy set once, not N*(1+M) times 2019-11-07 17:23:48 +01:00
Noah Hilverling 42f959874e IcingaDB: Add user notification history 2019-11-07 15:57:31 +01:00
Alexander A. Klimov 592872a6c3 IcingaDB: avoid duplicates in icinga:history:stream:downtime 2019-11-06 10:41:54 +01:00
Alexander A. Klimov 4e8584ee9e IcingaDB: correct icinga:history:stream:state#{,last_}soft_state and icinga:history:stream:notification#state for hosts 2019-11-04 16:40:04 +01:00
Alexander A. Klimov 6c7a9eb651 IcingaDB#SendStatusUpdate(): add icinga:history:stream:state#previous_soft_state 2019-11-04 12:59:57 +01:00
Michael Friedrich 9d9804d50a Styleguide for IcingaDB 2019-11-02 18:01:31 +01:00
Michael Friedrich 631a4ee9fa Fix header guards 2019-11-02 17:24:34 +01:00
Michael Friedrich 904f2ce7d4 IcingaDB: Silence some developer logging 2019-11-02 15:47:51 +01:00
Michael Friedrich 36d18ed23a IcingaDB: Log where we are connecting to 2019-11-02 15:47:46 +01:00
Michael Friedrich 9235246985 Fix rebase against master branch 2019-11-02 14:18:20 +01:00
Michael Friedrich 61d9130dd0 Fix Copyright headers 2019-11-02 14:00:24 +01:00
Michael Friedrich f9b3e88bbb Fix non-unity builds 2019-11-02 14:00:24 +01:00
Noah Hilverling b65e5f5547 IcingaDB/Comment: Add is_sticky 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 071a1489aa PUBLISH to icinga:stats with high priority
refs #57
2019-11-02 14:00:24 +01:00
Alexander A. Klimov 67909210a6 RedisConnection: introduce high-priority queue
refs #57
2019-11-02 14:00:24 +01:00
Noah Hilverling 91ecfc35cf Ensure that execution_time never goes below 0 2019-11-02 14:00:24 +01:00
Noah Hilverling 4e43c766ca Improve CommentHistory 2019-11-02 14:00:24 +01:00
Noah Hilverling 6a7e83a5e6 Improve Downtime & DowntimeHistory 2019-11-02 14:00:24 +01:00
Noah Hilverling 0aa885573d Fix notification history not setting text if notification is triggered by checkresult 2019-11-02 14:00:24 +01:00
Noah Hilverling 4a43dd1ce6 Rename event_type state to state_change 2019-11-02 14:00:24 +01:00
Noah Hilverling 5eb1c42a28 History: Use same names for event_time and event_type 2019-11-02 14:00:24 +01:00
Alexander Aleksandrovič Klimov 13ab7eb609 Rename redis to icingadb 2019-11-02 14:00:24 +01:00