Commit Graph

5248 Commits

Author SHA1 Message Date
Michael Friedrich 87248f703c
Merge pull request #7632 from Icinga/feature/dsl-get-templates
DSL: Add get_template{,s}
2019-11-15 14:42:48 +01:00
Alexander A. Klimov 5c347ef7bd DSL: introduce x?y:z 2019-11-15 13:38:01 +01:00
Michael Friedrich b3eb9c6a07
Merge pull request #7439 from Icinga/feature/timeperiod-seconds
LegacyTimePeriod: support specifying seconds
2019-11-15 13:02:05 +01:00
Michael Friedrich b1787883f7
Merge pull request #7535 from tigercomputing/Icinga/feature/config-stage-activate-parameter
API /v1/config/stages 'activate' parameter
2019-11-15 12:58:03 +01:00
Michael Friedrich 38080405df
Merge pull request #7528 from Icinga/bugfix/api-put-error-handling
API: Handle permission exceptions soon enough, returning 404
2019-11-15 11:53:59 +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
Michael Friedrich 1cda421bad DSL: Add get_template{,s}
Signed-off-by: Michael Friedrich <michael.friedrich@icinga.com>
2019-11-08 11:13:26 +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 04dfbb07ce Rename ICINGA2_WITH_REDIS to ICINGA2_WITH_ICINGADB 2019-11-02 14:00:24 +01:00
Alexander Aleksandrovič Klimov 13ab7eb609 Rename redis to icingadb 2019-11-02 14:00:24 +01:00
Alexander Aleksandrovič Klimov f51454af65 git ls-files -z |xargs -0 perl -pi -e 's/RedisWriter/IcingaDB/g' 2019-11-02 14:00:24 +01:00
Alexander Aleksandrovič Klimov c7e9997294 RedisWriter#SerializeState(): don't stringify previous_hard_state 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 617a4a2e92 RedisWriter: drop icinga:history:stream:notification#{,long_}output and add #{author,text} 2019-11-02 14:00:24 +01:00
Alexander Aleksandrovič Klimov badcb5662c RedisWriter: add icinga:state:stream:*#previous_hard_state 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 746a48e2ca RedisWriter: add icinga:history:stream:{state,notification}#previous_hard_state 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 4a7a8cb6f8 RedisWriter: add icinga:history:stream:*#endpoint_id 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 8613365f1c RedisWriter: add icinga:{state:stream:*,history:stream:*:state}#check_source 2019-11-02 14:00:24 +01:00
Alexander A. Klimov f314489d23 Merge host and service histories 2019-11-02 14:00:24 +01:00
Alexander A. Klimov e6043e908a RedisWriter: adjust icinga:history:stream:*:flapping schema 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 0510e0cad0 Replace duration with flexible_duration 2019-11-02 14:00:24 +01:00
Alexander A. Klimov c89f354a84 Replace is_fixed with is_flexible 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 9d0e402d92 RedisWriter#SendStartedDowntime(): send also a config update 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 747521fa84 RedisWriter#SendStatusUpdate(): handle pending checkable 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 82898b31ae RedisWriter: fix missing m_Rcon!=null checks 2019-11-02 14:00:24 +01:00
Noah Hilverling 52fb723d91 RedisWriter: Do not split up comments/downtimes into host/service keys 2019-11-02 14:00:24 +01:00
Noah Hilverling 846f327054 RedisWriter: Use TimestampToMilliseconds() instead of multiplying inline 2019-11-02 14:00:24 +01:00
Noah Hilverling 042ed8b9e9 RedisWriter: Add downtime schedule history event 2019-11-02 14:00:24 +01:00
Noah Hilverling 6f0822cbe8 RedisWriter: Use ms instead of seconds for timestamps 2019-11-02 14:00:24 +01:00
Noah Hilverling 5edf3623c5 RedisWriter-History: Add event_id and event_type to history entries 2019-11-02 14:00:24 +01:00
Alexander A. Klimov fb6d31fcde RedisWriter: populate icinga:history:stream:*:flapping 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 81873248e1 RedisWriter: populate icinga:history:stream:*:comment 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 6c536c97e8 RedisWriter: populate icinga:history:stream:*:downtime 2019-11-02 14:00:24 +01:00
Alexander A. Klimov feeae9d518 RedisWriter: populate icinga:history:stream:*:state 2019-11-02 14:00:24 +01:00
Alexander A. Klimov d0165773d2 RedisWriter: populate icinga:history:stream:*:notification 2019-11-02 14:00:24 +01:00
Noah Hilverling 33bdc8b5c3 RedisWriter: Rename check_period to check_timeperiod 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 21a900cd9d RedisWriter#SerializeState(): serialize also Checkable#next_update
refs #54
2019-11-02 14:00:24 +01:00
Alexander A. Klimov 9a3ab8c547 Adjust IoEngine usage 2019-11-02 14:00:24 +01:00
Noah Hilverling 9f077e8216 RedisWriter: Streamline JSON key names 2019-11-02 14:00:24 +01:00
Noah Hilverling 1566c4f9ac Fix runtime update of state not being published 2019-11-02 14:00:24 +01:00
Noah Hilverling 07515d4446 Fix RedisWriter not clearing "icinga:config:state:*" keys on initial dump 2019-11-02 14:00:24 +01:00
Alexander A. Klimov b0cd306b61 RedisWriter#InsertObjectDependencies(): PUBLISH icinga:config:update ... for all dependencies 2019-11-02 14:00:24 +01:00
Noah Hilverling 322f3fbb0d RedisWriter: Fix state sync prefix 2019-11-02 14:00:24 +01:00
Alexander A. Klimov fe49141490 RedisWriter#SendStatusUpdate(): ensure valid UTF-8 output 2019-11-02 14:00:24 +01:00
Alexander A. Klimov d9ff921934 RedisWriter: publish the current config dump state via icinga:dump
refs #53
2019-11-02 14:00:24 +01:00
Alexander A. Klimov 1d3109458d RedisConnection: merge write queues
refs #50
2019-11-02 14:00:24 +01:00
Alexander A. Klimov 3b61b3d37a RedisConnection: log messages
refs #50
2019-11-02 14:00:24 +01:00
Alexander A. Klimov 430c769371 RedisConnection: handle errors as expected
refs #50
2019-11-02 14:00:24 +01:00
Alexander A. Klimov 06d88477bd RedisConnection: forward I/O errors to async-ly waiting requestors
refs #50
2019-11-02 14:00:24 +01:00
Alexander A. Klimov fa5c9ac985 RedisConnection: don't read the response before the request has been written
refs #50
2019-11-02 14:00:24 +01:00
Alexander A. Klimov 132b2dcb77 Get rid of hiredis 2019-11-02 14:00:24 +01:00
Alexander A. Klimov a5971df039 RedisConnection: I/O the Redis protocol by itself (PoC) 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 752c5998df Prefer vector#emplace_back over #push_back 2019-11-02 14:00:24 +01:00
Alexander A. Klimov e60ca9bca9 RedisWriter#InsertObjectDependencies(): don't change config objects' attributes in-place
refs #52
2019-11-02 14:00:24 +01:00
Noah Hilverling d5d3f3e60c Remove unused function CollectScalarVars() 2019-11-02 14:00:24 +01:00
Alexander A. Klimov 53d04cc4e8 RedisWriter#RedisGet(): std::move() query
refs #49
2019-11-02 14:00:24 +01:00
Alexander A. Klimov fb98d3edef RedisConnection#ExecuteQuer{y,ies}(): std::move() queries
refs #49
2019-11-02 14:00:24 +01:00
Alexander A. Klimov bb333b535b RedisConnection#ExecuteQueries(): fire all queries at once
refs #49
2019-11-02 14:00:23 +01:00
Alexander A. Klimov 74eccf60f2 Fix memory leak 2019-11-02 14:00:23 +01:00
Noah Hilverling 11d5415193 RedisWriter: Add depth attribute to zone 2019-11-02 14:00:23 +01:00
Noah Hilverling 8421a98a2c Fix command arguments and envvars 2019-11-02 14:00:23 +01:00
Noah Hilverling 9308acfcd5 RedisWriter: Json encode command field command 2019-11-02 14:00:23 +01:00
Noah Hilverling e41bcbc81c Do not store timeperiod range in separate key (timerange) 2019-11-02 14:00:23 +01:00
Noah Hilverling 74b6839704 Add JsonEncode to customvar value 2019-11-02 14:00:23 +01:00
Noah Hilverling fc718d99a7 Rename :overwrite: keys to :override: 2019-11-02 14:00:23 +01:00
Noah Hilverling 0bfdaccc7a Split up redis arrays into single entries 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 6fd6f74b0f Fix missing ( ) 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 07823c4b90 RedisWriter#CreateConfigUpdate(): don't require prepared commands 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 1d126b66e9 RedisWriter#InsertObjectDependencies(): reduce memory allocations 2019-11-02 14:00:23 +01:00
Alexander A. Klimov def3c7df32 RedisWriter#CreateConfigUpdate(): reduce memory allocations 2019-11-02 14:00:23 +01:00
Alexander A. Klimov c24092a64e RedisWriter#GenerateHmsetStatements(): reduce memory allocations 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 23448b0322 Make RedisWriter#ChunkObjects()'s result type more explicit 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 0534141aaf Remove redundand vector#reserve() 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 7d0fc91c1b RedisWriter#GetTypeObjectKeys(): move() the result 2019-11-02 14:00:23 +01:00
Noah Hilverling 13295acb72 RedisWriter: Write objects of same type in parallel 2019-11-02 14:00:23 +01:00
Noah Hilverling 68c88b3edf Implement new Redis schema
WIP


