Icinga2 Hierarchie

Aus xinux.net
Zur Navigation springen Zur Suche springen

Test Aufbau:

Ziel

  • 2 icinga Systeme (oder mehr) die verschieden bereiche getrennt überwachen sollen und ihre auswertungen an den master server senden

Rechner

icinga-admin	        	192.168.241.161
icinga-left                    192.168.241.162
icinga-right                   192.168.241.163
icinga-left-1                  192.168.241.164
icinga-left-2                  192.168.241.165
icinga-right-1                 192.168.241.166
icinga-right-2                 192.168.241.167

Plan

Datei:Icinga-aufbau.dia

Installation

icinga admin installieren

packet Installation

  • debian

unter debian repositorys hinzufügen

wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -
echo 'deb http://debmon.org/debmon debmon-jessie main' >/etc/apt/sources.list.d/debmon.list
apt-get update
  • ubuntu

unter ubuntu repositorys hinzufügen

apt install software-properties-common
add-apt-repository ppa:formorer/icinga
  • installieren
apt-get update
apt-get upgrade
apt-get install icinga2

icinga2 web

  • icinga2 web aufsetzen
https://xinux.net/index.php/Icinga-web_ubuntu_16.04

icinga right installieren

  • beschrieben wird nur icinga right für alle zusätlichen systeme muss genauso vorgegangen werden
  • wir benutzen auf left Debian 8 & right Ubuntu 16.04

packet Installation

  • debian

unter debian repositorys hinzufügen

wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -
echo 'deb http://debmon.org/debmon debmon-jessie main' >/etc/apt/sources.list.d/debmon.list
apt-get update
  • ubuntu

unter ubuntu repositorys hinzufügen

apt install software-properties-common
add-apt-repository ppa:formorer/icinga
  • installiern
apt-get update
apt-get upgrade
apt-get install icinga2

icinga2 web

  • icinga2 web aufsetzen
https://xinux.net/index.php/Icinga-web_ubuntu_16.04

icinga right-1 installieren

  • beschrieben wird nur icinga right-1 für alle zusätzliche Systeme muss genauso vorgegangen werden

packet installatieren

  • debian

unter debian repositorys hinzufügen

wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -
echo 'deb http://debmon.org/debmon debmon-jessie main' >/etc/apt/sources.list.d/debmon.list
apt-get update
  • ubuntu

unter ubuntu repositorys hinzufügen

apt install software-properties-common
add-apt-repository ppa:formorer/icinga
  • installieren
apt-get update
apt-get upgrade
apt-get install icinga2

Zertifikate

  • nach dem alle system installiert wurden am besten die Zertifikate direkt angehen
  • auf der cert authority für jeden host ein Zertifikate generieren
  • dann auf die Zertifikate auf die hosts kopieren mit scp in den ordner /etc/icinga2/pki
  • darauf achten das die hostname & Endpoint Name mit den Zertifikate übereinstimmen

Konfiguration

icinga Master Konfiguration

unser name & zone:

  • Node Name = icinga-admin.xinux.org
  • Zone Name = icinga-admin.xinux.org

zone name:

  • icinga-admin.xinux.org = icinga-admin.xinux.org
  • icinga-left.xinux.org = icinga-left.xinux.org
  • icinga-right.xinux.org = icinga-right.xinux.org

Zone & Namen definieren

/etc/icinga2/constants.conf

const NodeName = "icinga-admin.xinux.org"
const ZoneName = "icinga-admin.xinux.org"

Zone anlegen

  • die zonen des masters anlegen

/etc/icinga2/zones.conf

 object Endpoint "icinga-admin.xinux.org" {
  host = "icinga-admin.xinux.org"
}
   
object Zone "icinga-admin.xinux.org" {
  endpoints = [ "icinga-admin.xinux.org" ]
}


Health-check erstellen (optional)

vi /etc/icinga2/cluster/icinga-admin.conf


/*
 * cluster health checks
 * icinga-admin as master node [x]
 * icinga-left as a Satellite node
 * icinga-right as a Satellite node
 */
 
 
object Host "icinga-admin" {
  display_name = "Health Checks on icinga-admin"
  address = "icinga-admin.xinux.org"
  check_command = "hostalive"
}
object Host "icinga-left" {
  display_name = "icinga-left"
  address = "icinga-left.xinux.org"
  check_command = "hostalive"
}
 
 object Host "icinga-right" {
 display_name = "icinga-right"
 address = "icinga-right.xinux.org"
 check_command = "hostalive"
}
 
object Service "cluster" {
  check_command = "cluster"
  check_interval = 5s
  retry_interval = 1s
  host_name = "icinga-admin"
}
 
object Service "icinga" {
  check_command = "icinga"
  max_check_attempts = 3
  check_interval = 60s
  retry_interval = 30s
  host_name = "icinga-admin"
}
/* check if checker zone is connected  */
object Service "cluster-zone-checker" {
  check_command = "cluster-zone"
  check_interval = 5s
  retry_interval = 1s
  vars.cluster_zone = "icinga-left"
  host_name = "icinga-admin"
}
 
/* check if checker zone is connected  */
 object Service "cluster-zone-icinga-right" {
   check_command = "cluster-zone"
    check_interval = 5s
    retry_interval = 1s
    vars.cluster_zone = "icinga-right"
    host_name = "icinga-admin"
}

