.. _CLI-MAIN: ***************************** CLI (Command Line Interface) ***************************** .. contents:: Contenuti ======================================================================================================== Introduzione ======================================================================================================== -------------------------------------------------------------------------------------------------------- Lanciare la CLI -------------------------------------------------------------------------------------------------------- La CLI viene lanciata con il comando : :: {{SANET_INSTALL_DIR}}/bin/sanet-cli o in alternativa: :: sanet-manage sanetcli .. _cli-auth: -------------------------------------------------------------------------------------------------------- CLI con autenticazione -------------------------------------------------------------------------------------------------------- E' possibile configurare Sanet per richiedere o meno l'accesso alla CLI tramite credenziali di accesso (vedi: :ref:`users` ). Cli senza autenticazione ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Quando l'autenticazione non e' attiva, qualunque operazione viene eseguita come se fosse eseguita da utenti *admin*. Tutte le entita' create vengono create con *owner* nullo (e quindi saranno visisbili di default solo agli utenti *admin*). Cli con autenticazione ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Per abilitare questa modalita' bisogna inserire nel file di configurazione di Sanet il seguente parametro: :: CLI_AUTHENTICATED = True Quando questa modalita' e' attivata' la CLI richiede credenziali di autenticazione al momento dell'esecuzione. Per specificare le credenziali a riga di comando bisogna lanciare la CLI con i seguenti parametri: :: sanet-cli [ -U ] [ -P ] Se l'*username* non viene specificato, Sanet verifica che esista nel database interno una utenza con lo stesso *username* dell'utente che e' loggato nella shell. Se l'*username* non esiste da errore. .. important:: per ragioni di sicurezza, solo alcuni utenti di sistema possono lanciare la CLI specificando uno username (-U) diverso dal loro *username* di shell. Gli utenti autorizzati a questa modalita' sono configurabili modificando il parametro CLI_SHELL_ROOT_USERS nel file di configuraziond di Sanet. Il default e': :: CLI_SHELL_ROOT_USERS = [ "root" ] Se la *password* non e' specificata, viene chiesta tramite un *prompt protetto*. .. note:: La password richiesta dipende dal sistema di autenticazione scelto (Si rimanda alla sezione :ref:`authentication-modules` per dettagli.) Quanto l'autenticazione e' attivata qualunque operazione viene eseguita come se fosse eseguita dall'utente indicato. Tutte le entita' create vengono create con *owner* corrispondente all'utente in uso (e quindi saranno visisbili di default solo dall'utente in uso o dagli utenti *admin*). ======================================================================================================== Funzionalita' di base ======================================================================================================== -------------------------------------------------------------------------------------------------------- Completamento -------------------------------------------------------------------------------------------------------- La CLI supporta l'autocompletamento dei comandi utilizzando il tasto *TAB*. Usando il carattere "?" e' possibile scoprire se il comando corrente accetta opzioni/parametri aggiuntivi oltre a quelli gia' inseriti:: sanet>show templates ? node Show node templates interface Show interface templates storage Show storage templates service Show service templates device Show device templates datagroup Show datagroup templates used | Pipe output through filter -------------------------------------------------------------------------------------------------------- Commenti -------------------------------------------------------------------------------------------------------- Tutte le righe inserite da standard input che iniziano con '#' sono considerate commenti e vengono ignorate. -------------------------------------------------------------------------------------------------------- Filtrare l'ouptput -------------------------------------------------------------------------------------------------------- L'output prodotto dai comandi della cli puo essere filtrato/processato da diversi comandi utilizzando la seguente sintassi: :: | I comandi di filtro sono: :: begin Display only output after a line matching a regex count Display only the number of lines in output display Display additional information end Display only output before and excluding a line matching a regex exclude Display only output not matching a regex last Display only a number of lines at the end of output include Display only output matching a regex match Display only output matching a regex grep Display only output matching a regex tail Display only a number of lines at the end of output (same as last) .. _CLI_BASE_COMMANDS: ======================================================================================================== Comandi di base ======================================================================================================== Esiste un set base di comandi sempre disponibile. -------------------------------------------------------------------------------------------------------- Help -------------------------------------------------------------------------------------------------------- Mostra tutti i comandi disponibili (e le varie alternative) in un dato punto della CLI: :: help -------------------------------------------------------------------------------------------------------- History -------------------------------------------------------------------------------------------------------- Mostra tutti i comandi inseriti dall'utente. :: history> La history viene salvata nel file $HOME/.sanet-cli-history -------------------------------------------------------------------------------------------------------- Alterare la configurazione interna della CLI -------------------------------------------------------------------------------------------------------- E' possibile modificare alcuni comportamenti/configurazione interne della CLI usando il comando: :: set ... Gestione del terminale ~~~~~~~~~~~~~~~~~~~~~~ terminal width ++++++++++++++ Imposta il numero di colonne massimo utilizzato dall CLI per formattare su standard output del terminale i dati di monitoraggio: :: set terminale width Exit words ++++++++++++++ Imposta come comando di uscita una delle parole indicate. :: set terminal exitwords [[,...]] Esempio: :: root@localhost# sanet-cli # set terminal exitwords stop,esci # exit # esci root@localhost# Formattazione tabelle ++++++++++++++++++++++ Alcuni comandi (es: **show**) mostrano dati in formato tabellare. E' possibile modifcare la formattazione con il comando: :: set terminal format normal set terminal format csv Esempio: :: root@localhost# sanet-cli # show users ID USERNAME FIRST_LAST EMAIL ACTIVE SUPER LASTLOGIN -- -------- ---------- ----- ------ ----- -------------------------- 26 utente2 True False 2014-10-06 18:39:07.063314 29 utente0 True False 2014-10-07 12:04:27.841400 30 prova True True 2014-10-07 12:25:14.592152 20 admin True True 2014-10-07 18:03:11.636888 28 utente3 True False 2014-10-06 15:45:32.045743 25 utente1 Utente 1 True False 2014-10-06 17:46:12.160071 # set terminal format csv # show users 26#utente2# ##True#False#2014-10-06 18:39:07.063314 29#utente0# ##True#False#2014-10-07 12:04:27.841400 30#prova# ##True#True#2014-10-07 12:25:14.592152 20#admin# ##True#True#2014-10-07 18:03:11.636888 28#utente3# ##True#False#2014-10-06 15:45:32.045743 25#utente1#Utente 1 ##True#False#2014-10-06 17:46:12.160071 # set terminal format csv # # show users 26,utente2, ,,True,False,2014-10-06 18:39:07.063314 29,utente0, ,,True,False,2014-10-07 12:04:27.841400 30,prova, ,,True,True,2014-10-07 12:25:14.592152 20,admin, ,,True,True,2014-10-07 18:03:11.636888 28,utente3, ,,True,False,2014-10-06 15:45:32.045743 25,utente1,Utente 1 ,,True,False,2014-10-06 17:46:12.160071 Abilitare colori ++++++++++++++++++ Abilitare la colorazione della sintassi: :: set terminal colors yes|no .. note:: se la CLI viene eseguita e lo *standard output* viene rediretto su un file, la colorazione viene automaticamente disabilitata. E' possibile abilitare la colorazione in fase di esecuzione della CLI: :: sanetcli --colors -------------------------------------------------------------------------------------------------------- Impostare del tenant corrente -------------------------------------------------------------------------------------------------------- In ogni istante la CLI mostra i dati di monitoraggio sempre di un tenant alla volta, definito "tenant corrente". E' possibile "saltare" da un tenant all'altro attraverso l'apposito comando: :: set tenant -------------------------------------------------------------------------------------------------------- Filtri sull'output dei comandi -------------------------------------------------------------------------------------------------------- Quando permesso e' possibile applicare dei filtri i comandi aggiungendo al termine di un comando l'operatore pipe "|" e specificando il tipo di filtro da applicare. :: begin Display only output after a line matching a regex count Display only the number of lines in output display Display additional information end Display only output before and excluding a line matching a regex exclude Display only output not matching a regex last Display only a number of lines at the end of output include Display only output matching a regex match Display only output matching a regex (same as include) tail Display only a number of lines at the end of output (same as last) ======================================================================================================== Consultazione (show) ======================================================================================================== Elenco parziale dei possibili dati visualizzabili tramite il comando "show". -------------------------------------------------------------------------------------------------------- Tenants -------------------------------------------------------------------------------------------------------- :: show tenant Show defined Tenants show tenant tenant name show timegraph Show timegraphs show timegraph device Show device's timegraphs show timegraph interface Show interface's timegraphs show timegraph node Show node's timegraphs show timegraph path Show timegraph show timegraph service Show service's timegraphs show timegraph storage Show storage's timegraphs show timegraphserie Show timegraph series -------------------------------------------------------------------------------------------------------- Utenti e gruppi -------------------------------------------------------------------------------------------------------- :: show user Show defined Users show user username show group Show defined Groups show group username -------------------------------------------------------------------------------------------------------- Agenti -------------------------------------------------------------------------------------------------------- :: show agent Show define agents show agent Show selected agent show agent info Show agent running internal data -------------------------------------------------------------------------------------------------------- Livelli di priorita -------------------------------------------------------------------------------------------------------- :: show priority-levels Show priority levels range -------------------------------------------------------------------------------------------------------- Datagroup -------------------------------------------------------------------------------------------------------- :: show datagroup Show configured datagroups show datagroup device Show device's datagroups show datagroup interface Show interface's datagroups show datagroup node Show node's datagroups show datagroup path Show datagroup show datagroup service Show service's datagroups show datagroup storage Show storage's datagroups show datasource Show configured datasources show datasource device Show device's datasources show datasource interface Show interface's datasources show datasource node Show node's datasources show datasource path Show configured datasource show datasource service Show service's datasources show datasource storage Show storage's datasources show condition Show conditions show condition device Show device's conditions show condition interface Show interface's conditions show condition node Show node's conditions show condition path Show condition show condition service Show service's conditions show condition storage Show storage's conditions show info Show global informations -------------------------------------------------------------------------------------------------------- Cluster -------------------------------------------------------------------------------------------------------- :: show cluster Show clusters show cluster Show selected cluster -------------------------------------------------------------------------------------------------------- Elementi -------------------------------------------------------------------------------------------------------- :: show node Show nodes show node Show selected node show storage Show storages show storage node Show storages for the given node show storage node Show storage informations for the given node show interface Show interfaces show interface node Show interfaces for the given node show interface node Show the selected interface for the given node show service Show services show service node Show interfaces for the given node show service node Show interface informations show device Show devices show device node Show devices for the give node show device node Show device informations -------------------------------------------------------------------------------------------------------- Log -------------------------------------------------------------------------------------------------------- :: show log Show log -------------------------------------------------------------------------------------------------------- note -------------------------------------------------------------------------------------------------------- :: show notes Show notes -------------------------------------------------------------------------------------------------------- Tag -------------------------------------------------------------------------------------------------------- :: show tag info Show tag's informations show tag info summary Show tag's element type counters show diff tag Show differences between tags in specified nodes show tagtree Show defined tag trees show tagtree Show tag tree informations -------------------------------------------------------------------------------------------------------- Link -------------------------------------------------------------------------------------------------------- :: show link Show links -------------------------------------------------------------------------------------------------------- Templates -------------------------------------------------------------------------------------------------------- Datagroups ~~~~~~~~~~ :: show templates datagroup Show datagroup templates show templates datagroup Show datagroup template informations Elements ~~~~~~~~ :: show templates Show configuration templates show templates node Show node templates show templates node Show node template informations show templates interface Show interface templates show templates interface Show interface template informations show templates storage Show storage templates show templates storage Show storage template informations show templates device Show device templates show templates device Show device template informations show templates service Show service templates show templates service Show service template informations -------------------------------------------------------------------------------------------------------- Configurazione -------------------------------------------------------------------------------------------------------- :: show configuration Show configuration show configuration this Show configuration for the current element show configuration agent Show agent settings show configuration agent Show agent settings show configuration cluster Show cluster configuration show configuration cluster Show cluster configuration show configuration datagroup-template Show datagroup template configuration show configuration datagroup-template Show datagroup template configuration show configuration datagroup-template library Show datagroup template configuration from library show configuration device-template show node-template configuration show configuration device-template show node-template configuration show configuration group Show group configuration show configuration group Show group configuration show configuration interface-template show node-template configuration show configuration interface-template show node-template configuration show configuration links Show configured links show configuration node Show node configuration show configuration node Show node configuration show configuration node-template show node-template configuration show configuration node-template show node-template configuration show configuration service-template show node-template configuration show configuration service-template show node-template configuration show configuration storage-template show node-template configuration show configuration storage-template show node-template configuration show configuration tagtree show tag tree configuration show configuration tagtree show tag tree configuration show configuration tenant Show tenant configuration show configuration tenant Show tenant configuration show configuration user Show user configuration show configuration user Show user configuration ======================================================================================================== Configurazione ======================================================================================================== La modalita' di configurazione permette di aggiungere/rimuovere/modificare i dati di monitoraggio. Il comando per entrare in questa modalita' e': :: configuration In questa modalita' e' possibile entrare in numerose sotto-modalita': * configurazione library * configurazione utenti * configurazione gruppi * configurazione tenant **NOTA**: Esistono alcuni shortcut per entrare direttamente in alcune di queste sotto-modalita'. .. digraph:: prova subgraph datagroups { "tenant primary"; "tenant 2"; "tenant N"; } cli -> configurazione; cli -> "tenant primary"; cli -> "LIBRARY"; configurazione -> "utenti"; configurazione -> "gruppi"; configurazione -> "LIBRARY"; configurazione -> "tenant primary"; configurazione -> "tenant 2"; configurazione -> "tenant N"; -------------------------------------------------------------------------------------------------------- Stringhe e regole di quoting -------------------------------------------------------------------------------------------------------- Qualunque stringa che prevede caratteri di spaziatura deve essere racchiusa tra doppi apici ("). **IMPORTANTE**: le regole di quoting della CLI non sono le stesse usate da shell piu' avanzate come BASH o simili. In fase di lettura da standard input la CLI in alcuni casi *aiuta* l'utente permettendo l'inserimento di stringhe con spazi senza obbligare l'uso di doppi apici. Esempio: La seguente stringa inserita :: title Questo e' un titolo con spazi viene in realta' convertita in: :: title "Questo e' un titolo con spazi" Se si racchiude una parola (senza caratteri di spaziatura) tra doppi apici ("), la CLI riumove i doppi apici perche' inutili. Esempio: :: title questo e' un "bel" mondo Divenata: :: title "questo e' un bel mondo" Se si voglio usare i doppi apici (") all'interno di stringhe bisogna usare l'escape "\". Esempio: :: title "questo e' un "bel" mondo" SBAGLIATO title "questo e' un \"bel\" mondo" GIUSTO Risultato: :: title "questo e' un \"bel\" mondo" -> questo e' un "bel" mondo Quoting della CLI e quoting di stringhe nelle *expr* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Le regole di quoting della CLI (uso dei doppi apici) sono indipendenti dalla regole di quoting del linguaggio delle espressioni di sanet. **IMPORTANTE**: Quando si inseriscono delle espressioni che usano *literal* di stringhe bisogna tenere presente che ci sono due *livelli* di quoting da gestire per essere sicuri di scrivere espressioni sintatticamente correte. Per dettagli si rimanda al paragrafo sulla sintassi delle stringhe nel linguaggio di Sanet :ref:`language-strings-and-escaping`. **Esempio**: Ipotizziamo di avere la seguente espressione da scrivere in una condition: :: strlen("hello") == 4 Usando la CLI bisogna inserire il comando: :: expr "strlen(\"hello\") == 4" Poiche' il linguaggio delle *expr* di Sanet accetta come delimitatore di stringhe sia gli apici singoli (') che gli apici doppi ("), e' possibile usare gli apici singoli (') per rendere piu' leggibile l'espressione visibile via CLI e rispettare contemporaneamente sia le regole di quoting della CLI che del linguaggio delle *expr*. Queste due expr sono equivalienti per sanet. :: strlen('hello') == 4 strlen("hello") == 4 Da CLi diventa quindi si puo' scrivere indifferentemente: :: expr "strlen(\"hello\") == 4" expr "strlen('hello') == 4" <---- MOLTO PIU' LEGGIBILE **CONSIGLIO**: usare sempre gli apici singoli (') quando e' possibile. .. _cli-config-tenant: -------------------------------------------------------------------------------------------------------- Configurazione Tenant -------------------------------------------------------------------------------------------------------- Creazione ~~~~~~~~~ Per definire un nuovo tenant: :: tenant ... ... ... exit **NOTA**: Questa operazione inizializza il database e il filesystem con la configurazione di base per il nuovo tenant. Potrebbe richiedere diversi secondi. **IMPORTANTE**: non e' attualmente possibile rinominare un tenant una volta creato. Cancellazione ~~~~~~~~~~~~~ Per cancellare un tenant: :: no tenant **IMPORTANTE**: Per ragioni di prudenza, anche se il tenant viene rimosso, i suoi dati non vengono cancellati dal sistema ma solo resi non accessibili. Il namespace all'interno del database non viene cancellato. La sub-directory dati nella directory {{VAR}} non viene cancellata. Tenant primario ~~~~~~~~~~~~~~~ Impostare un tenant come tenant primario: :: tenant primary exit **IMPORTANTE**: Il tenant precedentemente configurato come primario viene sostitutito con quello nuovo. E' consigliabile effettuare questa operazione quando il sistema e' *fermo*. Dati del tenant ~~~~~~~~~~~~~~~~ Impostare i dati del tenant: :: tenant ... long-name Tenant principale timezone Europe/Rome ... exit Shortcut da CLI ~~~~~~~~~~~~~~~~~~~ E' possibile entrare immediatamente in configurazione sul tenant *primario* con il comando: :: $ sanet-cli conf tenant Shortcut da Shell ~~~~~~~~~~~~~~~~~ E' possibile entrare direttamente in modalita' configurazione sul tenant *primario* da shell col comando: :: $ sanet-cli -c -T Per entrare in configurazione sul tenant idetificato col nome : :: $ sanet-cli -c -t .. _cli-config-users-groups: -------------------------------------------------------------------------------------------------------- Utenti -------------------------------------------------------------------------------------------------------- Per definire un nuovo utente si usa il comando: :: user ... exit Esempio di configurazione di un utente: :: user admin superuser email foo@bar.it firstname Foo lastname Bar secret pbkdf2_sha256$10000$XI1kEGLxzQtD$PHKzj2kYnba1/rxultLooE/fsEulaP+P9Jwh85/4+I8= exit Cancellare un utente ~~~~~~~~~~~~~~~~~~~~ Rimuovere un utente esistente: :: no user foo foo Superutente ~~~~~~~~~~~ Impostare un utente come superuser: :: user admin superuser exit Abilitare/Disabilitare ~~~~~~~~~~~~~~~~~~~~~~ Abilitare: :: user admin enable exit Disabilitare: :: user admin disable exit Personalizzazioni sul tenant ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Per impostare delle personalizzazioni sui tenant visibili dall'utente: :: user admin tenant site ... exit exit Impostare il tenant di default +++++++++++++++++++++++++++++++++ Per impostare il tenant di default di un utente bisogna utilizzare il comando *default*. :: user admin tenant site default exit exit .. _CLI_CONFIG_GROUPS: -------------------------------------------------------------------------------------------------------- Gruppi -------------------------------------------------------------------------------------------------------- Creazione ~~~~~~~~~ Creare un gruppo: :: group ... exit Cancellare un gruppo ~~~~~~~~~~~~~~~~~~~~ Cancellare un gruppo esistente: :: no group foo foo Aggiungere/Rimuovere utenti ad un gruppo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aggiunta: :: group foo user admin exit Rimozione: :: group foo no user admin exit Personalizzazioni sul tenant ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Per impostare delle personalizzazioni sui tenant dipendenti dal gruppo: :: group foo ... tenant site ... exit tenant site2 ... exit exit Capabilities in un tenant ~~~~~~~~~~~~~~~~~~~~~~~~~ Aggiungere: :: group foo ... tenant site capability exit exit Togliere: :: group foo ... tenant site no capability exit exit .. _cli-config-agents: -------------------------------------------------------------------------------------------------------- Configurazione Agenti -------------------------------------------------------------------------------------------------------- La definizione di agenti di monitoraggio avviene con il comando "agent": :: agent ... exit Esempio: :: agent main-agent description "" primary threads 1 exit NOTA: L'alterazione della configurazione non influenza gli agenti gia' in esecuzione quindi per rendere effettive eventuali variazioni bisogna ravviare eventuali agenti locali / remoti. Configurare un agente come primario ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Configurare: :: agent agent1 primary exit Configurare un agente come locale/remoto ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Locale: :: agent agent1 locale exit Remoto: :: agent agent1 remote exit Abilitare/disabilitare un agente ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Abilitare: :: agent agent1 enable exit Disabilitare: :: agent agent1 disable exit Modificare il numero di thread di monitoraggio ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Comando: :: agent agent1 threads exit Esempio: :: agent agent1 threads 25 exit Modificare l'intervallo di refresh della configurazione ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Comando: :: agent agent1 update-minperiod 120 exit .. _cli-config-priority-level: -------------------------------------------------------------------------------------------------------- Livelli priorita -------------------------------------------------------------------------------------------------------- Creare ~~~~~~ Comando: :: priority [ description ] Esempio: :: priority-level low 1 30 Priorita' bassa Rimuovere ~~~~~~~~~ Comando: :: no priority-level Esempio: :: no priority-level low .. _cli-config-datagroup-template: -------------------------------------------------------------------------------------------------------- Datagroup Template -------------------------------------------------------------------------------------------------------- La gestione dei template e' analoga a quella di Sanet2 pur con alcune differenze sintattiche nei comandi. I datagroup template possono essere definiti globalmente a livello di library sia localmente per un singolo tenant. La modalita' di definizione di un template e' la stessa in entrambi i casi, pur con alcune differenze sintattiche. Datagroup Template ~~~~~~~~~~~~~~~~~~ Creare un datagroup template: :: datagroup-template description source parent title dependson minperiod shorttries timeout classification Logical classification exit Owner +++++++++++ Per specificare l'owner di un datagroup-template bisogna usare il comando :: datagroup-template owner exit Gruppi e permessi +++++++++++++++++++ Per aggiungere/togliere i permessi di un gruppo sul template bisogna utilizzare il comando *group*: :: datagroup-template group [ read-only | read-write ] no group exit Parametri opzionali +++++++++++++++++++ Aggiungere un parametro opzionale ad un datagroup-template: :: datagroup foo parameter exit Esempio: :: datagroup foo parameter threshold num 85 exit Per rimuovere un parametro: :: datagroup foo no parameter exit Datasource ++++++++++ Aggiungere: :: datagroup foo datasource exit exit Rimuovere: :: datagroup foo no datasource exit Configurare gli attributi di un datasource: :: datasource title Descriptive title classification Logical classification expr Expression gauge true | false Treat expression value as a "gauge" value. max-val Maximum valid value min-val Minimum valid value cascade true | false On error do not check the following datasources order Computation order when checking datagroup save-value true | false Store serie value inside DB deleted true | false Set to "true" to ignore this datasource exit Per rimuovere la configurazione di un attributo: :: datasource no title no expr no order no save-value no min-val no max-val no gauge no cascade no classification no storage-spec no deleted exit Condition +++++++++ Aggiungere: :: datagroup foo condition ... exit exit Rimuovere: :: datagroup foo no condition exit Configurare gli attributi di una condition: :: condition title Descriptive title primary true | false Sets the element' primary condition priority Set priority expr Expression max-tries Max number of checks before DOWN state. uncheckable-fallback UP o DN Forced state when the expression is uncheckable classification Logical classification dependson Path of the condition this condition depends on deleted true | false Set to "true" to ignore this condition email Default recipient for DOWN (and UP) notifications upemail Force recipient for UP notifications msg-downbody Message for DOWN notifications msg-downsubj Subject for DOWN notifications msg-upbody Message for UP notifications msg-upsubj Subject for UP notifications exit Per rimuovere la configurazione di un attributo: :: condition no title no primary no priority no expr no max-tries no uncheckable-fallback no classification no dependson no deleted no email no upemail no msg-downbody no msg-downsubj no msg-upbody no msg-upsubj exit Timegraph +++++++++ Aggiungere: :: datagroup foo timegraph ... exit exit Rimuovere: :: datagroup foo no timegraph exit Modificare l'attributo di un timegraph: :: timegraph classification Logic classification deleted true | false Set to "true" to ignore this timegraph primary true | false Set element's primary timegraph stacked true | false Timegraph's series can be stacked. title Descriptive title ylegend Y-axis legend exit Per rimuovere la configurazione di un attributo: :: timegraph no classification no deleted no primary no stacked no title no ylegend exit Per aggiungere una serie: :: datagroup ... timegraph ... serie ... exit ... exit ... exit Per rimuovere una serie: :: datagroup timegraph no serie exit exit Modificare l'attributo di una serie: :: datagroup timegraph serie color RGB Color (#rrggbb) computed-value Value's expression deleted true|false Disable this serie legend Legend of the serie render-order Rendering order inside the graph style Rendering style (line, area, ecc.) var-value Name of the datasource related to this serie exit exit exit Stile di una serie: * invisible Invisible * line Line style * tick Tick style * area Area style Per rimuovere la configurazione di un attributo: :: datagroup timegraph serie no color no computed-value no deleted no legend no render-order no style no var-value exit exit exit .. cli-datagroup-parent Gerarchia e parent template +++++++++++++++++++++++++++ Per estendere un datagroup da uno gia' esistente e creare una gerarchia di template bisogna usare il comando *parent* :: datagorup dg_parent datasource ds1 exit condition c1 exit exit datagroup dg_child ... parent dg_parent ... datasource ds2 exit ... exit Se il template che si vuole estendere direttamente un datagroup definito nella library bisogna utilizzare il comando: :: parent library .. cli-flag-deleted Flag deleted ++++++++++++ Per impostare il flag *deleted* per un datagroup/datasource/condition bisogna entrare nel sezione di configurazione corrispondente: :: datagorup dg_parent ... datasource ds1 ... exit ... condition c1 ... exit exit datagroup dg_child ... parent dg_parent ... datasource ds1 deleted true exit ... exit .. _CLI_CONFIG_CLUSTERS: -------------------------------------------------------------------------------------------------------- Cluster -------------------------------------------------------------------------------------------------------- Per definire un cluster: :: cluster ... exit Esempio: :: cluster controllers description Cluster dei wireless controller exit Per rimuovere un cluster: :: no cluster Esempio: :: no cluster controllers controllers -------------------------------------------------------------------------------------------------------- Elementi del monitoraggio -------------------------------------------------------------------------------------------------------- All'interno di un singolo tenant possono essere definiti elementi di monitoraggio .. _cli-config-nodes: Nodi ~~~~ Per aggiungere un nuovo nodo: :: node ... exit All'internod i un nodo e' possibile creare altri tipi di sotto elementi: - interface - storage - device - service Nodi in cluster +++++++++++++++ Per modificare i dati di associazione ad un cluster (cluster-xform, cluster-distinguisher, ecc..) si usano i comandi omonimi: :: node foo ... cluster-role master|dependent cluster-xform ..... cluster-distinguisher .... cluster-instance .... ... exit .. _cli-config-ifaces: Interfacce ~~~~~~~~~~ Per definire un'interfaccia: :: interface [ distinguisher [ xform ] ] ... exit Oppure: :: interface ... distinguisher xform ... exit Per retrocompatibilita' il parametro "distinguisher" e' sostituibile nei comandi con il comando "instance". :: interface [ instance [ xform ] ] ... exit xform e "ifdescr" +++++++++++++++++ In fase di definizione di una interfaccia e' possibile usare come xform la keyword "ifdescr". Questa keyword viene automaticamente espansa nell'espressione: :: byRegexpUnique(1.3.6.1.2.1.2.2.1.2@, '^'+$distinguisher+'$') Example :: interface eth0 distinguisher eth0 xform ifdescr ... exit .. _cli-config-storages: Storage ~~~~~~~ Definire uno storage: :: storage [ distinguisher [ xform ] ] ... exit O in alternativa: :: storage ... distinguisher xform ... exit xform e storagedescr ++++++++++++++++++++ In fase di definizione di uno storage e' possibile usare come xform la keyword "storagedescr". Questa keyword viene automaticamente espansa nell'espressione :: byRegexpUnique(1.3.6.1.2.1.25.2.3.1.3@, '^'+$distinguisher) Esempio: :: storage root_partition distinguisher / xform storagedescr ... exit .. _cli-config-services: Service ~~~~~~~ Definire un servizio: :: service [ distinguisher [ xform ] ] ... exit Oppure: :: service ... distinguisher xform ... exit xform e "procdescr" ++++++++++++++++++++ In fase di definizione di un service e' possibile usare come xform la keyword "procdescr" : :: byRegexpUnique(1.3.6.1.2.1.25.4.2.1.2@, '^'+$distinguisher+'$') Esempio: :: service oracle instance "oracle.exe" xform procdescr .... exit xform e "procdescrargs" ++++++++++++++++++++++++ A volte e' necessario "riconoscere" un processo anche in base ai parametri con cui viene eseguito. E' possibile usare come xform la keyword "procdescrargs" per gestire questo caso. :: byMultiRegexpUnique( 1.3.6.1.2.1.25.4.2.1@ , "4", "s/"+strsplit($distinguisher," ")[0], "5", "s/"+strsplit($distinguisher, " ",1)[1] ) Quando viene usata questa keyword il sistema si aspetta che l'attributo contenga una stringa divisa in due sottostringhe separate da spazi. Esempio: :: service oracle instance "oracle.exe -p1 prova -p2 10" xform procdescrargs .... exit La xform cerchera' l'istanza facendo match su "oracle.exe" e "-p1 prova -p2 10". .. _cli-config-devices: Device ~~~~~~ Definire un device: :: device [ distinguisher [ xform ] ] ... exit Oppure: :: device ... distinguisher xform ... exit xform e "devindex" ++++++++++++++++++ Non esiste un analgo a "ifdescr" o "storagedescr" per i device. Eventuali wildcard possono essere aggiunte in futuro. .. _cli-config-links: Link ~~~~ Per definire un link tra interfacce bisogna dare il seguente comando :: link [ [ [ ] ] ] Il nome del link deve essere univoco. Il tipo puo' essere: - phisical - network - virtual Esempio: :: link labs-sw2524-1 p26 labs-sw2524-2 p26 link-tra-switch physical "Da interfaccia labs1:p26 a interfaccia labs2:p26" .. _cli-config-direct-datagroup: -------------------------------------------------------------------------------------------------------- Datagroup diretti -------------------------------------------------------------------------------------------------------- Per creare datagroup diretti per un determinato elemento di monitoraggio bisogna specificare il datagroup all'interno della sezione di configurazione di quell'elemento: :: node localhost ... datagroup icmp-reachability ... exit ... datagroup icmp2 template icmp-reachability ... exit ... exit .. _cli-config-element-template: -------------------------------------------------------------------------------------------------------- Element Template -------------------------------------------------------------------------------------------------------- Gli element template si configurano tutti nello stesso modo. Cambia il comando da dare per specificiare il tipo di elemento (nodo/interfaccia/ecc...) valido per quel template. :: {tipo}-template ... elenco di datagroup ... exit Esempi: :: node-template server-linux ... exit interface-template ethernet-base ... exit storage-template storage-win ... exit service-template apache-linux ... exit device-template fan-base ... exit Owner ~~~~~~~~~~~~~ Per specificare l'owner di un element-template bisogna usare il comando: :: node|interface|storage|service|divece-template owner exit Gruppi e permessi ~~~~~~~~~~~~~~~~~~~~~~ Per aggiungere/togliere i permessi di un gruppo sul template bisogna utilizzare il comando *group*: :: node|interface|storage|service|divece-template group [ read-only | read-write ] no group exit Node Template ~~~~~~~~~~~~~ Definire un node template: :: node-template ... elenco di datagroup ... exit Esempio: :: storage-template disk datagroup disk-space exit datagroup performance-data exit exit Flag aggiuntivi (switch e router) +++++++++++++++++++++++++++++++++ Per i node-template e' possibile specificare anche i due flag che servono per valorizzare il corrispondente attributo associato al nodo a cui verra' applicato il template. * switch * router Esempio: :: node-template switch router ... ... exit Dichiarare sotto-entita' all'interno di un node-template +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Specificare una interfaccia: :: interface [ distinguisher [ xform ] ] [ template