diff --git a/RELEASE.md b/RELEASE.md index 9da60d3f4..5fa2274d1 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -173,7 +173,7 @@ git clone git@git.icinga.com:packaging/rpm-icinga2.git && cd rpm-icinga2 git clone git@git.icinga.com:packaging/deb-icinga2.git && cd deb-icinga2 ``` -#### Raspbian Packages +### Raspbian Packages ```bash git clone git@git.icinga.com:packaging/raspbian-icinga2.git && cd raspbian-icinga2 diff --git a/doc/01-about.md b/doc/01-about.md index 582e226d8..4a665534a 100644 --- a/doc/01-about.md +++ b/doc/01-about.md @@ -7,7 +7,7 @@ the availability of your network resources, notifies users of outages, and gener performance data for reporting. Scalable and extensible, Icinga can monitor large, complex environments across -multiple locations. +multiple locations. This includes your data center as well as your private, public, or hybrid clouds. Icinga 2 is the monitoring server and requires [Icinga Web 2](https://icinga.com/products/) on top in your Icinga Stack. The [configuration](https://icinga.com/products/configuration/) diff --git a/doc/02-installation.md b/doc/02-installation.md index d7ab43fe8..c31f2ee7a 100644 --- a/doc/02-installation.md +++ b/doc/02-installation.md @@ -23,18 +23,18 @@ We recommend using our official repositories. Here's how to add it to your syste ### Debian Repository ```bash -apt-get update -apt-get -y install apt-transport-https wget gnupg +apt update +apt -y install apt-transport-https wget gnupg -wget -O - https://packages.icinga.com/icinga.key | apt-key add - +wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \ - echo "deb https://packages.icinga.com/debian icinga-${DIST} main" > \ + echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-${DIST} main" > \ /etc/apt/sources.list.d/${DIST}-icinga.list - echo "deb-src https://packages.icinga.com/debian icinga-${DIST} main" >> \ + echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian icinga-${DIST} main" >> \ /etc/apt/sources.list.d/${DIST}-icinga.list -apt-get update +apt update ``` #### Debian Backports Repository @@ -48,7 +48,7 @@ DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \ echo "deb https://deb.debian.org/debian ${DIST}-backports main" > \ /etc/apt/sources.list.d/${DIST}-backports.list -apt-get update +apt update ``` @@ -57,18 +57,18 @@ apt-get update ### Ubuntu Repository ```bash -apt-get update -apt-get -y install apt-transport-https wget gnupg +apt update +apt -y install apt-transport-https wget gnupg -wget -O - https://packages.icinga.com/icinga.key | apt-key add - +wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg . /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \ - echo "deb https://packages.icinga.com/ubuntu icinga-${DIST} main" > \ + echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-${DIST} main" > \ /etc/apt/sources.list.d/${DIST}-icinga.list - echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \ + echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \ /etc/apt/sources.list.d/${DIST}-icinga.list -apt-get update +apt update ``` @@ -76,18 +76,18 @@ apt-get update ### Raspbian Repository ```bash -apt-get update -apt-get -y install apt-transport-https wget gnupg +apt update +apt -y install apt-transport-https wget gnupg -wget -O - https://packages.icinga.com/icinga.key | apt-key add - +wget -O - https://packages.icinga.com/icinga.key | gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \ - echo "deb https://packages.icinga.com/raspbian icinga-${DIST} main" > \ + echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/raspbian icinga-${DIST} main" > \ /etc/apt/sources.list.d/icinga.list - echo "deb-src https://packages.icinga.com/raspbian icinga-${DIST} main" >> \ + echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/raspbian icinga-${DIST} main" >> \ /etc/apt/sources.list.d/icinga.list -apt-get update +apt update ``` @@ -151,7 +151,8 @@ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.r ```bash rpm --import https://packages.icinga.com/icinga.key -dnf install https://packages.icinga.com/fedora/icinga-rpm-release-$(. /etc/os-release; echo "$VERSION_ID")-latest.noarch.rpm +dnf install -y 'dnf-command(config-manager)' +dnf config-manager --add-repo https://packages.icinga.com/fedora/$(. /etc/os-release; echo "$VERSION_ID")/release ``` @@ -247,7 +248,7 @@ with `root` permissions unless noted otherwise. #### Debian / Ubuntu / Raspbian ```bash -apt-get install icinga2 +apt install icinga2 ``` @@ -359,7 +360,7 @@ to determine where to find the plugin binaries. #### Debian / Ubuntu / Raspbian ```bash -apt-get install monitoring-plugins +apt install monitoring-plugins ``` @@ -411,7 +412,7 @@ as part of the [server:monitoring repository](https://build.opensuse.org/project Please make sure to enable this repository beforehand. ```bash -zypper install monitoring-plugins +zypper install --recommends monitoring-plugins-all ``` @@ -530,7 +531,7 @@ yum install icingadb-redis ##### Debian / Ubuntu ```bash -apt-get install icingadb-redis +apt install icingadb-redis ``` diff --git a/doc/02-installation.md.d/04-Fedora.md b/doc/02-installation.md.d/04-Fedora.md index 1f12276b5..2bfbf536b 100644 --- a/doc/02-installation.md.d/04-Fedora.md +++ b/doc/02-installation.md.d/04-Fedora.md @@ -1,2 +1,3 @@ +# Install Icinga 2 on Fedora diff --git a/doc/03-monitoring-basics.md b/doc/03-monitoring-basics.md index c7f468a1c..672c026ff 100644 --- a/doc/03-monitoring-basics.md +++ b/doc/03-monitoring-basics.md @@ -1572,12 +1572,18 @@ send notifications to all group members. > Only users who have been notified of a problem before (`Warning`, `Critical`, `Unknown` states for services, `Down` for hosts) will receive `Recovery` notifications. -Icinga 2 v2.10 allows you to configure `Acknowledgement` and/or `Recovery` +Icinga 2 v2.10 allows you to configure a `User` object with `Acknowledgement` and/or `Recovery` without a `Problem` notification. These notifications will be sent without any problem notifications beforehand, and can be used for e.g. ticket systems. ``` +object User "ticketadmin" { + display_name = "Ticket Admin" + enable_notifications = true + states = [ OK, Warning, Critical ] types = [ Acknowledgement, Recovery ] + email = "ticket@localhost" +} ``` ### Notifications: Users from Host/Service @@ -1817,8 +1823,14 @@ Sometimes the problem in question should not be announced when the notification (the object reaching the `HARD` state), but after a certain period. In Icinga 2 you can use the `times` dictionary and set `begin = 15m` as key and value if you want to postpone the notification window for 15 minutes. Leave out the `end` key -- if not set, -Icinga 2 will not check against any end time for this notification. Make sure to -specify a relatively low notification `interval` to get notified soon enough again. +Icinga 2 will not check against any end time for this notification. + +> **Note** +> +> Setting the `end` key to `0` will stop sending notifications immediately +> when a problem occurs, effectively disabling the notification. + +Make sure to specify a relatively low notification `interval` to get notified soon enough again. ``` apply Notification "mail" to Service { @@ -1835,6 +1847,10 @@ apply Notification "mail" to Service { } ``` +Also note that this mechanism doesn't take downtimes etc. into account, only +the `HARD` state change time matters. E.g. for a problem which occurred in the +middle of a downtime from 2 PM to 4 PM `times.begin = 2h` means 5 PM, not 6 PM. + ### Disable Re-notifications If you prefer to be notified only once, you can disable re-notifications by setting the diff --git a/doc/04-configuration.md b/doc/04-configuration.md index 316aaba9d..e16c21060 100644 --- a/doc/04-configuration.md +++ b/doc/04-configuration.md @@ -343,7 +343,7 @@ object Host NodeName { vars.http_vhosts["http"] = { http_uri = "/" } - /* Uncomment if you've sucessfully installed Icinga Web 2. */ + /* Uncomment if you've successfully installed Icinga Web 2. */ //vars.http_vhosts["Icinga Web 2"] = { // http_uri = "/icingaweb2" //} diff --git a/doc/05-service-monitoring.md b/doc/05-service-monitoring.md index f37630913..c9fd69de3 100644 --- a/doc/05-service-monitoring.md +++ b/doc/05-service-monitoring.md @@ -898,7 +898,7 @@ Instead, choose a plugin and configure its parameters and thresholds. The follow * [running_kernel](10-icinga-template-library.md#plugin-contrib-command-running_kernel) * package management: [apt](10-icinga-template-library.md#plugin-check-command-apt), [yum](10-icinga-template-library.md#plugin-contrib-command-yum), etc. * [ssh](10-icinga-template-library.md#plugin-check-command-ssh) -* performance: [iostat](10-icinga-template-library.md#plugin-contrib-command-iostat), [check_sar_perf](https://github.com/dnsmichi/icinga-plugins/blob/master/scripts/check_sar_perf.py) +* performance: [iostat](10-icinga-template-library.md#plugin-contrib-command-iostat), [check_sar_perf](https://github.com/NETWAYS/check-sar-perf) ### Windows Monitoring diff --git a/doc/09-object-types.md b/doc/09-object-types.md index 535f1c1f4..b3772c8d5 100644 --- a/doc/09-object-types.md +++ b/doc/09-object-types.md @@ -477,7 +477,7 @@ Configuration Attributes: vars | Dictionary | **Optional.** A dictionary containing custom variables that are specific to this notification object. users | Array of object names | **Required.** A list of user names who should be notified. **Optional.** if the `user_groups` attribute is set. user\_groups | Array of object names | **Required.** A list of user group names who should be notified. **Optional.** if the `users` attribute is set. - times | Dictionary | **Optional.** A dictionary containing `begin` and `end` attributes for the notification. + times | Dictionary | **Optional.** A dictionary containing `begin` and `end` attributes for the notification. If `end` is set to 0, `Notifications` are disabled permanently. Please read the [notification delay](03-monitoring-basics.md#notification-delay) chapter for details. command | Object name | **Required.** The name of the notification command which should be executed when the notification is triggered. interval | Duration | **Optional.** The notification interval (in seconds). This interval is used for active notifications. Defaults to 30 minutes. If set to 0, [re-notifications](03-monitoring-basics.md#disable-renotification) are disabled. period | Object name | **Optional.** The name of a time period which determines when this notification should be triggered. Not set by default (effectively 24x7). @@ -1494,6 +1494,11 @@ Cleanup Items: servicechecks\_age | Duration | **Optional.** Max age for servicechecks table rows (start\_time). Defaults to 0 (never). systemcommands\_age | Duration | **Optional.** Max age for systemcommands table rows (start\_time). Defaults to 0 (never). +> **Supported units** +> +> Supported suffixes include ms (milliseconds), s (seconds), m (minutes), h (hours) and d (days). +> Check the [language reference](17-language-reference.md#duration-literals). + Data Categories: Name | Description | Required by @@ -1593,6 +1598,11 @@ Cleanup Items: servicechecks\_age | Duration | **Optional.** Max age for servicechecks table rows (start\_time). Defaults to 0 (never). systemcommands\_age | Duration | **Optional.** Max age for systemcommands table rows (start\_time). Defaults to 0 (never). +> **Supported units** +> +> Supported suffixes include ms (milliseconds), s (seconds), m (minutes), h (hours) and d (days). +> Check the [language reference](17-language-reference.md#duration-literals). + Data Categories: Name | Description | Required by diff --git a/doc/10-icinga-template-library.md b/doc/10-icinga-template-library.md index 0cc27494c..10ddd1d5f 100644 --- a/doc/10-icinga-template-library.md +++ b/doc/10-icinga-template-library.md @@ -3507,7 +3507,7 @@ mem_critical | **Required.** Specify the critical threshold as number interprete #### sar-perf -The [check_sar_perf.py](https://github.com/dnsmichi/check-sar-perf) +The [check_sar_perf.py](https://github.com/NETWAYS/check-sar-perf) plugin collects performance metrics from Linux hosts using the `sar` binary available in the `sysstat` package. Custom variables passed as [command parameters](03-monitoring-basics.md#command-passing-parameters): diff --git a/doc/12-icinga2-api.md b/doc/12-icinga2-api.md index 409e27b17..6b23c607c 100644 --- a/doc/12-icinga2-api.md +++ b/doc/12-icinga2-api.md @@ -1393,7 +1393,7 @@ Example for scheduling a downtime for all `ping4` services: ```bash curl -k -s -S -i -u root:icinga -H 'Accept: application/json' \ -X POST 'https://localhost:5665/v1/actions/schedule-downtime' \ - -d '{ "type": "Service", "filter": "service.name==\"ping4\"", "start_time": 1446388806, "end_time": 1446389806, "duration": 1000, "author": "icingaadmin", "comment": "IPv4 network maintenance", "pretty": true }' + -d '{ "type": "Service", "filter": "service.name==\"ping4\"", "start_time": 1446388806, "end_time": 1446389806, "author": "icingaadmin", "comment": "IPv4 network maintenance", "pretty": true }' ``` ```json diff --git a/doc/15-troubleshooting.md b/doc/15-troubleshooting.md index 727c56c34..5a1ac8b77 100644 --- a/doc/15-troubleshooting.md +++ b/doc/15-troubleshooting.md @@ -176,6 +176,60 @@ C:\> cd C:\ProgramData\icinga2\var\log\icinga2 C:\ProgramData\icinga2\var\log\icinga2> Get-Content .\debug.log -tail 10 -wait ``` +## Icinga starts/restarts/reloads very slowly + +Icinga performs a lot of memory allocations, especially during startup. +Swapping out the allocator may increase the startup performance. +The following instructions assume you run Linux and systemd. + +On RHEL or derivates add the EPEL repository first (if not already done). +Let your package manager search for package names containing "jemalloc". +Pick preferably one named "libjemalloc" followed by a number, +just "jemalloc" otherwise, and install it. + +Run `ldconfig -p |grep libjemalloc`. It should print something similar to: + +``` + libjemalloc.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libjemalloc.so.2 +``` + +I.e. a relative file name followed by an absolute one. Remember the latter. + +Measure how long Icinga needs to load its config without and with libjemalloc: + +```bash +time icinga2 daemon -C + +time env LD_PRELOAD=/lib/x86_64-linux-gnu/libjemalloc.so.2 icinga2 daemon -C +``` + +Replace `/lib/x86_64-linux-gnu/libjemalloc.so.2` with the absolute path +you actually got from `ldconfig -p`! + +Please do us a favor and share your results +[with us](https://community.icinga.com/t/icinga-reloads-config-slowly-try-jemalloc/11032). + +If it's faster with libjemalloc, do the following to persist the change. + +Run `systemctl edit icinga2.service`. This will open an editor. +Add the following, save the file and close the editor. + +``` +[Service] +Environment=LD_PRELOAD=/lib/x86_64-linux-gnu/libjemalloc.so.2 +``` + +Replace `/lib/x86_64-linux-gnu/libjemalloc.so.2` with the absolute path +you actually got from `ldconfig -p`! + +Restart Icinga. Verify whether your changes took effect and enjoy the speed: + +``` +# lsof -p `cat /var/run/icinga2/icinga2.pid` |grep libjemalloc +icinga2 7764 nagios mem REG 8,5 744776 2631636 /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 +# +``` + ## Configuration Troubleshooting ### List Configuration Objects @@ -1628,53 +1682,26 @@ In order to solve this problem, remove the mentioned files from `zones.d` and us of syncing plugin binaries to your satellites and agents. -#### Zones in Zones doesn't work +#### Zones in Zones -The cluster config sync works in the way that configuration -put into `/etc/icinga2/zones.d` only is included when configured -outside in `/etc/icinga2/zones.conf`. +The cluster config sync works in a such manner that any `/etc/icinga2/zones.d/` subdirectory is included only when it is +named after a known zone by the local `Endpoint`. -If you for example create a "Zone Inception" with defining the -`satellite` zone in `zones.d/master`, the config compiler does not -re-run and include this zone config recursively from `zones.d/satellite`. +If you for example add some configs in to `zones.d/satellite` and forgot to define the `satellite` zone +in `zones.d/master` or outside in `/etc/icinga2/zones.conf`, the config compiler will not include +this config from the `zones.d/satellite` zone directory. Since v2.11, the config compiler is only including directories where a -zone has been configured. Otherwise it would include renamed old zones, +zone has been configured. Otherwise, it would include renamed old zones, broken zones, etc. and those long-lasting bugs have been now fixed. -A more concrete example: Masters and Satellites still need to know the Zone hierarchy outside of `zones.d` synced configuration. +Here are some working examples: -**Doesn't work** +**Example: Everything in `zones.conf`** -``` -vim /etc/icinga2/zones.conf - -object Zone "master" { - endpoints = [ "icinga2-master1.localdomain", "icinga2-master2.localdomain" ] -} -``` - -``` -vim /etc/icinga2/zones.d/master/satellite-zones.conf - -object Zone "satellite" { - endpoints = [ "icinga2-satellite1.localdomain", "icinga2-satellite1.localdomain" ] -} -``` - -``` -vim /etc/icinga2/zones.d/satellite/satellite-hosts.conf - -object Host "agent" { ... } -``` - -The `agent` host object will never reach the satellite, since the master does not have -the `satellite` zone configured outside of zones.d. - - -**Works** - -Each instance needs to know this, and know about the endpoints first: +Each instance needs to know the `Zone` and `Endpoint` definitions for itself and all directly connected instances in order +to successfully establish a connection with each other. This can be achieved by placing all `Endpoint` and `Zone` definitions +of all Icinga 2 instances known by the local endpoint in this single file. ``` vim /etc/icinga2/zones.conf @@ -1682,24 +1709,41 @@ vim /etc/icinga2/zones.conf object Endpoint "icinga2-master1.localdomain" { ... } object Endpoint "icinga2-master2.localdomain" { ... } -object Endpoint "icinga2-satellite1.localdomain" { ... } -object Endpoint "icinga2-satellite2.localdomain" { ... } -``` - -Then the zone hierarchy as trust and also config sync inclusion is required. - -``` -vim /etc/icinga2/zones.conf - object Zone "master" { endpoints = [ "icinga2-master1.localdomain", "icinga2-master2.localdomain" ] } +object Endpoint "icinga2-satellite1.localdomain" { ... } +object Endpoint "icinga2-satellite2.localdomain" { ... } + object Zone "satellite" { endpoints = [ "icinga2-satellite1.localdomain", "icinga2-satellite1.localdomain" ] + parent = "master" } ``` +**Example: Child zones in `zones.d/`** + +An additional option that Icinga 2 offers is the possibility to outsource all *child* `Endpoint` definitions of the +local Icinga 2 instance to the `zones.d/` directory. As an example, we can place the satellite `Zone` and `Endpoint` definition +from the above example into `zones.d/` underneath a directory named exactly like the local endpoint `Zone` name, which +in our case is `master`. + +``` +mkdir /etc/icinga2/zones.d/master +vim /etc/icinga2/zones.d/master/satellite.conf + +object Endpoint "icinga2-satellite1.localdomain" { ... } +object Endpoint "icinga2-satellite2.localdomain" { ... } + +object Zone "satellite" { + endpoints = [ "icinga2-satellite1.localdomain", "icinga2-satellite1.localdomain" ] + parent = "master" +} + +... +``` + Once done, you can start deploying actual monitoring objects into the satellite zone. ``` @@ -1708,10 +1752,12 @@ vim /etc/icinga2/zones.d/satellite/satellite-hosts.conf object Host "agent" { ... } ``` -That's also explained and described in the [documentation](06-distributed-monitoring.md#distributed-monitoring-scenarios-master-satellite-agents). +Keep in mind that the `agent` host object will never reach the satellite, when the master does not have the +`satellite` zone configured either in `zones.d/master` nor outside the `zones.d` directory. That's also explained and +described in the [documentation](06-distributed-monitoring.md#distributed-monitoring-scenarios-master-satellite-agents). The thing you can do: For `command_endpoint` agents like inside the Director: -Host -> Agent -> yes, there is no config sync for this zone in place. Therefore +Host -> Agent -> yes, there is no config sync for this zone in place. Therefore, it is valid to just sync their zones via the config sync. #### Director Changes diff --git a/doc/17-language-reference.md b/doc/17-language-reference.md index 02c49fd4c..5686d558a 100644 --- a/doc/17-language-reference.md +++ b/doc/17-language-reference.md @@ -204,8 +204,8 @@ Operator | Precedence | Examples (Result) | Descript `&` | 9 | 7 & 3 (3) | Binary AND `^` | 10 | 17 ^ 12 (29) | Bitwise XOR | | 11 | 2 | 3 (3) | Binary OR -|| | 12 | true || false (true), 0 || 7 (7)| Logical OR -`&&` | 13 | true && false (false), 3 && 7 (7), 0 && 7 (0) | Logical AND +`&&` | 12 | true && false (false), 3 && 7 (7), 0 && 7 (0) | Logical AND +|| | 13 | true || false (true), 0 || 7 (7)| Logical OR `=` | 14 | a = 3 | Assignment `=>` | 15 | x => x * x (function with arg x) | Lambda, for loop `?` | 16 | (2 * 3 > 5) ? 1 : 0 (1) | [Ternary operator](17-language-reference.md#conditional-statements-ternary) diff --git a/doc/19-technical-concepts.md b/doc/19-technical-concepts.md index 0fb5895be..1da32b6f2 100644 --- a/doc/19-technical-concepts.md +++ b/doc/19-technical-concepts.md @@ -1839,7 +1839,7 @@ The returned messages are synced directly to the sender's endpoint, no cluster b > **Note**: EventCommand errors are just logged on the remote endpoint. -### event::UpdateExecutions +#### event::UpdateExecutions > Location: `clusterevents.cpp` @@ -1873,7 +1873,7 @@ Message updates will be dropped when: * Checkable does not exist. * Origin endpoint's zone is not allowed to access this checkable. -### event::ExecutedCommand +#### event::ExecutedCommand > Location: `clusterevents.cpp` diff --git a/doc/21-development.md b/doc/21-development.md index 01c86204b..14c28ef1c 100644 --- a/doc/21-development.md +++ b/doc/21-development.md @@ -1766,13 +1766,13 @@ cd .\build\ -DBoost_INCLUDE_DIR=C:\local\boost_1_80_0-Win64 ` -DBISON_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe ` -DFLEX_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe ` - -DICINGA2_WITH_MYSQL=OFF -DICINGA2_WITH_PGSQL=OFF .. + -DICINGA2_WITH_MYSQL=OFF -DICINGA2_WITH_PGSQL=OFF -DICINGA2_UNITY_BUILD=OFF .. & "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" .\icinga2.sln ``` Building icinga2.sln via Visual Studio itself seems to require a reboot -after installing the build tools and building once via command line. +after installing the build tools. #### Chocolatey diff --git a/etc/icinga2/conf.d/hosts.conf b/etc/icinga2/conf.d/hosts.conf index 0118f033e..e54d01df8 100644 --- a/etc/icinga2/conf.d/hosts.conf +++ b/etc/icinga2/conf.d/hosts.conf @@ -30,7 +30,7 @@ object Host NodeName { vars.http_vhosts["http"] = { http_uri = "/" } - /* Uncomment if you've sucessfully installed Icinga Web 2. */ + /* Uncomment if you've successfully installed Icinga Web 2. */ //vars.http_vhosts["Icinga Web 2"] = { // http_uri = "/icingaweb2" //}