Wie richte ich den Icinga2-Remoteclient ohne Verwendung des CLI-Assistenten ein?


11

Ich möchte Icinga2-Remoteclients über Puppet einrichten, aber auf der gesamten Seite der offiziellen Dokumentation wird über die Verwendung ihres fantastischen CLI-Assistenten gesprochen, der manuell ausgeführt werden muss.

Irgendeine Problemumgehung? Vielleicht sollte ich einfach nach Nagios zurückkehren?


Die Dokumente, die Sie verknüpfen, verweisen nur auf ein GUI-Setup für Windows. Fragen Sie danach?
Keith

1
docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/… ... wobei die neuesten Dokumente einen Abschnitt enthalten, der genau dieser Frage gewidmet ist.
TryTryAgain

1
Update: Die Dokumentation wurde an den neuen Speicherort von icinga.com/docs/icinga2/latest/doc/06-distributed-monitoring/… verschoben
Věroš K.

Antworten:


16

Ich hatte das gleiche Problem. Dies ist, was ich benutze, nachdem ich die Logik aus dem Code des Assistenten des icinga2-Knotens extrahiert habe.

Variablen, die Sie benötigen:

$pki_dir - /etc/icinga2/pki in the default installation
$fqdn - fully host+domain name of the client.
$icinga2_master - resolvable fqdn of the master
$icinga2_master_port - the port the master is connectable on.
$ticket - generated on the master via 'icinga2 pki ticket --cn $fqdn'

Der Code:

mkdir icinga:icinga 0700 $pki_dir
icinga2 pki new-cert --cn $fqdn --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt
icinga2 pki save-cert --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt --trustedcert $pki_dir/trusted-master.crt --host $icinga2_master
icinga2 pki request --host $icinga2_master --port $icinga2_master_port --ticket $ticket --key $pki_dir/$fqdn.key --cert $pki_dir/$fqdn.crt --trustedcert $pki_dir/trusted-master.crt --ca $pki_dir/ca.key
icinga2 node setup --ticket $ticket --endpoint $icinga2_master --zone $fqdn --master_host $icinga2_master --trustedcert $pki_dir/trusted-master.crt
systemctl restart icinga2  # or however you restart your icinga

1

Es ist wie TryTryAgain geschrieben hat. Die neuesten Dokumente beschreiben zwei verschiedene Möglichkeiten. Top-Down-Remote-Befehlsausführung und Top-Down-Konfigurationssynchronisierung

Der Unterschied zu diesen Ansätzen besteht darin, dass die Remote-Befehlsausführung alle Befehle vom Master auslöst, während die Konfigurationssynchronisierung alle Konfigurationsdateien synchronisiert, die sich in /etc/icinga2/zones.dden untergeordneten Knoten (Satelliten sowie Clients) befinden, und die Befehlsausführung direkt auf dem Endpunkt auslöst.

Ich bevorzuge den Top-Down-Konfigurationssynchronisierungsansatz, da der Client Überprüfungen ausführt, selbst wenn der Master die Verbindung zum untergeordneten Element verliert.

Sie müssen die APIFunktion auf allen Knoten aktivieren .

# /etc/icinga2/features-enabled/api.conf

object ApiListener "api" {
  cert_path = "/etc/ssl/{{ hostname }}.pem"
  key_path = "/etc/ssl/{{ hostname }}-key.pem"
  ca_path = "/etc/ssl/rootca.pem"

  // only on satelites and clients
  accept_config = true
}

Erstellen Sie nun eine Zonendatei und kopieren Sie sie auf alle Knoten

# /etc/icinga2/zones.conf

// global zone used for zone overlapping configs
object Zone "global" {
  global = true
}

// endpoints
object Endpoint "fqdn1.of.host" {
  host = "fqdn1.of.host"
}

object Endpoint "fqdn2.of.host" {
  host = "fqdn2.of.host"
}

// for each endpoint one zone
object Zone "fqdn1.of.host" {
  endpoints = [ "fqdn1.of.host" ]
}

object Zone "fqdn2.of.host" {
  endpoints = [ "fqdn2.of.host" ]
  parent = "fqdn1.of.host"
}

Es wird empfohlen, den fqdn Ihrer Knoten sowohl als Endpunktnamen als auch als Zonennamen zu verwenden. Denken Sie daran : Kopieren Sie dies zones.confauf alle Knoten.

Der nächste Schritt wäre, alle Dienste, Vorlagen und Gruppen innerhalb /etc/icinga2/zones.d/und jeden Host in seiner eigenen hosts.conf innerhalb seines Zonenverzeichnisses zu definieren.

# /etc/icinga2/zones.d/global/templates.conf

template Host "generic-host" {
  max_check_attempts = 3                                                                                                                     
  check_interval = 1m 
  retry_interval = 30s

  check_command = "hostalive"
}

# /etc/icinga2/zones.d/fqdn1.of.host/hosts.conf

// this is the master
object Host "fqdn1.of.host" {
  import "generic-host"
  address = "fqdn1.of.host"
}

# /etc/icinga2/zones.d/fqdn2.of.host/hosts.conf

// this is a satelite/client
object Host "fqdn2.of.host" {
  import "generic-host"
  address = "fqdn2.of.host"
}

Mein Ansatz war mit den configs innen zu verhindern , /etc/icinga2/conf.dweil ich alle generischen hinzugefügt (und global gebrauchte) Sachen in /etc/icinga2/zones.d/globalund die Host - spezifischen Stoff , innen/etc/icinga2/zones.d/fqdnX.of.host

Zu guter Letzt müssen Sie die include-Anweisung für conf.d entfernen

# /etc/icinga2/icinga2.conf

[...]
// include_recursive "conf.d"

Das ist es. Dieses Setup erfordert die manuelle Verwaltung Ihrer Zertifikate oder die Konfigurationsverwaltung Ihrer Wahl. Es wird es nicht erzeugen und verwendet nicht das icinga pki. Ich sehe keinen Grund, warum ich ein werkzeugspezifisches pki verwenden sollte, solange es dafür spezielle Werkzeuge gibt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.