Modifica di Icinga2 per utilizzare il modello master / client su CentOS 6 o CentOS 7

Icinga2 è un potente sistema di monitoraggio e, se utilizzato in un modello master-client, può sostituire la necessità di controlli di monitoraggio basati su NRPE. Il modello master-client è più sicuro per vari motivi . Inoltre, consente un monitoraggio più distribuito consentendo la modifica dei controlli su un server e la propagazione ad altri. Fornisce inoltre una posizione centralizzata per le modifiche.

Ad esempio: supponiamo che tu abbia 4 diversi server Web con bilanciamento del carico. Se sai che sta per sorgere un picco di carico (forse una vendita o qualcosa per cui prevedi molte attività), potresti voler aumentare i livelli a cui un elevato utilizzo della CPU avvisa gli amministratori di sistema. Se stai utilizzando i controlli NRPE, dovrai accedere a ciascun server e modificare il /etc/nrpe.d/common_commands.cfgdocumento su ciascuno di essi. Nel modello master-client, puoi semplicemente modificare le loro definizioni host nella /etc/icinga2/repository.d/hosts/cartella, quindi ricaricare Icinga. I controlli si propagheranno su ciascun server e verranno raccolti automaticamente. È inoltre possibile aggiungere controlli molto facilmente modificando i /etc/icinga2/repository.d/services/file e questi si propagheranno automaticamente e verranno riconosciuti, purché i plug-in esistano sui server client.

Prerequisiti

  • Un'istanza del server con Icinga2 e Icingaweb2 già installata e configurata ( istruzioni ) denominata icinga2master.example.com.
  • Una nuova istanza del server Vultr CentOS 6 o 7 che si desidera monitorare con nome icinga2client.example.com.
  • Accesso al Sudo.

Alcune di queste guide rispecchieranno le istruzioni di installazione sopra elencate, ma ciò deve essere fatto sul computer client e non sul server.

Passaggio 1: aggiornare il sistema

Aggiungere il repository "ICINGA" al sistema client per installare i pacchetti Icinga.

sudo cat > /etc/yum.repos.d/ICINGA-release.repo << 'EOF'
[icinga-stable-release]
name=ICINGA (stable release for epel)
baseurl=http://packages.icinga.org/epel/$releasever/release/
enabled=1
gpgcheck=1
gpgkey=http://packages.icinga.org/icinga.key
EOF

Passaggio 2: installare i pacchetti richiesti

Installa i pacchetti richiesti.

# CentOS 6
sudo yum -y install icinga2 mysql-server mysql icinga2-ido-mysql nagios-plugins-disk nagios-plugins-load nagios-plugins-procs nagios-plugins-ssh nagios-plugins-users nagios-plugins-swap nagios-plugins-ping icingacli

# CentOS 7
sudo yum -y install icinga2 mariadb-server mysql icinga2-ido-mysql nagios-plugins-disk nagios-plugins-load nagios-plugins-procs nagios-plugins-ssh nagios-plugins-users nagios-plugins-swap nagios-plugins-ping icingacli

CentOS 7 utilizza MariaDB invece di MySQL, quindi i pacchetti necessari sono leggermente diversi. Avviare i servizi e impostarli per l'avvio all'avvio.

sudo chkconfig icinga2 on
sudo service icinga2 start

Impostare il servizio MySQL per l'avvio all'avvio e avviarlo ora in modo che possiamo proteggerlo.

# CentOS 6
sudo chkconfig mysqld on
sudo service mysqld start

#CentOS 7
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service

Proteggi l'installazione di MySQL / MariaDB. Sia CentOS 6 che 7 utilizzano lo stesso comando.

sudo mysql_secure_installation

Durante il processo, rispondi alle domande come mostrato:

Enter current password for root (enter for none): Enter
Set root password? [Y/n]: Y
New password: $newRootPassword
Re-enter new password: $newRootPassword
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y

Prendi nota di $newRootPasswordcome ne avrai bisogno più volte, ed è un dolore da resettare.

Passaggio 3: impostare il database

È necessario creare il icinganome utente e importare lo schema nel database. Ciò avviene allo stesso modo su CentOS 6 e 7.

sudo mysql -u root -p
>CREATE DATABASE icinga;
>GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY '$someIcingaPassword'; 
>exit

Successivamente, importa lo schema nel database che hai appena creato.

sudo mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Dovrai inserire la $newRootPasswordpassword MySQL / MariaDB che hai usato durante il mysql_secure_installationcomando sopra, non quella $someIcingaPasswordche hai appena creato - quella verrà usata in seguito.

Abilitare il idomodulo (database).

sudo icinga2 feature enable ido-mysql

Dovrai modificare il /etc/icinga2/features-enabled/ido-mysql.conffile per aggiungere le informazioni del database. Puoi farlo con il seguente comando.

