Comment optimiser la gestion des niveaux de journalisation de mes journaux AWS IoT dans AWS IoT Core ?

Lecture de 7 minute(s)
0

Je souhaite appliquer les meilleures pratiques lors de la configuration de mes journaux AWS IoT dans AWS IoT Core afin de réduire les coûts et le trafic de données.

Brève description

**Remarque :**Cet article concerne uniquement la version 2 des journaux AWS IoT Core.

Il est recommandé de savoir quelles ressources AWS IoT Core doivent être surveillées et à quel niveau. Vous pouvez segmenter vos ressources AWS IoT Core et attribuer à chaque segment un niveau de journalisation adapté à vos besoins de surveillance. Le journal AWS IoT Core vous permet de définir des niveaux de journalisation par défaut et des niveaux de journalisation spécifiques pour vos ressources.

Il est recommandé de configurer :

  • La journalisation par défaut, qui doit présenter un faible niveau de verbosité tel que les niveaux ERROR ou WARN. Si la journalisation par défaut est configurée, elle s'applique à toutes les ressources, sauf si une journalisation spécifique à une ressource est configurée.
  • Journalisation spécifique à une ressource (manuelle ou dynamique) pour un niveau plus détaillé, tel que INFO ou DEBUG. Elle peut être configurée pour différents types de cibles, tels que THING\ _GROUP, CLIENT\ _ID, SOURCE\ _IP ou PRINCIPAL\ _ID.

La journalisation par défaut et la journalisation spécifique aux ressources peuvent être utilisées simultanément. Les niveaux de verbosité du journal incluent DISABLED (le plus bas), ERROR, WARN, INFO et DEBUG (le plus élevé).

Important : En fonction de la taille de votre parc AWS IoT Core, l'activation de niveaux de journalisation plus précis peut augmenter les coûts et compliquer la résolution des problèmes. Des niveaux de journalisation plus complexes génèrent également un trafic de données plus élevé. Il est recommandé d'utiliser INFO ou DEBUG uniquement comme mesure temporaire lors d’un dépannage. Une fois le dépannage terminé, il est recommandé de réinitialiser les niveaux de journalisation à un paramètre moins détaillé.

Résolution

Prérequis

Vérifiez que l'interface de la ligne de commande AWS (AWS CLI) est installée localement avec les informations d'identification d'administrateur IoT. La région AWS par défaut pour l'interface de la ligne de commande AWS doit pointer vers la région AWS ciblée. Vous devez avoir des clients connectés à votre AWS IoT Core, en tant qu'objets IoT enregistrés ou non.

Remarque : Si vous recevez des erreurs lors de l'exécution des commandes de l'AWS CLI, vérifiez que vous utilisez la version la plus récente de l'AWS CLI.

Journalisation par défaut

En définissant le niveau de journalisation par défaut pour vos journaux AWS IoT sur ERROR ou WARN, vous pouvez consulter les erreurs de journal ou les avertissements. Configurer la valeur par défaut sur des niveaux moins précis permet de réduire vos coûts et votre trafic de données. Pour plus d'informations, consultez Comment configurer les paramètres de journalisation par défaut pour AWS IoT Core ?

Remarque : Vous devez fournir les journaux AWS IoT Core à AWS Support lors de la création d'un dossier. AWS Support n'a pas accès à ces informations, considérées comme des données clients.

Enregistrement manuel de ressources spécifiques

Les journaux AWS IoT Core vous permettent de définir des niveaux de journalisation spécifiques aux ressources pour les clients :

  • enregistrés en tant qu’objets et
  • non enregistrés en tant qu’objets

Pour plus d'informations, consultez Comment configurer manuellement les niveaux de journalisation pour des ressources spécifiques dans AWS IoT Core ?

Pour les clients enregistrés en tant qu'objets, vous pouvez gérer la journalisation spécifique à une ressource pour plusieurs objets à un niveau de journalisation défini. Vous pouvez également ajouter ou supprimer manuellement des éléments du groupe d'objets. Vos appareils et clients doivent être enregistrés en tant qu'objets IoT dans AWS IoT Core et doivent se connecter en utilisant le nom d'objet associé à l'identifiant client. Vous pouvez ensuite utiliser un groupe d’objets statique avec le type cible THING_GROUP pour gérer le groupe d'objets.

