7. Agenti remoti

7.1. Introduzione

Sanet 3 permette di eseguire agenti locali alla stessa macchina di monitoraggio e anche agenti remoti.

Salvo casi particolari, gli agenti remoti possono effettuare praticamente le stesse attivita’ di monitoraggio degli agenti locali.

Su uno stesso server remoto possono essere eseguiti piu’ agenti, in questo modo suddividere non solo il monitoraggio tra piu’ server, ma anche tra piu’ processi dello stesso server.

Schema:

  SANET3 SERVER                          SERVER 2

+----------------+                   +--------------+
|                |                   |              |
|      WEB       |                   |              |
|       .        |                   |              |
|       .        |                   |              |
|     sanetd. . . . . . . . . . . . . . . . .       |
|       .        |                   |      .       |
|       .        |                   |      .       |
|     agent      |                   |    agent(s)  |
|       .        |                   |      .       |
+-------.--------+                   +------.-------+
        .                                   .
     network1                            network2

7.2. Installazione

7.2.1. Installazione su DEBIAN

7.2.1.1. Installazione sanet-remote-agente con APT

Il pacchetto DEBIAN non e’ ancora supportato. I pacchetti debian necessari e le dipendenze devono essere installati a mano.

7.2.1.2. Installazioni dipendenze a mano

I repository debian sono gli stessi di Sanet3.

Installare le dipendenze:

apt-get install python
apt-get install python-setuptools
apt-get install python-dev
apt-get install python-pip

apt-get install python-qpid

apt-get install redis-server
apt-get install python-redis

apt-get install python-antlr

apt-get install python-netsnmp

Installare i pacchetti Labs:

apt-get install python-sanet-common

apt-get install python-sanet-poller

7.2.1.3. Installazione sanet-remote-agente da sorgenti SVN

Installare subversion:

apt-get install subversion

Scaricare i sorgenti:

export REMOTE_INSTALL_DIR=/usr/share/sanet-remote-poller

svn co https://develtrac/svn/sanet/trunk/sanet-remote-poller   $REMOTE_INSTALL_DIR

Impostare la variabile d’ambiente SANET_REMOTE_HOME in /etc/enviroment:

echo "SANET_REMOTE_HOME=$REMOTE_INSTALL_DIR" >> /etc/environment

Da questo momento si fara’ riferimento a {{SANET_REMOTE_INSTALL_DIR}} come la directory dove e’ stato installato il pacchetto.

7.3. Configurazione

Una singola installazione puo’ gestire piu’ agenti, ogniuno configurato indipendentemente dagli altri.

Tutta la configurazione e’ suddivisa nei seguenti file:

