Noah Hilverling
7217959206
API Action 'remove-downtime': Also remove child downtimes
2021-07-23 13:53:44 +02:00
Alexander A. Klimov
8a30657ce9
Icinga DB: write state updates to icinga:runtime:state
...
... allowing the Go daemon to priorize state updates.
2021-07-23 11:52:28 +02:00
Julian Brost
4273f30157
LegacyTimePeriod: Prevent modification of input parameters
...
Many functions of LegacyTimePeriod take a tm pointer as an input parameter and
then pass it to mktime() which actually modifies it. This causes problems if
tm_isdst was intentionally set to -1 (to automatically detect whether DST is
active at some time) and then a function is called that implicitly sets
tm_isdst and then the values of tm are modified in a way that crosses a DST
change. This resulted in 1 hour offsets with ScheduledDowntimes on days with
DST changes.
2021-07-22 15:17:06 +02:00
Alexander A. Klimov
37e53eaa68
Icinga DB: support TLS
2021-07-22 14:34:07 +02:00
Alexander A. Klimov
50bc7a7f3d
Icinga DB: HDEL also icinga:checksum:*, not only icinga:*
2021-07-22 14:13:12 +02:00
Alexander A. Klimov
7f7637c9b8
Introduce DEFAULT_TLS_CIPHERS and DEFAULT_TLS_PROTOCOLMIN
2021-07-22 11:12:33 +02:00
Alexander A. Klimov
80a1128ec7
Introduce SetupSslContext()
2021-07-22 11:12:33 +02:00
Alexander A. Klimov
fbcaf82e3e
InitSslContext(): fall back to default root CAs
2021-07-22 11:12:33 +02:00
Alexander A. Klimov
2728603c29
Rename SetupSslContext() to InitSslContext()
2021-07-22 11:12:33 +02:00
Alexander Aleksandrovič Klimov
2b04e0a754
Merge pull request #8894 from Icinga/bugfix/icinga-db-redis-connection-logging-spam-8883
...
RedisConnection: log info messages only once
2021-07-21 18:00:24 +02:00
Alexander Aleksandrovič Klimov
d073d2268e
Merge pull request #8719 from Icinga/feature/influxdb-2-8711
...
Introduce Influxdb2Writer
2021-07-21 17:59:58 +02:00
Alexander A. Klimov
da922ca157
RedisConnection: log info messages only once
...
refs #8883
2021-07-20 17:52:12 +02:00
Alexander Aleksandrovič Klimov
2fbaf933bc
Merge pull request #8634 from Icinga/feature/icingadb-stats-log
...
RedisConnection: log actual query performance
2021-07-20 17:46:57 +02:00
Alexander A. Klimov
9d4b0f1268
Introduce Influxdb2Writer
...
refs #8711
2021-07-20 16:21:36 +02:00
Alexander A. Klimov
d26aa9fb34
InfluxdbCommonWriter: abstract InfluxdbWriter
...
refs #8711
2021-07-20 16:21:36 +02:00
Michael Insel
da394b2ab0
Implement scheduling_source attribute ( #6326 )
...
* Implement scheduling_source attribute
This implements the attribute `scheduling_source` for hosts and services to show which endpoint is running the scheduler for the check.
refs #4814
2021-07-20 11:10:26 +02:00
Alexander A. Klimov
67c4ebedd3
Combine all Redis connections' logs
2021-07-16 18:50:41 +02:00
Alexander A. Klimov
e6a9631a02
Icinga DB: silence WorkQueue performance
2021-07-16 18:50:41 +02:00
Alexander A. Klimov
82c3827b66
RedisConnection: log actual query performance
2021-07-16 18:50:41 +02:00
Alexander Aleksandrovič Klimov
89472a9e51
Merge pull request #8425 from Icinga/bugfix/hosts-128-characters-7472
...
IDO MySQL: support larger host and service names
2021-07-16 18:34:29 +02:00
Alexander A. Klimov
e4bfb4898d
IDO MySQL: support larger host and service names
...
refs #7472
2021-07-15 11:16:13 +02:00
Julian Brost
9f43c143d7
Merge pull request from GHSA-98wp-jc6q-x5q5
...
API: hide ApiListener#ticket_salt
2021-07-15 11:13:35 +02:00
Julian Brost
f17b97fd7e
Merge pull request from GHSA-wrpw-pmr8-qgj7
...
Remove passwords from API
2021-07-15 11:12:29 +02:00
Alexander Aleksandrovič Klimov
b63eb2aa3d
Merge pull request #8855 from Icinga/bugfix/inconsistent-ido-schema-versions-8852
...
Fix IDO MySQL schema version (as in v2.11 upgrade)
2021-07-14 18:09:27 +02:00
Alexander Aleksandrovič Klimov
bad8059969
Merge pull request #8761 from Icinga/feature/icingadb-perfdata
...
Icinga DB: introduce icinga:*:state#normalized_performance_data
2021-07-07 12:29:21 +02:00
Noah Hilverling
ef73136076
Merge pull request #8830 from Icinga/feature/idb-passive-overdue
...
Icinga DB: no active checks? Not overdue!
2021-07-07 11:15:04 +02:00
Julian Brost
7d2a1bbffe
Merge pull request #8310 from Icinga/feature/scheduleddowntime-change-remove-downtimes-8309
...
On ScheduledDowntime change: remove downtimes created before change
2021-07-07 10:44:08 +02:00
Julian Brost
6d6844c102
Merge pull request #8874 from Icinga/bugfix/fixed-dt-end-notify
...
Checkable::NotifyDowntimeEnd(): don't send Downtime end notification unless triggered
2021-07-07 10:43:28 +02:00
Alexander Aleksandrovič Klimov
bee83ead8b
Merge pull request #8730 from Icinga/bugfix/ido-stop-progstat-8727
...
IDO: update program status on stop
2021-07-06 18:07:38 +02:00
Alexander A. Klimov
43e4ab4760
Checkable::NotifyDowntimeEnd(): don't send Downtime end notification unless triggered
...
... for fixed Downtimes as well.
2021-07-06 12:50:44 +02:00
Alexander A. Klimov
e9118d6b09
Fix IDO MySQL schema version (as in v2.11 upgrade)
2021-07-05 19:17:53 +02:00
Alexander A. Klimov
4373acf8ed
Ido*sqlConnection::Reconnect(): de-couple MySQL and Postgres schema versions
2021-07-05 19:17:51 +02:00
Alexander A. Klimov
9e2f58ea9f
IdoCheckTask: de-couple MySQL and Postgres schema versions
2021-07-05 19:14:07 +02:00
Alexander A. Klimov
9d1a112edf
Icinga DB: introduce icinga:*:state#normalized_performance_data
2021-07-05 19:05:32 +02:00
Alexander A. Klimov
ea5411a6e0
PluginUtility::FormatPerfdata(): normalize UoMs if desired
2021-07-05 19:05:32 +02:00
Julian Brost
401d3cdc9e
Remove passwords from API
...
IdoMysqlConnection, IdoPgsqlConnection, IcingaDB, and ElasticsearchWriter
require passwords in their configuration to authenticate against external
services. This commit ensures that these can no longer be accessed using the
API.
2021-07-05 15:09:54 +02:00
Alexander Aleksandrovič Klimov
b7efbd0bba
Merge pull request #8626 from Icinga/bugfix/recreate-object-invisible-ido-8584
...
Ido*sqlConnection#InternalDeactivateObject(): mark object inactive also in memory
2021-07-02 16:34:28 +02:00
Alexander A. Klimov
07d768f166
API: hide ApiListener#ticket_salt
2021-07-02 16:29:53 +02:00
Alexander A. Klimov
666c5818bb
On ScheduledDowntime change: remove future downtimes created before change
...
refs #8309
2021-07-02 10:37:29 +02:00
Alexander Aleksandrovič Klimov
b07d181c4a
Merge pull request #8631 from Icinga/feature/icingadb-scheduleddowntime
...
Icinga DB: introduce icinga:downtime#scheduled_by
2021-06-30 19:03:53 +02:00
Alexander Aleksandrovič Klimov
31f97d3e6a
Merge pull request #8828 from Icinga/bugfix/execute-command-origin-check
...
event::ExecuteCommand: add missing origin check
2021-06-29 18:08:07 +02:00
Alexander Aleksandrovič Klimov
692f5aa615
Merge pull request #8718 from Icinga/feature/tls-1.3
...
Support TLS 1.3
2021-06-29 17:52:55 +02:00
Alexander Aleksandrovič Klimov
6048d0e800
Merge pull request #8373 from Icinga/feature/improve-crashlog
...
Improve crashlog
2021-06-29 17:52:25 +02:00
Alexander Aleksandrovič Klimov
00af435c13
Merge pull request #8725 from Icinga/bugfix/icingadb-serialize-leaves
...
Icinga DB: serialize icinga:config:checkcommand:argument#value and #set_if as expected
2021-06-29 17:51:41 +02:00
Alexander A. Klimov
bcc3870f3a
On ScheduledDowntime change: ignore downtimes created before change
...
... while creating new downtimes.
refs #8309
2021-06-29 17:08:41 +02:00
Alexander A. Klimov
1ee26ac89e
Introduce Downtime#config_owner_hash
...
refs #8309
2021-06-29 16:38:33 +02:00
Julian Brost
8f585bd2ee
event::ExecuteCommand: add missing origin check
...
Only handle messages with a trusted origin in
ClusterEvents::ExecuteCommandAPIHandler. Previously, it would not locally
execute any command but forward them to other nodes where they would then have
a trusted origin and be executed.
2021-06-29 11:15:22 +02:00
Julian Brost
0e7a05ad7a
Support TLS 1.3
2021-06-29 11:08:47 +02:00
Alexander Aleksandrovič Klimov
58e329bc03
Merge pull request #7874 from Icinga/feature/sd_notify-7329
...
sd_notify() systemd about what we're doing right now
2021-06-28 18:20:15 +02:00
Julian Brost
5fdfd47176
Merge pull request #8848 from Icinga/bugfix/harden-scheduled-downtimes
...
ScheduledDowntime::TimerProc(): Catch exceptions to make sure other downtimes are still created
2021-06-28 17:16:57 +02:00
Julian Brost
d1839471f4
Merge pull request #8846 from Icinga/bugfix/logger-default-severity
...
Set a default severity for loggers
2021-06-28 17:15:26 +02:00
Alexander Aleksandrovič Klimov
cd1f9e22f0
Merge pull request #8646 from Icinga/bugfix/trigger-fixed-downtimes-immediately
...
Downtime#Start(): trigger fixed downtimes immediately instead of waiting for the timer
2021-06-24 18:12:03 +02:00
Noah Hilverling
f48ad574d7
ScheduledDowntime::TimerProc(): Catch exceptions to make sure other downtimes are still created
2021-06-24 14:05:08 +02:00
Noah Hilverling
8af66ce44c
Merge pull request #8710 from Icinga/feature/windows-event-log
...
Add support for Windows Event Log and write early log messages to it
2021-06-24 09:19:50 +02:00
Noah Hilverling
1fae2f3974
Merge pull request #8769 from Icinga/bugfix/new-connection-timeout
...
Add timeout for full Icinga connection handshake
2021-06-24 09:18:37 +02:00
Alexander A. Klimov
d8e5e07c4f
Downtime#Start(): trigger fixed downtimes immediately instead of waiting for the timer
...
... not to cause e.g. notifications if a problem occurs
between the downtime start time and the timer routine.
2021-06-23 19:16:15 +02:00
Alexander Aleksandrovič Klimov
9f24107a08
Merge pull request #8748 from Icinga/bugfix/icingadb-cv-function
...
JsonEncode(): encode non-[]/{} objects as strings, not null
2021-06-23 18:01:21 +02:00
Alexander Aleksandrovič Klimov
b2c3ff6b27
Merge pull request #8638 from Icinga/feature/icingadb-multi-conns
...
Icinga DB: use one Redis connection per config object type
2021-06-23 18:01:04 +02:00
Alexander A. Klimov
0fd474ee8d
Hide $NOTIFY_SOCKET from plugins
...
refs #7329
2021-06-23 17:42:25 +02:00
Julian Brost
963ad9dd1c
Set a default severity for loggers
...
So far, the documentation has claimed that loggers have a default severity
(information for FileLogger and warning for SyslogLogger). However, this was
not the case and not setting the severity resulted in a configuration error.
This commit changes the default value to be information for all loggers.
2021-06-23 16:57:44 +02:00
Alexander A. Klimov
190e2f8fd9
Icinga DB: introduce icinga:downtime#scheduled_by
2021-06-23 16:49:19 +02:00
Alexander Aleksandrovič Klimov
2cd9c1d902
Merge pull request #8835 from Icinga/bugfix/api-filename-truncation
...
Fix/restrict truncation of filenames for API-created objects
2021-06-23 12:06:31 +02:00
Julian Brost
56060bc8d5
ApiListener: Deprecate tls_handshake_timeout in favor of connect_timeout
2021-06-23 11:21:42 +02:00
Julian Brost
84d778580f
Add timeout for all new connections
...
This commit adds a timeout for both establishing new outgoing and incoming
connections. This timeout applies to everything until the connection is in a
state where either JsonRpcConnection or HttpServerConnection takes over.
2021-06-23 11:21:42 +02:00
Julian Brost
fbed8a0463
Merge pull request #8768 from Icinga/bugfix/scheduleddowntime-interfer
...
ScheduledDowntime: ignore not related Downtimes while creating Downtimes
2021-06-22 15:48:37 +02:00
Julian Brost
02f761798c
Merge pull request #8825 from Icinga/bugfix/validate-config-package-name
...
ConfigPackageUtility::ValidateName: replace broken regex
2021-06-22 15:45:38 +02:00
Julian Brost
54a7da437d
Merge pull request #8447 from Icinga/feature/deprecated-relative-removal
...
Relativize future removals of deprecated features
2021-06-22 12:05:33 +02:00
Julian Brost
36ce7d961f
Rename silent parameter of ConfigItem::ActivateItems()
...
As silent now no longer only controls the generation of log messages, a better
name is required. This changes its name, inverts its value to reflect the new
name and adds a documentation comment.
2021-06-21 16:07:36 +02:00
Julian Brost
05ca30a6a0
Write early log messages to the Windows Event Log
...
When Icinga 2 is started as a service, the early log messages generated
until the FileLogger object is activated are lost and make it really
hard to debug issues that (only) occur when Icinga 2 reloads.
With this commit, these early log messages are written to the Windows
Event Log.
2021-06-21 15:15:54 +02:00
Julian Brost
6de9f58810
Add WindowsEventLogLogger
2021-06-21 15:15:54 +02:00
Julian Brost
118df982f1
GetObjectConfigPath: only truncate and hash comment and downtime filenames
...
This partially reverts 68a0079c26
and keeps the
fix only for comment and downtime objects for now. For reasoning, please see
the comment in the code.
2021-06-17 16:21:01 +02:00
Julian Brost
e079762c8e
GetObjectPath: ensure use of escaped name in all cases and use TruncateUsingHash()
...
68a0079c26
introduced two problems that are fixed
with this commit:
1. The new truncated/hashed name did not use EscapeName()
2. There was a possible collision of names when creating objects with a full
name of format "[80 characters]...[40 hex digits]" (i.e. the same as the
truncated/hashed variant but short enough that it isn't hashed)
2021-06-17 16:21:01 +02:00
Julian Brost
97d6876803
Utility: add a function to truncate strings while avoiding collisions
2021-06-17 16:21:01 +02:00
Julian Brost
005fac0a23
Merge pull request #8742 from Icinga/bugfix/double-to-string
...
Convert::ToString(double): handle integral values too large for long long correctly
2021-06-15 12:28:15 +02:00
Julian Brost
c40b18ef61
ConfigPackageUtility::ValidateName: replace broken regex
...
The old validation regex matched if the name consists only of invalid
character, not that it does not contain them, i.e. something like "foo/bar" was
considered valid.
This commit replaces the regex with a check that all characters in the name are
allowed characters.
2021-06-15 12:16:54 +02:00
Julian Brost
b8218a3c0e
IcingaDB::UpdateAllConfigObjects: explicitly capture variables in lambda
2021-06-15 11:52:53 +02:00
Alexander A. Klimov
9c567c0bde
Icinga DB: no active checks? Not overdue!
2021-06-08 19:17:03 +02:00
Alexander A. Klimov
d1e15a220c
Icinga DB: use one Redis connection per config object type
2021-06-08 17:52:04 +02:00
Julian Brost
06999faf25
Allow using E in perfdata both as exponent and unit prefix
2021-06-08 12:37:13 +02:00
Julian Brost
f346a9eea4
Merge pull request #8652 from Icinga/bugfix/l_appversionint-0-8628
...
l_AppVersionInt: respect versions like r2.12.0, not just v2.12.0
2021-06-07 16:07:04 +02:00
Julian Brost
62cbe72cdb
Merge pull request #8492 from Icinga/bugfix/perfdata-scientific-notation
...
Fix perfdata parser not recognize scientific notation
2021-06-07 15:29:52 +02:00
Julian Brost
9f6cbc38f2
Merge pull request #8754 from Icinga/feature/icingadb-replace-lua-with-xadd-maxlen
...
Icinga DB: Use XADD ... MAXLEN 1 instead of a custom Lua script
2021-06-04 13:52:30 +02:00
Alexander A. Klimov
f0c763465b
sd_notify() systemd about what we're doing right now
...
refs #7329
2021-06-01 18:07:39 +02:00
Alexander Aleksandrovič Klimov
dbcb2549aa
Merge pull request #8708 from Icinga/bugfix/reminder-notification-after-timeperiod-with-interval-0
...
Make sure not to send reminder notification, if problem notification has been suppressed by TimePeriod
2021-05-25 16:09:36 +02:00
Alexander Aleksandrovič Klimov
0156434b2e
Merge pull request #8677 from Icinga/bugfix/mysql-one-transaction-for-programstatus
...
IDO: Use own transaction for program status and make sure InternalNewTransaction() gets executed
2021-05-20 11:49:07 +02:00
Noah Hilverling
8150b0656e
Merge pull request #8764 from Icinga/bugfix/icingadb-change-id-fields-to-match-sql-schema
...
Icinga DB: Change ID fields to match SQL schema
2021-05-20 10:44:55 +02:00
Noah Hilverling
f551e95338
IDO-MySQL: Make sure InternalNewTransaction() and FinishAsyncQueries() get executed during high load
2021-05-19 17:28:11 +02:00
Noah Hilverling
15786baf3d
IDO: Use own transaction for programstatus
2021-05-19 17:26:32 +02:00
Noah Hilverling
898e7fdf35
Icinga DB: Change ID fields to match SQL schema
2021-05-19 17:01:08 +02:00
Alexander A. Klimov
f28b9fb7f3
ScheduledDowntime: ignore not related Downtimes while creating Downtimes
2021-05-19 16:10:57 +02:00
Noah Hilverling
fb89c88ca9
Icinga DB: Replace global keys spacer '_' with ':' to fit new schema
2021-05-18 08:58:52 +02:00
Eric Lippmann
c0cbc4533c
Fix group member keys
2021-05-07 08:41:38 +02:00
Noah Hilverling
4005d81a43
Icinga DB: Sync state using runtime updates
2021-05-07 08:41:38 +02:00
Noah Hilverling
ab04a4ee98
Icinga DB: Sync runtime updates using streams
2021-05-07 08:41:38 +02:00
Julian Brost
a5dc52dea5
IcingaDB: use XADD MAXLEN instead of custom Lua script for heartbeats
...
The existing Lua script adds a new entry to a stream and then deletes all older
entries. The same can be achieved by using `XADD ... MAXLEN 1`.
2021-05-03 17:21:11 +02:00
Julian Brost
9dd210df84
IcingaDB: use XADD MAXLEN instead of custom Lua script for dump signals
...
The existing Lua script adds a new entry to a stream and then deletes all older
entries. The same can be achieved by using `XADD ... MAXLEN 1`.
2021-05-03 17:21:01 +02:00
Alexander A. Klimov
fa2666fecf
JsonEncode(): encode non-[]/{} objects as strings, not null
...
... to represent function custom vars as such in Icinga DB.
2021-04-30 15:49:52 +02:00
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
Julian Brost
2d6d87d10f
Convert::ToString(double): handle integral values too large for long long correctly
...
Even if a double represents an integer value, it might not be safe to cast it
to long long as it may overflow the type. Instead just use print the double
value with 0 decimals using std::setprecision.
Before:
<1> => 18446744073709551616.to_string()
"-9223372036854775808"
After:
<1> => 18446744073709551616.to_string()
"18446744073709551616"
2021-04-27 17:31:50 +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 A. Klimov
306a0f476c
Ido*Connection#FieldToEscapedString(): support NULL
...
refs #8727
2021-04-20 19:30:59 +02:00
Alexander A. Klimov
8918b38dea
DbConnection#Pause(): also update is_currently_running and process_id
...
refs #8727
2021-04-20 19:07:20 +02:00
Alexander A. Klimov
3d8586ccec
Ido*Connection: extend IsPaused() check where the difference matters
...
refs #8727
2021-04-20 19:04:49 +02:00
Alexander A. Klimov
92df2ce2ca
Deduplicate DbConnection#Disconnect() in #Pause()
...
refs #8727
2021-04-20 18:42:37 +02:00
Alexander A. Klimov
0d34d8951a
Abstract Ido*Connection#Disconnect()
...
refs #8727
2021-04-20 18:40:49 +02:00
Alexander A. Klimov
fd9bdb798d
Deduplicate DbConnection#m_QueryQueue.Join() in #Pause()
...
refs #8727
2021-04-20 18:40:35 +02:00
Alexander A. Klimov
40c0bfad23
DbConnection#Pause(): call overridden method as last step
...
Otherwise it marks the object as paused and the other steps become no-ops.
refs #8727
2021-04-20 18:11:52 +02:00
Noah Hilverling
08e586fbf0
Notifications: Make sure not to send reminder notification, if problem notification has been suppressed
2021-03-30 15:32:49 +02:00
Alexander Aleksandrovič Klimov
ee705bb110
Merge pull request #8547 from Icinga/bugfix/unable-to-toggle-notifications-from-icingaweb2-8533
...
Fix runtime config updates not working for objects without zone
2021-03-26 17:18:22 +01: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 Aleksandrovič Klimov
0ee93754ee
Merge pull request #8691 from Icinga/bugfix/retry-rename-on-windows
...
Retry file rename operations on Windows for some errors
2021-03-26 17:16:25 +01:00
Alexander Aleksandrovič Klimov
65a77d4955
Merge pull request #8702 from Icinga/bugfix/missing-iostream-include
...
Add missing #include <iostream>
2021-03-26 17:16:01 +01:00
Alexander A. Klimov
7dcf48f707
Icinga DB: dump the correct icinga:config:endpoint#zone_id
2021-03-26 13:53:31 +01:00
Julian Brost
180132806f
Merge pull request #8696 from Icinga/feature/improve-redisconnection-write-performance
...
RedisConnection::WriteRESP: Use one asio::async_write instead of many
2021-03-26 12:36:44 +01:00
Julian Brost
8813b74c9f
Merge pull request #8693 from Icinga/bugfix/stringbuilder-malloc
...
PackObject(): avoid one malloc()
2021-03-25 18:02:12 +01:00
Julian Brost
b34818d3fc
Add missing #include <iostream>
...
Fixes the following build error:
/home/jbrost/dev/icinga2/lib/base/stdiostream.cpp: In member function ‘virtual size_t icinga::StdioStream::Read(void*, size_t, bool)’:
/home/jbrost/dev/icinga2/lib/base/stdiostream.cpp:28:15: error: invalid use of incomplete type ‘std::iostream’ {aka ‘class std::basic_iostream<char>’}
28 | m_InnerStream->read(static_cast<char *>(buffer), size);
| ^~
2021-03-25 11:30:02 +01:00
Noah Hilverling
5c8b32618c
RedisConnection::WriteRESP: Use one asio::async_write instead of many
2021-03-24 13:14:01 +01:00
Alexander A. Klimov
9531de3835
JsonEncode(): serialize integers w/o trailing .0
...
... so Icinga DB can parse them as integers.
2021-03-23 17:52:37 +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
070b4f9d06
Drop StringBuilder
2021-03-23 13:13:47 +01:00
Alexander A. Klimov
f89f35c798
PackObject(): avoid one malloc()
...
... for performance reasons.
2021-03-23 13:13:47 +01:00
Julian Brost
05c8e7f36f
Retry file rename operations on Windows for some errors
2021-03-23 09:54:01 +01:00
Alexander Aleksandrovič Klimov
9830dc194b
Merge pull request #8688 from Icinga/feature/sha1-without-sprintf
...
Speed up SHA1 function by removing calls to sprintf
2021-03-22 18:46:08 +01:00
Alexander Aleksandrovič Klimov
1c0ce89cb3
Merge pull request #8681 from Icinga/bugfix/problem-notification-at-downtime-end
...
Send problem notifications after downtime end for checkables in child zones
2021-03-22 17:56:25 +01:00
Julian Brost
2a2229a49b
Don't use sprintf for SHA1 to hex conversion
2021-03-19 10:31:01 +01:00
Alexander Aleksandrovič Klimov
ef8619f76b
Merge pull request #8601 from Icinga/feature/replace-std-boost-bind-with-lambdas-7006
...
Feature: Replace std/boost::bind() with lambdas
2021-03-18 17:56:13 +01:00
Julian Brost
29727e06c0
Only handle event::SetSuppressed{Notifications,NotificationTypes} within the local zone
...
Note that even when passing `nullptr` as target zone to `RelayMessage()`, the
cluster message will still be sent to the parent zone. These incoming messages
will now be rejected by the parent nodes. At the moment, there's no way to only
send within the local zone.
2021-03-17 15:05:12 +01:00
Yonas Habteab
43ba2da39c
Replace std/boost::bind() function with lambda expression
2021-03-10 16:29:40 +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 Aleksandrovič Klimov
d169abc22c
Merge pull request #7968 from Icinga/bugfix/jsonrpcconnection-disconnect-log
...
JsonRpcConnection: always log errors
2021-03-08 10:55:55 +01:00
Julian Brost
02fd60934f
Merge pull request #8008 from Icinga/bugfix/ascii-tables-in-plugin-output-8006
...
PluginUtility::ParseCheckOutput(): if it doesn't look like perfdata, it's not perfdata
2021-03-05 17:19:38 +01:00
Alexander A. Klimov
4eddac0e64
Icinga DB: re-insert only changed object attributes
2021-03-04 17:29:39 +01:00
Alexander A. Klimov
f60758dc7c
JsonRpcConnection: always log errors
2021-03-04 16:23:07 +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
Julian Brost
1742e31225
Add comments to stack trace formatter and test case
2021-03-01 14:07:11 +01:00
Julian Brost
b931194f59
Use backtrace_symbols() when printing stack traces on FreeBSD
...
Unfortunately, the symbol resolution of boost::stacktrace is broken on
FreeBSD, therefore fall back to using backtrace_symbols() to print the
stack trace saved by Boost.
Additionally, -D_GNU_SOURCE is required on FreeBSD for the
_Unwind_Backtrace function used by boost::stacktrace.
2021-03-01 14:07:09 +01:00
Julian Brost
7d3885d05c
Crash handlers: use more compact string representation
2021-03-01 14:06:47 +01:00
Julian Brost
710cd7287f
Begin crash log for SIGABRT with error message and timestamp
...
This makes the format more similar to what the uncaught C++ and SEH
exception handlers write. Previously there was no indication in the
crash log that a SIGABRT happened.
2021-03-01 14:06:47 +01:00
Julian Brost
1ad233da86
Add some comments to __cxa_throw
...
Maybe this will save the next person who has to look at this code some
time. Please don't blame me for the implementation, I'm just trying to
reconstruct what it does.
2021-03-01 14:06:47 +01:00
Julian Brost
e60dd51284
Restructure stack and context trace selection in DiagnosticInformation and document behavior
...
The logic for selecting the traces to print stays the same, but there
are fewer nested ifs now. This changes the format of the returned string
a bit by adding a heading for both traces.
2021-03-01 14:06:47 +01:00
Julian Brost
7f2868ab36
Add documentation for cast_exception function
2021-03-01 14:06:47 +01:00
Julian Brost
15a16b23d9
Pass fallback stacktrace to DiagnosticInformation in terminate handler
...
By default, DiagnosticInformation uses the stack trace saved when the
exception was thrown, but this mechanism is not in use on Windows.
Gathering a stacktrace in the terminate handler serves as a fallback.
2021-03-01 14:06:47 +01:00
Julian Brost
5cb7c7cc09
Replace icinga::StackTrace with boost::stacktrace::stacktrace
...
Provides roughly the same functionality but works better on certain
platforms (especially Windows) and is less code to maintain.
2021-03-01 14:06:44 +01:00
Julian Brost
e11b4b7b55
Print details in uncaught SEH exception handler
2021-03-01 14:05:27 +01:00
Julian Brost
68e4b807d1
Move error message and time to the beginning of the SEH crash log
...
This is more similar to the normal exception crashlog which also states
the problem and time at the beginning of the file.
2021-03-01 14:05:27 +01:00
Julian Brost
0db59bad83
Use boost::stacktrace instead of custom implementation in Windows SEH filter
2021-03-01 14:05:27 +01:00
Julian Brost
f8b7a1511b
Run termination handler for uncaught C++ exceptions on Windows
...
On Windows, the termination handler is executed for uncaught C++
exceptions unless a SEH unhandled exception filter is also set. In this
case, this filter has to explicitly chain the default filter to keep
this behavior.
2021-03-01 14:05:27 +01:00
Alexander A. Klimov
1c5f69683f
l_AppVersionInt: respect versions like r2.12.0, not just v2.12.0
...
refs #8628
2021-02-25 15:31:07 +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 A. Klimov
e0c13401f7
Ido*sqlConnection#InternalDeactivateObject(): mark object inactive also in memory
...
Previously:
1. You delete an object from a config file
2. You reload Icinga
3. Icinga fetches all objects and whether they're active from the IDO
4. Icinga recognizes that the just deleted object doesn't exist anymore
5. Icinga marks it as inactive in the IDO, but not in memory
6. You re-create the just deleted object via API
7. Icinga still thinks it's active and doesn't activate it - it's invisible
refs #8584
2021-02-08 16:57:15 +01:00
Alexander Aleksandrovič Klimov
aa4f53009e
Merge pull request #8614 from Icinga/bugfix/runworker-exceptions
...
Improve handling of exceptions thrown by RunWorker
2021-02-08 16:22:35 +01:00
Julian Brost
54a8c7b434
Try to log useful information for exceptions thrown by RunWorker
2021-02-05 15:43:27 +01:00
Julian Brost
ddbad7937d
Merge pull request #8622 from Icinga/bugfix/dependency-ti-typo-8180
...
dependency.ti: fix typo
2021-02-05 11:49:03 +01:00
Alexander A. Klimov
ebfa73388f
dependency.ti: fix typo
...
refs #8180
2021-02-04 18:29:54 +01:00
Alexander Aleksandrovič Klimov
aa0baf6f69
Merge pull request #8099 from Icinga/feature/std-mutex
...
Use std::mutex, not boost::mutex
2021-02-04 10:19:04 +01:00
Alexander A. Klimov
9154aa17eb
Fix missing include
2021-02-03 09:54:57 +01:00
Alexander A. Klimov
c3388e9af6
Use std::mutex, not boost::mutex
2021-02-03 09:54:57 +01:00
Alexander Aleksandrovič Klimov
dbdfe189c0
Merge pull request #7092 from Icinga/bugfix/command-escape-windows-4849
...
Fix Windows command escape for \"
2021-02-01 11:20:44 +01:00
Alexander Aleksandrovič Klimov
32cae11175
Merge pull request #8613 from Icinga/bugfix/ido-built-in-checkcommand-overrides-crit-with-warn-state
...
IdoCheckTask: Don't override checkable critical with warn state
2021-01-28 14:26:10 +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
9a867c2c25
Merge pull request #8513 from Icinga/bugfix/notifications-downtime-change-in-timeperiod-8509
...
FireSuppressedNotifications(const Notification::Ptr&): don't send notifications while suppressed by checkable
2021-01-28 10:01:23 +01:00
Julian Brost
d7833a5977
Catch exceptions thrown by RunWorker on Windows
...
The same is already done on other platforms in line 529.
2021-01-27 15:48:28 +01:00
Alexander Aleksandrovič Klimov
8d1e958275
Make code doc more readable
...
Co-authored-by: Julian Brost <julian.brost@icinga.com>
2021-01-27 15:43:37 +01:00
Yonas Habteab
3e5dfa9607
IdoCheckTask: Don't override checkable critical with warn state
2021-01-27 13:27:14 +01:00
Julian Brost
9219f68c83
Merge pull request #8158 from Icinga/bugfix/check-source-passive-7948
...
Checkable#ProcessCheckResult(): don't overwrite check source
2021-01-26 10:49:55 +01:00
Alexander A. Klimov
c3eba7e88d
Checkable#ProcessCheckResult(): don't overwrite check source
...
... set by passive check results.
refs #7948
2021-01-25 16:05:03 +01:00
Alexander Aleksandrovič Klimov
91ffa89dad
Merge pull request #7918 from Icinga/feature/check-timeouts-sigterm-6162
...
On check_timeout first send SIGTERM
2021-01-21 16:11:07 +01:00
Alexander Aleksandrovič Klimov
124f98eed4
Merge pull request #8600 from Icinga/feature/flapping-ignore-unknown
...
Flapping: Allow to ignore states in flapping detection
2021-01-21 13:47:44 +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
Alexander Aleksandrovič Klimov
ef23ae5f3c
Merge pull request #8267 from efuss/passive_reach
...
Drop passive check results for unreachable hosts/services
2021-01-20 17:07:52 +01:00
Noah Hilverling
e060995fd8
Flapping: Allow to ignore states in flapping calculation
2021-01-20 11:09:03 +01:00
Alexander Aleksandrovič Klimov
5e810f30a7
Merge pull request #8605 from Icinga/bugfix/icingadb-initial-sync-log
...
IcingaDB: wait for queries to be executed in inital sync
2021-01-20 10:47:46 +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
Edgar Fuß
3c050fcc46
Drop passive check results for unreachable hosts/services
...
Disregard passive check results while no active checks are being scheduled due to violated dependencies.
This copes with the fact that programs feeding passive check results into Icinga may have no notion of reachability and so drive a checkable into HARD state although dependencies have caused active check scheduling being suspended. This may prevent superflous problem notifications being emitted during recovery.
As disable_checks defaults to false, it was regarded OK (by @Al2Klimov) to make this behaviour (which resembles the active check case) unconditional and not conditionalize it on an additional attribute.
In the description of disable_checks, note that a value of true both disables scheduling of active checks and drops passive check results.
2021-01-19 20:08:38 +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
Alexander Aleksandrovič Klimov
3976f256a8
Merge pull request #8593 from Icinga/bugfix/activate-items-assertion
...
Remove incorrect assertion in ConfigItem::ActivateItems
2021-01-19 13:52:16 +01:00
Alexander Aleksandrovič Klimov
cbd0d6ea6e
Merge pull request #8588 from Icinga/bugfix/concurrent-schedule-downtime-delete-host
...
Fix null pointer dereferences when deleting objects while scheduling downtimes
2021-01-19 13:51:08 +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
Julian Brost
e727675aaf
Remove incorrect assertion in ConfigItem::ActivateItems
...
There is an assertion that after activating items, all these items are
active, which sounds reasonable at first. However, with concurrent API
queries, some of these could already be deleted and therefore be
deactivated again.
2021-01-15 16:40:07 +01:00
Julian Brost
88e5744d54
AddDowntime: return Downtime::Ptr instead of String containing the name
...
At numerous places in the code, something like this is performed:
String name = Downtime::AddDowntime(...);
Downtime::Ptr downtime = Downtime::GetByName(name);
However, `downtime` can be a `nullptr` after this as it is possible that
the downtime is deleted in between.
This commit changes the return type of `Downtime::AddDowntime` to return
a Downtime::Ptr instead of the full name of the downtime. `AddDowntime`
performs the very same `GetByName()` operation internally, but handles
the `nullptr` case correctly and throws an exception.
2021-01-15 16:34:48 +01:00
Alexander Aleksandrovič Klimov
986bedd9a0
Merge pull request #8594 from Icinga/feature/remove-upq-from-activate-items
...
Remove upq from ConfigItem::ActivateItems
2021-01-15 12:09:57 +01:00
Alexander Aleksandrovič Klimov
4063e39d5f
Merge pull request #8515 from Icinga/feature/update-ssl-context-after-accepting-new-connection-8501
...
API: Update the ssl context after each accepting incoming connection
2021-01-15 11:21:36 +01:00
Yonas Habteab
d27f533e5f
ApiListener: Update the ssl cont after each accepting incoming connection
2021-01-14 18:40:20 +01:00
Yonas Habteab
057254695d
Utility: Introduce new helper function Utility::GetFileCreationTime()
2021-01-14 18:39:14 +01:00
Alexander Aleksandrovič Klimov
d82e4987bd
Merge pull request #8427 from Icinga/bugfix/fork-exit
...
StartUnixWorker(): don't exit() on fork() failure
2021-01-14 17:49:41 +01:00
Alexander Aleksandrovič Klimov
c549a6657e
Merge pull request #8562 from Icinga/bugfix/fix-no-renotification-for-non-ok-state-changes-8545
...
Fix no re-notification for non OK state changes with time delay
2021-01-14 17:49:29 +01:00
Alexander Aleksandrovič Klimov
70b438a2bf
Merge pull request #8104 from Icinga/bugfix/remove-downtime-returns-wrong-status-7408
...
API: Display a correct status when removing a downtime
2021-01-14 17:49:00 +01:00
Alexander A. Klimov
931b9307ae
StartUnixWorker(): don't exit() on fork() failure
...
... but let the caller handle the failure.
Not to stop working completely just because of fork() failure during a reload.
2021-01-14 13:40:18 +01:00
Alexander A. Klimov
e1bc4d474f
On check_timeout first send SIGTERM
...
... to allow check plugins to terminate gracefully.
refs #6162
2021-01-14 12:00:11 +01:00
Yonas Habteab
997ad86225
Fix no re-notification for non OK state changes with time delay
2021-01-14 11:54:25 +01:00
Alexander Aleksandrovič Klimov
5efe3e662c
Merge pull request #8025 from Icinga/bugfix/downtime-for-host-service-with-long-name-8022
...
ConfigObjectUtility::GetObjectConfigPath(): hash names of not already existing objects
2021-01-14 10:42:04 +01:00
Julian Brost
db30704d14
Merge pull request #8532 from Icinga/bugfix/do-not-override-error-codes-that-are-not-200
...
HTTP: Do not override status codes that are not 200
2021-01-14 09:34:04 +01:00
Yonas Habteab
066db5ef60
HTTP: Don't override status codes that are not OK
2021-01-13 18:56:56 +01:00
Julian Brost
f12666c166
Merge pull request #8157 from Icinga/bugfix/temporary-files-5124
...
Clean up temp files
2021-01-13 15:45:29 +01:00