Icinga2: LiveStatus Activation/Installation

Hey all,

Here is a quick note how to install and activate MK Livestatus (Check_MK) API for your Icinga2 installation.

More info about livestatus on the official website: https://mathias-kettner.de/checkmk_livestatus.html

So, check if it’s already activated:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# icinga2 feature list
Disabled features: compatlog debuglog gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog
Enabled features: api checker command ido-mysql mainlog notification
# icinga2 feature list Disabled features: compatlog debuglog gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog Enabled features: api checker command ido-mysql mainlog notification
# icinga2 feature list
Disabled features: compatlog debuglog gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog
Enabled features: api checker command ido-mysql mainlog notification

As we can see livestatus is currently disabled

Let’s enable it using the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# icinga2 feature enable livestatus
Enabling feature livestatus. Make sure to restart Icinga 2 for these changes to take effect.
# icinga2 feature enable livestatus Enabling feature livestatus. Make sure to restart Icinga 2 for these changes to take effect.
# icinga2 feature enable livestatus
Enabling feature livestatus. Make sure to restart Icinga 2 for these changes to take effect.

Now we need to add one more LivestatusListener object and fix the existing one to support livestatus on local unix socket and on TCP socket.

Open /etc/icinga2/features-enabled/livestatus.conf and edit it as following:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
library "livestatus"
object LivestatusListener "livestatus-tcp" {
socket_type = "tcp"
bind_host = "0.0.0.0"
bind_port = "6666"
}
object LivestatusListener "livestatus-unix" {
socket_type = "unix"
socket_path = "/var/run/icinga2/cmd/livestatus"
}
library "livestatus" object LivestatusListener "livestatus-tcp" { socket_type = "tcp" bind_host = "0.0.0.0" bind_port = "6666" } object LivestatusListener "livestatus-unix" { socket_type = "unix" socket_path = "/var/run/icinga2/cmd/livestatus" }
library "livestatus"

object LivestatusListener "livestatus-tcp" {
  socket_type = "tcp"
  bind_host = "0.0.0.0"
  bind_port = "6666"
}

object LivestatusListener "livestatus-unix" {
  socket_type = "unix"
  socket_path = "/var/run/icinga2/cmd/livestatus"
}

You can bind it to some specific IP and/or change port to another one if you need, also make sure that your socket_path is exists

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# ls -la /var/run/icinga2/cmd/livestatus
srw-rw---- 1 icinga icingacmd 0 Oct 30 10:51 /var/run/icinga2/cmd/livestatus
# ls -la /var/run/icinga2/cmd/livestatus srw-rw---- 1 icinga icingacmd 0 Oct 30 10:51 /var/run/icinga2/cmd/livestatus
# ls -la /var/run/icinga2/cmd/livestatus
srw-rw---- 1 icinga icingacmd 0 Oct 30 10:51 /var/run/icinga2/cmd/livestatus

Let me know if you have any questions

Thanks!