2. Match disponibili¶
Contenuti
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