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
Jean Flach
3c651b4c99
Fix icingadb specific type names
2019-11-02 14:00:23 +01:00
Jean Flach
77ce8f67bd
Add downtimes sync
2019-11-02 14:00:23 +01:00
Jean Flach
36588ce31a
Code formatting
2019-11-02 14:00:23 +01:00
Jean Flach
1d21626b30
Code style
2019-11-02 14:00:23 +01:00
Jean Flach
0634e27d6d
Add new connection handling
2019-11-02 14:00:23 +01:00
Jean Flach
f89e649871
Add recursive callback to manage auth and db select
2019-11-02 14:00:23 +01:00
Jean Flach
b59189b8d3
Simplify vector usage
...
Also leak less memory ;)
2019-11-02 14:00:23 +01:00
Jean Flach
6aaa35a0a6
Rewrite the RedisWriter
...
There should be more atomic commits but the whole thing was a mess. This
commit changes the synchrounous Redis connection into an asynchronous
one in its own class RedisConnection.
The RedisConnection uses a Workqueue with commands to fire against the
Redis server. When a response is required a callback must be supplied,
refer to RedisWriter::RedisGet().
Known Issues:
- Authentication has no error handling and can break the connection
- Error handling in general is iffy due to the nature of the async redis
connection
- Getting a reply out of RedisConnection is not trivial
- HandleRW... sunt dracones
2019-11-02 14:00:23 +01:00
Jean Flach
64515b81e3
Add disconnect
2019-11-02 14:00:23 +01:00
Jean Flach
d96dcf869e
Add RedisConnection object
...
This works using an async Redis connection. Multiple connections are not
possible. The connection is fed from a workqueue filled with
RedisCommands in the way of a vector of strings.
2019-11-02 14:00:23 +01:00
Jean Flach
0456298c58
Reformat code
...
CLion is now pretty close at what we use with Icinga, other changes do
make sense to me.
2019-11-02 14:00:23 +01:00
Jean Flach
8f411c7475
Support comments for icingadb
...
This splits comments into Host and Service comments
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
ed3db5b491
Fix elephant oversight
2019-11-02 14:00:23 +01:00
Jean Flach
315e9ffad8
Stringify flat values
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
d0a45521a9
Unify schema structure
...
refs #15
2019-11-02 14:00:23 +01:00
Jean Flach
c4962559ff
Remove parent_checksum
...
parent_checksum is always the first element in all_parents_checksums
2019-11-02 14:00:23 +01:00
Jean Flach
a47e16fb5b
Rename command_checksums
2019-11-02 14:00:23 +01:00
Jean Flach
65c38a3958
ignore user/usergroup for property checksum
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
3a8cf8d74d
RedisWriter: dump missing checksums for notifications
...
refs #18
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
4d40293217
RedisWriter: dump all_parents_checksum and all_parents_checksums for zones
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
cd05240624
RedisWriter: dump period_checksum for users
2019-11-02 14:00:23 +01:00
Michael Friedrich
de99d68351
Only use the type for commands in the object identifier checksum
2019-11-02 14:00:23 +01:00
Jean Flach
c70316a835
Sync ranges_checksum for timeperiods
...
Signed-off-by: Michael Friedrich <michael.friedrich@icinga.com>
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
3e0a2f59e2
RedisWriter: make config object identifiers type-aware
...
SHA1(PackObject([Environment, Type, __name]))
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
b04b1d954e
RedisWriter: compute checksums of command arguments and env vars
...
refs #14
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
a908f84750
Revert unneccessary dynamic_pointer_cast
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
1b81b85582
RedisWriter: dump zone_checksum for endpoints
...
refs #11
2019-11-02 14:00:23 +01:00
Michael Friedrich
d65fb529eb
Simplify host_checksum
2019-11-02 14:00:23 +01:00
Jean Flach
d09a435fe3
Export usergroup(s)_checksum(s)
...
Warning: ugly code
2019-11-02 14:00:23 +01:00
Michael Friedrich
876d98a13f
Add 'parent_checksum' for zone objects
2019-11-02 14:00:23 +01:00
Michael Friedrich
bb2e7854fd
Add command_endpoint, event/check_command, action/notes_url, icon_image checksums for host/service objects
2019-11-02 14:00:23 +01:00
Michael Friedrich
4fb73a44bd
Add 'host_checksum' for services
2019-11-02 14:00:23 +01:00
Michael Friedrich
48f1ce215b
Drop obsolete delete query on config dump
2019-11-02 14:00:23 +01:00
Michael Friedrich
e31679b2de
Update Redis prefix namespaces and move their declaration into the class
...
icinga:config:object:<type>:<sha1>
icinga:config:checksum:<type> <sha1>
icinga:config:customvar:<type> <sha1>
icinga:status:object:<type>:<sha1>
This avoids multiple definitions all over the code. Maybe we want
to make the schema configurable at some point.
2019-11-02 14:00:23 +01:00
Michael Friedrich
3ce8f5599e
Fix missing object locks
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
413e351805
RedisWriter: dump custom vars verbosely
2019-11-02 14:00:23 +01:00
Michael Friedrich
e4355f27c9
Send zone_checksum globally, if 'zone' attribute is set
2019-11-02 14:00:23 +01:00
Jean Flach
a4b0f9125e
Only sync zone_checksum when object in zone
2019-11-02 14:00:23 +01:00
Jean Flach
85f621cb90
Add zone checksum for redis to checkables
2019-11-02 14:00:23 +01:00
Michael Friedrich
c5e913dfd4
Fix error handling for GetSubscriptionTypes()
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
50d83e850f
RedisWriter: dump endpoints' zones' identifiers (zone_checksum)
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
550e385b9e
RedisWriter: fix checksums of disappeared config objects not being deleted
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
d15769fa34
RedisWriter: fix disappeared config objects not being deleted
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
e7411ea158
RedisWriter#UpdateAllConfigObjects(): use one transaction per config object type
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
1ad9c80143
RedisWriter: sync all config objects atomically
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
c92827fa5e
RedisWriter: dump monitored objects' groups' identifiers (group_checksums)
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
724ce1f172
RedisWriter: dump also environment_checksum (per config object)
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
4eee9572ab
RedisWriter: identify config objects by SHA1(PackObject([Environment, __name]))
2019-11-02 14:00:23 +01:00
Michael Friedrich
fae5b88e48
Add all stats similar to /v1/status
2019-11-02 14:00:23 +01:00
Michael Friedrich
d7f6d7994b
Move stats into a separate file
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
3229982bee
RedisWriter: compute name_checksum as expected
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
f05a5eecc2
Centralize identifier computation
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
a5aef627f8
RedisWriter: use __name as object key
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
3ea3b2ba27
RedisWriter: checksum package, source_location and templates separately in metadata_checksum
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
e980485e23
RedisWriter: Explicitly checksum Zone#endpoints
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
dcdf6b8a44
RedisWriter: Exclude explicitly checksummed properties from properties_checksum
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
dc73db01b8
RedisWriter: use one checksum algo for everything
2019-11-02 14:00:23 +01:00
Alexander A. Klimov
b32b81d957
RedisWriter: Pack objects consistently for hashing
2019-11-02 14:00:23 +01:00
Michael Friedrich
60a5a14aa2
Checksums
2019-11-02 14:00:23 +01:00
Michael Friedrich
79f06a90d4
WIP
2019-11-02 14:00:23 +01:00
Michael Friedrich
782486ce9c
Ensure that arrays are sorted for checksum calculation
2019-11-02 14:00:23 +01:00
Michael Friedrich
26a2095426
Implement config object check sums, shot one
2019-11-02 14:00:23 +01:00
Michael Friedrich
8c38c7eddc
Ensure that type names are lower cases for Redis lookups
2019-11-02 14:00:23 +01:00
Michael Friedrich
33a00e4b5a
Move UpdateObjectAttrs into the objects scope
2019-11-02 14:00:23 +01:00
Michael Friedrich
f715d479e7
Rename source file
2019-11-02 14:00:23 +01:00
Michael Friedrich
ddf2aea065
Compile redis into the icinga2 binary; apply more C++11 code changes
2019-11-02 14:00:23 +01:00
Michael Friedrich
61edfcb68d
Apply code style
2019-11-02 14:00:23 +01:00
Jean Flach
5eab856673
Publish events to one enpoint
2019-11-02 14:00:23 +01:00
Jean Flach
c8561676ec
Add limit for subscriptions
2019-11-02 14:00:23 +01:00
Gunnar Beutner
f631bf8cb5
Use sets for subscriptions
...
refs #5656
2019-11-02 14:00:23 +01:00
Gunnar Beutner
06211c3ac7
Implement support for the new config/state schema
...
fixes #5671
2019-11-02 14:00:23 +01:00
Gunnar Beutner
1725038ca8
Implement pipelining support for Redis queries
...
fixes #5670
2019-11-02 14:00:23 +01:00
Jean Flach
7c8412928e
Subscriptions
...
fixes #5656
2019-11-02 14:00:23 +01:00
Jean Flach
1ada53dd57
Trim event queue
...
TODO: make configurable
refs #5119
2019-11-02 14:00:23 +01:00
Gunnar Beutner
b6c86f98ec
Clean up the code a bit
2019-11-02 14:00:23 +01:00
Gunnar Beutner
fff1049ba0
Ensure that the WorkQueue name is set
2019-11-02 14:00:23 +01:00
Gunnar Beutner
b75e21a998
Redis support (WIP)
2019-11-02 14:00:23 +01:00
Michael Friedrich
7e369c0443
Merge pull request #7546 from Icinga/feature/zone-in-zone-7530
...
DaemonUtility#ValidateConfigFiles(): re-try unknown zones once they may have become known
2019-10-31 16:34:08 +01:00
Alexander Aleksandrovič Klimov
3804f4edcc
I like to move it, move it
2019-10-28 13:46:33 +01:00
Ant1x
166e79fee1
Added OpenTSDB Metric prefix naming support
...
Added OpenTSDB Generic Metric functionality
2019-10-24 00:04:12 +11:00
Ant1x
0b8fdfd7f2
Removed dictionary cloning behaviour.
...
Added configuration caching on instantiation.
2019-10-24 00:04:12 +11:00
Ant1x
c2c4b97ea5
Adjusted explicit String cast
2019-10-24 00:04:12 +11:00
Ant1x
619a487733
Added validation function comments
2019-10-24 00:04:12 +11:00
Ant1x
90c42e1bbc
Re-worded debug log message
2019-10-24 00:04:12 +11:00
Ant1x
3cd6b66cd4
Initial commit, add custom tag functionality
2019-10-24 00:04:12 +11:00
Michael Friedrich
e0ef5fe9de
Merge pull request #7458 from Icinga/feature/config-parser-cleanup
...
Config parser: introduce optional_newlines
2019-10-22 17:29:59 +02:00
Michael Friedrich
3b49c10d0a
Merge pull request #7584 from Icinga/bugfix/cluster-sync-checksums-timestamps
...
Cluster Config Sync: Check the timestamp prior to config file checksums for changes
2019-10-22 17:22:27 +02:00
Michael Friedrich
6103f53c5b
Merge pull request #7541 from Icinga/bugfix/heredoc-eof
...
Config lexer: complain on EOF in heredocs, i.e. {{{abc<EOF>
2019-10-22 17:19:27 +02:00
Michael Friedrich
cb20b4829a
Cluster Config Sync: Check the timestamp prior to config file checksums
...
Otherwise old configuration received from a secondary master/satellite
could always trigger a config change & reload.
2019-10-22 14:07:10 +02:00
Alexander A. Klimov
768044a754
Replace std::shared_ptr<NamespaceValue> with NamespaceValue::Ptr
...
refs #7361
2019-10-21 17:10:51 +02:00
Alexander A. Klimov
aa4cad7482
Replace std::shared_ptr<Expression> with Expression::Ptr
...
refs #7361
2019-10-21 17:10:51 +02:00
Alexander A. Klimov
4438ccbf9e
Introduce SharedObject
...
refs #7361
2019-10-21 17:10:51 +02:00
Alexander A. Klimov
ba1ce9c853
Replace std::shared_ptr<boost::asio::ssl::context> with Shared<boost::asio::ssl::context>::Ptr
2019-10-21 16:12:46 +02:00
Alexander A. Klimov
a1fef92835
Replace std::shared_ptr<boost::asio::ip::tcp::acceptor> with Shared<boost::asio::ip::tcp::acceptor>::Ptr
2019-10-21 16:12:46 +02:00
Alexander A. Klimov
26ce2cfb73
Replace std::shared_ptr<AsioTcpStream> with Shared<AsioTcpStream>::Ptr
2019-10-21 16:12:46 +02:00
Alexander A. Klimov
a1683568a1
Replace std::shared_ptr<AsioTlsStream> with Shared<AsioTlsStream>::Ptr
2019-10-21 16:12:35 +02:00
Alexander A. Klimov
b046ffe152
Introduce Shared<T>
2019-10-21 11:07:42 +02:00
Michael Friedrich
3e6fc9bfa1
Merge pull request #7457 from Icinga/feature/config-parser-malloc
...
Config parser: save some memory allocations
2019-10-17 17:19:30 +02:00
Alexander A. Klimov
e4bdcedbca
MacroProcessor::ResolveArguments(): skip null argument values
...
refs #7558
2019-10-08 17:06:06 +02:00
Michael Friedrich
e7c07062f8
Avoid syncing .authorititative marker received from < 2.11 parent nodes
2019-10-02 10:49:02 +02:00
Alexander A. Klimov
eacdb3dac7
DaemonUtility#ValidateConfigFiles(): re-try unknown zones once they may have become known
...
refs #7530
2019-09-30 10:26:13 +02:00
Alexander A. Klimov
672f497c3a
Config lexer: complain on EOF in heredocs, i.e. {{{abc<EOF>
2019-09-26 13:10:19 +02:00
Michael Friedrich
f0fcfdf910
Merge pull request #7538 from Icinga/bugfix/dependency-ignore_on_error-7536
...
Dependency#OnAllConfigLoaded(): don't link *this with the child if *this is going to be dropped
2019-09-25 12:12:22 +02:00
Michael Friedrich
4e23f954fa
Merge pull request #7529 from Icinga/bugfix/activestageoverride-7521
...
WarnOnImplicitlySetGlobalVar(): warn only on sins inside actual DSL code
2019-09-25 12:11:26 +02:00
Alexander A. Klimov
7668314b4a
Dependency#OnAllConfigLoaded(): don't link *this with the child if *this is going to be dropped
...
refs #7536
2019-09-25 11:30:50 +02:00
Alexander A. Klimov
b8d495ae07
Introduce Checkable#next_update
2019-09-25 10:44:49 +02:00
Chris Boot
aece8d61e2
Introduce 'activate' parameter to config stage handling
...
This functionality allows a stage to be uploaded and validated as
normal, but not activated. This is useful to pre-flight an Icinga config
package before it is applied to a monitoring cluster, for example in a
CI pipeline.
2019-09-24 17:17:19 +01:00
Alexander A. Klimov
b4e3736e31
WarnOnImplicitlySetGlobalVar(): warn only on sins inside actual DSL code
2019-09-23 15:09:57 +02:00
Michael Friedrich
f419efd778
API: Handle permission exceptions soon enough, returning 404
...
fixes #7513
2019-09-23 09:48:50 +02:00
Michael Friedrich
617f1d1333
Improve error message for command endpoint checkable's requiring a zone
...
fixes #7514
2019-09-23 09:41:08 +02:00
Michael Friedrich
eddb40a913
CSR Auto-signing: Add debug logging for skipped signing
2019-09-18 11:53:58 +02:00
Michael Friedrich
d3eb62301e
API: Add AES128-GCM-SHA256 compatible cipher for el6
...
fixes #7501
2019-09-16 14:19:22 +02:00
Michael Friedrich
9ec246a2f4
Revert: Always reset Boost beast buffer in HttpServerConnection#ProcessMessages #7476
...
Not a simple revert but also adds a comment for the buffer.
refs #7476
2019-09-12 17:00:17 +02:00
Michael Friedrich
2c0e0da2d9
Introduce IoEngine::SpawnCoroutine wrapping asio::spawn and Boost exceptions
...
This is required to
- catch all exceptions and wrap them into Boost exceptions. They
are the only ones allowed with Boost.Coroutine.
- set a dedicated coroutine stack size for Windows.
refs #7431
2019-09-09 16:40:35 +02:00
Michael Friedrich
5fa7331cc9
Quality: Replace deprecated Boost IO service code
...
https://github.com/boostorg/asio/issues/110
https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp03/services/logger_service.hpp
2019-09-09 15:27:57 +02:00
Alexander A. Klimov
0a9563b3db
HttpServerConnection#ProcessMessages(): avoid I/O if shutting down
...
refs #7431
2019-09-09 13:37:44 +02:00
Alexander A. Klimov
b85b8b9697
HttpServerConnection#ProcessMessages(): avoid I/O after boost::asio::error::operation_aborted
...
refs #7431
2019-09-09 13:29:47 +02:00
Alexander A. Klimov
dfaeb88ac3
{HttpServer,JsonRpc}Connection#Disconnect(): cancel I/O ops ASAP
...
refs #7431
2019-09-09 13:11:51 +02:00
Michael Friedrich
b3c48e7520
Merge pull request #7485 from Icinga/bugfix/api-disconnect-defer
...
Avoid the Defer-Disconnect destructor pattern with Boost.Coroutines
2019-09-09 11:41:34 +02:00
Michael Friedrich
c5aa978912
Rewrite error handling in HttpServerConnection#EnsureValidHeaders()
...
Throwing local exceptions unnecessarily pollutes the exception
stack with immediate unwinding. Avoid this pattern at all cost within
Boost.Coroutines. MSVC may handle exceptions differently and cause
problems with stack unwinding.
refs #7431
refs #7351
2019-09-09 11:03:21 +02:00
Michael Friedrich
17d4d17307
Avoid the Defer-Disconnect destructor pattern with Boost.Coroutines
...
Exceptions in Disconnect() might be thrown (this has been reworked
into error_code locally) which are swallowed inside the Destructor
for being dangerous. On the other hand, swallowing them may
corrupt the stack unwinding operation from the coroutine layer.
The best is to avoid Defer inside lib/remote and call Disconnect()
directly after breaking from other operations.
refs #7351
refs #7431
2019-09-09 10:57:13 +02:00
Michael Friedrich
ebb0826be0
JsonRpcConnection: Don't swallow exceptions in Boost.Coroutine
...
refs #7351
2019-09-09 09:26:12 +02:00
Michael Friedrich
cdacd545c6
Merge pull request #7477 from Icinga/bugfix/api-boost-exceptions-errors
...
HttpServerConnection: Prefer error codes over Boost exceptions
2019-09-06 10:22:42 +02:00
Michael Friedrich
a208f7baf0
HttpServerConnection: Prefer error codes over Boost exceptions
...
When run within a coroutine, exceptions on Windows may influence
bad behaviour here. Instead, we'll check for the error code
and extract the message from memory. In contrast to exceptions
which are stored on the stack frame and then return, this costs
a little more memory but simplifies the logic.
This doesn't fix the linked issue, but is related to the analysis.
refs #7431
2019-09-06 10:06:17 +02:00
Michael Friedrich
eabba2de42
Always reset Boost beast buffer in HttpServerConnection#ProcessMessages
...
refs #7431
2019-09-06 09:31:16 +02:00