AdminGuide:Service:SNMP
Return to AdminGuide:Service
Description
Protocol Operation
SNMP is the standard for network management and monitoring. Thus, it is a protocol used to monitor the state of a machine, specifically, to acquire from a monitoring server external to Kalliope status parameters related to CPU load, memory occupancy, disk space, and concurrent calls. It is a standard protocol available on Kalliope; OIDs (monitored objects) are made available on the central. Those defined in the standard MIB 2 are used, where object identifiers are made available through the agent. The server is the monitoring system that queries, while the SNMP agent is the service used to expose the data to a client that requests it. SNMP involves the client requesting the agent to find out the value of the OID, and the agent returns the value.
The data within the agent is organized in the form of a tree. The data indicate, for example, the version of the primary and secondary firmware, information regarding telephone services, the size of virtual memory occupied by the process, and the total number of failed authentication attempts by SIP clients.
Objects are defined as an index of a leaf under a parent: a tree structure allows you to access by specifying the path address between the subtrees to the leaf, which is the object you want to monitor. SNMP provides:
- Manager
- Agent
- Protocol
The representation of an OIP is done as a sequence of numbers, e.g., 1.3.6.1.2.1.4.6 is the path within the tree, and each point in the path has its textual correspondence.
Configuration
To enable NSMP support, go to "System Settings > SNMP Settings" and hit the "Enabled" checkmark.
Per gli esempi di configurazione è stato utilizzato il client iReasoning MI Browser che può fare interrogazioni SNMP e mostra l’organizzazione dei sottoalberi.
- Kalliope MIB - This proprietary MIB provides information on the configuration and the functioning of the services implemented on the Kalliope node, such as number of configured or registered accounts, simultaneous calls, total number of calls. OID:1.3.6.1.4.1.33732
Le seguenti informazioni sono obbligatorie e se non vengono inserite, il servizio SNMP non può avviarsi.
- sysName: è un particolare OID sotto l’albero system (che è il primo figlio ed è indicato come 1.3.1.2.1.1), sysName è il nome della macchina ed è 1.3.6.1.2.1.1.5.0 (lo 0 in fondo poiché è di tipo scalare).
- sysLocation : è la location fisica, funge come una sorta di inventario
- sysContact: indirizzo mail del referente da contattare se c’è un’anomalia in quel determinato nodo
Nelle impostazioni definite c’è l’albero delle MIB 2 e le host-resources (1.3.6.1.25) che sono i due che si espongono su Kalliope. Vengono anche esposte le MIB proprietarie e il software può leggere tutto l’albero poiché lo scansiona interamente ed è compito dell’agent restituire i valori. Il file delle MIB serve per permettere al software che fa monitoraggio di sapere la singola foglia che conosce solo per numero che cosa sia.
NETRESULTS-MIB DEFINITIONS ::= BEGIN
IMPORTS enterprises, MODULE-IDENTITY FROM SNMPv2-SMI; netresults MODULE-IDENTITY LAST-UPDATED "201801070200Z" ORGANIZATION "NetResults Srl" CONTACT-INFO "NetResults Support Email: support@netresults.it" DESCRIPTION "The NetResults private-enterprise MIB" REVISION "201807010200Z" DESCRIPTION "Initial revision." ::= { enterprises 33732 } kalliope OBJECT IDENTIFIER ::= { netresults 1 } END KALLIOPEPBX-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE, MODULE-IDENTITY, Integer32, Counter32, TimeTicks, Unsigned32, Gauge32 FROM SNMPv2-SMI netresults, kalliope FROM NETRESULTS-MIB; kalliopepbx MODULE-IDENTITY LAST-UPDATED "201801240025Z" ORGANIZATION "NetResults Srl" CONTACT-INFO "NetResults Srl support@netresults.it" DESCRIPTION "KalliopePBX. This MIB defined objects for managing KalliopepBX nodes." REVISION "201801082025Z" DESCRIPTION "Initial published revision." REVISION "201801240025Z" DESCRIPTION "Added kPbxNodeInfoServicesAsterisk subtree" REVISION "201807250025Z" DESCRIPTION "Whole kalliopepbx sub-tree reorganization" ::= { kalliope 1 } -- textual conventions KBytes ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Storage size, expressed in units of 1024 bytes." SYNTAX Integer32 (0..2147483647) kpbxNode OBJECT IDENTIFIER ::= { kalliopepbx 1 } kpbxNodeInfo OBJECT IDENTIFIER ::= { kpbxNode 1 } kpbxNodeServices OBJECT IDENTIFIER ::= { kpbxNode 2 } kpbxNodeSecurity OBJECT IDENTIFIER ::= { kpbxNode 3 } kpbxNodeTenants OBJECT IDENTIFIER ::= { kpbxNode 4 } kpbxNodeAccounts OBJECT IDENTIFIER ::= { kpbxNode 5 } kpbxNodeCalls OBJECT IDENTIFIER ::= { kpbxNode 6 } -- -- kpbxNodeInfo -- kpbxNodeInfoSystem OBJECT IDENTIFIER ::= { kpbxNodeInfo 1 } kpbxNodeInfoVersion OBJECT IDENTIFIER ::= { kpbxNodeInfo 2 } -- -- kpbxNodeInfoSystem -- -- kpbxNodeInfoSysPartNumber kpbxNodeInfoSysPartNumber OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "KalliopePBX part number." ::= { kpbxNodeInfoSystem 1 } -- kpbxNodeInfoSysHWId kpbxNodeInfoSysHWId OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "KalliopePBX hardware ID." ::= { kpbxNodeInfoSystem 2 } -- kpbxNodeInfoSysSerialNumber kpbxNodeInfoSysSerialNumber OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "KalliopePBX serial number." ::= { kpbxNodeInfoSystem 3 } -- -- kpbxNodeInfoVersion -- -- kpbxNodeInfoVersionPrimaryFirmware kpbxNodeInfoVersionPrimaryFirmware OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "Version of the primary firmware." ::= { kpbxNodeInfoVersion 1 } -- kpbxNodeInfoVersionSecondaryFirmware kpbxNodeInfoVersionSecondaryFirmware OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "Version of the secondary firmware." ::= { kpbxNodeInfoVersion 2 } -- kpbxNodeInfoVersionBootloader kpbxNodeInfoVersionBootloader OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "Version of the bootloader." ::= { kpbxNodeInfoVersion 3 } -- kpbxNodeInfoVersionRunning kpbxNodeInfoVersionRunning OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "Version of the running firmware." ::= { kpbxNodeInfoVersion 4 } -- -- kpbxNodeServices -- kpbxNodeServicesAsterisk OBJECT IDENTIFIER ::= { kpbxNodeServices 1 } -- -- kpbxNodeServicesAsterisk -- -- kpbxNodeServicesAsteriskUpTime kpbxNodeServicesAsteriskUpTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "Time ticks since Asterisk was started." ::= { kpbxNodeServicesAsterisk 1 } -- kpbxNodeServicesAsteriskReloadTime kpbxNodeServicesAsteriskReloadTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "Time ticks since Asterisk was last reloaded." ::= { kpbxNodeServicesAsterisk 2 } -- kpbxNodeServicesAsteriskVMSize kpbxNodeServicesAsteriskVMSize OBJECT-TYPE SYNTAX KBytes UNITS "KBytes" MAX-ACCESS read-only STATUS current DESCRIPTION "Virtual memory size for Asterisk process." ::= { kpbxNodeServicesAsterisk 3 } -- kpbxNodeServicesAsteriskVMRSS kpbxNodeServicesAsteriskVMRSS OBJECT-TYPE SYNTAX KBytes UNITS "KBytes" MAX-ACCESS read-only STATUS current DESCRIPTION "Resident set size for Asterisk process." ::= { kpbxNodeServicesAsterisk 4 } -- -- kpbxNodeSecurity -- kpbxNodeSecuritySip OBJECT IDENTIFIER ::= { kpbxNodeSecurity 1 } -- -- kalliopePbxNodeSecuritySip -- -- kpbxNodeSecuritySipTotalAuthFailed kpbxNodeSecuritySipTotalAuthFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of autentication failed since last restart." ::= { kpbxNodeSecuritySip 1 } -- kpbxNodeSecuritySipBadPasswordAuthFailed kpbxNodeSecuritySipBadPasswordAuthFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of autentication failed due to incorrect password since last restart." ::= { kpbxNodeSecuritySip 2 } -- kpbxNodeSecuritySipACLAuthFailed kpbxNodeSecuritySipACLAuthFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of autentication failed due to source IP address violating ACL since last restart." ::= { kpbxNodeSecuritySip 3 } -- -- kpbxNodeTenants -- -- kpbxNodeNumTenants kpbxNodeNumTenants OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of tenants currently defined." ::= { kpbxNodeTenants 1 } -- -- kpbxNodeAccounts -- -- kpbxNodeTotalAccountsConfigured kpbxNodeTotalAccountsConfigured OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of configured accounts." ::= { kpbxNodeAccounts 1 } -- kpbxNodeTotalAccountsReachable kpbxNodeTotalAccountsReachable OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of accounts registered and reachable with RTT < 2000ms." ::= { kpbxNodeAccounts 2 } -- kpbxNodeTotalAccountsUnreachable kpbxNodeTotalAccountsUnreachable OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of accounts registered and unreachable." ::= { kpbxNodeAccounts 3 } -- kpbxNodeTotalAccountsNotRegistered kpbxNodeTotalAccountsNotRegistered OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of not registered accounts." ::= { kpbxNodeAccounts 4 } -- kpbxNodeTotalAccountsLagged kpbxNodeTotalAccountsLagged OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of accounts registered and reachable with RTT >= 2000ms." ::= { kpbxNodeAccounts 5 } -- -- kpbxNodeCallsActive -- kpbxNodeCallsActive OBJECT IDENTIFIER ::= { kpbxNodeCalls 1 } kpbxNodeCallsActiveAllTenants OBJECT IDENTIFIER ::= { kpbxNodeCallsActive 1 } -- kpbxNodeCurrentCallsAllTotal kpbxNodeCurrentCallsAllTotal OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of current calls for all tenants." ::= { kpbxNodeCallsActiveAllTenants 1 } -- kpbxNodeCurrentCallsAllIn kpbxNodeCurrentCallsAllIn OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of current incoming calls for all tenants." ::= { kpbxNodeCallsActiveAllTenants 2 } -- kpbxNodeCurrentCallsAllOut kpbxNodeCurrentCallsAllOut OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of current outgoing calls for all tenants." ::= { kpbxNodeCallsActiveAllTenants 3 } -- kpbxNodeCurrentCallsAllLocal kpbxNodeCurrentCallsAllLocal OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of current local calls for all tenants." ::= { kpbxNodeCallsActiveAllTenants 4 } -- -- kpbxNodeCallsProcessed -- kpbxNodeCallsProcessed OBJECT IDENTIFIER ::= { kpbxNodeCalls 2 } kpbxNodeCallsProcessedAllTenants OBJECT IDENTIFIER ::= { kpbxNodeCallsProcessed 1 } -- kpbxNodeProcessedCallsAllTotal kpbxNodeProcessedCallsAllTotal OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of processed calls for all tenants from last boot." ::= { kpbxNodeCallsProcessedAllTenants 1 } END
ATTENZIONE: Non è consigliato ACL 0.0.0.0/0, è sempre bene restringere l’accesso solo agli IP autorizzati
Return to AdminGuide:Service
- 0: ColdStart
- 1: WarmStart
- 2: linkDOwn
- 3: linkUp
- 4: authenticationFailure
- 5: egpNeighbortLoss
- 6: enterpreseSpecific
Indicazioni sulla configurazione delle TRAP:
- Metodo di invio delle TRAP: specificare se si vuole mandare la trap in versione 1 o 2
- Indirizzo IP di destinazione delle TRAP: indicare indirizzo IP del server di monitoraggio a cui inviare le TRAP
- Porta di destinazione delle TRAP: es. 162 è la standard
Sulla dashboard viene indicata l’esecuzione del servizio SNMP tramite il pallino verde e lo stato “Attivo”.
È possibile fare un’interrogazione dell’agent su Kalliope tramite un qualunque client SNMP (in questo caso si utilizza il già sopracitato iReasoning MIB Browser). Bisogna indicare l’indirizzo IP a cui collegarsi e poi impostare
- Agent NSMP Version: i valori di default con cui fare la richiesta, ovvero si può scegliere se farla in versione 1 o 2
- Agent Read Community: qual è la community di lettura per poter avere accesso ai dati
- Agent Port: si può indicare la porta standard, 161
- Agent Write Community: non è abilitata la possibilità di fare scrittura tramite SNMP
Dopo aver effettuato l'interrogazione è possibile leggere il contenuto dell’albero che è presente su Kalliope. La lettura può essere fatta oggetto per oggetto: Il sottoalbero system presente le seguenti informazioni tra cui il sysContact, il sysName e il sysLocation.
Il pannello interfaces restituisce le varie interfacce presenti e per ciascuna indica lo stato operativa e i byte scambiati in ingresso e uscita, questo permette ai sistemi di monitoraggio di far vedere il grafico dell’occupazione:
Esempio del kpbxNode:
N.B. Il contatore delle autenticazioni fallite (evidenziato in blu) è un dato importante poiché nel momento in cui dovesse arrivare un burst di autenticazioni fallite, probabilmente si tratterebbe di un attacco proveniente dall’esterno.
KalliopePBX espone delle MIB che consentono il monitoraggio del funzionamento dell’apparato tramite il protocollo di comunicazione standard SNMP.
Le MIB SNMP consultabili su Kalliope sono:
- MIB-II standard (RFC 1213) – Questa MIB definisce gli oggetti per la gestione e il monitoraggio di un apparato in una rete TCP/IP, in particolare su Kalliope sono implementati i seguenti sottoalberi: system, interfaces, at, ip, icmp, tcp, udp, transmission, snmp OID: 1.3.6.1.2.1.1/2/3/4/5/6/7/10/11
https://datatracker.ietf.org/doc/rfc1213/
- Host Resource MIB (RFC 2790) - Questa MIB definisce un insieme di oggetti contenenti la configurazione di host (server/computer) collegati ad una rete TCP/IP indipendentemente dal sistema operativo, dai servizi di rete e dalle applicazioni software installate. OID: 1.3.6.1.2.1.25
https://datatracker.ietf.org/doc/rfc2790/
- UCD-SNMP-MIB – Questa MIB definisce gli oggetti per il monitoraggio delle performance di un host (ad es. CPU /RAM / occupazione dischi). OID: 1.3.6.1.4.1.2021
http://www.net-snmp.org/mibs/UCD-SNMP-MIB.txt
- Kalliope MIB: questa MIB proprietaria fornisce informazioni aggiuntive sulla configurazione e il funzionamento dei servizi implementati sul nodo Kalliope come ad es. numero di account configurati o registrati, chiamate contemporanee, numero totale di chiamate. OID:1.3.6.1.4.1.33732
Scarica i file di definizioni delle MIB: