ID: 12680
Title: Linux-Agent: Place systemd units at /usr/lib
Component: Checks & agents
Level: 1
Class: Bug fix
Version: 2.1.0i1
Previously, the RPM/DEB owned systemd units were placed at
/etc/systemd/system. Now, they are placed at /usr/lib/systemd/system/.
A sysadmin can now drop specific overrides into /etc/systemd/system/
to customize the units.
With this change users who want to customize specific systemd behaviour
can follow the officially documented systemd workflow to change only what
they want, resulting in a cleaner workflow.
This merges Github PR #240. Thanks go to jcpunk for contribution!
ID: 12804
Title: Make PasswordStore available for LDAP connections
Component: Setup
Level: 1
Class: New feature
Version: 2.1.0i1
You can now choose to select a password from PasswordStore for
the Bind credentials when creating an LDAP connection.
ID: 12391
Title: HW/SW Inventory History: Improve handling of changed inventory table rows
Component: HW/SW Inventory
Level: 1
Class: New feature
Version: 2.1.0i1
Previously table rows were compared successively (if tables had the same
length) which might have led to unexpected delta tree results.
Moreover the comparison of two tables (and other operations like merging or
filtering) was expensive.
In order to speed up these operations and dump above delta tree heuristic, the
internal table structure changes.
Tables of old or legacy inventory plugins are migrated on-the-fly.
If migrated tables are compared during delta tree calculations there are no
{{changed}} entries anymore. Instead compared rows are treated as {{new}},
{{old}} or {{identical}}.
Delta tree calculations of tables generated from newer inventory plugins are
more exact and don't need the heuristic anymore.
Technical details:
Previous delta tree heuristic:
Assume the following rows which are compared.
C:+
old_rows = [
{
"col1": "value 11",
"col2": "old value 12",
...
},
{
"col1": "value 21",
"col2": "value 22",
...
},
]
new_rows = [
{
"col1": "value 01",
"col2": "value 02",
...
},
{
"col1": "value 11",
"col2": "new value 12",
...
},
{
"col1": "value 21",
"col2": "value 22",
...
},
]
C:-
First both lists were filtered, ie. find rows which
<ul>
<li>are in both lists,</li>
<li>are only in the old list,</li>
<li>are only in the new list.</li>
</ul>
Then if the remaining lists have the same length both lists are compared
successively, ie. compare first old row with first new row, compare second old
row with second new row, and so on. These comparisons generated {{changed}}
entries in the delta tree.
If the remainings lists have not the same length then all remaining old rows
are treated as {[removed}} and all remaining new rows are treated as {{new}}.
The delta tree result of the above example is:
<ul>
<li>one removed row,</li>
<li>one identical row,</li>
<li>two new rows.</li>
</ul>
Obviously this is not what we expect. The result should be:
<ul>
<li>one identical row,</li>
<li>one changed row entry: "old value 12" -> "new value 12",</li>
<li>one new row.</li>
</ul>
Advantages:
Especially the above filtering of both lists is expensive. We also want to make
these operations more reliable. For this we need a row identifier which can be
calculated from the {{key_columns}} declared in newer inventory plugins:
C:+
TableRow(
path=["path", "to", "node"],
key_columns = {
"col1": "value 11",
...
},
inventory_columns = {
"col2": "value 12",
...
},
...
)
C:-
Then the internal table structure looks like:
C:+
rows = {
('value 11', ...): {
"col1": "value 11",
"col2": "value 12",
...
},
('value 21', ...): {
"col1": "value 21",
"col2": "value 22",
...
},
}
C:-
ID: 13061
Title: df: Add level for decreasing disk usage
Component: Checks & agents
Level: 1
Class: New feature
Version: 2.1.0i1
It is now possible to configure
thresholds in the rulesets 'Filesystems (used space and growth)'
to detect negative disk usage trends (e.g. loss of data).
ID: 12990
Title: <tt>allnet_ip_sensoric_humidity</tt>: Discover On Devices With Newer Firmware
Component: Checks & agents
Level: 1
Class: Bug fix
Version: 2.1.0i1
The check plugin <tt>allnet_ip_sensoric_humidity</tt>, which monitors humidity sensors
of ALLNET IP Sensoric devices, will now discover services on devices with newer firmware.
ID: 12989
Title: <tt>mem_used</tt>: "KeyError: 'SwapTotal'"
Component: HW/SW Inventory
Level: 1
Class: Bug fix
Version: 2.1.0i1
For some hosts, the inventory plugin <tt>mem_used</tt> crashed with
"KeyError: 'SwapTotal'".
This has been fixed.
ID: 12847
Title: LDAP: Fix handling of groups containing "#" in Active Directory
Component: Multisite
Level: 1
Class: Bug fix
Version: 2.1.0i1
The Active Directory allows users to use "#" characters in group names
and distinguished names (DNs). Previous version of Checkmk were not able to
use these groups for the roles attribute synchronization.
With this change it is now possible to use group DNs like this:
"CN=#abc,OU=xyz,DC=corp,DC=com".
ID: 12846
Title: Fix inheritance of folder contact groups to services of hosts
Component: Setup
Level: 2
Class: Bug fix
Version: 2.1.0i1
The assignment of contact groups to hosts and services can be controlled using
the folder hierarchy of WATO as described in the user manual
(https://docs.checkmk.com/latest/en/wato_user.html#_allocation_via_folders).
You are only affected by this change in case you use a) the WATO folder hierarchy
for assigning contact groups to services.
When using the assigning contact groups to services with the following
settings, this could result in too many groups being assigned to a service:
<ul>
<li>Add these groups as contacts to all hosts in this folder: Enabled</li>
<li>Add these groups as contacts to all hosts in all subfolders of this folder: Not enabled</li>
<li>Always add these groups as contacts to all services in all subfolders of this folder: Enabled</li>
</ul>
In this situation only the groups from the nearest parent folder should be
assigned to the services, just like it is done for the hosts. Instead the
services got the groups assigned from all parent folders which have the
service assignement enabled.
We now have changed the contact groups of the services to be handled exactly
like the hosts. Only the contact groups defined in the nearest parent folder
with the service assignment enabled will be added to the services.
Example:
<code>
Folder_A (Permission: group1, settings as listed above)
|_Folder_B (Permission: group2, settings as listed above)
</code>
In this scenario, a host in the Folder_B gets the contact group "group2"
assigned. Services got the "group1" and "group2" assingned in previous
versions. Now the services get the "group2" assigned, just like the host.
ID: 13030
Title: check_mk_agent terminates ntpd via timedatectl
Component: Checks & agents
Level: 1
Class: Bug fix
Version: 2.1.0i1
Executing <tt>timedatectl timesync-status</tt> terminates the ntp daemon on
certain debian versions. This werk adds two more safeguards to make sure
<tt>timedatectl timesync-status</tt> is only executed on systems running
systemd-timesyncd.
ID: 12817
Title: mk_postgres: improved error message "Instance DATA not running"
Component: Checks & agents
Level: 1
Class: Bug fix
Version: 2.1.0i1
A postgres instance will be detected as running
if a process is found that contains a postgres commandline
which contains the name of the env-file.
Otherwise the check "SQL Instance" will show the
following error message "Instance <INSTANCE_NAME> not running or postgres DATADIR name is not identical with instance name.".