2. Match disponibili

2.1. Attributes

2.1.1. Premessa: struttura degli allarmi in memoria

Gli allarmi gestiti da entables sono memorizzati utilizzando una struttura a dizionario chiave/valore.

NOTA: La struttura completa di un allarme puo’ cambiare nel tempo.

Esempio:

{
        'condition': {
                'classification': '',
                'expr': u"int(readFile('/tmp/prova.txt'))==1",
                'maxtries': 3,
                'name': 'c',
                'path': 'n1;;dg;c',
                'priority': 31,
                'priority_level': 'medium',
                'statuslastchange': 1414161050,
                'uuid': 'cb90f8d535ff4d9fbd149dae2908db1a'
        },
        'datasources': [],
}

Per identificare una particolare chiave/sottochiave si utilizza il path. Il path e’ una stringa che codifica il livello di annidamento della chiave, ed ha la seguente sintassi:

<key1>:<sub-key>:<sub-key>:......

Esempi di path e valori individuati:

condition:maxtries          ---> 3
condition:statuslastchange  ---> 1414161050

2.1.2. Utilizzo del match

Il match attributes permette di fare match sui valori associati ad una qualunque delle chiavi del pacchetto dati dell’allarme.

Gli parametri del match vengono specificati con la sintassi:

-m attr --attr_field_name <path>  --attr_field_value <valore>

I parametri sono:

Parametro Descrizione
attr_field_name Stringa che codifica il path di una chiave nel messaggio.
attr_field_value Valore della chiave specificata da attr_field_name
attr_field_value_between Stringa che specifica i valori min e max (separati da spazio) ammessi per il valore della chiave attr_field_name

Esempi: Questi sono possibili utilizzi del parametro field_name e field_name:

--attr_field_name "condition:maxtries"            --attr_field_value  3        --> MATCH
--attr_field_name "condition:statuslastchange"    --attr_field_value  234234   --> NO MATCH

2.1.2.1. Uso di shortcut generici

Un allarme di sanet ha una struttura complessa che puo’ anche variare nel tempo.

Per facilitare il match su alcune chiavi importanti dell’allarme, sono disponibili dei parametri shortcut che permettono di semplificare la scrittura del match.

Quando si usa uno shortcut bisogna usare la seguente sintassi:

--attr_<nome shortcut>  <valore>

Esempio: Stesso match usando o meno lo shortcut path :

NORMALE    --attr_field_name  condition:path  --attr_field_value  'localhost;;icmp-reachability;reach'

SHORTCUT   --attr_path                                            'localhost;;icmp-reachability;reach'

Warning

non e’ possibile usare alcune opzioni di match (es: attr_field_between) quando si usano gli shortcut

2.1.2.2. Specificare valori usando regular expression

Per alcune chiavi (e corrispondendi shortcut) del messaggio e’ possibile specificare un valore attraverso espressioni regolari.

Esempio:

--attr_field_name  condition:path  --attr_field_value   '^sw.*'     \__ equivalneti
--attr_path                                             '^sw.*'     /

2.1.2.3. Tabella riassuntiva degli shortcut disponiboli

Reale path del campo nel messaggio Accetta RegExp Descrizione shortcut
alarmtype   Stringa con il tipo di allarme. “normal” generati da Sanet, “pushed” generati da push_alarm alarmtype
condition:path si Stringa con il path della condition che ha generato l’allarme path
element:name si Nome dell’elemento (nome nodo, nome interfaccia, ecc…) name
result:status   Stato corrente della condition “UP”, “DN”, “FA” status
condition:priority   Priorita della condition. Valori ammessi: none, 1…99 priority
condition:priority   Priorita’ minima della condition (in numero o livello di priorita’) (es. 10, ‘low’, ecc. ) min_priority
condition:priority_level   Livello di priorita della condition (es. “critical”) priority_level
mail:to   Destinario email dell’allarme (Attributi “email” e/o “upemail” della condition dell’allarme) mail_to
mail:subject   Soggetto email dell’allarme (Attributi “msg_upsubj” o “msg_downsubj” della condition dell’allarme) mail_subject
mail:body   Corpo email dell’allarme (Attributi “msg_upbody” o “msg_downbody” della condition dell’allarme) mail_body

2.1.2.4. Campi/shortcut per i messaggi digest

Reale path del campo nel messaggio Accetta RegExp Descrizione shortcut
digestinfo:downs   Numero di condition down pendenti nel digest. digest_downs
isdigest”,   Se l’allarme e’ un digest o meno (1 digest, 0 normale) isdigest

2.1.3. Vari esempi di utilizzo

entables -t notify -A DEFAULT -m attr --attr_priority                                                       1       -j SMTP
                                                                                                          
entables -t notify -A DEFAULT -m attr --attr_priority                                                       none    -j SYSLOG --syslog_msg "ERRORE"
                                                                                                          
entables -t notify -A DEFAULT -m attr --attr_min_priority                                                   88      -j SMTP
                                                                                                          
