Le plug-in Google Cloud exporte les données de télémétrie et de journalisation Firebase Genkit vers la suite Cloud Observability.
Installation
npm i --save @genkit-ai/google-cloud
Lorsque vous exécutez en local du code Genkit qui inclut ce plug-in, vous devez également installer l'outil Google Cloud CLI.
Configurer un compte Google Cloud
Ce plug-in nécessite un compte/projet Google Cloud. Tous les projets Firebase en incluent un par défaut (Console GCP), ou vous pouvez vous inscrire sur https://cloud.google.com.
Avant d'ajouter le plug-in, assurez-vous que les API suivantes sont activées pour votre projet GCP:
Ces API doivent figurer dans le tableau de bord des API de votre projet.
Cliquez ici pour en savoir plus sur l'activation et la désactivation des API.
Configuration de Genkit
Pour activer le traçage, la journalisation et la surveillance (métriques) dans Cloud, appelez simplement enableGoogleCloudTelemetry()
:
import { enableGoogleCloudTelemetry } from '@genkit-ai/google-cloud';
enableGoogleCloudTelemetry();
Lors de l'exécution en production, la télémétrie est exportée automatiquement.
Authentification et autorisation
Le plug-in nécessite un ID de projet Google Cloud et des identifiants d'application.
Google Cloud
Si vous déployez votre code dans un environnement Google Cloud (Cloud Functions, Cloud Run, etc.), l'ID de projet et les identifiants seront découverts automatiquement via les identifiants par défaut de l'application.
Vous devez appliquer les rôles suivants au compte de service qui exécute votre code (c'est-à-dire le "compte de service associé") via la console IAM:
roles/monitoring.metricWriter
roles/cloudtrace.agent
roles/logging.logWriter
Développement local
Lors du développement local, des étapes supplémentaires sont nécessaires pour que vos identifiants utilisateur soient disponibles pour le plug-in.
Définissez la variable d'environnement
GCLOUD_PROJECT
sur votre projet Google Cloud.Authentifiez-vous à l'aide de la CLI
gcloud
:gcloud auth application-default login
Environnements de production en dehors de Google Cloud
Si possible, il est toujours recommandé d'utiliser le processus des identifiants par défaut de l'application pour mettre les identifiants à la disposition du plug-in.
En règle générale, cela implique de générer une clé/une paire de clés de compte de service et de déployer ces identifiants dans votre environnement de production.
Suivez les instructions pour configurer une clé de compte de service.
Assurez-vous que le compte de service dispose des rôles suivants:
roles/monitoring.metricWriter
roles/cloudtrace.agent
roles/logging.logWriter
Déployez le fichier d'identifiants en production (ne le vérifiez pas dans le code source).
Définissez la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
comme chemin d'accès au fichier d'identifiants.GOOGLE_APPLICATION_CREDENTIALS = "path/to/your/key/file"
Dans certains environnements sans serveur, vous ne pourrez peut-être pas déployer de fichier d'identifiants. Dans ce cas, au lieu des étapes 3 et 4 ci-dessus, vous pouvez définir la variable d'environnement GCLOUD_SERVICE_ACCOUNT_CREDS
avec le contenu du fichier d'identifiants comme suit:
GCLOUD_SERVICE_ACCOUNT_CREDS='{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "your-private-key-id",
"private_key": "your-private-key",
"client_email": "your-client-email",
"client_id": "your-client-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "your-cert-url"
}'
Configuration du plug-in
La fonction enableGoogleCloudTelemetry()
accepte un objet de configuration facultatif qui configure l'instance du SDK OpenTelemetry Node.js.
import { AlwaysOnSampler } from '@opentelemetry/sdk-trace-base';
enableGoogleCloudTelemetry({
forceDevExport: false, // Set this to true to export telemetry for local runs
sampler: new AlwaysOnSampler(),
autoInstrumentation: true,
autoInstrumentationConfig: {
'@opentelemetry/instrumentation-fs': { enabled: false },
'@opentelemetry/instrumentation-dns': { enabled: false },
'@opentelemetry/instrumentation-net': { enabled: false },
},
metricExportIntervalMillis: 5_000,
});
Les objets de configuration permettent de contrôler précisément différents aspects de l'exportation de la télémétrie, comme indiqué ci-dessous.
credentials
Permet de spécifier des identifiants directement à l'aide de JWTInput à partir de la bibliothèque google-auth.
échantillonneur
Lorsque l'exportation de toutes les traces n'est pas pratique, OpenTelemetry permet l'échantillonnage des traces.
Il existe quatre échantillons préconfigurés:
- AlwaysOnSampler : échantillonne toutes les traces
- AlwaysOffSampler : n'échantillonne aucune trace
- ParentBased : échantillons basés sur la période parente
- TraceIdRatioBased : échantillonne un pourcentage configurable de traces
autoInstrumentation et autoInstrumentationConfig
L'activation de l'instrumentation automatique permet à OpenTelemetry de capturer les données de télémétrie à partir de bibliothèques tierces sans avoir à modifier le code.
metricExportIntervalMillis
Ce champ spécifie l'intervalle d'exportation des métriques en millisecondes.
metricExportTimeoutMillis
Ce champ spécifie le délai avant expiration de l'exportation des métriques, en millisecondes.
disableMetrics
Fournit un forçage qui désactive l'exportation des métriques tout en continuant à exporter les traces et les journaux.
disableTraces
Fournit un forçage qui désactive l'exportation des traces tout en continuant à exporter les métriques et les journaux.
disableLoggingInputAndOutput
Fournit un forçage qui désactive la collecte des journaux d'entrée et de sortie.
forceDevExport
Cette option oblige Genkit à exporter les données de télémétrie et de journalisation lorsqu'il s'exécute dans l'environnement dev
(par exemple, localement).
Tester votre intégration
Lorsque vous configurez le plug-in, utilisez forceDevExport: true
pour activer l'exportation de la télémétrie pour les exécutions locales. Accédez à l'explorateur Google Cloud Logs, Metrics ou Trace pour afficher la télémétrie.
Suite Google Cloud Observability
Une fois votre code (par exemple, votre flux) déployé, accédez au tableau de bord Cloud Monitoring et sélectionnez votre projet. Vous pouvez ensuite facilement passer de l'explorateur de journaux, des métriques et des traces pour surveiller la production.
Journaux et traces
Dans le menu de gauche, cliquez sur "Explorateur de journaux" sous l'en-tête "Explorer".
Tous les journaux associés à votre code Genkit déployé s'affichent ici, y compris console.log()
. Tout journal portant le préfixe [genkit]
est un journal interne à Genkit qui contient des informations pouvant être intéressantes à des fins de débogage. Par exemple, les journaux Genkit au format Config[...]
contiennent des métadonnées telles que la température et les valeurs topK pour des inférences LLM spécifiques.
Les journaux au format Output[...]
contiennent les réponses du LLM, tandis que les journaux Input[...]
contiennent les requêtes. Cloud Logging dispose de LCA robustes qui permettent de contrôler précisément l'accès aux journaux sensibles.
Un volet d'aperçu de la trace s'affiche, offrant un aperçu rapide des détails de la trace. Pour obtenir tous les détails, cliquez sur le lien "Afficher dans la trace" en haut à droite du volet.
L'élément de navigation le plus important de Cloud Trace est le nuage de points des traces. Il contient toutes les traces collectées sur une période donnée.
Cliquez sur chaque point de données pour afficher ses détails sous le nuage de points.
La vue détaillée contient la forme du flux, y compris toutes les étapes, ainsi que des informations temporelles importantes. Cloud Trace peut intercaler tous les journaux associés à une trace donnée dans cette vue. Sélectionnez l'option"Afficher développé " dans le menu déroulant "Journaux et événements".
La vue obtenue permet d'examiner en détail les journaux dans le contexte de la trace, y compris les invites et les réponses du LLM.
Métriques
Pour afficher toutes les métriques exportées par Genkit, cliquez sur "Gestion des métriques" sous l'en-tête "Configurer" dans le menu de gauche.
La console de gestion des métriques contient une vue tabulaire de toutes les métriques collectées, y compris celles qui concernent Cloud Run et son environnement.
Cliquez sur l'option "Charge de travail" pour afficher une liste incluant les métriques collectées par Genkit. Toute métrique avec le préfixe genkit
constitue une métrique Genkit interne.
Genkit collecte plusieurs catégories de métriques, y compris les métriques de fonctionnalité, d'action et de génération. Chaque métrique comporte plusieurs dimensions utiles qui facilitent le filtrage et le regroupement efficaces.
Voici quelques dimensions courantes:
flow_name
: nom de premier niveau du flux.flow_path
: le segment et son segment parent se chevauchent jusqu'au segment racine.error_code
: en cas d'erreur, code d'erreur correspondant.error_message
: en cas d'erreur, message d'erreur correspondant.model
: nom du modèle.
Métriques des fonctionnalités
Les fonctionnalités sont le point d'entrée de premier niveau de votre code Genkit. Dans la plupart des cas, il s'agit d'un flux. Sinon, il s'agit de la partie supérieure d'une trace.
Nom | Type | Description |
---|---|---|
genkit/feature/requests | Compteur | Nombre de requêtes |
genkit/feature/latency | Histogramme | Latence d'exécution en ms |
Chaque métrique d'éléments géographiques contient les dimensions suivantes:
Nom | Description |
---|---|
nom | Nom de la fonctionnalité. Dans la plupart des cas, il s'agit du flux Genkit de premier niveau. |
état | "success" ou "failure", selon que la demande de fonctionnalité a réussi ou non |
erreur | Défini uniquement lorsque status=failure . Indique le type d'erreur à l'origine de l'échec |
source | Langue source de Genkit. Par exemple, 'ts' |
sourceVersion | Version du framework Genkit |
Métriques d'action
Les actions représentent une étape d'exécution générique dans Genkit. Les métriques suivantes seront suivies pour chacune de ces étapes:
Nom | Type | Description |
---|---|---|
genkit/action/requests | Compteur | Nombre de fois où cette action a été exécutée |
genkit/action/latency | Histogramme | Latence d'exécution en ms |
Chaque métrique d'action contient les dimensions suivantes:
Nom | Description |
---|---|
nom | Nom de l'action |
featureName | Nom de la fonctionnalité parente en cours d'exécution |
chemin d'accès | Chemin d'exécution depuis la racine de l'élément géographique jusqu'à cette action. Exemple : '/myFeature/parentAction/thisAction' |
état | "success" ou "failure", selon que l'action a réussi ou non |
erreur | Défini uniquement lorsque status=failure . Indique le type d'erreur à l'origine de l'échec |
source | Langue source de Genkit. Par exemple, 'ts' |
sourceVersion | Version du framework Genkit |
Générer des métriques
Il s'agit de métriques d'action spéciales liées aux actions qui interagissent avec un modèle. En plus des requêtes et de la latence, les entrées et les sorties sont également suivies, avec des dimensions spécifiques au modèle qui facilitent le débogage et le réglage de la configuration.
Nom | Type | Description |
---|---|---|
genkit/ai/generate/requests | Compteur | Nombre de fois où ce modèle a été appelé |
genkit/ai/generate/latency | Histogramme | Latence d'exécution en ms |
genkit/ai/generate/input/tokens | Compteur | Jetons d'entrée |
genkit/ai/generate/output/tokens | Compteur | Jetons de sortie |
genkit/ai/generate/input/characters | Compteur | Caractères d'entrée |
genkit/ai/generate/output/characters | Compteur | Caractères de sortie |
genkit/ai/generate/input/images | Compteur | Images d'entrée |
genkit/ai/generate/output/images | Compteur | Images de sortie |
genkit/ai/generate/input/audio | Compteur | Fichiers audio d'entrée |
genkit/ai/generate/output/audio | Compteur | Fichiers audio de sortie |
Chaque métrique de génération contient les dimensions suivantes:
Nom | Description |
---|---|
modelName | Nom du modèle |
featureName | Nom de la fonctionnalité parente en cours d'exécution |
chemin d'accès | Chemin d'exécution depuis la racine de l'élément géographique jusqu'à cette action. Exemple : '/myFeature/parentAction/thisAction' |
latencyMs | Temps de réponse du modèle |
état | "success" ou "failure", selon que la demande de fonctionnalité a réussi ou non |
erreur | Défini uniquement lorsque status=failure . Indique le type d'erreur à l'origine de l'échec |
source | Langue source de Genkit. Par exemple, 'ts' |
sourceVersion | Version du framework Genkit |
Vous pouvez visualiser les métriques dans l'explorateur de métriques. Dans le menu de gauche, cliquez sur "Explorateur de métriques" sous l'en-tête "Explorer".
Sélectionnez une métrique en cliquant sur le menu déroulant "Sélectionner une métrique", puis sélectionnez "Nœud générique", "Genkit" et une métrique.
La visualisation de la métrique dépend de son type (compteur, histogramme, etc.). L'explorateur de métriques fournit des fonctionnalités d'agrégation et de requête robustes pour vous aider à représenter graphiquement les métriques en fonction de leurs différentes dimensions.
Délai de télémétrie
Un léger délai peut s'écouler avant que la télémétrie d'une exécution particulière d'un flux ne s'affiche dans la suite d'opérations de Cloud. Dans la plupart des cas, ce délai est inférieur à une minute.
Quotas et limites
Plusieurs quotas sont importants à prendre en compte:
Coût
Cloud Logging, Cloud Trace et Cloud Monitoring proposent des niveaux sans frais généreux. Vous trouverez les tarifs spécifiques sur les liens suivants: