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"
//}