Remarque : Vous devez tenir compte des limites de quotas lorsque vous utilisez des groupes d'objets statiques. Pour en savoir plus, consultez la rubrique Limites et quotas de ressources des groupes d'objets AWS IoT Core.

Pour les clients non enregistrés en tant qu'objets, vous pouvez utiliser les attributs du client comme type de cible pour gérer les ressources. Ces attributs incluent CLIENT\ _ID, SOURCE\ _IP ou PRINCIPAL\ _ID.

Enregistrement automatique de ressources spécifiques

Vous pouvez utiliser un groupe d'objets dynamique pour définir automatiquement des niveaux de journalisation spécifiques aux ressources pour vos objets. Vos clients doivent être enregistrés en tant qu'objets connectés et se connecter avec l’ID client du nom de l'objet. Le groupe d'objets dynamique utilise une requête d'indexation de flotte qui recherche et ajoute automatiquement au groupe des objets réunissant les conditions de la requête. Pour plus d’informations, consultez Comment configurer de façon dynamique les niveaux de journalisation des ressources spécifiques dans AWS IoT Core ?

Remarque : Lors de la création ou de la mise à jour d'un groupe d'objets dynamique, les objets sont éligibles pour figurer dans un groupe d'objets dynamique et ne pas y être ajoutés automatiquement. Pour plus d'informations, consultez la section Les commandes réussies peuvent enregistrer des erreurs.

Surveillance des entrées du journal

Vous pouvez surveiller les entrées de vos journaux AWS IoT à l'aide de la console Amazon CloudWatch ou de l'interface AWS CLI :

Console CloudWatch

1.Ouvrez la console CloudWatch.

2.Dans le volet de navigation, sous Journaux, sélectionnez Groupes de journaux.

3.Dans la zone de texte des filtres, entrez AWSIOTLogsV2, puis tapez Entrée.
Remarque : Le groupe de journaux AWSIOTLogsv2 n'est visible dans la console CloudWatch que si vous avez correctement activé la journalisation dans AWS IoT Core. Les entrées du journal doivent également être écrites par les opérations AWS IoT pour que le groupe de journaux soit visible.

4.Sélectionnez AWSIOTLogsV2.

5.Sélectionnez Rechercher tout. La liste complète de vos journaux AWS IoT générés pour votre compte s'affiche.

AWS CLI

Exécutez la commande suivante pour obtenir vos journaux AWS IoT dans l'interface de la ligne de commande AWS :

aws logs filter-log-events --log-group-name AWSIotLogsV2 \
 --start-time YourStartTimeInMilliseconds

**Remarque :**Vous pouvez utiliser le modèle --filter-pattern pour rechercher des attributs spécifiques de journaux. Pour plus d'informations, consultez la section Syntaxe des filtres et des modèles.

La valeur du champ « LogLevel » reflète le niveau de journalisation configuré pour la cible. Dans l'exemple suivant, le niveau de journalisation de la cible est configuré sur INFO :

{
 "timestamp": "2017-08-10 15:37:23.476",
 "logLevel": "INFO",
 "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
 "accountId": "123456789012",
 "status": "Success",
 "eventType": "Connect",
 "protocol": "MQTT",
 "clientId": "abf27092886e49a8a5c1922749736453",
 "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a123456",
 "sourceIp": "123.123.123.123",
 "sourcePort": 13490
}

Remarque : CLIENT_ID est disponible uniquement lors de la connexion à AWS IoT Core à l'aide des protocoles MQTT ou MQTT via WSS. Le protocole HTTPS ne prend pas en charge les ID clients. Utilisez plutôt les types de cibles SOURCE\ _IP ou PRINCIPAL\ _ID.

Modification ou suppression de niveaux de journalisation

Vous pouvez à tout moment modifier le niveau de journalisation pour le niveau par défaut comme pour des ressources spécifiques. L’implémentation des modifications peut prendre jusqu'à dix minutes.

Dans l'AWS CLI, exécutez la commande delete-v2-logging-level en apportant les modifications suivantes aux champs --target-type et --target-name :

aws iot delete-v2-logging-level \
 --target-type "THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID" \
 --target-name YourTargetName

Informations connexes

Points de terminaison et quotas AWS IoT Device Management

Surveillance d'AWS IoT

Tarification d'AWS IoT Device Management

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an