| Scroll Ignore | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
Contexte
Cette page a pour but de décrire la mise en place d'une configuration minimale SNMP pour un serveur Linux supervisé par le pack linux-by-SNMP__shinken.
| Note |
|---|
Afin de bénéficier des fonctionnalités des dernières mises à jour du pack linux-by-SNMP, il est possible que vous devez mettre à jour la configuration SNMP de vos hôtes. |
Procédure de configuration
La supervision d'un serveur Linux supervisé par un Poller Shinken se fait par requête/réponse SNMP.
- Sur le Poller shinken, la sonde SNMP installé est responsable d'envoyer les requêtes et de traiter les réponses.
- Sur les Serveurs Linux à superviser, c'est l'agent SNMP qui est responsable de répondre aux requêtes.
| Panel |
|---|
Il est donc essentiel de correctement installer et configurer l'agent SNMP.
Installation de l'agent SNMP
| Anchor | ||||
|---|---|---|---|---|
|
Installation du démon snmpd
L'agent SNMP sous linux à installer provient du paquet net-snmp .
Il s'installe de la façon suivante :
| Code Block | ||
|---|---|---|
| ||
# Ubuntu, Debian apt-get install snmpd # RHEL, Alma, Rocky, Centos, Fedora, OpenSUSE yum -y install net-snmp # Arch, Manjaro pacman -Syy net-snmp |
| Info | ||
|---|---|---|
| ||
Des erreurs peuvent occurrer lors de cette étape avec Alma Linux. Se référer en cas d'erreur à la page Les erreurs lors de la configuration d'un serveur Linux à configurer pour le pack linux-by-SNMP__shinken. |
Installation des outils snmp
Vous pouvez également installer le paquet net-snmp-utils ( Utilitaires de gestion de réseau utilisant SNMP, issus du projet NET-SNMP ). L'installation de ce paquet est optionnelle pour le fonctionnement du pack.
| Code Block | ||
|---|---|---|
| ||
# Ubuntu, Debian apt-get install snmp # RHEL, Alma, Rocky, Centos, Fedora, OpenSUSE yum -y install net-snmp-utils # Arch, Manjaro # Les utilitaires sont déja installés avec le packet net-snmp |
Une fois installé, vous pouvez activer le service snmpd :
| Code Block | ||
|---|---|---|
| ||
systemctl enable snmpd systemctl start snmpd |
Configuration du pare-feu ( firewall )
Vérification des règles pour SNMP du
firewallpar-feu
Sur certains systèmes, le firewall peut bloquer SNMP. Il faut donc autoriser le trafic sur le port 161/UDP utilisé par SNMP ( ici le port par défaut est utilisé, si vous avez configuré votre propre port, remplacez 161 par le vôtre ).
| Info |
|---|
Ces commandes sont à effectuer avec un utilisateur ayant les droits root. |
Sur les systèmes utilisant ufw ( Ubuntu / Debian / Fedora ( avec ufw ) :
Exécuter la commande suivante :
Code Block theme Emacs ufw status verbose
Vérifier qu'une règle authorise autorise l'accès au port 161 en UDP aux IP des polleurs shinken :
Exemple de retour valide :Code Block theme Confluence Status: active To Action From -- ------ ---- 161/udp ALLOW Anywhere 161/udp (v6) ALLOW Anywhere (v6)
- Sinon, passer à l'étape suivante et ajouter la une règle à votre firewall.
Sur les systèmes utilisant firewalld ( RHEL, / Alma, / Rocky, / Centos, / Fedora , / OpenSUSE ( avec firewalld ) :
Exécuter la commande suivante :
Code Block theme Emacs firewall-cmd --list-all
Vérifier qu'une règle authorise l'accès au port 161/UDP ou que "snmp" se trouve dans la liste des "services" OU que le port 161/UDP est présents dans "ports"
Exemple de retour valide :
Code Block theme Confluence public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: cockpit dhcpv6-client ntp snmp ssh ports: 80/tcp 7765/tcp 7766/tcp 7767/tcp 7768/tcp 7769/tcp 7770/tcp 7771/tcp 7772/tcp 7773/tcp 7777/tcp 7780/tcp 50000/tcp protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
- Sinon, passer à l'étape suivante et ajouter la une règle à votre firewall.
Ajout de règle pour SNMP au
firewallpare-feu
Sur les systèmes utilisant ufw ( Ubuntu / Debian / Fedora ( avec ufw ):
| Code Block | ||
|---|---|---|
| ||
ufw allow 161/udp ufw reload |
Sur les systèmes utilisant firewalld ( RHEL, / Alma, / Rocky, / Centos, / Fedora , / OpenSUSE ( avec firewalld ) :
| Code Block | ||
|---|---|---|
| ||
firewall-cmd --permanent --add-service=snmp firewall-cmd --reload |
Configuration par script de l'agent snmp
Pour éviter de faire manuellement la configuration, le pack met à disposition deux scripts distincts afin de configurer un serveur Linux à superviser :
configure-host-SNMPv1v2.sh: pour configurer une supervision minimale en SNMP v1 et v2.configure-host-SNMPv3.sh: pour configurer une supervision minimale en SNMP v3.
Ces scripts
permettent d'écraser la configuration existante pour une configuration minimaleutilisent des templates de configuration fournis avec le pack :
snmpd-template-v1v2.confsnmpd-template-v3.conf
| Note | ||
|---|---|---|
| ||
Il n’est pas possible d’appliquer les deux configurations en même temps : vous devez choisir entre SNMP v1/v2 ou SNMP v3 selon vos besoins. |
Les scripts permettent de REMPLACER la configuration existante par la configuration minimale que nous livrons en SNMP, v1, v2
etou v3, et de faire fonctionner les checks du pack.
- Ces scripts sont Ils sont livrés dans le dossier " supervised-host " dans le pack.
| Note | ||
|---|---|---|
| ||
Il est déconseillé d'utiliser ces scripts si vous avez Si vous avez déjà une configuration SNMP spécifique ( non par défaut ), car ils vont l'écraser.fonctionnel, N'UTILISEZ PAS le script de configuration, car il va écraser votre configuration actuelle. Dans ce cas, il est plus logique de suivre la documentation de configuration pas à pas , pour vérifier que chaque autorisation nécessaire au pack est possible. |
| Info |
|---|
Les scripts sont à exécuter en local sur le serveur Linux à superviser.
|
Prérequis avant d'exécuter le script
Avant d'exécuter le script choisi, il est nécessaire de :
- installer l'agent SNMP et ouvrir les ports SNMP en suivant ce chapitre
- installer les dépendances sur les hôtes à superviser en suivant ce chapitre.
| Warning |
|---|
Avant de déployer le script de configuration sur plusieurs serveurs Linux à superviser, il est fortement conseillé de :
|
Pour déployer les scripts de configuration SNMP (v1/v2 et v3) ainsi que les templates associés depuis le serveur Shinken vers l’hôte supervisé, utilisez la commande "rsync". Si "rsync" n’est pas disponible sur le système, vous pouvez utiliser scp en alternative.
Commande avec rsync :
| Code Block | ||
|---|---|---|
| ||
rsync -avz /chemin/vers/supervised-host/ utilisateur@linux_supervise:/chemin/destination/supervised-host/ |
-a: mode archive (préserve les permissions, dates, liens, etc.)-v: mode verbeux (affiche le détail des fichiers transférés)-z: compression pendant le transfert
Commande alternative avec scp :
Exécuter le script
Exemple
Le script va ÉCRASER ("/etc/snmp/snmpd.conf") pour la remplacer par la configuration minimale SNMP livré avec le pack.
Un fichier de sauvegarde ("/etc/snmp/snmpd.conf.bak") sera généré avant d'écraser la configuration par défaut.
| Code Block | ||
|---|---|---|
| ||
./configure-host.sh --override-default-conf | ||
scp -r /chemin/vers/supervised-host/ utilisateur@linux_supervise:/chemin/destination/supervised-host/ |
-r: copie récursivement un dossier ainsi que tous ses sous-dossiers et fichiers.
Prérequis avant d'exécuter le script
Avant N'hésitez pas à vous approprier la configuration avant d'exécuter le script choisi, en modifiant le fichier "snmpd-template.conf" dans le dossier "supervised-host" afin que la configuration s'adapte à vos besoins.
il est nécessaire de :
- installer l'agent SNMP et ouvrir les ports SNMP en suivant ce chapitre
- installer les dépendances sur les hôtes à superviser en suivant ce chapitre.
| Warning |
|---|
Avant de déployer le script de configuration sur plusieurs serveurs Linux à superviser, il est fortement conseillé de :
|
Exécuter le script
Chaque script va ÉCRASER le fichier ("/etc/snmp/snmpd.conf") et le remplacer par le template correspondant.
- Un fichier de sauvegarde ("/etc/snmp/snmpd.conf.[DATE].bak") sera généré avant d'écraser la configuration par défaut.
Exemple SNMPv1v2 par défaut:
Si vous souhaitez utiliser uniquement les paramètres par défaut du pack, exécutez :
| Code Block | ||
|---|---|---|
| ||
./configure-host-SNMPv1v2.sh --override-default-conf |
Cette commande configure immédiatement l’hôte avec la communauté public ( les valeurs par défaut fournies dans le pack seront utilisées ).
- Aucune configuration supplémentaire pour les paramètres d'authentification n'est nécessaire.
Exemple SNMPv1v2 personnalisé :
| Info | ||
|---|---|---|
| ||
| Pour des enjeux de sécurité, il est vivement recommandé de personnaliser ces paramètres d'authentification. |
Si vous voulez adapter la configuration à votre environnement , vous pouvez surcharger certains paramètres en ligne de commande.
Options disponibles :
| Info | |||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SNMPv1v2 :
| |||||||||||||||||||||||||||||||||||||
| Info | |||||||||||||||||||||||||||||||||||||
Vous pouvez ajouter les options suivantes en ligne de commande afin de configurer les paramètres de connexion SNMP v1 v2 et v3 :
Toutes les valeurs par défaut sont celles utilisées par les modèles de supervisions du pack. Exemple
|
Exemple avec une communauté personnalisée :
| Code Block | ||||
|---|---|---|---|---|
| ||||
./configure-host-SNMPv1v2.sh --override-default-conf -u c my_new_user -a SHA -A my_new_password -c my_community |
Une fois SNMP configuré, selon le mode d'authentification choisi :
Configuration pour SELinux
custom_community |
Exemple SNMPv3 par défaut :
De la même manière, pour appliquer directement la configuration SNMPv3 avec les valeurs par défaut du pack, exécutez :
| Code Block | |
|---|---|
|
Il est possible que votre serveur Linux supervisé soit configuré avec SELinux et que certains checks du pack n'aient pas les permissions d'accéder aux ressources nécessaires.
Le script peut également être exécuté avec l'option '--configure-selinux' afin d'ajouter des règles de lecture au service SNMP ( snmpd ).
| Code Block | ||||
|---|---|---|---|---|
| ||||
./configure-host-SNMPv3.sh --configureoverride-default-selinux |
Configuration manuelle de l'agent
conf |
Les identifiants utilisés seront alors ( les valeurs par défaut fournies dans le pack seront utilisées ) :
utilisateur SNMP "
shinken"( il ne s’agit pas d’un utilisateur Linux )mot de passe "
shinkenpassword"protocole d’authentification "
SHA"protocole de confidentialité "
AES"clé de chiffrement
"shinkenencryptionkey"
Aucune configuration supplémentaire pour les paramètres d'authentification n'est nécessaire.
Exemple SNMPv3 personnalisé :
| Info | ||
|---|---|---|
| ||
| Pour des enjeux de sécurité, il est vivement recommandé de personnaliser ces paramètres d'authentification. |
Si vous voulez adapter la configuration à votre environnement , vous pouvez surcharger certains paramètres en ligne de commande.
Options disponibles :
| Info | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SNMPv3 :
L’argument "-s" permet de définir le niveau de sécurité SNMPv3 associé à l’utilisateur créé. Trois valeurs sont possibles :
|
| Note | ||
|---|---|---|
| ||
Important : L'utilisateur configuré ici est un utilisateur SNMP ( ex. |
Dans la majorité des cas, vous devrez définir vos propres identifiants SNMPv3 afin d’assurer la sécurité de votre environnement.
Voici un exemple complet avec des valeurs personnalisées :
| Code Block | ||
|---|---|---|
| ||
./configure-host-SNMPv3.sh --override-default-conf -u my_new_user -a SHA -A my_new_password -x AES -X my_new_encryption_key -s priv |
Test de connexion SNMPv1v2
Sur votre machine locale, vous pouvez exécuter les commandes suivantes pour tester votre configuration SNMP.
Tester la configuration v2 ( l es paramètres d'authentification peuvent être à changer ) :
| Code Block | ||
|---|---|---|
| ||
snmpwalk localhost -v2c -c public 1.3.6.1.4.1 |
Le résultat attendu est une longue liste d'OID et de leurs valeurs associés, comme ci-dessous :
| Code Block | ||
|---|---|---|
| ||
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5119996 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 4175664 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1820668 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 106600 kB
... |
Test de connexion SNMPv3
Sur votre machine locale, vous pouvez exécuter les commandes suivantes pour tester votre configuration SNMP.
Tester la configuration v3 ( l es paramètres d'authentification peuvent être à changer ) :
| Code Block | ||
|---|---|---|
| ||
# Tester authPriv
snmpwalk localhost -v3 -l authPriv -u shinken -a SHA -A "shinkenpassword" -x AES -X "shinkenencryptionkey" 1.3.6.1.4.1
# Tester authNoPriv
snmpwalk localhost -v3 -l authNoPriv -u shinken -a SHA -A "shinkenpassword" 1.3.6.1.4.1
# Tester noAuthNoPriv
snmpwalk localhost -v3 -l noAuthNoPriv -u shinken 1.3.6.1.4.1
|
Le résultat attendu est une longue liste d'OID et de leurs valeurs associés, comme ci-dessous :
| Code Block | ||
|---|---|---|
| ||
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5119996 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 4175664 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1820668 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 106600 kB
... |
Configuration manuelle de l'agent
Le fichier principal de configuration SNMP est : "/etc/snmp/snmpd.conf".
Par précaution, faîtes une copie puis éditez le fichier de configuration :
| Code Block | ||
|---|---|---|
| ||
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
vim /etc/snmp/snmpd.conf |
Si vous n'avez pas déjà de configuration SNMP,
- Vous pouvez utiliser la configuration d'exemple
- Sinon, suivez la configuration pas à pas.
Configuration d'exemple
| Anchor | ||||
|---|---|---|---|---|
|
Si vous n'avez jamais configuré le serveur SNMP ( vous avez le fichier par défaut ), vous pouvez utiliser la configuration suivante.
| Note | ||
|---|---|---|
| ||
Cette configuration minimale offre un accès en lecture à l'agent SNMP supportant le v1, v2 ( v2c ) et v3 ( v3 ). |
| Code Block | ||
|---|---|---|
| ||
# sec.name source community
com2sec notConfigUser default public
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
group notConfigGroup usm shinken
# name incl/excl subtree mask(optional)
view shinken included .1.3.6.1
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact shinken none none
rouser shinken
# Inclus la configuration necessaire pour le bon fonctionnement des checks.
includeDir /etc/snmp/shinken
|
Cette configuration définit :
- une communauté " public " à utiliser pour la connexion SNMP v1 et v2
- un utilisateur " shinken " à utiliser pour la connexion SNMP v3
| Warning |
|---|
Ensuite, il est NÉCESSAIRE de suivre :
|
Configuration pas à pas
| Anchor | ||||
|---|---|---|---|---|
|
Si vous avez déjà votre propre configuration SNMP personnalisée, ou que vous avez des besoins spécifiques, vous pouvez suivre la configuration pas à pas.
Vous trouverez également la documentation officielle de la configuration snmpd ici.
Connexion SNMPv1v2
| Anchor | ||||
|---|---|---|---|---|
|
Il est possible de passer cette étape si vous souhaitez uniquement configurer la connexion SNMPv3.
La ligne suivante permet de créer une communauté, ici " public " et de l'associer à un nouveau nom de sécurité.
| Code Block | ||
|---|---|---|
| ||
####
# First, map the community name "public" into a "security name"
# sec.name source community
com2sec notConfigUser default public
|
| Info |
|---|
Par défaut, la communauté est définie à public dans les modèles de supervisions du pack.
|
| Info | |||||
|---|---|---|---|---|---|
Il est possible de changer le champ " source " pour restreindre l'accès à la communauté définit, pour une adresse ou une plage d'adresse.
|
Ensuite, il est nécessaire de rattacher le nom de sécurité crée à un groupe, et à un modèle de sécurité.
| Code Block | ||
|---|---|---|
| ||
# groupName securityModel securityName
group notConfigGroup v1 |
Le fichier principal de configuration SNMP est : "/etc/snmp/snmpd.conf".
Par précaution, faîtes une copie puis éditez le fichier de configuration :
| Code Block | ||
|---|---|---|
| ||
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
vim /etc/snmp/snmpd.conf |
Si vous n'avez pas déjà de configuration SNMP,
- Vous pouvez utiliser la configuration d'exemple
- Sinon, suivez la configuration pas à pas.
Si vous n'avez jamais configuré le serveur SNMP ( vous avez le fichier par défaut ), vous pouvez utiliser la configuration suivante.
| Note | ||
|---|---|---|
| ||
Cette configuration minimale offre un accès en lecture à l'agent SNMP supportant le v1, v2 ( v2c ) et v3 ( v3 ). |
| Code Block | ||
|---|---|---|
| ||
# sec.name source community com2sec notConfigUser default public # groupName securityModel securityName group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser group notConfigGroup usm shinkennotConfigUser #group notConfigGroup v2c name incl/excl subtree mask(optional) view shinken included .1.3.6.1 # group context sec.model sec.level prefix read write notif access notConfigGroup "" any noauth exact shinken none none rouser shinken # Inclus la configuration necessaire pour le bon fonctionnement des checks. includeDir /etc/snmp/shinken |
Cette configuration définit :
- une communauté "public" à utiliser pour la connexion SNMP v1 et v2
- un utilisateur "shinken" à utiliser pour la connexion SNMP v3
| Warning |
|---|
Ensuite, il est NÉCESSAIRE de suivre :
|
notConfigUser
|
Connexion SNMP v3
| Anchor | ||||
|---|---|---|---|---|
|
Il est possible de passer cette étape si vous souhaitez uniquement configurer la connexion SNMPv1v2.
La connexion SNMP v3 nécessite la mise en place d'un utilisateur qui sera utilisé pour se connecter sur les hôtes supervisés.
Voici un exemple de création d'un utilisateur sur la machine supervisée qui sera interrogée par le pack en SNMP v3.
Arrêtez le service SNMP pour pouvoir lancer la commande de création d'un utilisateur :
| Code Block | ||
|---|---|---|
| ||
service snmpd stop |
Créez vote utilisateur avec ses informations d'identification :
| Code Block | ||
|---|---|---|
| ||
net-snmp-create-v3-user -ro -A shinkenpassword -a SHA -X shinkenencryptionkey -x AES shinken |
Redémarrez le service SNMP :
| Code Block | ||
|---|---|---|
| ||
service snmpd start |
À noter qu'ici, nous avons défini :
- shinken: nom de l'utilisateur côté serveur SNMPv3
- shinkenpassword: mot de passe de l'utilisateur. Attention : il ne peut pas être plus petit que 8 caractères.
- shinkenencryptionkey: clé de chiffrement pour cet utilisateur
- AES: protocole de chiffrement de l'utilisateur
- SHA: méthode de hashage des informations de l'utilisateur
| Info |
|---|
Ces paramètres sont par défaut dans le pack et seront utilisés dans les modèles de supervisions pour interroger les équipements supervisés. Si vous créez vos propres paramètres, il faudra donc les modifier dans l'interface de configuration. |
Ensuite, il est nécessaire de rattacher l'utilisateur crée à un groupe, et à un modèle de sécurité.
| Code Block | ||
|---|---|---|
| ||
# groupName securityModel securityName
group notConfigGroup usm shinken |
| Info |
|---|
usm signifie User Security Model et a été introduit et utilisé pour SNMP v3 |
Autorisations d'accès aux données
| Anchor | ||||
|---|---|---|---|---|
|
Quelle que soit la version de SNMP configuré, V1, V2 ou V3, il est essentiel de configurer l'accès aux données.
Une fois les utilisateurs, noms de sécurités, et groupes créés, il faut ajouter une vue pour leur donner accès aux données
Si vous avez déjà votre propre configuration SNMP personnalisée, ou que vous avez des besoins spécifiques, vous pouvez suivre la configuration pas à pas.Vous trouverez également la documentation officielle de la configuration snmpd ici.Connexion SNMPv1v2
Il est possible de passer cette étape si vous souhaitez uniquement configurer la connexion SNMPv3.
La ligne suivante permet de créer une communauté, ici "public" et de l'associer à un nouveau nom de sécurité.
| Code Block | ||
|---|---|---|
| ||
#### # First, map the community name "public" into a "security name" ## name incl/excl subtree sec.name sourcemask(optional) view shinken community com2sec notConfigUser defaultincluded public .1.3.6.1 |
| Info |
|---|
Par défaut, la communauté est définie à public dans les modèles de supervisions du pack.
|
| Info |
Ici la vue " shinken " définit l'accès à l'arbre " .1.3.6.1 ". L'ensemble des OIDs qui commencent par " .1.3.6.1 " sont donc inclus. |
Pour finir, il faut donner l'accès à la
communauté définit, pour une adresse ou une plage d'adressevue au groupe définit plus tôt.
| Code Block | ||
|---|---|---|
| ||
# sec.name sourcegroup context sec.model sec.level prefix readcommunity com2sec notConfigUser my.host.com write notif access notConfigGrouppublic ""# Hostname
com2sec notConfigUser 192.0.0.123 any noauthpublic # Address
com2secexactnotConfigUser 10.10.10.0/255.255.255.0 shinkenpublic none# IP/MASK |
Ensuite, il est nécessaire de rattacher le nom de sécurité crée à un groupe, et à un modèle de sécurité.
| Code Block | ||
|---|---|---|
| ||
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
|
La connexion SNMP v3 nécessite la mise en place d'un utilisateur qui sera utilisé pour se connecter sur les hôtes supervisés.
Voici un exemple de création d'un utilisateur sur la machine supervisée qui sera interrogée par le pack en SNMP v3.
Arrêtez le service SNMP pour pouvoir lancer la commande de création d'un utilisateur :
| Code Block | ||
|---|---|---|
| ||
service snmpd stop |
Créez vote utilisateur avec ses informations d'identification :
| Code Block | ||
|---|---|---|
| ||
net-snmp-create-v3-user -ro -A shinkenpassword -a SHA -X shinkenencryptionkey -x AES shinken |
Redémarrez le service SNMP :
| Code Block | ||
|---|---|---|
| ||
service snmpd start |
À noter qu'ici, nous avons défini :
- shinken: nom de l'utilisateur côté serveur SNMPv3
- shinkenpassword: mot de passe de l'utilisateur. Attention : il ne peut pas être plus petit que 8 caractères.
- shinkenencryptionkey: clé de chiffrement pour cet utilisateur
- AES: protocole de chiffrement de l'utilisateur
- SHA: méthode de hashage des informations de l'utilisateur
| Info |
|---|
Ces paramètres sont par défaut dans le pack et seront utilisés dans les modèles de supervisions pour interroger les équipements supervisés. Si vous créez vos propres paramètres, il faudra donc les modifier dans l'interface de configuration. |
Ensuite, il est nécessaire de rattacher l'utilisateur crée à un groupe, et à un modèle de sécurité.
| Code Block | ||
|---|---|---|
| ||
# groupName securityModel securityName
group notConfigGroup usm shinken |
| Info |
|---|
usm signifie User Security Model et a été introduit et utilisé pour SNMP v3 |
Autorisations d'accès aux données
none |
| Info |
|---|
Ici seulement les droits de lectures ont été donnés au groupe " notConfigGroup " |
Test de connexion SNMPv1v2
| Anchor | ||||
|---|---|---|---|---|
|
Sur votre machine locale, vous pouvez exécuter les commandes suivantes pour tester votre configuration SNMP.
Tester la configuration v2 ( l es paramètres d'authentification peuvent être à changer ) :
| Code Block | ||||
|---|---|---|---|---|
| ||||
snmpwalk localhost -v2c -c public 1.3.6.1.4.1 |
Le résultat attendu est une longue liste d'OID et de leurs valeurs associés, comme ci-dessous :
| Code Block | ||
|---|---|---|
| ||
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5119996 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 4175664 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1820668 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 106600 kB
... |
Test de connexion SNMPv3
| Anchor | ||||
|---|---|---|---|---|
|
Sur votre machine locale, vous pouvez exécuter les commandes suivantes pour tester votre configuration SNMP.
Tester la configuration v3 ( l es paramètres d'authentification peuvent être à changer ) :
| Code Block | ||||
|---|---|---|---|---|
| ||||
# Tester authPriv
snmpwalk localhost -v3 -l authPriv -u shinken -a SHA -A "shinkenpassword" -x AES -X "shinkenencryptionkey" 1.3.6.1.4.1
# Tester authNoPriv
snmpwalk localhost -v3 -l authNoPriv -u shinken -a SHA -A "shinkenpassword" 1.3.6.1.4.1
# Tester noAuthNoPriv
snmpwalk localhost -v3 -l noAuthNoPriv -u shinken 1.3.6.1.4.1
|
Le résultat attendu est une longue liste d'OID et de leurs valeurs associés, comme ci-dessous :
| Code Block | ||
|---|---|---|
| ||
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5119996 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 4175664 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1820668 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 106600 kB
... |
Configuration SNMP nécessaire aux checks
| Anchor | ||||
|---|---|---|---|---|
|
Les checks du pack linux-by-SNMP__shinken nécessitent la configuration ci-dessous pour fonctionner
Quelle que soit la version de SNMP configuré, V1, V2 ou V3, il est essentiel de configurer l'accès aux données.
Une fois les utilisateurs, noms de sécurités, et groupes créés, il faut ajouter une vue pour leur donner accès aux données.
| Code Block | ||
|---|---|---|
| ||
# linux-by-SNMP__shinken snmpd configuration file # This file nameis essential for checks to work # The file must be incl/exclinstalled on hosts supervised by Shinken # subtreeIt must be included from the main snmpd mask(optional) view shinken included .1.3.6.1 |
| Info |
|---|
Ici la vue "shinken" définit l'accès à l'arbre ".1.3.6.1". L'ensemble des OIDs qui commencent par ".1.3.6.1" sont donc inclus. |
Pour finir, il faut donner l'accès à la vue au groupe définit plus tôt.
| Code Block | ||
|---|---|---|
| ||
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact shinken none none |
| Info |
|---|
Ici seulement les droits de lectures ont été donnés au groupe "notConfigGroup" |
Sur votre machine locale, vous pouvez exécuter les commandes suivantes pour tester votre configuration SNMP.
Tester la configuration v2 ( les paramètres d'authentification peuvent être à changer ) :
| Code Block | ||
|---|---|---|
| ||
snmpwalk localhost -v2c -c public 1.3.6.1.4.1 |
| Code Block | ||
|---|---|---|
| ||
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5119996 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 4175664 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1820668 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 106600 kB
... |
Sur votre machine locale, vous pouvez exécuter les commandes suivantes pour tester votre configuration SNMP.
Tester la configuration v3 ( les paramètres d'authentification peuvent être à changer ) :
| Code Block | ||
|---|---|---|
| ||
# Tester authPriv
snmpwalk localhost -v3 -l authPriv -u shinken -a SHA -A "shinkenpassword" -x AES -X "shinkenencryptionkey" 1.3.6.1.4.1
# Tester authNoPriv
snmpwalk localhost -v3 -l authNoPriv -u shinken -a SHA -A "shinkenpassword" 1.3.6.1.4.1
# Tester noAuthNoPriv
snmpwalk localhost -v3 -l noAuthNoPriv -u shinken 1.3.6.1.4.1
|
| Code Block | ||
|---|---|---|
| ||
UCD-SNMP-MIB::memIndex.0 = INTEGER: 0
UCD-SNMP-MIB::memErrorName.0 = STRING: swap
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 5119996 kB
UCD-SNMP-MIB::memAvailSwap.0 = INTEGER: 4175664 kB
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 1820668 kB
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 106600 kB
... |
Les checks du pack linux-by-SNMP__shinken nécessitent la configuration ci-dessous pour fonctionner.
| Code Block | ||
|---|---|---|
| ||
# linux-by-SNMP__shinken snmpd configuration file
# This file is essential for checks to work
# The file must be installed on hosts supervised by Shinken
# It must be included from the main snmpd configuration file
# check : Disks Usage by SNMP
includeAllDisks 10%
# check : Ntp Sync by SNMP
extend shinken__linux-by-snmp__ntp-sync__ntpq /bin/sh -c "export LC_LANG=C && unset LANG && ntpq -p ; date +'%H:%M:%S.%3N'"
# check : Ntp Sync Chrony by SNMP
extend shinken__linux-by-snmp__ntp-sync-chrony__chronyc /bin/sh -c "export LC_LANG=C && unset LANG && chronyc tracking ; date +'%H:%M:%S.%3N'"
# check : Stats CPU by SNMP
extend shinken__linux-by-snmp__stats-cpu__processes-cpu-time /bin/sh -c "export LC_LANG=C && unset LANG && awk '{ut[\$1]=\$14; st[\$1]=\$15} END { system(\"sleep 1\"); for (p in ut) { getline < (\"/proc/\" p \"/stat\"); split(\$0, d, \" \"); printf \"%s %d %d %d %d\\n\", p, ut[p], st[p], d[14], d[15] } }' /proc/[0-9]*/stat"
extend shinken__linux-by-snmp__stats-cpu__processes-cpu /bin/sh -c "export LC_LANG=C && unset LANG && ps -eo pcpu,pid,args --sort=-pcpu --no-headers"
extend shinken__linux-by-snmp__stats-cpu__frequency /bin/sh -c "export LC_LANG=C && unset LANG && cat /proc/cpuinfo | grep 'cpu MHz' | uniq | cut -d ' ' -f 3"
extend shinken__linux-by-snmp__stats-cpu__mpstat /bin/sh -c "export LC_LANG=C && unset LANG && mpstat -P ALL 1 1"
|
Copiez cette configuration et enregistrez-la dans un fichier : "/etc/snmp/shinken/linux-by-SNMP__shinken.conf"
| Code Block | ||
|---|---|---|
| ||
mkdir -p /etc/snmp/shinken/
vim /etc/snmp/shinken/linux-by-SNMP__shinken.conf |
Il faut ensuite inclure ce fichier depuis la configuration principale snmpd.
Dans le fichier "/etc/snmp/snmpd.conf" :
| Code Block | ||
|---|---|---|
| ||
vim /etc/snmp/snmpd.conf |
Assurez vous d'avoir la ligne suivante, sinon ajoutez la :
| Code Block | ||
|---|---|---|
| ||
includeDir /etc/snmp/shinken |
Installations des dépendances
Certain checks nécessitent des dépendances sur le serveur Linux à superviser. Il faut les installer pour leur bon fonctionnement.
Stats CPU by SNMPvX
configuration file
# check : Disks Usage by SNMP
includeAllDisks 10%
# check : Ntp Sync by SNMP
extend shinken__linux-by-snmp__ntp-sync__ntpq /bin/sh -c "export LC_LANG=C && unset LANG && ntpq -p ; date +'%H:%M:%S.%3N'"
# check : Ntp Sync Chrony by SNMP
extend shinken__linux-by-snmp__ntp-sync-chrony__chronyc /bin/sh -c "export LC_LANG=C && unset LANG && chronyc tracking ; date +'%H:%M:%S.%3N'"
# check : Stats CPU by SNMP
extend shinken__linux-by-snmp__stats-cpu__processes-cpu-time /bin/sh -c "export LC_LANG=C && unset LANG && awk '{ut[\$1]=\$14; st[\$1]=\$15} END { system(\"sleep 1\"); for (p in ut) { getline < (\"/proc/\" p \"/stat\"); split(\$0, d, \" \"); printf \"%s %d %d %d %d\\n\", p, ut[p], st[p], d[14], d[15] } }' /proc/[0-9]*/stat"
extend shinken__linux-by-snmp__stats-cpu__processes-cpu /bin/sh -c "export LC_LANG=C && unset LANG && ps -eo pcpu,pid,args --sort=-pcpu --no-headers"
extend shinken__linux-by-snmp__stats-cpu__frequency /bin/sh -c "export LC_LANG=C && unset LANG && cat /proc/cpuinfo | grep 'cpu MHz' | uniq | cut -d ' ' -f 3"
extend shinken__linux-by-snmp__stats-cpu__mpstat /bin/sh -c "export LC_LANG=C && unset LANG && mpstat -P ALL 1 1"
|
Copiez cette configuration et enregistrez-la dans un fichier : " /etc/snmp/shinken/linux-by-SNMP__shinken.conf "
| Code Block | ||||
|---|---|---|---|---|
| ||||
mkdir -p /etc/snmp/shinken/
vim /etc/snmp/shinken/linux-by-SNMP__shinken.conf |
Il faut ensuite inclure ce fichier depuis la configuration principale snmpd.
Dans le fichier " /etc/snmp/snmpd.conf " :
| Code Block | ||||
|---|---|---|---|---|
| ||||
vim /etc/snmp/snmpd.conf |
Assurez vous d'avoir la ligne suivante, sinon ajoutez la :
| Code Block | ||
|---|---|---|
| ||
includeDir /etc/snmp/shinken |
Mise à jour des commandes SNMP sur les Linux supervisés
| Anchor | ||||
|---|---|---|---|---|
|
Comme expliqué dans le chapitre précedent, le pack a besoin d'une configuration SNMP spécifique sur les Linux supervisés afin d'exécuter correctement ses checks.
Lors de mise à jours du packs, cette configuration peut évoluer. Le script "update-SNMP-check-conf.sh" dans le répertoire "supervised-host" permet de mettre à jour cette configuration.
Le script va ÉCRASER le fichier "/etc/snmp/shinken/linux-by-SNMP__shinken.conf" et le remplacer par la nouvelle configuration.
- Un fichier de sauvegarde "/etc/snmp/shinken/log/linux-by-SNMP__shinken.conf.[DATE].bak" sera généré avant d'écraser la configuration par défaut.
Exemple :
Si vous souhaitez utiliser le script, exécutez :
| Code Block | ||||
|---|---|---|---|---|
| ||||
./update-SNMP-check-conf.sh --override |
Cette commande configure immédiatement le fichier avec les commandes nécessaires au pack ( les valeurs par défaut fournies dans le pack seront utilisées ).
Installations des dépendances
| Anchor | ||||
|---|---|---|---|---|
|
Certain checks nécessitent des dépendances sur le serveur Linux à superviser. Il faut les installer pour leur bon fonctionnement.
Stats CPU by SNMPvX
Le check CPU Stats SNMPvX utilise le paquet SysStat, nécessaire au bon fonctionnement du check. Il faut l'installer avec la commande suivante :
| Code Block | ||
|---|---|---|
| ||
# Debian, Ubuntu
apt-get install sysstat
# RHEL, Alma, Rocky, Centos, Fedora, OpenSUSE
yum install sysstat
# Arch, Manjaro
pacman -Syy sysstat |
Configuration du module de sécurité Linux
Certain checks du pack nécessitent l'accès en lecture à des fichiers du système Linux supervisé. Il est possible que le serveur Linux supervisé ait un module de sécurité Linux ( LSM ) qui va protéger l'accès à ces fichiers.
Alors, il faut vérifier quel module de sécurité est configuré sur votre Linux, et donner les permissions suffisantes pour le bon fonctionnement des checks.
Les checks concernés sont :
- Connection Failed by SNMPvXXX
- Stats NFS by SNMPvXXX
Configuration pour SELinux
Vérification de SELinux
SELinux est installé par défaut sur les distributions RHEL, Alma, Rocky, Centos, Fedora.
| Section | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Vous pouvez vérifier si SELinux est activé avec la commande :
Vous devriez observer parmi le résultat les ligne suivante :
|
Configuration de SELinux
Résolution par script
Dans le script de configuration d'hôte livré dans le pack, une option permet de rajouter ces règles.
Déployez le dossier 'supervised-host' sur votre hôte ( scp, ftp .. ).
Sur le serveur Linux supervisé, exécutez :
| Code Block | ||||
|---|---|---|---|---|
| ||||
cd supervised-host
./configure-host.sh --configure-selinux |
Résolution manuelle
Sur le serveur Linux supervisé, exécutez les commandes suivantes :
| Code Block | ||||
|---|---|---|---|---|
| ||||
mkdir -p /etc/selinux/shinken
vim /etc/selinux/shinken/linux-by-SNMP__shinken.te |
Dans le fichier, remplissez et sauvegardez :
| Code Block | ||
|---|---|---|
| ||
module linux-by-SNMP__shinken 1.0;
require {
type snmpd_t;
type sysctl_rpc_t;
type faillog_t;
class file { read open getattr };
class dir { search };
}
# Rules for check Stats NFS by SNMPvXXX
# Allow snmpd to read /proc/net/rpc/nfsd
allow snmpd_t sysctl_rpc_t:file { read open getattr };
# Autorisation pour accéder au dossier /proc/net/rpc
allow snmpd_t sysctl_rpc_t:dir { search };
# Rules for check Connection Failed by SNMPvXXX
# Allow snmpd to read /var/log/btmp
allow snmpd_t faillog_t:file { read open getattr }; |
Puis exécutez :
| Code Block | ||||
|---|---|---|---|---|
| ||||
checkmodule -M -m -o "/etc/selinux/shinken/linux-by-SNMP__shinken.mod" "/etc/selinux/shinken/linux-by-SNMP__shinken.te"
semodule_package -o "/etc/selinux/shinken/linux-by-SNMP__shinken.pp" -m "/etc/selinux/shinken/linux-by-SNMP__shinken.mod"
semodule -i "/etc/selinux/shinken/linux-by-SNMP__shinken.pp" |
Ces commandes vont compiler, empaqueter et installer le module SELinux créé.
Le check CPU Stats SNMPvX utilise le paquet SysStat, nécessaire au bon fonctionnement du check. Il faut l'installer avec la commande suivante :
| theme | Emacs |
|---|
Erreurs lors de l'utilisation du pack
Pour toute erreur survenue lors de l'exécution des checks, voir la page Erreurs du pack linux-by-SNMP__shinken
Erreurs lors de la configuration du serveur Linux à superviser
La page suivante répertorie certaines erreurs qui peuvent intervenir lors de la configuration : Les erreurs lors de la configuration d'un serveur Linux à configurer pour le pack linux-by-SNMP__shinken
