Problème
Lors de monitoring SNMP, vous ne voyez pas toutes les métriques attendues pour votre appareil.
Solution
Identifiez les métriques existantes dans New Relic en exécutant la requête NRQL suivante, en remplaçant $DEVICE_NAME si nécessaire :
FROM Metric SELECT uniques(metricName) WHERE instrumentation.provider = 'kentik' AND device_name = '$DEVICE_NAME'SINCE 1 HOUR AGO LIMIT MAXCette requête vous donnera une liste de toutes les mesures dimensionnelles collectées sur votre appareil au cours de la dernière heure. Si la métrique n'est pas répertoriée, vous devriez essayer ces tests :
Exécutez l'utilitaire snmpwalk à partir de l'hôte sur lequel votre agent ktranslate s'exécute, en utilisant les informations d'identification SNMP que vous avez configurées dans le fichier de configuration snmp-base.yaml .
Si le test échoue, l’appareil ne prend probablement pas en charge l’OID que vous souhaitez collecter. Il s'agit d'une limitation de l'appareil lui-même, contrôlée par le fournisseur.
Conseil
Si vous utilisez SNMPv3, validez la configuration de l'utilisateur v3 sur l'appareil. Dans la plupart des situations, l'administrateur de l'appareil doit accorder explicitement l'accès aux MIB pour un compte utilisateur v3.
Vérifiez si l'OID existe dans le profil de l'appareil lui-même. S'il semble y avoir un problème avec un OID qui existe déjà dans le profil, ouvrez un problème GitHub pour contacter les responsables du référentiel afin qu'ils travaillent à une résolution. Si l'OID n'existe pas dans le profil, vous pouvez soumettre une demande de tirage pour les faire ajouter. Suivez les étapes décrites dans la documentation des profils SNMP.
Conseil
La valeur de instrumentation.name sur vos métriques dimensionnelles correspond au nom du fichier de profil dans lequel la collection de métriques est configurée.
Vérifiez que la valeur configurée pour mib_profile dans votre fichier snmp-base.yaml correspond au nom de fichier de profil correct. Par exemple:
devices: deviceOne: ... mib_profile: cisco-catalyst.yml ...Vous pouvez vérifier cela dans New Relic avec la requête NRQL suivante, en remplaçant $DEVICE_NAME si nécessaire :
FROM Metric SELECT latest(instrumentation.name)WHERE instrumentation.provider = 'kentik'AND device_name = '$DEVICE_NAME'La bibliothèque de profils SNMP est constamment mise à jour et il arrive parfois que l'image de conteneur que vous utilisez ne dispose pas des paramètres de profil que vous recherchez. Si le mib_profile ne correspond pas au profil attendu, vous pouvez soit mettre à jour manuellement votre fichier de configuration, soit exécuter une nouvelle découverte.
Vous devez toujours extraire la dernière image de votre conteneur avant d'effectuer des modifications en exécutant docker pull kentik/ktranslate:v2.
Alternativement, vous pouvez obtenir la dernière version via apt-get :
$curl -s https://packagecloud.io/install/repositories/kentik/ktranslate/script.deb.sh | sudo bash && \>sudo apt-get install ktranslateVérifiez votre compte pour les erreurs de gravité Warnqui signifient que ktranslate rencontre des problèmes lors de la collecte de certaines mesures à partir de votre appareil.
interface utilisateur du log :
$collector.name:"ktranslate" message:"*OID failed to return results*"NRQL:
FROM Log SELECT * WHERE `collector.name` = 'ktranslate' AND `message` LIKE '%OID failed to return results%'Résultats attendus :
KTranslate>cisco-7513 OID failed to return results, Metric Name: ipIfStatsHCInOctets, Profile: cisco-asrConseil
Dans cet exemple, vous pouvez voir que le périphérique cible, cisco-7513 , ne renvoie pas de métriques pour l'OID ipIfStatsHCInOctets , qui se trouve dans le profil SNMP cisco-asr .
Ensuite, vous devez exécuter une seule interrogation SNMP sur votre appareil pour voir exactement ce que ktranslate reçoit de la demande, en utilisant la configuration fournie.
Pour ce faire, exécutez ktranslate en tant que conteneur de courte durée, en utilisant l’indicateur -snmp_poll_now . Vous pouvez exécuter ce conteneur à l'aide de cette commande, en remplaçant TARGET_DEVICE_NAME par la valeur de devices.[].device_name dans votre fichier de configuration YAML pour le périphérique en question :
$docker run -d --name ktranslate-poll_now --rm --pull=always -p 162:1620/udp \>-v `pwd`/snmp-base.yaml:/snmp-base.yaml \>kentik/ktranslate:v2 \> -snmp /snmp-base.yaml \> -service_name=poll_now \> -snmp_poll_now=$TARGET_DEVICE_NAME \> -format=new_relic_metricLes résultats de ce sondage peuvent être consultés dans le log du conteneur à l'aide de docker logs --follow ktranslate-poll_now
Exemple de réussite de l'interrogation des métadonnées de l'appareil :
2022-01-03T23:08:50.583 ktranslate/poll_now [Info] KTranslate SNMP Device Metadata: Data received: {SysName:router123 SysObjectID:.1.3.6.1.4.1.9.1.46 SysDescr:Cisco Internetwork Operating System Software ...}2022-01-03T23:08:50.585 ktranslate/poll_now [Info] nrmFormat New Metadata for router123Exemple de réussite d'une interrogation des statistiques d'un appareil :
[{"metrics":[{"name":"kentik.snmp.ifInErrors","type":"count","value":0,"attributes":{"if_Speed":2,"mib-name":"IF-MIB","poll_duration_sec":60,"if_Type":"proppointtopointserial", "if_AdminStatus":"up","objectIdentifier":".1.3.6.1.2.1.2.2.1.14","mib-table":"if","if_OperStatus":"up","device_name":"router123","provider":"kentik-router","if_interface_name":"Se11/0/0:16","instrumentation.name":"cisco-asr","if_Index":"63","if_Address":"10.201.0.65","eventType":"KSnmpInterfaceMetric","if_Netmask":"255.255.255.252","if_Alias":"pkt.ds1"}}]...}]En regardant le JSON « embelli » , vous pouvez voir ici que l’interrogation fonctionne comme prévu pour cet appareil :
[ { "metrics": [ { "name": "kentik.snmp.ifInErrors", "type": "count", "value": 0, "attributes": { "if_Speed": 2, "mib-name": "IF-MIB", "poll_duration_sec": 60, "if_Type": "proppointtopointserial", "if_AdminStatus": "up", "objectIdentifier": ".1.3.6.1.2.1.2.2.1.14", "mib-table": "if", "if_OperStatus": "up", "device_name": "router123", "provider": "kentik-router", "if_interface_name": "Se11/0/0:16", "instrumentation.name": "cisco-asr", "if_Index": "63", "if_Address": "10.201.0.65", "eventType": "KSnmpInterfaceMetric", "if_Netmask": "255.255.255.252", "if_Alias": "pkt.ds1" } } ] }]