IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Introducció

  • El monitoratge és un procés que està immers dins de l'anomenada funció executiva o sistema executiu. Fa referència a la supervisió necessària per a l'execució del pla d'acció establert en la planificació de les accions, conductes o pensaments encaminats a l'assoliment d'una meta.

SNMP

  • El Protocol simple d'administració de xarxa o SNMP (Simple Network Management Protocol) és un protocol de la capa d'aplicació que facilita l'intercanvi d'informació d'administració entre dispositius de xarxa. Forma part del conjunt de protocols TCP/IP. SNMP permet als administradors supervisar el funcionament de la xarxa, cercar i resoldre els seus problemes, i planificar el seu creixement.
  • Hi han 3 versions del protocol:
    • Les més utilitzades són SNMPv1 i SNMPv2
    • A la nova versió (SNMPv3) s'han introduït força canvis sobretot respecte al tema de seguretat però encara no esta gaire suportat per la industria.


Snmpesquemaredgestionada baucells 1.gif


Components bàsics en xarxes SNMP

  • Dispositius administrats
  • Agents de programari
  • Sistemes administradors de xarxa
  • Els dispositius administrats tenen instal·lat un programari (agent) que s'encarrega de recollir i emmagatzemar la informació de la màquina administrada.
  • La informació emmagatzemada es posa a disposició dels sistemes administradors de la xarxa mitjançant SNMP
    • Les màquines administrades poden ser encaminadors, servidors, commutadors, estacions de treball, impressores, perifèrics de xarxa o altres màquines connectades a la xarxa (màquines dispensadores d'aliments, alarmes, estacions meteorològiques, etc.)

Servei SNMP

  • Instal·larem els paquets següents
sudo apt-get install snmpd && sudo apt-get install snmpd
  • Comprovarem els ports utilitzats:

[email protected]:~$ cat /etc/services | grep snmp

snmp		161/tcp				# Simple Net Mgmt Protocol
snmp	        161/udp				# Simple Net Mgmt Protocol
snmp-trap	162/tcp		snmptrap	# Traps for SNMP
snmp-trap	162/udp		snmptrap	# Traps for SNMP

NOTA: Utilitzarem el port marcat amb negreta (161/udp)

  • Els ports oberts son els següent:
[email protected]:~$ sudo nmap -sU localhost -p 161

Starting Nmap 5.21 ( http://nmap.org ) at 2012-04-12 19:52 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.019s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
rDNS record for 127.0.0.1: localhost.localdomain
PORT    STATE SERVICE
161/udp open  snmp

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
[email protected]:~$
  • Per a poder activar que un altre host pugui monitoritzar el nostre sistema hem de modificar el fitxer /etc/snmp/snmpd.conf:
###############################################################################
#
#  AGENT BEHAVIOUR
#

#  Listen for connections from the local system only
#  agentAddress  udp:127.0.0.1:161
#  Listen for connections on all interfaces (both IPv4 *and* IPv6)
gentAddress udp:161,udp6:[::1]:161
###############################################################################
#
#  ACCESS CONTROL
#

                                                #  system + hrSystem groups only
view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1

                                                #  Full access from the local host
#  rocommunity public  localhost
                                                #  Default access to basic system info
rocommunity public  default    -V systemonly

Missatges SNMP

  • SNMP utilitza UDP (servei no orientat a connexió) per enviar missatges entre els administradors de xarxa i els agents instal·lats als dispositius administrats.
    • GetRequest: l'administrador del sistema sol·licita a l'agent que li retorni el valor d'un objecte a partir del seu identificador.
    • GetNextRequest: serveix per processar llistes d'objectes. Un cop s'ha obtingut un objecte amb GetRequest es pot utilitzar GetNextRequest per repetir el procés amb el següent objecte de la taula.
    • SetRequest: SNMP també suporta modificar valors d'administració de forma remota utilitzant una comunitat (paraula de pas) específica.
    • GetResponse: respostes dels agents.

Client SNMP

  • El client snmp (paquet snmp) proporciona diverses eines per treballar amb snmp.
    • Consulta de dades: snmpget, snmpgetnext, snmpwalk, snmpbulkget, snmpbulkwalk.
    • Establiment de dades: snmpset.
    • Obtenir l'espai lliure: snmpdf.
    • Comandes de consulta de l'espai lliure, l'estat de la xarxa i altres...
    • Totes les comandes tenen el seu corresponent manual unix (man).
[email protected]:~$ dpkg -L snmp | grep bin
/usr/bin
/usr/bin/snmpbulkget
/usr/bin/snmpbulkwalk
/usr/bin/snmpconf
/usr/bin/snmpdelta
/usr/bin/snmpdf
/usr/bin/snmpget
/usr/bin/snmpgetnext
/usr/bin/snmpnetstat
/usr/bin/snmpset
/usr/bin/snmpstatus
/usr/bin/snmptable
/usr/bin/snmptest
/usr/bin/snmptranslate
/usr/bin/snmptrap
/usr/bin/snmpusm
/usr/bin/snmpvacm
/usr/bin/snmpwalk
/usr/bin/encode_keychange
/usr/bin/fixproc
/usr/bin/traptoemail
/usr/bin/snmpinform
[email protected]:~$ 

Comanda SNMPWALK en Ubuntu 11.04

  • Primer instal·lem el següent paquet:
sudo apt-get install snmp-mibs-downloader
  • Editem el fitxer /etc/snmp/snmp.conf i comentem la última línia:
#
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loaging them by commenting out the following line.
# mibs :
  • Un exemple d'execució al localhost:
[email protected]:~$ snmpwalk -Os -c public -v 2c localhost system
sysDescr.0 = STRING: Linux ubuntu-baucells 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:35:26 UTC 2012 i686
sysObjectID.0 = OID: netSnmpAgentOIDs.10
sysUpTimeInstance = Timeticks: (158170) 0:26:21.70
sysContact.0 = STRING: Me <[email protected]>
sysName.0 = STRING: ubuntu-baucells
sysLocation.0 = STRING: Sitting on the Dock of the Bay
sysServices.0 = INTEGER: 72
sysORLastChange.0 = Timeticks: (0) 0:00:00.00
sysORID.1 = OID: snmpFrameworkMIBCompliance
sysORID.2 = OID: snmpMPDCompliance
sysORID.3 = OID: usmMIBCompliance
sysORID.4 = OID: snmpMIB
sysORID.5 = OID: tcpMIB
sysORID.6 = OID: ip
sysORID.7 = OID: udpMIB
sysORID.8 = OID: vacmBasicGroup
sysORDescr.1 = STRING: The SNMP Management Architecture MIB.
sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model.
sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
sysORDescr.5 = STRING: The MIB module for managing TCP implementations
sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
sysORDescr.7 = STRING: The MIB module for managing UDP implementations
sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
sysORUpTime.1 = Timeticks: (0) 0:00:00.00
sysORUpTime.2 = Timeticks: (0) 0:00:00.00
sysORUpTime.3 = Timeticks: (0) 0:00:00.00
sysORUpTime.4 = Timeticks: (0) 0:00:00.00
sysORUpTime.5 = Timeticks: (0) 0:00:00.00
sysORUpTime.6 = Timeticks: (0) 0:00:00.00
sysORUpTime.7 = Timeticks: (0) 0:00:00.00
sysORUpTime.8 = Timeticks: (0) 0:00:00.00
[email protected]:~$ 
  • Un exemple d'execució a un supernode (cerca concreta):
[email protected]:~$ snmpwalk -Os -c public -v 2c 10.36.253.1 ifNumber
ifNumber.0 = INTEGER: 16
[email protected]:~$
  • Un exemple d'execució a un supernode (cerca general):
[email protected]:~$ snmpwalk -Os -c public -v 2c 10.36.253.1 mib-2 | more
sysDescr.0 = STRING: RouterOS RB600A
sysObjectID.0 = OID: enterprises.14988.1
sysUpTimeInstance = Timeticks: (191763200) 22 days, 4:40:32.00
sysContact.0 = STRING: [email protected]
sysName.0 = STRING: TortosaINSEbreRd1
sysLocation.0 = STRING: TortosaINSEbre
sysServices.0 = INTEGER: 78
ifNumber.0 = INTEGER: 16
ifIndex.1 = INTEGER: 1
ifIndex.2 = INTEGER: 2
ifIndex.3 = INTEGER: 3
ifIndex.4 = INTEGER: 4
ifIndex.5 = INTEGER: 5
ifIndex.6 = INTEGER: 6
.
.
.

Management Information Bases (MIB)

  • Emmagatzema una col·lecció d'informació d'administració que està organitzada jeràrquicament.
  • Són les dades que guarden els dispositius administrats i que es posen a disposició dels gestors de la xarxa (NM) a través de SNMP.
  • Sovint els dispositius administrats s'anomenen objectes MIB.
  • Es tracta doncs d'una base de dades jeràrquica on cada node de l'arbre és un objecte. Hi ha dos tipus d'objectes:
    • Escalars: Els objectes tabulars són simplement una variable
    • Tabulars: Estan formats per altres objectes

La seva jeraquia MIB

  • La jerarquia MIB pot ser representada com un arbre:
Jerarquia mib jbaucells 1.png

Afegir un MIB

  • Creem el directori següent:
sudo mkdir /usr/share/snmp/mibs/
  • Copiem els fitxers següents:
sudo cp Mikrotik.mib /usr/share/snmp/mibs/
  • A continuació cal definir els següents paràmetres:
export MIBS=+MY-MIB

Cacti

  • Cacti és una completa solució per a la generació de gràfics en xarxa, dissenyada per aprofitar el poder d'emmagatzematge i la funcionalitat per a gràfiques que posseeixen les aplicacions RRDtool. Aquesta eina, desenvolupada en PHP, proveeix un pooler àgil, plantilles de gràfics avançades, múltiples mètodes per a la recopilació de dades, i maneig d'usuaris. Té una interfície d'usuari fàcil d'usar, que resulta convenient per a instal·lacions de la grandària d'una LAN, així com també per a xarxes complexes amb centenars de dispositius.
  • Característiques
    • Data Sources: Cacti suporta diferents orígens de dades (SNMP, MRTG, dades de la màquina, scripts personalitzats).
    • Devices: Cacti proporciona formularis per gestionar els dispositius de xarxa que volem monitoritzar. Cada dispositiu de xarxa pot tenir una o més fonts de dades.
    • Graphs: Cacti utilitza les fonts de dades per a crear gràfiques. Proporciona un frontend per a controlar les propietats de les gràfiques generades amb RRDTool (control dels colors, etc). Té un sistema per organitzar les gràfiques jeràrquicament (Graphs Trees).
    • Templating: Facilita l'escalabil·litat. Si es tenen múltiples dispositius idèntics a la xarxa, es pot crear una plantilla que ens permeti generar les gràfiques de Cacti de forma ràpida. Es poden generar plantilles de dispositius, gràfiques i fonts de dades. Hi ha una sèrie de plantilles per defecte (Cisco Router, màquines remotes Linux amb SNMP, màquines Windows, dispositius de xarxa amb SNMP...)
    • User Management: Té un sistema de gestió d'usuaris que permet crear usuaris, controlar el nivell d'accés i les accions que poden fer aquests usuaris dins de Cacti. Cada usuari pot tenir una configuració personalitzada de Cacti.

Instal·lació

  • Avans de començar la instal·lació hem de comprovar si tenim el servidor MySQL instal·lat al sistema amb la següent comanda:
[email protected]:~$ dpkg -L mysql-server-5.1 
/.
/usr
/usr/bin
/usr/bin/myisamlog
/usr/bin/mysqlbinlog
/usr/bin/mysqld_multi
/usr/bin/myisampack
/usr/bin/mysql_convert_table_format
/usr/bin/mysql_zap
/usr/bin/mysql_fix_privilege_tables
/usr/bin/mysql_setpermission
/usr/bin/mysql_secure_installation
/usr/bin/resolveip
/usr/bin/perror
/usr/bin/mysqlhotcopy
/usr/bin/mysqltest
/usr/bin/msql2mysql
/usr/bin/mysqld_safe
/usr/bin/myisamchk
/usr/bin/replace
/usr/bin/mysql_tzinfo_to_sql
/usr/bin/resolve_stack_dump
/usr/share
/usr/share/mysql
/usr/share/mysql/errmsg.txt
/usr/share/mysql/config.small.ini
/usr/share/mysql/ndb-config-2-node.ini
/usr/share/mysql/config.huge.ini
/usr/share/mysql/mysql_fix_privilege_tables.sql
/usr/share/mysql/mysqld_multi.server
/usr/share/mysql/mysql_test_data_timezone.sql
/usr/share/mysql/debian-start.inc.sh
/usr/share/mysql/config.medium.ini
/usr/share/mysql/echo_stderr
/usr/share/apport
/usr/share/apport/package-hooks
/usr/share/apport/package-hooks/source_mysql-dfsg-5.1.py
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/mysql-server-5.1
/usr/share/doc
/usr/share/doc/mysql-server-5.1
/usr/share/doc/mysql-server-5.1/examples
/usr/share/doc/mysql-server-5.1/examples/my-medium.cnf.gz
/usr/share/doc/mysql-server-5.1/examples/my-huge.cnf.gz
/usr/share/doc/mysql-server-5.1/examples/my-innodb-heavy-4G.cnf.gz
/usr/share/doc/mysql-server-5.1/examples/my-small.cnf
/usr/share/doc/mysql-server-5.1/examples/my-large.cnf.gz
/usr/share/doc/mysql-server-5.1/README.Debian.gz
/usr/share/doc/mysql-server-5.1/copyright
/usr/share/doc/mysql-server-5.1/mysqld.sym.gz
/usr/share/doc/mysql-server-5.1/NEWS.Debian.gz
/usr/share/doc/mysql-server-5.1/changelog.Debian.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/myisampack.1.gz
/usr/share/man/man1/myisamlog.1.gz
/usr/share/man/man1/mysql_convert_table_format.1.gz
/usr/share/man/man1/replace.1.gz
/usr/share/man/man1/resolveip.1.gz
/usr/share/man/man1/mysqld_safe.1.gz
/usr/share/man/man1/mysqltest.1.gz
/usr/share/man/man1/perror.1.gz
/usr/share/man/man1/mysqld_multi.1.gz
/usr/share/man/man1/innochecksum.1.gz
/usr/share/man/man1/mysqlbinlog.1.gz
/usr/share/man/man1/mysql_tzinfo_to_sql.1.gz
/usr/share/man/man1/mysql_setpermission.1.gz
/usr/share/man/man1/mysql_zap.1.gz
/usr/share/man/man1/mysqlhotcopy.1.gz
/usr/share/man/man1/resolve_stack_dump.1.gz
/usr/share/man/man1/myisamchk.1.gz
/usr/share/man/man1/mysql_fix_privilege_tables.1.gz
/usr/share/man/man1/msql2mysql.1.gz
/usr/share/man/man1/mysql_secure_installation.1.gz
/usr/lib
/usr/lib/mysql
/usr/lib/mysql/plugin
/usr/lib/mysql/plugin/ha_innodb_plugin.so.0.0.0
/var
/var/lib
/var/lib/mysql-upgrade
/etc
/etc/mysql
/etc/mysql/conf.d
/etc/mysql/conf.d/mysqld_safe_syslog.cnf
/etc/mysql/debian-start
/etc/init.d
/etc/init
/etc/init/mysql.conf
/etc/logcheck
/etc/logcheck/ignore.d.paranoid
/etc/logcheck/ignore.d.paranoid/mysql-server-5_1
/etc/logcheck/ignore.d.server
/etc/logcheck/ignore.d.server/mysql-server-5_1
/etc/logcheck/ignore.d.workstation
/etc/logcheck/ignore.d.workstation/mysql-server-5_1
/etc/logrotate.d
/etc/logrotate.d/mysql-server
/etc/apparmor.d
/etc/apparmor.d/usr.sbin.mysqld
/etc/apparmor.d/force-complain
/usr/share/man/man1/mysqltest_embedded.1.gz
/usr/lib/mysql/plugin/ha_innodb_plugin.so
/usr/lib/mysql/plugin/ha_innodb_plugin.so.0
/etc/init.d/mysql
[email protected]:~$
  • Finalment instal·lem el paquet següent i seguim les imatges:
sudo apt-get install cacti


Install cacti 1 jbaucells.png


Install cacti 2 jbaucells.png


Install cacti 3 jbaucells.png


Install cacti 4 jbaucells.png


Install cacti 5 jbaucells.png


Install cacti 6 jbaucells.png


  • Els fitxers de configuració instal·lats son els següents:
[email protected]:~$ dpkg -L cacti | grep etc
/etc
/etc/cacti
/etc/logrotate.d
/etc/logrotate.d/cacti
/etc/cron.d
/etc/cron.d/cacti
[email protected]:~$ 
  • Ara ja podem accedir des del navegador web i automàticament s'executarà la instal·lació:
http://localhost/cacti


Web install cacti 1 jbaucells.png


Web install cacti 2 jbaucells.png


Web install cacti 3 jbaucells.png


Web install cacti 4 jbaucells.png


Creació de les gràfiques

  • El primer que hem fer es crear el dispositiu que volem monitoritzar, en el nostre cas serà el super-node que hi ha a l'institut. Les pantalles per a la configuració son les següents:


Grafiques 1 jbaucells.png


Grafiques 2 jbaucells.png


Grafiques 3 jbaucells.png


Grafiques 6 jbaucells.png


  • I finalment ja tenim les gràfiques creades i preparades per a monitoritzar el supernode:


Grafiques 7 jbaucells.png

Vegeu també

Enllaços externs