From 3fb2b9563d9b58a9683808c6620832dc71f76b20 Mon Sep 17 00:00:00 2001 From: Sam Chudnick Date: Thu, 8 Dec 2022 20:44:37 -0500 Subject: Initial commit --- articles/icinga-influx.html | 133 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 articles/icinga-influx.html (limited to 'articles/icinga-influx.html') diff --git a/articles/icinga-influx.html b/articles/icinga-influx.html new file mode 100644 index 0000000..8d96c88 --- /dev/null +++ b/articles/icinga-influx.html @@ -0,0 +1,133 @@ + + + + + + + + + + +

Integrating InfluxDB and Icinga

+
+

Icinga2 has built-in support for writing monitoring data to InfluxDB. + This makes Icinga quite extensible as it allows for other programs to read + the gathered data from InfluxDB. For example, Icinga does not have built-in + graphing support. But monitoring data can be written to InfluxDB and then + consumed by a dedicated graphing tool like Grafana.

+ +

Install Packages

+

Let's install a few necessary packages

+ +
apt install influxdb influxdb-client ssl-cert
+ +

Generate self-signed certificate

+

Now generate a self-signed certificate for accessing InfluxDB over TLS

+ +
make-ssl-cert generate-default-snakeoil
+usermod -aG ssl-cert influxdb
+ +

Create Database and Users

+

Start and enable the InfluxDB service

+ +
systemctl enable --now influxdb
+ +

Now we'll create our database and users. We'll be creating 3 users with + different access rights. An admin user with full control over the database, a + user with write access that Icinga will use to write data to the database, and + a read-only user to allow external programs to read data from the database.

+ +
influx -ssl -unsafeSsl -execute "create database icinga2; create user admin with password 'changeme'; create user icingauser with password 'changeme'; create user readonly with password 'changeme'; grant all to admin; grant write on icinga2 to icingauser; grant read on icinga2 to readonly;"
+
+ +

Configuration Files

+ +

Then write InfluxDB's configuration file at + /etc/influxdb/influxdb.conf

+ +
reporting-enabled = false
+[meta]
+  dir = "/var/lib/influxdb/meta"
+[data]
+  dir = "/var/lib/influxdb/data"
+  wal-dir = "/var/lib/influxdb/wal"
+[coordinator]
+[retention]
+[shard-precreation]
+[monitor]
+[http]
+  enabled = true
+  bind-address = ":8086"
+  auth-enabled = true
+  https-enabled = true
+  https-certificate = "/etc/ssl/certs/ssl-cert-snakeoil.pem"
+  https-private-key = "/etc/ssl/private/ssl-cert-snakeoil.key"
+[ifql]
+[logging]
+[subscriber]
+[[graphite]]
+[[collectd]]
+[[opentsdb]]
+[[udp]]
+[continuous_queries]
+[tls]
+  min-version = "tls1.2"
+ +

And restart InfluxDB to pickup the changes

+ +
systemctl restart influxdb
+ +

Then we need to configure Icinga to write data to our database. Start by + enabling the influxdb feature in Icinga

+ +
icinga2 feature enable influxdb
+ +

Now we tell Icinga how to write to our database. Open the configuration + file at /etc/icinga2/features-available/influxdb.conf and replace + with the following

+ +
object InfluxdbWriter \"influxdb\" {
+  host = "127.0.0.1"
+  port = 8086
+  username = "icingauser"
+  password = "icinga_password"
+  ssl_enable = true
+  database = "icinga2"
+  flush_threshold = 1024
+  flush_interval = 10s
+  host_template = {
+  measurement = "$host.check_command$"
+    tags = {
+      hostname = "$host.name$"
+    }
+  }
+  service_template = {
+    measurement = "$service.check_command$"
+    tags = {
+      hostname = "$host.name$"
+      service = "$service.name$"
+    }
+  }
+}
+ +

And finally restart Icinga to make those changes live.

+ +
systemctl restart icinga2
+ +

Icinga2 will now be writing the data it collects to your InfluxDB instance.

+ +
+

+


+Consider donating if this article was useful. +[BTC] +

+ + + + + -- cgit v1.2.3