Neue Konfiguration anwenden

/etc/icinga2/icinga2.conf

include_recursive "conf.d"
include_recursive "cluster"

icinga state kopieren

scp /var/lib/icinga2/icinga2.state root@icinga-left.xinux.org:/var/lib/icinga2
scp /var/lib/icinga2/icinga2.state root@icinga-right.xinux.org:/var/lib/icinga2

Icinga neue hosts übernehmen

  • in der nodeliste müssten die neuen nodes schon angezeigt werden (sofern sie schon online sind)
icinga2 node list
  • mit node update-config werden die entsprechenden Einträge in repository.d angelegt

icinga2 node update-config

  • nach einem reload werden die nodes auch im webinterface übernommen
service icinga2 reload

icinga right konfigurieren

  • icinga left entsprechend anpassen

api anpassen

api conf bearbeiten

vi features-available/api.conf
/**
 * The API listener is used for distributed monitoring setups.
 */

object ApiListener "api" {
  cert_path = SysconfDir + "/icinga2/pki/" + NodeName + ".crt"
  key_path = SysconfDir + "/icinga2/pki/" + NodeName + ".key"
  ca_path = SysconfDir + "/icinga2/pki/ca.crt"

  accept_config = true
  accept_commands = true

  ticket_salt = TicketSalt
}

api conf aktivieren

ln ./features-available/api.conf ./features-enabled/

Zone & Namen definieren

/etc/icinga2/constants.conf

const NodeName = "icinga-right.xinux.org"
const ZoneName = "icinga-right.xinux.org"

Zonen anlegen

/etc/icinga2/zones.conf

/*
 * Generated by Icinga 2 node setup commands
 * on 2016-07-04 09:14:01 +0000
 */

object Endpoint "icinga-admin.xinux.org" {
	host = "icinga-admin.xinux.org"
	port = "5665"
}

object Zone "master" {
	endpoints = [ "icinga-admin.xinux.org" ]
}
 
object Endpoint "icinga-right.xinux.org" {
}
object Zone "icinga-right.xinux.org" {
        //this is the local node = "icinga-right.xinux.org"
        endpoints = [ "icinga-right.xinux.org" ]
        parent = "master"
}

Health-check erstellen (optional)

mkdir /etc/icinga2/cluster
vi /etc/icinga2/cluster/icinga-right.conf

object Host "icinga-right" {
display_name = "Health Checks on icinga-right"
address = "icinga-right.xinux.org"
check_command = "hostalive"
}
object Service "cluster" {
check_command = "cluster"
check_interval = 5s
retry_interval = 1s
host_name = "icinga-right"
}

Konfiguration anwenden

sicherstellen das die neue Konfiguration benutzt wird /etc/icinga2/icinga2.conf

include_recursive "conf.d"
include_recursive "cluster"

Icinga neue hosts übernehmen

  • in der nodeliste müssten die neuen nodes schon angezeigt werden (sofern sie schon online sind)
icinga2 node list
  • mit node update-config werden die entsprechenden Einträge in repository.d angelegt

icinga2 node update-config

  • nach einem reload werden die nodes auch im webinterface übernommen
service icinga2 reload

icinga-right-1 Konfigurieren

api anpassen

api conf bearbeiten

vi features-available/api.conf
/**
 * The API listener is used for distributed monitoring setups.
 */

object ApiListener "api" {
  cert_path = SysconfDir + "/icinga2/pki/" + NodeName + ".crt"
  key_path = SysconfDir + "/icinga2/pki/" + NodeName + ".key"
  ca_path = SysconfDir + "/icinga2/pki/ca.crt"

  accept_config = true
  accept_commands = true

  ticket_salt = TicketSalt
}

api conf aktiviren

ln ./features-available/api.conf ./features-enabled/


Zone & Namen definieren

/etc/icinga2/constants.conf

const ZoneName = "icinga-right-1.xinux.org"
const NodeName = "icinga-right-1.xinux.org"

Zone anlegen

  • die Zonen anlegen

/etc/icinga2/zones.conf

/*
 * Generated by Icinga 2 node setup commands
 * on 2016-07-04 13:28:43 +0000
 */

object Endpoint "icinga-right.xinux.org" {
	host = "icinga-right.xinux.org"
	port = "5665"
}

object Zone "master" {
	endpoints = [ "icinga-right.xinux.org" ]
}

object Endpoint NodeName {
}

object Zone ZoneName {
	endpoints = [ NodeName ]
	parent = "master"
}

icinga neustarten

service icinga restart

Nütziches

Debuging

tail -f /var/log/icinga2/icinga2.log 
tail -f /var/log/icinga2/startup.log
  • löschen des chache ordners
rm -r /var/lib/icinga2/api/zones/*
  • debguen
icinga2 feature enable debuglog
service icinga2 restart
tail -f /var/log/icinga2/debug.log

Troubleshooting

  • Falls ein "icinga2 node list" die gewünschte Aufstellung anzeigt, die Rechner aber im Webinterface als "Down" gelistet werden müssen folgende Befehle ausgeführt werden:
rm -r /etc/icinga2/repository.d/endpoints /etc/icinga2/repository.d/hosts /etc/icinga2/repository.d/zones
icinga2 node update-config
systemctl restart icinga2.service

links

https://wiki.icinga.org/display/howtos/Icinga2+Distributed+Cluster+Install+with+CentOS+6