WIP
2019-11-02 14:00:23 +01:00
Alexander A. Klimov 1dcec6e77a RedisConnection#SendMessageInternal(): lock only while actually using shared objects 2019-11-02 14:00:23 +01:00
Alexander A. Klimov 50594ec1c8 Replace std::bind() with lambdas
refs #48
2019-11-02 14:00:23 +01:00
Noah Hilverling a6ec60a992 RedisWriter: Use IcingaApplication environment 2019-11-02 14:00:23 +01:00
Noah Hilverling c5b0884e44 RedisWriter: Heartbeat should occur every second 2019-11-02 14:00:23 +01:00
Alexander A. Klimov f601ba51e0 Revert "Eventqueue: Remove unused code"
This reverts commit a7873da89d.
2019-11-02 14:00:23 +01:00
Jean Flach 23099904c0 Publish when config_dump_in progress 2019-11-02 14:00:23 +01:00
Jean Flach 7890c37357 Revert "Merge branch 'bugfix/execute-quieries' into 'feature/redis'"
This reverts commit f6c1fc3b43b1895eb87c1657f3e3355bfe9ddaac, reversing
changes made to ad1d448bcdead76a2bd45171a6efcd700b1c23d0.
2019-11-02 14:00:23 +01:00
Jean Flach 0ad008f465 Handle transaction vectors better 2019-11-02 14:00:23 +01:00
Jean Flach b95e39952e Use transaction for config dump
This wraps the config dump HMSETs into a transaction.
2019-11-02 14:00:23 +01:00
Jean Flach d2dc0047a3 Lock before queueing multiple queries 2019-11-02 14:00:23 +01:00
Jean Flach 03a61347cd Fix Service's name 2019-11-02 14:00:23 +01:00
Jean Flach 037357aea5 Add severity 2019-11-02 14:00:23 +01:00
Jean Flach 57b9fc94c3 Remove is_active_check 2019-11-02 14:00:23 +01:00
Jean Flach 6705158d31 Remove unused variable 2019-11-02 14:00:23 +01:00
Jean Flach accadb5dfb Only dump relevant object types 2019-11-02 14:00:23 +01:00
Jean Flach dc5dc46364 Use ReflectionType instead of dynamic casts 2019-11-02 14:00:23 +01:00
Jean Flach 5cfd3c1ab0 Rewrite config dump 2019-11-02 14:00:23 +01:00
Jean Flach e90fb43b91 Fix empty perf data strings 2019-11-02 14:00:23 +01:00
Jean Flach 446796dadb Fix output and longOutput 2019-11-02 14:00:23 +01:00
Jean Flach 50aa0eb1d3 Fix command line string 2019-11-02 14:00:23 +01:00
Jean Flach 553f6f6ba9 Change commandline and performancedata 2019-11-02 14:00:23 +01:00
Noah Hilverling 3439ea755f Fix that state does not get synced on acknowledgement removal 2019-11-02 14:00:23 +01:00
Noah Hilverling 992727707d Redis: Encode check command 2019-11-02 14:00:23 +01:00
Jean Flach 08bfbbc070 Encode perfdata 2019-11-02 14:00:23 +01:00
Jean Flach 933de15c36 Remove TODO 2019-11-02 14:00:23 +01:00
Noah Hilverling 3fb3e8bb6d Remove dev debug log 2019-11-02 14:00:23 +01:00
Noah Hilverling 2202bde56c Add downtime handlers to state sync 2019-11-02 14:00:23 +01:00
Jean Flach af05a354fa Stop json-encoding everything 2019-11-02 14:00:23 +01:00
Jean Flach d104eb4ac1 Fix timeout 2019-11-02 14:00:23 +01:00
Jean Flach 6ce4612cd7 Export last hard/soft state dummies 2019-11-02 14:00:23 +01:00
Jean Flach e2caa47f18 Fix is_handled 2019-11-02 14:00:23 +01:00
Noah Hilverling 328adf1fc4 Add host/service state sync to acknowledgement 2019-11-02 14:00:23 +01:00
Jean Flach 916bfd20fb Update state sync 2019-11-02 14:00:23 +01:00
Noah Hilverling 9aec47efb3 Use OnStateChange instead of OnStateChanged 2019-11-02 14:00:23 +01:00
Jean Flach 02ecc3e445 Add additional fields 2019-11-02 14:00:23 +01:00
Jean Flach a7e615fbc0 Fix one unchecked checkresult access 2019-11-02 14:00:23 +01:00
Jean Flach 9b9cf6d5b0 Update sate sync
fix a crash, possibly two
2019-11-02 14:00:23 +01:00
Jean Flach d8737b238a Update state sync 2019-11-02 14:00:23 +01:00
Jean Flach 223ca6c6a0 Clean up code 2019-11-02 14:00:23 +01:00
Jean Flach f68ad634b2 Rename state stream keys 2019-11-02 14:00:23 +01:00
Jean Flach 3def496b62 Update state sync
Makes state serialization its own function to be used also when writing
out the initial state
2019-11-02 14:00:23 +01:00
Jean Flach fcb3752973 Remove debug log message 2019-11-02 14:00:23 +01:00
Jean Flach 3da4cef1e6 Update state sync 2019-11-02 14:00:23 +01:00
Jean Flach 2215e9e16f Implement minimal state sync 2019-11-02 14:00:23 +01:00
Jean Flach c825a3f4b5 Remove unnecessary parameter 2019-11-02 14:00:23 +01:00
Jean Flach 5f64d809d7 Check if RedisConnection exists before checking connection 2019-11-02 14:00:23 +01:00
Jean Flach a056e14834 Fix another RedisWriter crash
Same as the other fix, this makes us lose events
2019-11-02 14:00:23 +01:00
Jean Flach eec1928a0b Fix segfault on startup 2019-11-02 14:00:23 +01:00
Jean Flach 67208c4f07 Handle runtime config updates
fixes #37
2019-11-02 14:00:23 +01:00
Noah Hilverling f4145579ca Add missing include 2019-11-02 14:00:23 +01:00
Jean Flach 47905a25e8 Improve event payload
Adds host/service_id Acknowledgement events. AcknowledgementSet events also send the comment_id.

fixes #29
2019-11-02 14:00:23 +01:00
Jean Flach e889de966e Publish dump event
fixes #34
2019-11-02 14:00:23 +01:00
Jean Flach 5e3e114a16 Handle icingadb- / icinga-type mismatches
fixes servicedowntimes being written to hostdowntimes (and vice versa)
2019-11-02 14:00:23 +01:00