SI 5 Cours Supervision Réseau Guillaume Urvoy-Keller urvoy@unice.fr
De multiples dimensions Source :
Un exemple : le réseau Unice Surveillance par MRTG Visualisation Dynamique Résultat qualitatif public Résultat de surveillance réservé au CRI http://nephi.unice.fr/router/ 3
Plan de cours Admin Réseau, admin système Debugging réseau Ping, traceroute Aller plus loin : smokeping Debugging système Syslog, swatch SNMP Les bases Ex d'outils : Observium et Shinken Gestion de configuration Puppet, Ansible
Debugging Réseau 5
Ping Envoie réception de paquet ICMP Internet Control Message Protocol Code : echo request et echo reply Mesure du temps d'aller-retour (RTT) 6
Ping Example : 7
Traceroute Envoie ICMP,UDP ou TCP avec un TTL croissant et reçoit des routeurs des paquets ICMP code 11 (TTL expired) Bonne pratique : MAIS, les ISPs veulent prévenir des attaques Les ISPs doivent configurer leurs routeurs pour répondre à traceroute (i.e., répondre en ICMP) Limitation du débit de réponse, type x paquets par secondes Une '*' si pas de réponse du routeur Q : comment choisir le time-out? Indice: quel est le temps maximum d'aller-retour entre 2 machines sur 8 Internet?
Traceroute Traceroute sous debian (linux) Envoie en burst (ici 16 paquets en 55 ms) 9
Traceroute depuis un ISP vers www.unice.fr En ICMP 10
Traceroute depuis un ISP vers www.unice.fr En ICMP, 1 paquet à la fois Routeurs 1 à 5 répondent : limitation de débit Routeurs 15 et 16 : muets! 11
Traceroute depuis un ISP vers www.unice.fr En TCP Routeur 9 filtre TCP 12
Aller plus loin Ping et traceroute sont 2 outils de mesure actifs : envoie explicite des données Ping permet de tester une machine/routeur jusqu'à la couhe IP Traceroute permet de découvrir un chemin Aller plus loin : smokeping Ping généralisé (à tous les niveaux protocolaires) Représentation graphique avec MRTG Base de données RRD (Round Robin Database) 13
Smokeping Idée de base : Ping niveau ICMP (classique) «Ping» niveau HTTP un curl sur une page «Ping» niveau SSL openssl sur un serveur «Ping» d'un serveur DNS requête DNS Niveau application : LDAP, NFS Ces données sont stockées dans une base de données RRD : base de données optimisée pour les séries temporelles Occupe une taille fixe sur le disque. Les données plus anciennes sont stockées avec une granularité moins fine 14
Les figures - MRTG 15
Smokeping «Smoke» car plusieurs «ping» à chaque fois et le nuage présentent la médiane, le max, le min, la moyenne 16
Debugging Système 17
18
19
20
21
Envoie d'alerte avec swatch 22
SNMP 23
Plan Qu'est-ce que la supervision de réseau? Le modèle Internet - SNMP Structure of Management Information: SMI Management Information Base: MIB Le protocole de transport SNMP La sécurité La couche présentation ASN.1 24
Le modèle SNMP Définitions: Entités : Manager Agents MIB : les données 25
v Source : A. Pras Université de Twente - The Simple Web 26
Les standards OSI CMIP Common Management Information Protocol Conçu dans les années 1980 Standardisation trop lente pas adopté par le marché SNMP: Simple Network Management Protocol Vient du monde Internet : successeur de SGMP (Simple Gateway Management Protocol) Objectif modeste ( usine à gaz CMIP) Déploiement et adoption rapide Standard actuel: SNMP V3 Standard de facto 27
SNMP : 4 parties clefs Management information base (MIB): Structure of Management Information (SMI): Langage de définition des objets de la MIB Le protocole SNMP Information distribuée stockée sur les équipements gérés communication gestionnaire objets gérés Sécurité Communautés en SNMPv1 et v2, les vues Ajout principal de SNMPv3 Remarque : SNMP est le nom du protocole pour le transfert de données et le nom global de la solution de gestion de réseau 28
SMI: langage de définition des données Objectif: syntaxe, sémantique non Types de base ambigüe des données INTEGER Types de base: Integer32 Voir colonne droite Unsigned32 OBJECT-TYPE OCTET STRING Type de données, statut, OBJECT IDENTIFIED sémantique Ipaddress/NetworkAddress MODULE-IDENTITY Counter32 (ne peut que monter) Groupement d'objets en relation Counter64 entre eux (par ex. liés à un Gauge32 (monte/descend) appareil ou un protocole) dans un Time Ticks (10ème de seconde) module de la MIB Opaque SEQUENCE OF SEQUENCE 29
SNMP MIB Module MIB spécifié via SMI MODULE-IDENTITY (100 MIBs standardisées, plus encore spécifiques aux fournisseurs de matériels/logiciels) MODULE OBJECT TYPE: OBJECT TYPE: OBJECT TYPE: Objets spécifiés via SMI et le constructeur OBJECT-TYPE 30
SMI: Exemple d' objets et de modules OBJECT-TYPE: ipindelivers ipindelivers OBJECT TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION The total number of input datagrams successfully delivered to IP userprotocols (including ICMP) ::= { ip 9} MODULE-IDENTITY: ipmib ipmib MODULE-IDENTITY LAST-UPDATED 941101000Z ORGANZATION IETF SNPv2 Working Group CONTACT-INFO Keith McCloghrie DESCRIPTION The MIB module for managing IP and ICMP implementations, but excluding their management of IP routes. REVISION 019331000Z ::= {mib-2 48} 31
Exemple de MIB : le module UDP Object ID Name Type Comments 1.3.6.1.2.1.7.1 UDPInDatagrams Counter32 total # datagrams delivered at this node 1.3.6.1.2.1.7.2 UDPNoPorts Counter32 # underliverable datagrams no app at portl 1.3.6.1.2.1.7.3 UDInErrors Counter32 # undeliverable datagrams all other reasons 1.3.6.1.2.1.7.4 UDPOutDatagrams Counter32 # datagrams sent 1.3.6.1.2.1.7.5 udptable SEQUENCE one entry for each port in use by app, gives port # and IP address 32
Nommage SNMP question: comment nommer tous les objets standards (protocoles, données, etc.) de tous les standards réseaux?? réponse: Arbre hiérarchique de l'iso : Chaque branchement à un nom et un numéro 1.3.6.1.2.1.7.1 ISO ISO-ident. Org. US DoD Internet udpindatagrams UDP MIB2 management 33
Arbre OSI (SMIv2) Ccitt(0) Iso (1) standard Iso-ccitt(2) Autorité enreg. Membre (2) Org.identifiée(3) Dod (6) Internet (1) Répertoire (1) Admin.(2) Expérimental (3) Privé (4) Sécurité (5) Snmpv2(6) Mib-2 (1) System (1) Interfaces (2) Addr.trans (3) IP (4) Icmp (5) TCP (6) Udp (7) Egp (8) Transmission (10) Exemple (11) IP IP==1.3.6.1.2.1.4 1.3.6.1.2.1.4 http://www.alvestrand.no/objectid/ http://wwwsnmp.cs.utwente.nl/ietf/mibs/ 34
Les MIBs d'un agent Tout équipement doit implanter la MIB-2, i.e. gérer les objets de cette MIB (RFC 1213) : Statistiques sur les interfaces (vitesse, MTU, octets envoyés/reçus, etc.) Informations sur le système : localisation, contact En plus de la MIB-2, un agent implantera : Des MIBs standardisées supplémentaires Ex : BGP version 4 MIB (RFC 1657), RADIUS Authentication Server MIB (RFC 2619) Des MIBS propriétaires 35
Les MIBs propriétaires Dans l'arbre général, un sous arbre est dédié aux entreprises iso.org.dod.internet.private.entreprises (1.3.6.1.4.1) Dans ce sous arbre, les entreprises ont chacune un numéro (demandé à l'iana Internet Assigned Numbers Authority) Ex : CISCO a le numéro 9 iso.org.dod.internet.private.entreprises.cisco 1.3.6.1.4.1.9 36
Savoir lire une MIB Ex : objet interface MIB 2 Un objet fait d'une séquence de type IfEntry 37
Savoir lire une MIB Ex : objet interface MIB 2 Une liste = une structure, mais pas un objet. Une colonne... 38
Savoir lire une MIB Ex : objet interface MIB 2 IfTable : table dont les colonnes sont définies par IfEntry Attention aux majuscules/minuscules IFTable non accessible!!! et obligatoire (mandatory en anglais) IfEntry : définit une liste d'objets en colonne ifentry : définit les lignes effectives d'iftable non accessible On accède à une ligne par un index : ifindex 39
En pratique iftable avec un agent dans un PC Windows et manager en Mac OSx 40
Le protocole SNMP Deux façons de transférer l'information et les commandes Manager requête réponse agent data Appareil géré Mode requête/réponse Manager Msg trap agent data Appareil géré Mode trap 41
Le protocole SNMP : les types de message Type de message Fonction GetRequest GetNextRequest GetBulkRequest* Mgr agent: donne moi les données (instance unique,suivant dans la liste, bloc) InformRequest* Mgr Mgr: voici une valeur de la MIB SetRequest Response Trap * SNMP v2 et v3 seulement Mgr agent: assignation valeur Agent mgr: valeur, réponses aux requêtes Agent mgr: informe manager d'un événement exceptionnel 42
Le protocole SNMP : format des message 43
Communications Agent/Manager Ports UDPs 161 et 162 utilisés 44
Contrôle d accès SNMP Communauté SNMP (v1 et v2c) Valeurs par défaut communément utilisées public : read-only private : read-write Sert de mot de passe, mais en clair sur le réseau (!) Est associée à des droits : read-only, read-write Chaque communauté snmp peut limiter les accès à des objets notion de vues Il existe un «authentication trap» pour savoir si quelqu'un a essayé de se connecter avec un mauvais mot de passe SNMPv3 existe mais peu utilisé En v2, comme le mot de passe est en clair, on va en plus indiqué à l'agent l'adresse IP du manager Requetes 45
La pratique Pour une variable scalaire simple, on fait un get en ajoutant à la fin.0 Get next pour obtenir élément suivant : Commande snmpwalk (du package Net-SNMP) sous machines unix pour parcourir un sous arbre Ex : voir ex précédent sur table iftable 46
La pratique Obtenir la description d'un objet : snmptranslate IR : permet de ne pas donner le chemin absolu Td : détails 47
Les Traps Envoyés par l'agent Sans accusé de réception Trois types : Traps génériques 48
Les Traps Trap propriétaires Inclus dans la MIB propriétaire Ex : pour CISCO iso.org.dod.internet.private.enterprises.cisco.specific-trapnumber Trap de MIB non propriétaires Ex : MIB RDBMS (bases de données relationnelles) RFC 1697 49
Les Traps Trap lié à une variable : 50
Les Traps Recevoir les traps avec net-snmp 51
Configuration d'un agent Important de configurer SysLocation SysContact SysName Communautés Read-write et Read-only Et limiter les adresses IP desquelles on (le manager) peut se connecter Destination trap Adresse IP du manager 52
ASN.1 Une couche présentation Question : comment transférer de l'information entre des entités très diverses : une machine, un point d'accès, un routeur de marques différentes, d'architecture matérielles différentes et avec des OS différents? Exemple : comment être sûr qu'un ensemble de bits interprétés comme un entier sur un agent le sera de la même manière sur un manager??? il faut une couche de présentation qui soit la même pour toutes les entités 53
Le problème de la présentation Q: est-ce qu'une copie de mémoire à mémoire (par ex. agent manager) resoudrait le problème?problem? A: pas toujours! struct { char code; int x; } test; test.x = 256; test.code= a test.code test.x a 00000001 00000011 Format machine 1 test.code test.x a 00000011 00000001 Format machine 2 problème: différents formats de donnés (par ex. 16, 32 bits) et différents conventions de stockage des données (par ex. bit de poids fort à droite ou à gauche) 54
ASN.1: Abstract Syntax Notation 1 Une représentation des données indépendante de l'architecture Standard ISO X.680 Définit des types d'objets Utilisé par SNMP mais aussi H.323 et d'autres protocoles comme SMI BER: Basic Encoding Rules Spécifie comment les objets définis en ASN.1 doivent être transmis Chaque objet transmis à : un Type, une Longueur et une Valeur (TLV) 55
Encodage TLV Idée: les données transmises se reconnaissent d'elles mêmes. T: type de données, l'un de ceux d'asn.1 L: longueur en octets V: valeur des données, encodées en ASN.1 Valeur 1 2 3 4 5 6 9 Type Boolean Integer Bitstring Octet string Null Object Identifier Real 56
Encodage TLV Exemple Value, 259 Length, 2 bytes Type=2, integer Value, 5 octets (chars) Length, 5 bytes Type=4, octet string 57
Managers SNMP évolués Observium 58
59
60
61
62
Exemple sur site demo.observium.org 63
Onglet ports 64
Exemple avec un Mac 65
Managers SNMP évolués Nagios
AfNOG 2010 Network Monitoring and Management Tutorial NAGIOS These materials are licensed under the Creative Commons Attribution-Noncommercial 3.0 Unported license (http://creativecommons.org/licenses/by-nc/3.0/) as part of the ICANN, ISOC and NSRC Registry Operations Curriculum. nsrc@apricot 2010
Introduction A key measurement tool for actively monitoring availability of devices and services. Possibly the most used open source network monitoring software. Has a web interface. Uses CGIs written in C for faster response and scalability. Can support up to thousands of devices and services.
Installation In Debian/Ubuntu # apt-get install nagios3 Files are installed here: /etc/nagios3 /etc/nagios3/conf.d /etc/nagios-plugins/conf /usr/share/nagios3/htdocs/images/logos /usr/sbin/nagios3 /usr/sbin/nagios3stats Nagios web interface is here: http://localhost/nagios3/
More sample screenshots Many more sample Nagios screenshots available here: http://www.nagios.org/about/screensh ots
Features Verification of availability is delegated to plugins: The product's architecture is simple enough that writing new plugins is fairly easy in the language of your choice. There are many, many plugins available. Nagios uses parallel checking and forking. nsrc@apricot 2010
Features cont. Has intelligent checking capabilities. Attempts to distribute the server load of running Nagios (for larger sites) and the load placed on devices being checked. Configuration is done in simple, plain text files, but that can contain much detail and are based on templates. nsrc@apricot 2010
Features cont. Utilizes topology to determine dependencies. Nagios differentiates between what is down vs. what is not available. This way it avoids running unnecessary checks. Nagios allows you to define how you send notifications based on combinations of: Contacts and lists of contacts Devices and groups of devices Services and groups of services Defined hours by persons or groups. The state of a service. nsrc@apricot 2010
The concept of parents Nodes can have parents: For example, the parent of a PC connected to a switch would be the switch. This allows us to specify the network dependencies that exist between machines, switches, routers, etc. This avoids having Nagios send alarms when a parent does not respond. A node can have multiple parents. nsrc@apricot 2010
Configuration Files Located in /etc/nagios3/ Important files include: cgi.cfg Controls the web interface and security options. commands.cfg The commands that Nagios uses for notifications. nagios.cfg Main configuration file. conf.d/* All other configuration goes here! nsrc@apricot 2010
Configuration files continued Under conf.d/* (sample only) contacts_nagios3.cfg users and groups generic-host_nagios2.cfg default host template generic-service_nagios2.cfg default service template hostgroups_nagios2.cfg groups of nodes services_nagios2.cfg what services to check timeperiods_nagios2.cfg when to check and who to notifiy nsrc@apricot 2010
Configuration files continued Under conf.d some other possible configfiles: host-gateway.cfg extinfo.cfg servicegroups.cfig localhost.cfg pcs.cfg switches.cfg routers.cfg Default route definition Additional node information Groups of nodes and services Define the Nagios server itself Sample definition of PCs (hosts) Definitions of switches (hosts) Definitions of routers (hosts) nsrc@apricot 2010
Pre-installed plugins in Ubuntu check_bgpstate check_hpjd check_mailq check_overcr check_ssmtp check_breeze check_http check_mrtg check_pgsql check_swap check_by_ssh check_icmp check_mrtgtraf check_ping check_tcp check_clamd check_ide_smart check_mysql check_pop check_time check_cluster check_ifoperstatus check_mysql_query check_procs check_udp check_dhcp check_ifstatus check_nagios check_radius check_ups check_dig check_imap check_nntp check_real check_users check_disk check_ircd check_nntps check_rpc check_wave check_disk_smb check_jabber check_nt check_sensors check_dns check_ldap check_ntp check_spop check_simap check_dummy check_ldaps check_ntp_peer check_smtp check_file_age check_linux_raid check_ntp_time check_snmp check_flexlm check_load check_nwstat nsrc@apricot 2010
Nodes and services configuration Based on templates This saves lots of time avoiding repetition Similar to Object Oriented programming Create default templates with default parameters for a: generic node generic service generic contact nsrc@apricot 2010
Generic node template define definehost{ host{ name generic-host name generic-host notifications_enabled 11 notifications_enabled event_handler_enabled 11 event_handler_enabled flap_detection_enabled 11 flap_detection_enabled process_perf_data 11 process_perf_data retain_status_information 11 retain_status_information retain_nonstatus_information retain_nonstatus_information 11 check_command check-host-alive check_command check-host-alive max_check_attempts 5 max_check_attempts 5 notification_interval 60 notification_interval 60 notification_period 24x7 notification_period 24x7 notification_options d,r notification_options d,r contact_groups nobody contact_groups nobody register 0 register 0 }} nsrc@apricot 2010
Individual node configuration define definehost{ host{ use use host_name host_name alias alias address address parents parents contact_groups contact_groups }} generic-host generic-host switch1 switch1 Core_switches Core_switches 192.168.1.2 192.168.1.2 router1 router1 switch_group switch_group nsrc@apricot 2010
Generic service configuration define service{ define service{ name name active_checks_enabled active_checks_enabled passive_checks_enabled passive_checks_enabled parallelize_check parallelize_check obsess_over_service obsess_over_service check_freshness check_freshness notifications_enabled notifications_enabled event_handler_enabled event_handler_enabled flap_detection_enabled flap_detection_enabled process_perf_data process_perf_data retain_status_information retain_status_information retain_nonstatus_information retain_nonstatus_information is_volatile is_volatile check_period check_period max_check_attempts max_check_attempts normal_check_interval normal_check_interval retry_check_interval retry_check_interval notification_interval notification_interval notification_period notification_period notification_options notification_options register } register } generic-service 1generic-service 11 11 11 01 10 11 11 11 11 11 01 0 24x7 524x7 55 15 1 60 60 24x7 24x7 c,r 0c,r 0 nsrc@apricot 2010
Individual service configuration define service{ define service{ host_name host_name use use service_description service_description check_command check_command max_check_attempts max_check_attempts normal_check_interval normal_check_interval notification_options notification_options contact_groups contact_groups } } switch1 switch1 generic-service generic-service PING PING check-host-alive check-host-alive 5 5 5 5 c,r,f c,r,f switch-group switch-group nsrc@apricot 2010
Beeper and sms messages It's important to integrate Nagios with something available outside of work Problems occur after hours... (unfair, but true) A critical item to remember: an SMS or message system should be independent from your network. You can utilize a modem and a telephone line Packages like sendpage, qpage or gnokii can help. nsrc@apricot 2010
Automatisation des tâches systèmes Puppet
Puppet On résume : Facter assemble des infos localement (type de système, etc) dont se sert puppet pour savoir quelle recette appliquée Les types s'organisent en classes avec des notions d'héritage Les nœuds correspondent à des clients sur lesquels on applique des classes
Puppet Après, ça se complique, les classes sont organisées en templates (plus génériques) Puis on a la notion de module qui groupe toute la logique et les fichiers pour une application Dans la pratique, on part de module déjà existant et on adapte à ses besoins
Puppet Alternatives à puppet Il en existe plusieurs Chef Ansible (semble beaucoup plus simple)