Un client de télémétrie est une application qui interagit avec le service de télémétrie pour configurer la collecte de données, gérer les configurations de métriques et recevoir des rapports de télémétrie. Les clients utilisent la bibliothèque Rust libsdv_telemetry_rust_wrapper pour interagir avec le service.
Présentation de la surface d'API
Consultez la documentation de référence de l'API de la bibliothèque cliente de télémétrie Rust pour obtenir la documentation de l'API.
La bibliothèque fournit une interface Rust pour interagir avec le service de télémétrie sous-jacent. La bibliothèque est responsable des domaines suivants :
Gestion du cycle de vie des services : gère la connexion au service de télémétrie.
- Initialisation : établit une connexion au service à l'aide d'un appel bloquant. Une fois la connexion établie, vous pouvez enregistrer des rappels pour recevoir des notifications asynchrones sur l'état du système et la disponibilité de nouveaux rapports.
- Arrêt : permet de se déconnecter du service de manière fluide et de nettoyer toutes les ressources associées.
Gestion du cycle de vie des configurations de métriques : permet de contrôler le cycle de vie des configurations de métriques.
- Gestion : les clients peuvent ajouter, supprimer, activer et désactiver des configurations de métriques.
- Inspection : vous pouvez interroger la liste des configurations actives et inactives.
Gestion et récupération des rapports : facilite l'accès aux données collectées par le service de télémétrie.
- Notifications : les clients sont avertis de manière asynchrone à l'aide d'un rappel chaque fois qu'un nouveau rapport sur les métriques est prêt à être récupéré.
- Accès aux données : fournit des méthodes pour extraire des rapports spécifiques par leur UUID et pour récupérer la liste de tous les rapports disponibles.
Rapports d'état et d'erreur : fournissent des informations sur l'état et le bon fonctionnement du service de télémétrie.
- Mises à jour d'état asynchrones : les clients reçoivent des mises à jour d'état en temps réel, y compris les erreurs et les avertissements, via un rappel dédié. Cela vous permet d'implémenter une gestion des erreurs robuste et de surveiller l'état du service.
Exemple d'utilisation
Pour obtenir une application complète et compilable qui illustre l'intégralité du cycle de vie, consultez l'exemple d'implémentation du client : samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs.
L'exemple de client est un utilitaire de ligne de commande qui interagit avec l'intégralité de l'API de la bibliothèque. L'exemple montre comment faire le pont entre l'interface basée sur les rappels de la bibliothèque et un environnement d'exécution Rust asynchrone (Tokio) à l'aide de canaux.
Le client effectue la séquence d'opérations suivante :
- Établit une connexion au service de télémétrie et enregistre les rappels pour les mises à jour de l'état et les notifications de rapports sur les métriques.
- Lit les fichiers de configuration des métriques fournis en tant qu'arguments de ligne de commande, puis ajoute et active les configurations dans le service.
- Utilise une tâche en arrière-plan pour consigner les messages d'état asynchrones (erreurs ou avertissements) reçus du service.
- Gère la boucle de récupération des données en effectuant les actions suivantes :
- Attend une notification indiquant qu'un rapport sur les métriques est prêt.
- Récupère les données complètes du rapport sur les métriques.
- Écrit éventuellement le rapport sur le disque sous forme de fichier binaire de tampon de protocole.
- Supprime la configuration des métriques du service une fois que le premier rapport de métriques est généré. Notez qu'il s'agit d'une implémentation de démonstration. Vos propres clients peuvent recevoir un nombre illimité de rapports.
- Ferme correctement la connexion au service.