Nella guida " Come installare e configurare Sensu Monitoring su CentOS 7 ", hai imparato come configurare un server Sensu. Questa esercitazione è la seconda parte, in cui imparerai come aggiungere un client Sensu. Un client Sensu è un server monitorato da Sensu.
Presumo che il client Sensu sia una macchina virtuale CentOS 7. Accedi a SSH e segui i passaggi seguenti. Non dovrai modificare nulla sul server Sensu. Finché il client Sensu si autentica correttamente con il server Sensu, i controlli verranno eseguiti automaticamente.
Prima di iniziare, assicurati che il tuo firewall sia configurato correttamente. Con un'impostazione predefinita, aprire le porte TCP in uscita 5671
e 5672
.
Passaggio 1: aggiungere il repository Sensu
Il pacchetto sensu-client
non si trova nei repository CentOS predefiniti. Aggiungi il repository incollando il seguente contenuto nel file /etc/yum.repos.d/sensu.repo
:
[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
gpgcheck=0
enabled=1
Successivamente, aggiorna yum
e installa sensu-client
:
yum update
yum install sensu
Tutti i servizi ( sensu-server
, sensu-client
e sensu-api
) saranno installati con l'installazione del sensu
pacchetto. Puoi tranquillamente ignorare tutti i servizi tranne quello sensu-client
che useremo. Non avviare ancora il servizio.
Passaggio 2: installare i plug-in necessari
Il modello di Sensu è distribuire il carico sui client risultante dall'esecuzione dei controlli e dalla trasmissione dei risultati dei controlli. Di conseguenza, è necessario installare i plug-in Sensu sui client stessi anziché sul server Sensu. Alcuni plugin sono compilati localmente, il che significa che avremo bisogno di strumenti di compilazione sui client:
yum groupinstall "Development tools"
I seguenti plugin sono molto popolari e utilizzati per molti controlli. Eseguire ciascuno di questi comandi per installare i plug-in dopo aver installato i pacchetti degli strumenti di sviluppo. A seconda delle dimensioni del server, ciò potrebbe richiedere del tempo:
sensu-install -p uptime-checks
sensu-install -p process-checks
sensu-install -p http
sensu-install -p filesystem-checks
sensu-install -p cpu-checks
sensu-install -p memory-checks
sensu-install -p disk-checks
sensu-install -p load-checks
sensu-install -p network-checks
Passaggio 3: aggiungere i file di configurazione
Aggiungeremo quattro file di configurazione al client Sensu.
-
/etc/sensu/conf.d/client.json
:
Questo file contiene abbonamenti, l'indirizzo IP per il client Sensu e il nome del client. Sostituisci i valori ipaddress
e hostname
con i valori che descrivono il client che stai aggiungendo. Inoltre, specifica gli abbonamenti definiti sul server Sensu o, se non ne hai, rimuovi l'intera subscriptions
sezione. Non dimenticare di rimuovere la virgola dopo name
se lo fai:
{
"client": {
"address": "-----ipaddress-----",
"environment": "production",
"name": "-----hostname-----",
"subscriptions": [
"linux"
]
}
}
-
/etc/sensu/conf.d/transport.json
:
In questo file, definiamo il trasporto utilizzato. Per impostazione predefinita, il trasporto utilizzato è RabbitMQ. Incolla i seguenti contenuti nel file. Nessun valore deve essere modificato:
{
"transport": {
"name": "rabbitmq",
"reconnect_on_error": true
}
}
-
/etc/sensu/conf.d/rabbitmq.json
:
Il server RabbitMQ e le credenziali sono specificati in questo file. Sostituisci hostname
con il nome DNS. Per impostazione predefinita, la porta è 5672
per connessioni non crittografate. Anche l'utente e la password RabbitMQ devono essere sostituiti. Questi dettagli possono differire per ciascun client Sensu o essere uguali per tutti i client. Questa è una decisione pratica che viene presa dall'utente.
Il vhost
è /
di default, ma è spesso cambiato in /sensu
. Se non sei sicuro di quale utilizzare, prova entrambi:
{
"rabbitmq": {
"host": "-----hostname-----",
"password": "-----rabbitmq_password-----",
"port": 5672,
"user": "-----username-----",
"vhost": "/sensu"
}
}
-
/etc/sensu/conf.d/checks.json
:
Sensu supporta due tipi di controlli: controlli autonomi e controlli di abbonamento. I controlli delle sottoscrizioni sono definiti sul server Sensu e le sottoscrizioni sono definite nel client.json
file su un client Sensu. I controlli autonomi sono controlli definiti sui client Sensu stessi. Si tratta in genere di controlli che si applicano solo a un server specifico. Ad esempio, un controllo che sarebbe in un abbonamento è un controllo per vedere se il web server è ancora in esecuzione. Un controllo autonomo potrebbe essere un controllo per vedere se il server A può raggiungere il server B. Nessun altro server ha bisogno di quel controllo.
I controlli autonomi sono definiti in questo file. Di seguito troverai un esempio di un checks.json
file con alcuni esempi di controlli autonomi:
{
"checks": {
"httpd": {
"command": "sudo check-process.rb -p httpd",
"handlers": [
"default",
"pushover"
],
"interval": 180,
"occurences": 3,
"refresh": "1800",
"standalone": true,
"ttl": 1200
},
"mysqld": {
"command": "sudo check-process.rb -p mysqld",
"handlers": [
"default",
"pushover"
],
"interval": 180,
"occurences": 3,
"refresh": "1800",
"standalone": true,
"ttl": 1200
}
}
}
Dopo aver completato la configurazione del client Sensu, modificare i diritti:
chown -R sensu:sensu /etc/sensu/conf.d
Passaggio 4: concedere le autorizzazioni sensu
all'utente
I controlli vengono eseguiti come utente sensu
. Naturalmente, questo utente ha diritti limitati. Tuttavia, alcuni controlli richiedono root
autorizzazioni per l'esecuzione. Consentiremo all'utente sensu
di eseguire qualsiasi controllo poiché root
limiteremo le sue altre autorizzazioni.
Incolla i seguenti contenuti nel file /etc/sudoers.d/sensu
:
Defaults:sensu
secure_path=/opt/sensu/embedded/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
sensu ALL=(ALL) NOPASSWD: /opt/sensu/embedded/bin/check*.rb *
sensu ALL=(ALL) NOPASSWD: /opt/sensu/embedded/bin/metrics*.rb *
Le prime due righe definiscono il percorso predefinito che consente di specificare solo il nome dello script nel comando check anziché l'intero percorso. Ad esempio, semplicemente usando il comando sudo check-process.rb -p mysqld
funzionerà senza dover specificare l'intero percorso ( /opt/sensu/embedded/bin/check-process.rb -p mysqld
).
Le altre righe consentono sensu
all'utente di eseguire qualsiasi script di controllo come root
.
Infine, avvia il sensu-client
servizio e avvialo automaticamente all'avvio:
systemctl start sensu-client
systemctl enable sensu-client
Se hai installato Uchiwa, il nuovo client dovrebbe apparire nell'elenco. In caso contrario, eseguire il debug sensu-client
ispezionando il file di registro/var/log/sensu/sensu-client.log