sudo vi /etc/icinga2/features-enabled/ido-mysql.conf

In quel file, trova le righe commentate (inizia con //).

//user = "icinga"
//password = "icinga"
//host = "localhost"
//database = "icinga"

... e modificali usando l'utente / password che hai appena creato.

user = "icinga"
password = "$someIcingaPassword"
host = "localhost"
database = "icinga"

Assicurati di decommentare le linee rimuovendo le due barre iniziali.

Quindi, riavviare il servizio per raccogliere le modifiche.

sudo service icinga2 restart

Sarà necessario aggiungere una connessione tra il server client e il master Icinga2 che è già stato configurato. Dovrai farlo utilizzando Firewalld su CentOS 7 o IPTables in CentOS 6 o 7.

# CentOS 6
sudo vi /etc/sysconfig/iptables
...
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5665 -j ACCEPT
...
#Icinga2 Master
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 5665 -j ACCEPT

sudo iptables restart

# CentOS 7    
sudo firewall-cmd --add-port=5665/tcp --permanent
sudo firewall-cmd --reload

Ora, modifica il file hosts per aggiungere il master come nome di dominio locale.

sudo vi /etc/hosts
...
$masterIP  icinga2master icinga2master.example.com

Passaggio 4: inizializzare il master

Questo passaggio deve essere eseguito sul master Icinga2. Dovrai inizializzarlo come master, quindi generare una richiesta di firma del certificato che il tuo client utilizzerà per comunicare.

sudo icinga2 node wizard

Questo eseguirà la procedura guidata del nodo, che farà diverse domande. Lo schermo sarà simile al seguente e le risposte che darai sono elencate.

Welcome to the Icinga 2 Setup Wizard!

We'll guide you through all required configuration details.

Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n
Starting the Master setup routine...
Please specify the common name (CN) [icinga2-master1.localdomain]: icinga2master.example.com
Checking for existing certificates for common name 'icinga2master.example.com'...
Certificates not yet generated. Running 'api setup' now.
information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca/ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca/ca.crt'.
information/cli: Generating new CSR in '/etc/icinga2/pki/icinga2master.example.com.csr'.
information/base: Writing private key to '/etc/icinga2/pki/icinga2master.example.com.key'.
information/base: Writing certificate signing request to '/etc/icinga2/pki/icinga2master.example.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/icinga2master.example.com.crt'.
information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'.
Generating master configuration for Icinga 2.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
Please specify the API bind host/port (optional):
Bind Host []: <hit enter>
Bind Port []: <hit enter>
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Updating constants.conf.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.

Now restart your Icinga 2 daemon to finish the installation!

Quindi, riavvia Icinga2 per raccogliere le modifiche.

sudo service icinga2 restart

Ora che è un master, puoi usarlo per generare la stringa di richiesta di firma del certificato.

sudo icinga2 pki ticket --cn icinga2client.example.com

Riceverai qualche stringa $pkiString. Copia quella stringa, poiché ne avrai bisogno sul client.

Passaggio 5: inizializzare il client

Eseguire la procedura guidata del nodo per generare i certificati e connettersi al master.

sudo icinga2 node wizard

Verrà visualizzata una pagina simile alla precedente. Questa pagina è mostrata di seguito con le risposte incluse.

Welcome to the Icinga 2 Setup Wizard!

We'll guide you through all required configuration details.



Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: Y
Starting the Node setup routine...
Please specify the common name (CN) [icinga2client.example.com]:
Please specify the master endpoint(s) this node should connect to:
Master Common Name (CN from your master setup): icinga2master.example.com
Do you want to establish a connection to the master from this node? [Y/n]: Y
Please fill out the master connection information:
Master endpoint host (Your master's IP address or FQDN): icinga2master.example.com
Master endpoint port [5665]: 5665
Add more master endpoints? [y/N]: N
Please specify the master connection for CSR auto-signing (defaults to master endpoint host):
Host [icinga2master.example.com]: icinga2master.example.com
Port [5665]: 5665
information/cli: Created backup file '/etc/icinga2/pki/icinga2client.example.com.key.orig'.
information/cli: Created backup file '/etc/icinga2/pki/icinga2client.example.com.crt.orig'.
information/base: Writing private key to '/etc/icinga2/pki/icinga2client.example.com.key'.
information/base: Writing X509 certificate to '/etc/icinga2/pki/icinga2client.example.com.crt'.
information/cli: Fetching public certificate from master (icinga2master.example.com, 5665):

Certificate information:

 Subject:     CN = icinga2master.example.com
 Issuer:      CN = Icinga CA
 Valid From:  Jan 10 21:08:37 2017 GMT
 Valid Until: Jan  7 21:08:37 2032 GMT
 Fingerprint: FE 72 AB F3 18 A5 12 E0 0C 5D 94 8B 96 C4 57 3B 00 5C E0 04

Is this information correct? [y/N]: Y
information/cli: Received trusted master certificate.

Please specify the request ticket generated on your Icinga 2 master.
 (Hint: # icinga2 pki ticket --cn 'icinga2client.example.com'): $pkiString

information/cli: Requesting certificate with ticket '$pkiString'.

warning/cli: Backup file '/etc/icinga2/pki/icinga2client.example.com.crt.orig' already exists. Skipping backup.
information/cli: Writing signed certificate to file '/etc/icinga2/pki/icinga2client.example.com.crt'.
information/cli: Writing CA certificate to file '/etc/icinga2/pki/ca.crt'.
Please specify the API bind host/port (optional):
Bind Host []: <enter key>
Bind Port []: <enter key>
Accept config from master? [y/N]: Y
Accept commands from master? [y/N]: Y
information/cli: Disabling the Notification feature.
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Enabling the Apilistener feature.
warning/cli: Feature 'api' already enabled.
information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'.
information/cli: Generating local zones.conf.
information/cli: Dumping config items to file '/etc/icinga2/zones.conf'.
information/cli: Created backup file '/etc/icinga2/zones.conf.orig'.
information/cli: Updating constants.conf.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
information/cli: Updating constants file '/etc/icinga2/constants.conf'.
Done.

Now restart your Icinga 2 daemon to finish the installation!

Vai avanti e riavvia Icinga2 per raccogliere le modifiche.

sudo icinga2 restart

Questo può essere già fatto, ma è necessario assicurarsi che il comando e le funzionalità API siano abilitate.

sudo icinga2 feature enable command
sudo icinga2 feature enable api

Se non sono stati abilitati, verrà indicato "abilitato per le funzionalità", quindi sarà necessario riavviare il demone Icinga2. Ma prima, è necessario modificare la proprietà dei file nella /etc/icinga2directory, poiché alcuni di essi hanno autorizzazioni errate dopo aver eseguito la procedura guidata del nodo. Dovrebbero avere tutti il ​​proprietario e il gruppo impostati su icinga. Modificare le autorizzazioni utilizzando il comando seguente:

sudo chown -R icinga:icinga /etc/icinga2/

Ora puoi riavviare il demone Icinga2.

sudo service icinga2 restart

Passaggio 6: configurare il client

La configurazione del client richiede la modifica di alcuni file diversi.

  • /etc/icinga2/zones.conf: Contiene gli endpoint (server) e le zone che li contengono. Ecco come sono partizionati i server. Assicurarsi che i nomi dei client corrispondano ai nomi dei server.
  • /etc/icinga2/icinga2.conf: Stai accettando comandi e configurazioni dal master, quindi devi fare una modifica minore su questo file per evitare definizioni di comandi duplicate.

Innanzitutto, modificheremo il zones.conffile per definire il server e la zona in cui si trova, oltre a creare una zona "globale" per le definizioni dei comandi che sono universali per TUTTI i server, anziché uniche per ciascuno (come i controlli del disco) .

sudo vi /etc/icinga2/zones.conf

object Zone clientZone { 
        endpoints = [ "icinga2master.example.com" ]
}

object Zone "global-templates" { # Add global templates zone
        global = true
}

object Endpoint NodeName {
        host = "$icinga2clientIP" 
}

object Zone ZoneName {
        endpoints = [ NodeName ]
        parent = clientZone
} 

È importante sapere che al momento possono esserci solo 2 nodi per zona. Puoi creare tutte le zone che desideri, ma se ci sono più di 2 nodi per zona c'è la possibilità che il servizio Icinga2 non funzioni correttamente. Questo non è un problema sul client, a meno che tu non abbia già 2 nodi nella zona clientZone, nel qual caso dovrai creare un altro nome di zona.

Ora apporta la modifica nel /etc/icinga2/icinga2.conffile. Devi commentare la riga include_recursive "conf.d".

sudo vi /etc/icinga2/icinga2.conf
...
//include_recursive "conf.d"
...

Verifica la configurazione per assicurarti che tutto sia formattato correttamente.

sudo icinga2 daemon -C

Se riscontri problemi con le autorizzazioni, è probabile che l'articolo sia di proprietà di root:root. Chown icinga:icingada risolvere.

sudo chown -R icinga:icinga /etc/icinga2/

Esistono altri problemi con le configurazioni, in genere le informazioni fornite dall'output del sudo icinga2 daemon -Ccomando saranno abbastanza dettagliate da rintracciarle. Affrontare ogni potenziale problema che si pone non rientra nell'ambito di questa guida.

Se la verifica ha esito positivo, andare avanti e ricaricare il servizio:

sudo service icinga2 restart

Dovrai fornire icingaall'utente le autorizzazioni sudo in modo che i comandi possano essere eseguiti. Queste autorizzazioni sudo saranno limitate alla directory specifica del plugin. Questo può essere inserito alla fine del file.

sudo vi /etc/sudoers
...
Defaults:icinga !requiretty
icinga          ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/

Ora la configurazione del client è ufficialmente terminata. Non è necessario apportare ulteriori modifiche, eventuali controlli di servizio verranno configurati sul master e si propagheranno al client. Tuttavia, dovrai installare eventuali plug-in aggiuntivi di cui potresti aver bisogno. I plug-in possono anche essere scritti usando Python, Perl, BASH, PHP e altri linguaggi con script.

Passaggio 7: aggiungere il client alla configurazione principale

Dovrai tornare sul master per configurare il client in modo che possa essere collegato. Ci sono alcuni passaggi che dovranno essere presi:

  1. Aggiungi la configurazione dell'host a repository.d.
  2. Aggiungi host alla zona come endpoint.
  3. Configurare eventuali controlli per il client. Questo è leggermente fuori dallo scopo di questa guida, fornirò solo una spiegazione di base dei passaggi coinvolti.

La configurazione dell'host verrà inserita nel /etc/icinga2/repository.d/hosts/icinga2client.example.com.conffile.

sudo vi /etc/icinga2/repository.d/hosts/icinga2client.example.com.conf
object Host "icinga2client.example.com" {
  import "satellite-host"
  address = "$icinga2clientIP"
  vars.os = "Linux"
}
sudo chown icinga:icinga /etc/icinga2/repository.d/hosts/icinga2client.example.com.conf

Ora l'host esiste nella configurazione del client, ma deve essere inserito in una zona. Questa zona sarà nella /etc/icinga2/repository.d/zonescartella, con lo stesso nome del nome della zona per rendere più facile tenere traccia.

sudo vi /etc/icinga2/repository.d/zones/clientZone.conf
object Zone "clientZone" {
        endpoints = [ "icinga2client.example.com" ]
        parent = "icinga2master.example.com"
}

Successivamente, è necessario aggiungere la global-templateszona.

sudo vi /etc/icinga2/repository.d/zones/global-templates.conf
object Zone "global-templates" {
        global = true
}

Infine, aggiungi l'endpoint client in modo che l'array di endpoint "clientZone" sia popolato quando viene eseguito.

sudo vi /etc/icinga2/repository.d/endpoints/icinga2client.example.com.conf

#Change values to match the host you're adding
object Endpoint "icinga2client.example.com" {
        host = "$icinga2clientIP"
}

Per assicurarti che non ci siano problemi di autorizzazione, vai avanti e cambia nuovamente il proprietario / gruppo.

sudo chown -R icinga:icinga /etc/icinga2

Verifica le modifiche alla configurazione per assicurarti che non ci siano più problemi.

sudo icinga2 daemon -C

Se la verifica ha esito positivo, andare avanti con la ricarica.

sudo service icinga2 restart

Se visiti il ​​tuo sito web Icinga2, vedrai che il server diventa accessibile.

Passaggio 8: comandi e controlli personalizzati

Potrebbero verificarsi errori relativi a "comando non trovato" o "controllo non definito". È qui che entra in gioco la zona dei modelli globali. Dovrai copiare la configurazione in /etc/icinga2/conf.d/file e inserirli in /etc/icinga2/zones.d/global-templates/file. Ad esempio, per creare un comando "check_software", è necessario effettuare le seguenti operazioni.

sudo mkdir /etc/icinga2/zones.d/global-templates
sudo vi /etc/icinga2/zones.d/global-templates/commands.conf
object CheckCommand "check_software" {
  import "plugin-check-command"
  command = [ "/usr/bin/sudo",  PluginDir + "/software_service_check.sh" ]
}

Il software_service_check.shfile dovrà esistere nella /usr/lib64/nagios/pluginscartella sul client .

Successivamente, aggiungi il controllo del servizio nel /etc/icinga2/repository.d/hosts/services.conffile.

sudo vi /etc/icinga2/repository.d/hosts/services/services.conf
apply Service "Check Software Service" {
  import "mail-service"
  check_command = "check_software" # This check command is the same name as the one you defined in global-templates/commands.conf

  assign where host.vars.client_endpoint # This will apply to every client server. If you need it to be more restrictive, you should look into custom variables
}

Dovrai modificare nuovamente le autorizzazioni.

sudo chown -R icinga:icinga /etc/icinga2

Quindi, verificare nuovamente la configurazione.

sudo icinga2 daemon -C

Infine, se riesce, ricaricare:

sudo service icinga2 restart

Congratulazioni! Ora stai usando Icinga2 in un modello master-client e ora puoi evitare di usare i controlli NRPE non sicuri!



Leave a Comment

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.