entables -t notify -A DEFAULT -m attr --attr_min_priority                                                   low     -j SMTP
                                                                                                          
entables -t notify -A DEFAULT -m attr --attr_priority_level                                                 medium  -j DROP

entables -t notify -A DEAFULT -m attr --attr_field_name        digestinfo:downs   --attr_field_value        0       -j DROP \_ equivalenti
entables -t notify -A DEAFULT -m attr --attr_digestinfo_downs                                               0       -j DROP /


entables -t notify -A DEAFULT -m attr --attr_field_name        condition:priority  --attr_field_value_range "42 51" -j DROP 

2.2. Times

Questo match permette di fare match sull’orario di generazione dell’evento che ha prodotto l’allarme.

Gli attributi su cui fare match vengono specificati con la sintassi:

-m times --times_<attributo> <valore>

Gli attributi su cui e’ possibile fare match sono:

Parametro Type Default Descrizione
from stringa   Data di inizio intervallo temporale di interesse (ISO)
to numero   Data di fine intervallo temporale di interesse (ISO)
range stringa   Stringa range temporali (ore del giorno/giorni della settimana) di interesse (es: 8-20/1-3)

2.2.1. Esempi

Matcha tutti i messaggi nella fascia oraria dalle 8:00 alle 18:00 dal lunedi’ al venerdi’:

entables  -A DEFAULT  -m times --times_range  '8:00-18:00/1-5'  -j .....

2.2.2. Formato parametro range

La stringa per specificare il range temporale di interesse deve rispettare la sintassi per i range temporali usata: Range temporali.

2.2.2.1. Esempi di formati

Stringa Descrizione
all Tutti i giorni
none Tutti i giorni
7-20/1 Tutti i lunedi, tra le 7:00 e le 20:00
8:00-13:00,14:00-18:00/1-5 Tutti i giorni da lunedi (1) a venerdi (5), tral le 8:00 e le 13:00 e tra le 14:00 e le 18:00.

2.2.3. Match inverso

E’ possibile aggiungere il carattere ! come prefisso al valore del range per indicare che si vuole fare match sul range temporale inverso.

Warning

l’utilizzo del carattere ! produce l’inverso di tutto il range temporale specificato.

Esempi:

!all                    not (tutti i giorni) -> nessun giorno
!none                   not (tutti i giorni) -> nessun giorno    
!8:00-18:00/1-5         not (8:00-18:00/1-5) -> dal 1 al 5 dalle 00:00 alle 8:00 e dalle 18:00 alle 24 + tutto sabato e domenica

Danger

il carattere (!) e’ un carattere speciale di alcune shell. Per assicurarsi che non dia errori di interpretazione specificare sempre tutto il range temporale tra apici singoli ().

"!8:00-18:00/1-5"       NO
                          
'!8:00-18:00/1-5'       SI

2.3. TAGS

Questo match permette di fare match sui tag associati all’elemento (nodo,interfaccia,ecc.) che ha generato l’allarme.

Gli attributi su cui fare match vengono specificati con la sintassi:

-m tags --tags_<attributo> <valore>

Gli attributi su cui e’ possibile fare match sono:

Parametro Descrizione
path Regexpr per fare match sui tag associati all’allarme

NOTA: Il path in formato stringa di un tag contiene anche il nome del tagtree. Esempio:

geo:/Visione Globale
geo:/Visione Globale/Pontecchio

servizi:/Servizi IT/Web
servizi:/Servizi IT/Posta

2.3.1. Esempi

Esempio di match su un tag preciso:

entables -t notify -A DEFAULT -m tags --tags_path '^allarmi:/Allarmi/Tutti$' -j DROP SMTP

2.4. tests

NOTA BENE: questo match non va utilizzato. E’ disponibile solo per test di debug.

Gli attributi su cui fare match vengono specificati con la sintassi:

-m tests --tests_<attributo> <valore>

Gli attributi su cui e’ possibile fare match sono:

Parametro Type Default Descrizione
newerthan numero   Fa match se il timestamp dell’allarme risale a meno di <num> secondi fa’

2.4.1. Esempi

Cattura tutti gli allarmi generati negli ultimo 20 secondi e li ferma per 30 secondi:

entables  -A DEFAULT  -m tests --tests_newerthan 20   -j DELAY --delay_seconds 30

2.5. COUNTERS

Questo match permette di accedere alle informazioni memorizzate dal target UPDATECOUNTERS.

-m counters --counters_<parametro> <valore>

Questi sono i parametri su cui e’ possibile fare match:

Parametro Type Default Descrizione
status str   stato della condition dell’ultimo allarme processato da UPDATECOUNTERS

2.5.1. Esempi

Manda all’allarme per email solo se l’ultimo allarme processato da UPDATECOUNTERS era un UP.

...
...
entables -t notify -A DEFAULT                                        -J UPDATECOUNTERS 
...
...
entabels -t notify -A DEFAULT    -m counters --counters_status UP    -j SMTP