{{REMOTE_INSTALL_DIR}}/etc/global.ini
{{REMOTE_INSTALL_DIR}}/etc/agents/*

Il file global.ini e’ il file di configurazione globale.

La directory agents deve contenere un file (il nome di ogni file e’ libero) di configurazione per ogni agente remoto definito all’interno di global.ini

Questi file sono file in formato “ini” (formato derivato dai sistemi windows).

Le righe che iniziano con ‘#’ o ‘;’ sono considerate come commenti e vengono ignorate.

7.3.1. global.ini

Questo file contiene parametrizzazioni globali l’elenco degli agenti da eseguire sulla macchina.

Il file e’ suddiviso in “sezioni” che indicano tutti gli agenti da eseguire sulla macchina.

Il nome di ogni sezione corrispone al nome “logico” dell’agente da eseguire localmente:

IMPORTANTE: il nome “logico locale” e’ indipendente dal reale nome dell’agente cosi’ come e’ configurato in sanet.

Esempio: In questo schema vediamo i nomi degli agenti remoti nel database di sanet (remote-agent1, remote-agent2) e i nomi che sono stati assegnati sul server remoto (agent1, agent2).

     SERVER                                         SERVER
      SANET                                         REMOTO

       DB
+---------------+
| remote-agent1 | <--------------------------------- agent1
| remote-agent2 | <--------------------------------- agent2
+---------------+

Esempio:

[agent1]
variabile1 = valore1
variabile2 = valore2
...
...
[agent2]
variabile1 = valore1
...
...

Queste sono le variabili disponibili per ogni sezione:

Nome Opzionale Default Descrizione
config_file si {{REMOTE_INSTALL_DIR}}/etc/agents/<name> Config file per l’agente
pid_file si /var/run/sanet_remote_<name>.pid Pid file per il processo che gestira’ l’agente

7.3.2. File configurazione agente

Il file di configurazione prevede una sola sezione configuration. Queste sono alcune delle parametrizazioni ammesse:

Nome Opzionale Default Descrizione
server_host     Server Broker di Sanet3
server_port si porta qpid Porta Broker di Sanet3
server_user si sanet  
server_password si sanet  

Impostazioni tenant/agente:

Nome Opzionale Default Descrizione
tenant     Nome del tenant
agent     Nome dell’agente

Impostazioni log:

Nome Opzionale Default Descrizione
log_level si   Livello di log numerico
log_file si /var/run/sanet_remote_<name> Log file

Esempio:

[configuration]

server_host  = devmachine

tenant       = site

agent        = remote-agent

7.3.3. Configurazione su sanet (server centrale)

Per poter lanciare un poller remoto questo deve essere definito nella configurazione di sanet3.

Esempio: Configurazione via CLI

root@localhost:/# sanet-cli
sanet> show conf tenant site

tenant site
        ...
        agent agent1
                remote                              <----------------
        exit
        ...
exit

7.4. Start/Stop

Per lanciare tutti gli agenti definiti usare lo script globale:

{{REMOTE_INSTALL_DIR}}/scripts/sanetremotepoller

Start:

{{REMOTE_INSTALL_DIR}}/scripts/sanetremotepoller start

Stop:

{{REMOTE_INSTALL_DIR}}/scripts/sanetremotepoller stop

Questo script puo’ essere configurato per:

ln -s {{REMOTE_INSTALL_DIR}}/scripts/sanetremotepoller /etc/inid.d/

7.5. Update

Fermare gli agenti in esecuzione:

{{REMOTE_INSTALL_DIR}}/scripts/sanetremotepoller stop

Per aggiornare:

cd {{REMOTE_INSTALL_DIR}}
./scripts/update_svn.sh

Rilanciare:

{{REMOTE_INSTALL_DIR}}/scripts/sanetremotepoller start

7.6. Comandi di utility

7.6.1. Eseguire datagroup

Per fare il check di un datagroup sulla macchina dove e’ installato l’agente remoto si puo’ utilizzare il comando:

{{REMOTE_INSTALL_DIR}}/bin/exec_datagroup [options] <datagroup path>

Questo comando esegue localemente il datagroup caricando i dati necessari dal server Sanet centrale esattamente come farebbe il poller remoto una volta lanciato.

Per avere dettagli sui parametri in input lanciare:

{{REMOTE_INSTALL_DIR}}/bin/exec_datagroup --help

7.7. Configurazione avanzata

7.7.1. Trap SNMP

Gli agenti remooti possono ricevere e inoltrare trap SNMP.

switch -----*TRAP*--------------------------+
                                            +----> +--------+      +----------+
                                                   | SANETD |----> | ENTABLES |
                        +------------+      .....> +--------+      +----------+
switch -----*TRAP*----->|remote agent|.......
                        +------------+

Danger

se la gestione delle trap non viene abilitata anche sul server centrale di Sanet, gli agenti remoti inoltreranno dati che non verranno processati. Col tempo questo causera’ la saturazione della RAM sul server centrale. Vedere Trap SNMP.

7.7.1.1. Configurazione

Danger

se la gestione delle trap non viene abilitata anche sul server centrale di Sanet, gli agenti remoti inoltreranno dati che non verranno processati. Col tempo questo causera’ la saturazione della RAM sul server centrale. Vedere Trap SNMP.

Per abilitare la ricezione di trap SNMP e l’inoltro al server centrale e’ necessario aggiungere/modificare i seguenti parametri al file di configurazione dell’agente:

; Abilita la ricezione
snmptrap        = 1

Per ricevere le trap UDP su porte o indirizzi particolari bisogna intervenire su:

; Indirizzo IP (0.0.0.0 default )
snmptrap_listen_address = 0.0.0.0

; Porta UDP di ascolto (162 default)
snmptrap_listen_port    = 162

Se si vuole modificare il livello di verbosita’ nel file di log bisogna intervenire sul parametro:

# Il default e' 20
snmptrap_log_level      = 10

7.7.2. Discovery

7.7.2.1. Introduzione

7.7.2.2. Configurazione

Per attivare il discovery bisogna aggiungere

autodiscovery = 1

Il sotto-sistema di discovery salva un log nel file di default:

/var/log/sanet_remote_<agent>_discovery.log

E’ possibile il file di log con il parametro:

discovery_log_file  = /var/log/foo.log

Il livello minimo di log e’ regolato dal seguente parametro numerico (10 = DEBUG, 20 = INFO, 30 = ERROR):

discovery_log_level = 20