From 4d03fd3231c0c8c3c9fab5a797c098782a1ba678 Mon Sep 17 00:00:00 2001 From: Chris Croome <chris@webarchitects.co.uk> Date: Fri, 4 Apr 2025 10:21:29 +0100 Subject: [PATCH] wip --- defaults/main.yml | 7 +- files/network-services.conf | 130 ++++++++++++++++++ meta/argument_specs.yml | 9 ++ tasks/config.yml | 32 ++++- tasks/install.yml | 10 ++ tasks/main.yml | 8 +- tasks/master_config.yml | 3 +- tasks/plugin_linuxfabrik.yml | 11 ++ templates/api-user.conf.j2 | 2 +- templates/api-users.conf.j2 | 2 +- templates/checks.conf.j2 | 2 +- templates/constants.conf.j2 | 10 +- templates/host.conf.j2 | 2 +- templates/icinga.pref.j2 | 2 +- templates/icinga2.conf.j2 | 2 +- templates/ido-mysql.conf.j2 | 2 +- templates/linuxfabrik.conf.j2 | 8 +- templates/linuxfabrik.pref.j2 | 2 + templates/notifications.conf.j2 | 2 +- templates/services.conf.j2 | 3 +- templates/users.conf.j2 | 2 +- templates/zones.conf.j2 | 2 +- vars/main.yml | 228 ++++++++++++++++++++++++++++++++ 23 files changed, 458 insertions(+), 23 deletions(-) create mode 100644 files/network-services.conf diff --git a/defaults/main.yml b/defaults/main.yml index 883545f..83cfbc2 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -16,15 +16,16 @@ icinga_api_users_dir: /etc/icinga2/conf.d/api-users icinga_linuxfabrik: false icinga_linuxfabrik_plugins: - name: apache-httpd-status - # This causes a failure - # - name: fail2ban + # Don't enable fail2ban as it clashes with the one defined in + # /usr/share/icinga2/include/plugins-contrib.d/network-services.conf + - name: fail2ban + sudo: true - name: gitlab-health - name: mysql-connections - name: mysql-memory - name: mysql-open-files - name: mysql-slow-queries - name: needs-restarting - - name: nextcloud-security-scan - name: nextcloud-stats - name: nextcloud-version - name: php-fpm-status diff --git a/files/network-services.conf b/files/network-services.conf new file mode 100644 index 0000000..99a2595 --- /dev/null +++ b/files/network-services.conf @@ -0,0 +1,130 @@ +/* Ansible managed */ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "kdc" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_kdc" ] + + arguments = { + "-H" = { + value = "$kdc_address$" + description = "Name or IP address of KDC to check." + } + "-P" = { + value = "$kdc_port$" + description = "Port on which KDC runs (default 88)." + } + "-p" = { + value = "$kdc_principal$" + description = "Principal name to authenticate as (including realm)." + required = true + } + "-k" = { + value = "$kdc_keytab$" + description = "Keytab file containing principal's key." + required = true + } + } + + vars.kdc_address = "$check_address$" +} + +object CheckCommand "rbl" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_rbl" ] + + arguments = { + "-H" = { + value = "$rbl_hostname$" + description = "Name or IP address of SMTP server to check." + } + "-s" = { + value = "$rbl_server$" + description = "List of RBL servers as an array." + required = true + repeat_key = true + } + "-w" = { + value = "$rbl_warning$" + description = "Number of blacklisting servers for a warning." + } + "-c" = { + value = "$rbl_critical$" + description = "Number of blacklisting servers for a critical." + } + "-t" = { + value = "$rbl_timeout$" + description = "Seconds before plugin times out (default: 15)." + } + } + + vars.rbl_hostname = "$check_address$" + vars.rbl_timeout = 15 + vars.rbl_warning = 1 + vars.rbl_critical = 1 +} + +object CheckCommand "lsyncd" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_lsyncd" ] + + arguments = { + "-s" = { + value = "$lsyncd_statfile$" + description = "Set status file path (default: /var/run/lsyncd.status)." + } + "-w" = { + value = "$lsyncd_warning$" + description = "Warning if more than N delays (default: 10)." + } + "-c" = { + value = "$lsyncd_critical$" + description = "Critical if more then N delays (default: 100)." + } + } +} + +/* Commented so the Linuxfabrik fail2ban plugin can be used + * + * object CheckCommand "fail2ban" { + * command = [ "sudo", PluginContribDir + "/check_fail2ban" ] + * + * arguments = { + * "-D" = { + * value = "$fail2ban_display$" + * description = "To modify the output display, default is 'CHECK FAIL2BAN ACTIVITY'" + * } + * "-P" = { + * value = "$fail2ban_path$" + * description = "Specify the path to the tw_cli binary, default value is /usr/bin/fail2ban-client" + * } + * "-w" = { + * value = "$fail2ban_warning$" + * description = "Specify a warning threshold, default is 1" + * } + * "-c" = { + * value = "$fail2ban_critical$" + * description = "Specify a critical threshold, default is 2" + * } + * "-s" = { + * value = "$fail2ban_socket$" + * description = "Specify a socket path, default is unset" + * } + * "-p" = { + * set_if = "$fail2ban_perfdata$" + * description = "If set to true, activate the perfdata output" + * } + * "-j" = { + * value = "$fail2ban_jail$" + * description = "Specify the name of the specific jail to monitor; omitted by default, i.e. all jails are being monitored" + * } + * } + * + * vars.fail2ban_perfdata = true + * } + * + */ + +/* vim: syntax=icinga2 */ diff --git a/meta/argument_specs.yml b/meta/argument_specs.yml index 8b3dc25..6b7b20a 100644 --- a/meta/argument_specs.yml +++ b/meta/argument_specs.yml @@ -129,6 +129,15 @@ argument_specs: type: str required: true description: The name of the Linuxfabrik plugin that should be made available for Icinga. + sudo: + type: bool + required: false + description: Run the Linuxfabrik plugin using sudo. + icinga_linuxfabrik_plugins_available: + type: list + elements: str + required: true + description: An internal list of Linuxfabrik plugins that are available in the monitoring plugins package. icinga_linuxfabrik_pkg: type: list elements: str diff --git a/tasks/config.yml b/tasks/config.yml index c9d8fe0..ada109b 100644 --- a/tasks/config.yml +++ b/tasks/config.yml @@ -8,7 +8,7 @@ # # You should have received a copy of the GNU General Public License along with the Webarchitects Icinga Ansible role. If not, see <https://www.gnu.org/licenses/>. --- -- name: Icinga common configuration for master agent nodes +- name: Icinga common configuration for master and agent nodes block: - name: Nagios plugins installed for Debian @@ -25,6 +25,36 @@ state: present when: ansible_facts.distribution == "Ubuntu" + - name: Salt for master node + block: + + - name: Salt present in /root/icinga.salt + ansible.builtin.shell: pwgen -n 32 1 > /root/icinga.salt + args: + creates: /root/icinga.salt + + - name: Slurp /root/icinga.salt + ansible.builtin.slurp: + src: /root/icinga.salt + register: icinga_salt_b64encoded + + - name: Decode the base64 encoded version of salt and set a variable + ansible.builtin.set_fact: + icinga_salt: "{{ icinga_salt_b64encoded['content'] | b64decode | trim }}" + + when: + - inventory_hostname == icinga_master_node + - inventory_hostname in groups['icinga_master_nodes'] + + - name: Icinga constants configuration file in place + ansible.builtin.template: + src: "constants.conf.j2" + dest: "/etc/icinga2/constants.conf" + backup: true + owner: nagios + group: nagios + mode: "0640" + when: - ( groups['icinga_master_nodes'] is defined ) or ( groups['icinga_agent_nodes'] is defined ) - ( inventory_hostname in groups['icinga_master_nodes'] ) or ( inventory_hostname in groups['icinga_agent_nodes'] ) diff --git a/tasks/install.yml b/tasks/install.yml index 7a0ddbe..42f3ce3 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -81,6 +81,16 @@ tags: - debug + - name: Overwrite network-services.conf to omit fail2ban configuration so Linuxfabrik fail2ban plugin can be used + ansible.builtin.copy: + src: network-services.conf + dest: /usr/share/icinga2/include/plugins-contrib.d/network-services.conf + backup: true + mode: "0644" + owner: root + group: root + when: ( "icinga2-common" in ansible_facts.packages.keys() ) + - name: "Directory for Linuxfabrik plugin JSON present for version {{ icinga_linuxfabrik_version }}" ansible.builtin.file: path: "/usr/local/share/icinga2/linuxfabrik/{{ icinga_linuxfabrik_version }}" diff --git a/tasks/main.yml b/tasks/main.yml index 60fbab4..88318ff 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -77,6 +77,11 @@ tags: - icinga_linuxfabrik + - name: Include common config tasks + ansible.builtin.include_tasks: config.yml + tags: + - icinga_linuxfabrik + - name: Include install tasks for the master node ansible.builtin.include_tasks: master.yml when: (inventory_hostname == icinga_master_node) and (inventory_hostname in groups['icinga_master_nodes']) @@ -107,9 +112,6 @@ tags: - molecule-notest - - name: Include common config tasks - ansible.builtin.include_tasks: config.yml - when: >- ( icinga | bool ) and ( ( inventory_hostname in groups['icinga_master_nodes'] ) or diff --git a/tasks/master_config.yml b/tasks/master_config.yml index 972b126..feb8f77 100644 --- a/tasks/master_config.yml +++ b/tasks/master_config.yml @@ -29,13 +29,13 @@ ansible.builtin.template: src: "{{ icinga_conf }}.j2" dest: "/etc/icinga2/{{ icinga_conf }}" + backup: true owner: nagios group: nagios mode: "0640" no_log: "{% if ansible_check_mode | bool %}false{% else %}true{% endif %}" loop: - checks.conf - - constants.conf - icinga2.conf - zones.conf loop_control: @@ -45,6 +45,7 @@ ansible.builtin.template: src: "{{ icinga_conf }}.j2" dest: "/etc/icinga2/conf.d/{{ icinga_conf }}" + backup: true owner: nagios group: nagios mode: "0640" diff --git a/tasks/plugin_linuxfabrik.yml b/tasks/plugin_linuxfabrik.yml index d26f5d6..c0fe7b3 100644 --- a/tasks/plugin_linuxfabrik.yml +++ b/tasks/plugin_linuxfabrik.yml @@ -11,6 +11,13 @@ - name: Icinga agent node install tasks block: + - name: "Fail if the Linuxfabrik plugin is not available for {{ icinga_linuxfabrik_plugin.name }}" + ansible.builtin.assert: + that: + - icinga_linuxfabrik_plugin.name in icinga_linuxfabrik_plugins_available + quiet: "{% if ansible_check_mode or ansible_verbosity >= 1 %}false{% else %}true{% endif %}" + fail_msg: "The Linuxfabrik plugin could ot be found in the icinga_linuxfabrik_plugins_available list, please correct the name or update the list." + - name: "Get the Linuxfabrik plugin icingaweb2-module-director JSON for {{ icinga_linuxfabrik_plugin.name }}" ansible.builtin.get_url: url: "https://raw.githubusercontent.com/Linuxfabrik/monitoring-plugins/refs/tags/v{{ icinga_linuxfabrik_version }}/check-plugins/{{ icinga_linuxfabrik_plugin.name }}/icingaweb2-module-director/{{ icinga_linuxfabrik_plugin.name }}.json" @@ -66,6 +73,10 @@ dest: "/usr/share/icinga2/include/plugins-contrib.d/{{ icinga_linuxfabrik_plugin.name }}.conf" mode: "0644" +# - name: Fail if icinga_linuxfabrik_plugin.name is fail2ban +# fail: +# when: icinga_linuxfabrik_plugin.name == "fail2ban" + when: icinga_linuxfabrik_plugin_json_file.stat.exists | bool tags: diff --git a/templates/api-user.conf.j2 b/templates/api-user.conf.j2 index 871467a..4ffb58f 100644 --- a/templates/api-user.conf.j2 +++ b/templates/api-user.conf.j2 @@ -12,4 +12,4 @@ object ApiUser "{{ icinga_user.key }}" { } -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/api-users.conf.j2 b/templates/api-users.conf.j2 index cd27a9e..3498f24 100644 --- a/templates/api-users.conf.j2 +++ b/templates/api-users.conf.j2 @@ -5,4 +5,4 @@ * */ -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/checks.conf.j2 b/templates/checks.conf.j2 index 7573966..0e1a7ce 100644 --- a/templates/checks.conf.j2 +++ b/templates/checks.conf.j2 @@ -15,4 +15,4 @@ apply Service "check-" for (check => config in host.vars.checks) { } } -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/constants.conf.j2 b/templates/constants.conf.j2 index 994dbee..551b0fe 100644 --- a/templates/constants.conf.j2 +++ b/templates/constants.conf.j2 @@ -18,6 +18,12 @@ const ManubulonPluginDir = "/usr/lib/nagios/plugins" */ const PluginContribDir = "/usr/lib/nagios/plugins" +{% if icinga_linuxfabrik | bool %} +/* The Linuxfabrik Monitoring plugins directory + */ +const PluginLinuxfabrikDir = "/usr/lib64/nagios/plugins" +{% endif %} + /* Our local instance name. By default this is the server's hostname as returned by `hostname --fqdn`. * This should be the common name from the API certificate. */ @@ -26,7 +32,9 @@ const NodeName = "{{ inventory_hostname }}" /* Our local zone name. */ const ZoneName = "{{ inventory_hostname }}" +{% if inventory_hostname == icinga_master_node and inventory_hostname in groups['icinga_master_nodes'] %} /* Secret key for remote node tickets */ const TicketSalt = "{{ icinga_salt }}" +{% endif %} -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/host.conf.j2 b/templates/host.conf.j2 index 5d3a580..1558f48 100644 --- a/templates/host.conf.j2 +++ b/templates/host.conf.j2 @@ -54,4 +54,4 @@ object Host "{{ icinga_host }}" { } -#{# vim: set syntax=jinja2 #} vim: set syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/icinga.pref.j2 b/templates/icinga.pref.j2 index ecd6e63..bb405ab 100644 --- a/templates/icinga.pref.j2 +++ b/templates/icinga.pref.j2 @@ -7,4 +7,4 @@ Pin-Priority: 500 {% endfor %} -# vim: syntax=debsources +#{# vim: syntax=jinja2 #} vim: syntax=debsources diff --git a/templates/icinga2.conf.j2 b/templates/icinga2.conf.j2 index e1ef8ba..321587a 100644 --- a/templates/icinga2.conf.j2 +++ b/templates/icinga2.conf.j2 @@ -64,4 +64,4 @@ include "features-enabled/*.conf" */ include_recursive "conf.d" -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/ido-mysql.conf.j2 b/templates/ido-mysql.conf.j2 index e32b6d7..1e78bfe 100644 --- a/templates/ido-mysql.conf.j2 +++ b/templates/ido-mysql.conf.j2 @@ -14,4 +14,4 @@ object IdoMysqlConnection "ido-mysql" { database = "icinga2" } -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/linuxfabrik.conf.j2 b/templates/linuxfabrik.conf.j2 index 95ac3f0..ba82710 100644 --- a/templates/linuxfabrik.conf.j2 +++ b/templates/linuxfabrik.conf.j2 @@ -2,7 +2,11 @@ object CheckCommand "{{ icinga_linuxfabrik_plugin.name }}" { import "ipv4-or-ipv6" - command = [ "/usr/lib64/nagios/plugins/{{ icinga_linuxfabrik_plugin.name }}" ] +{% if icinga_linuxfabrik_plugin.sudo is defined and icinga_linuxfabrik_plugin.sudo | bool %} + command = ["sudo", PluginLinuxfabrikDir + "/{{ icinga_linuxfabrik_plugin.name }}" ] +{% else %} + command = [ PluginLinuxfabrikDir + "/{{ icinga_linuxfabrik_plugin.name }}" ] +{% endif %} arguments = { {% for icinga_linuxfabrik_plugin_arg in icinga_linuxfabrik_plugin_command_arguments | ansible.builtin.dict2items %} "{{ icinga_linuxfabrik_plugin_arg.key }}" = { @@ -18,4 +22,4 @@ object CheckCommand "{{ icinga_linuxfabrik_plugin.name }}" { } } -/* vim: syntax=icinga2{# vim: syntax=jinja2 #} */ +/* {# vim: syntax=jinja2 #}vim: syntax=icinga2 */ diff --git a/templates/linuxfabrik.pref.j2 b/templates/linuxfabrik.pref.j2 index e374ab6..c56dcc4 100644 --- a/templates/linuxfabrik.pref.j2 +++ b/templates/linuxfabrik.pref.j2 @@ -6,3 +6,5 @@ Pin: origin repo.linuxfabrik.ch Pin-Priority: 500 {% endfor %} + +#{# vim: syntax=jinja2 #}vim: syntax=debsources diff --git a/templates/notifications.conf.j2 b/templates/notifications.conf.j2 index 7cdbdd1..7e20235 100644 --- a/templates/notifications.conf.j2 +++ b/templates/notifications.conf.j2 @@ -34,4 +34,4 @@ apply Notification "mail-icingaadmin" to Service { assign where host.vars.notification.mail } -# vim: set syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/services.conf.j2 b/templates/services.conf.j2 index 73bc45c..ce51fe5 100644 --- a/templates/services.conf.j2 +++ b/templates/services.conf.j2 @@ -114,5 +114,4 @@ apply Service "users" { assign where host.name == NodeName } - -# vim: set syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/users.conf.j2 b/templates/users.conf.j2 index 6e70435..cbcb9d2 100644 --- a/templates/users.conf.j2 +++ b/templates/users.conf.j2 @@ -35,4 +35,4 @@ object UserGroup "icingaadmins" { display_name = "Icinga 2 Admin Group" } -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/templates/zones.conf.j2 b/templates/zones.conf.j2 index dc52bc5..98040e2 100644 --- a/templates/zones.conf.j2 +++ b/templates/zones.conf.j2 @@ -49,4 +49,4 @@ object Zone "global-templates" { # global = true # } -# vim: syntax=icinga2 +#{# vim: syntax=jinja2 #} vim: syntax=icinga2 diff --git a/vars/main.yml b/vars/main.yml index aaf992e..7240767 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -63,6 +63,234 @@ icinga_linuxfabrik_pkg: - linuxfabrik-monitoring-plugins - linuxfabrik-notification-plugins +# Linuxfabrik monitoring plugins available, this list can be updated bu running the following on a server with the linuxfabrik-monitoring-plugins package installed: +# find /usr/lib64/nagios/plugins/ -executable -type f -exec basename "{}" \; | sort | sed 's/^/ - /' +icinga_linuxfabrik_plugins_available: + - about-me + - apache-httpd-status + - apache-httpd-version + - apache-solr-version + - axenita-stats + - borgbackup + - by-ssh + - cometsystem + - composer-version + - countdown + - cpu-usage + - crypto-policy + - csv-values + - deb-lastactivity + - dhcp-relayed + - dhcp-scope-usage + - diacos + - disk-io + - disk-smart + - disk-usage + - dmesg + - dns + - docker-info + - docker-stats + - dummy + - fail2ban + - fedora-version + - feed + - file-age + - file-count + - file-descriptors + - file-ownership + - file-size + - fortios-cpu-usage + - fortios-firewall-stats + - fortios-ha-stats + - fortios-memory-usage + - fortios-network-io + - fortios-sensor + - fortios-version + - fs-inodes + - fs-ro + - fs-xfs-stats + - getent + - githubstatus + - gitlab-health + - gitlab-liveness + - gitlab-readiness + - gitlab-version + - grafana-version + - grassfish-licenses + - grassfish-players + - grassfish-screens + - graylog-version + - haproxy-status + - hin-status + - huawei-dorado-backup-power + - huawei-dorado-controller + - huawei-dorado-disk + - huawei-dorado-enclosure + - huawei-dorado-fan + - huawei-dorado-host + - huawei-dorado-hypermetrodomain + - huawei-dorado-hypermetropair + - huawei-dorado-interface + - huawei-dorado-power + - huawei-dorado-system + - icinga-topflap-services + - infomaniak-events + - infomaniak-swiss-backup-devices + - infomaniak-swiss-backup-products + - ipmi-sel + - ipmi-sensor + - jitsi-videobridge-stats + - jitsi-videobridge-status + - journald-query + - journald-usage + - json-values + - kemp-services + - keycloak-memory-usage + - keycloak-stats + - keycloak-version + - kvm-vm + - librenms-alerts + - librenms-health + - librenms-version + - load + - logfile + - mailq + - mastodon-version + - matomo-reporting + - matomo-version + - mediawiki-version + - memory-usage + - metabase-stats + - mod-qos-stats + - moodle-version + - mydumper-version + - mysql-aria + - mysql-binlog-cache + - mysql-connections + - mysql-database-metrics + - mysql-innodb-buffer-pool-instances + - mysql-innodb-buffer-pool-size + - mysql-innodb-log-waits + - mysql-joins + - mysql-logfile + - mysql-memory + - mysql-open-files + - mysql-perf-metrics + - mysql-query + - mysql-replica-status + - mysql-slow-queries + - mysql-sorts + - mysql-storage-engines + - mysql-system + - mysql-table-cache + - mysql-table-definition-cache + - mysql-table-indexes + - mysql-table-locks + - mysql-temp-tables + - mysql-thread-cache + - mysql-traffic + - mysql-user-security + - mysql-version + - needs-restarting + - network-bonding + - network-connections + - network-io + - network-port-tcp + - nextcloud-security-scan + - nextcloud-stats + - nextcloud-version + - nginx-status + - nodebb-cache + - nodebb-database + - nodebb-errors + - nodebb-events + - nodebb-groups + - nodebb-info + - nodebb-users + - nodebb-version + - ntp-chronyd + - ntp-ntpd + - ntp-systemd-timesyncd + - ntp-w32tm + - onlyoffice-stats + - openjdk-redhat-version + - openstack-nova-list + - openstack-swift-stat + - openvpn-client-list + - openvpn-version + - path-rw-test + - php-fpm-ping + - php-fpm-status + - php-status + - php-version + - ping + - pip-updates + - postfix-version + - postgresql-version + - procs + - python-version + - qts-cpu-usage + - qts-disk-smart + - qts-memory-usage + - qts-temperatures + - qts-uptime + - qts-version + - redfish-drives + - redfish-sel + - redfish-sensor + - redis-status + - redis-version + - restic-check + - restic-snapshots + - restic-stats + - rhel-version + - rocketchat-stats + - rocketchat-version + - rpm-lastactivity + - safenet-hsm-state + - sap-open-concur-com + - scanrootkit + - scheduled-task + - selinux-mode + - sensors-battery + - sensors-fans + - sensors-temperatures + - service + - snmp + - starface-account-stats + - starface-backup-status + - starface-channel-status + - starface-database-stats + - starface-java-memory-usage + - starface-peer-stats + - starface-status + - statusiq + - statuspal + - strongswan-connections + - swap-usage + - systemd-timedate-status + - systemd-unit + - systemd-units-failed + - tuned-profile + - updates + - uptime + - uptimerobot + - users + - veeam-status + - whmcs-status + - wildfly-deployment-status + - wildfly-gc-status + - wildfly-memory-pool-usage + - wildfly-memory-usage + - wildfly-non-xa-datasource-stats + - wildfly-server-status + - wildfly-thread-usage + - wildfly-uptime + - wildfly-xa-datasource-stats + - wordpress-version + - xca-cert + - xml + # Packages available will vary between distros, you can get the packages installed from this repo using # aptitude search "?origin (icinga) ?installed" # -- GitLab