Vous pouvez envoyer les mêmes métriques quotidiennes agrégées sur l’activité des utilisateurs à votre collecteur compatible avec OpenTelemetry. Kiro transmet les crédits, les crédits de dépassement, les messages, les conversations et le nombre de messages par modèle une fois par jour à 2 h UTC. L’exportation est configurée par un administrateur et ne peut pas être configurée individuellement par les utilisateurs.
Kiro prend en charge OTLP/gRPC et OTLP/HTTP avec l’encodage protobuf. gRPC est utilisé par défaut. Dans la console Kiro, l’option HTTP est nommée HTTP/protobuf.
L’exportation OpenTelemetry et le rapport CSV dans Amazon S3 sont indépendants. Vous pouvez activer l’un ou l’autre des formats, ou les deux. Kiro stocke uniquement l’ARN de votre secret AWS Secrets Manager et lit le point de terminaison du collecteur et l’en-tête d’authentification dans le secret au moment de l’exportation.
Choisissez le protocole, le point de terminaison et l’unique en-tête d’authentification acceptés par votre destination avant de créer le secret. Utilisez les configurations de destination suivantes :
| Destination | Protocole | Point de terminaison | En-tête d’authentification |
|---|---|---|---|
| Honeycomb | gRPC | https://api.honeycomb.io:443 | X-Honeycomb-Team=ingest-key |
| Elastic | gRPC | https://deployment.ingest.region.gcp.elastic-cloud.com:443 | Authorization=ApiKey base64-credential |
| OpenSearch par l’intermédiaire d’un récepteur OTLP comme Data Prepper | gRPC | https://collector-host:21891 | Authorization=Basic credential |
| Collecteur OTLP auto-hébergé | gRPC ou HTTP/protobuf | https://collector-host:port | En-tête d’authentification requis par votre collecteur |
| Datadog | HTTP/protobuf | https://otlp.datadoghq.com/v1/metrics | dd-api-key=api-key |
| Amazon CloudWatch | HTTP/protobuf | https://monitoring.region.amazonaws.com/v1/metrics | Authorization=Bearer api-key |
| Dynatrace | HTTP/protobuf | https://environment.live.dynatrace.com/api/v2/otlp | Authorization=Api-Token access-token |
Remplacez deployment, region, collector-host et environment par les valeurs de votre destination. Remplacez l’espace réservé aux informations d’identification dans l’en-tête par vos informations d’identification d’ingestion.
Utilisez des informations d’identification d’ingestion plutôt que des informations d’identification d’administration. Pour Honeycomb, utilisez l’ID et le secret combinés de la clé d’ingestion, et non uniquement l’ID de la clé. Pour Elastic, encodez id:api_key en base64. Pour Datadog, utilisez une clé API, et non une clé d’application. Pour Dynatrace, utilisez un jeton d’accès doté de l’autorisation metrics.ingest. Amazon CloudWatch exige une clé API avec jeton porteur, car Kiro ne peut pas signer l’exportation avec AWS Signature Version 4 (SigV4). Pour créer la clé, consultez Configuration de l’authentification par jeton de porteur pour Metrics dans le Guide de l’utilisateur Amazon CloudWatch.
Créez une clé AWS KMS symétrique gérée par le client pour le chiffrement et le déchiffrement. La clé aws/secretsmanager par défaut ne peut pas être utilisée, car Kiro lit le secret à partir d’un autre compte AWS. La clé KMS, le secret Secrets Manager et le profil Kiro doivent se trouver dans la même Région AWS.
Ajoutez l’instruction suivante à la politique de la clé KMS. Remplacez region par la Région de votre profil Kiro. Cette instruction accorde au principal de service q.amazonaws.com l’autorisation de déchiffrer le secret par l’intermédiaire de Secrets Manager dans cette Région.
{ "Sid": "AllowKiroDecryptViaSecretsManager", "Effect": "Allow", "Principal": { "Service": "q.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.region.amazonaws.com" } } }
Enregistrez la politique. Vous sélectionnerez cette clé comme clé de chiffrement lorsque vous créerez le secret.
Dans la même Région que votre profil Kiro, créez un secret de type Autre type de secret dans AWS Secrets Manager. Dans l'onglet Texte brut, saisissez un objet JSON contenant exactement les clés suivantes :
{ "OTEL_EXPORTER_OTLP_ENDPOINT": "https://collector-host:443", "OTEL_EXPORTER_OTLP_HEADERS": "Header-Name=token" }
OTEL_EXPORTER_OTLP_ENDPOINT est le point de terminaison OTLP de votre collecteur.OTEL_EXPORTER_OTLP_HEADERS est un en-tête d’authentification au format Name=value. Kiro divise la chaîne à la première occurrence de = afin que le remplissage base64 comme == dans la valeur soit préservé.Le point de terminaison de votre collecteur doit être accessible depuis l’Internet public et utiliser un certificat TLS signé par une autorité de certification publique reconnue. Kiro rejette les certificats autosignés. Utilisez un nom d’hôte plutôt qu’une adresse IP, car Kiro vérifie le nom d’hôte du certificat.
Pour Clé de chiffrement, sélectionnez la clé KMS gérée par le client que vous avez créée. Ne sélectionnez pas aws/secretsmanager. Ajoutez la politique de ressource suivante au secret afin que Kiro puisse lire sa valeur :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKiroGetSecretValue", "Effect": "Allow", "Principal": { "Service": "q.amazonaws.com" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
Stockez le secret et copiez son ARN, qui respecte le format arn:aws:secretsmanager:region:accountId:secret:secretName-randomSuffix.
Connectez-vous à la console AWS.
Passez à la console Kiro. Vous devez disposer des autorisations décrites dans Politique : autoriser les administrateurs à configurer Kiro et à abonner des utilisateurs.
Choisissez Paramètres.
Sous Rapports d'activité des utilisateurs de Kiro, choisissez Modifier.
Choisissez le format d'exportation OpenTelemetry (OTel).
Saisissez l'ARN du secret Secrets Manager.
Sélectionnez le protocole accepté par votre collecteur : gRPC ou HTTP/protobuf.
Choisissez Activer.
La première exportation s’exécute pendant le prochain cycle de 2 h UTC. Les métriques d’une date d’activité sont envoyées le jour suivant, et Kiro n’envoie aucune donnée à votre collecteur lorsque vous enregistrez la configuration.
Kiro n’envoie aucune notification de réussite ou d’échec. Confirmez la livraison dans votre destination en interrogeant kiro.daily.credits ou une autre métrique exportée et en appliquant un filtre sur l’attribut de ressource service.name = kiro-enterprise.
Une exportation réussie présente les caractéristiques suivantes :
kiro.daily.credits et kiro.daily.messages sont présents.kiro.daily.model_messages comporte un point de données par modèle.date indique la date d’activité, soit le jour précédant l’exécution de l’exportation.kiro.user.id, kiro.client.type et kiro.user.new.Les systèmes dorsaux basés sur Prometheus peuvent remplacer les points dans les noms de métriques par des traits de soulignement. Par exemple, kiro.daily.credits peut s’afficher sous la forme kiro_daily_credits.
Vérifiez la destination, car Kiro considère une requête acceptée par le collecteur comme réussie même si le collecteur rejette par la suite ses points de données.
| Destination | Emplacement de la vérification |
|---|---|
| Honeycomb | Ouvrez le jeu de données kiro-enterprise et visualisez SUM(kiro.daily.credits). |
| Elastic | Dans Kibana, utilisez Discover ou Metrics Explorer et appliquez le filtre service.name : "kiro-enterprise". |
| OpenSearch | Interrogez l’index configuré pour serviceName:kiro-enterprise. Par exemple : curl -u user:password "https://opensearch-host:9200/index-prefix-*/_search?q=serviceName:kiro-enterprise&pretty". |
| Datadog | Dans Metrics Explorer, ouvrez kiro.daily.credits et appliquez un filtre sur la balise service. |
| Amazon CloudWatch | Exécutez une requête de plage PromQL sur https://monitoring.region.amazonaws.com/api/v1/query_range. Les métriques ne s’affichent pas dans la console de métriques classique ni au moyen de ListMetrics. |
| Dynatrace | Dans Notebooks, exécutez une requête DQL comme timeseries mm = sum(kiro.daily.model_messages), by:{kiro.model.name}, from: -2h. |
Chaque série chronologique obtenue reçoit un point de données quotidien. Si une requête de plage ne renvoie aucune donnée, utilisez une fenêtre étroite autour de l’heure d’exportation et un pas précis, comme 60 secondes. Un nom de métrique peut rester dans un index ou dans la saisie semi-automatique une fois que ses points de données se trouvent hors de la fenêtre temporelle sélectionnée ; confirmez donc que la requête renvoie des points de données plutôt qu’uniquement un nom de métrique.
Toutes les métriques exportées sont des compteurs Sum OTLP monotones dans l’espace de noms kiro.daily.*.
| Métrique | Description | Colonne CSV correspondante |
|---|---|---|
kiro.daily.credits | Crédits utilisés | Credits_Used |
kiro.daily.overage_credits | Crédits de dépassement utilisés | Overage_Credits_Used |
kiro.daily.messages | Nombre total de messages | Total_Messages |
kiro.daily.conversations | Conversations de clavardage | Chat_Conversations |
kiro.daily.model_messages | Messages par modèle | *model_name*_messages |
Chaque point de données kiro.daily.model_messages comprend kiro.model.name, qui identifie le modèle représenté par la colonne CSV dynamique correspondante.
Chaque point de données peut comprendre les attributs suivants :
| Attribut | Type | Présence | Description |
|---|---|---|---|
kiro.user.id | chaîne | Toujours | ID d’utilisateur IAM Identity Center de l’utilisateur |
kiro.client.type | chaîne | Toujours | Type de client, comme KIRO_IDE, KIRO_CLI ou PLUGIN |
kiro.user.new | booléen | Toujours | Indique si l’utilisateur a activé son abonnement à la date d’activité |
date | chaîne | Lorsqu’il est défini | Date d’activité en UTC |
kiro.user.email | chaîne | Lorsqu’elle peut être résolue | Adresse courriel de l’utilisateur ; omise si la recherche dans le répertoire ne peut pas la résoudre |
kiro.subscription.tier | chaîne | Lorsqu’il est défini | Niveau d’abonnement |
kiro.usage.limit | entier | Lorsqu’il est défini | Limite d’utilisation de l’utilisateur |
kiro.overage.enabled | booléen | Lorsqu’il est défini | Indique si le dépassement est activé pour l’utilisateur |
kiro.overage.cap | double | Lorsqu’il est défini | Plafond de dépassement de l’utilisateur, avec la même précision décimale que le rapport CSV |
kiro.model.name | chaîne | Uniquement pour kiro.daily.model_messages | Nom du modèle ; les modèles masqués sont exclus |
Chaque exportation comprend également les attributs de ressource suivants :
| Attribut de ressource | Valeur | Description |
|---|---|---|
service.name | kiro-enterprise | Valeur constante utilisée pour filtrer les métriques Kiro |
kiro.profile.arn | arn:aws:codewhisperer:region:accountId:profile/profileId | ARN du profil Kiro qui a produit les métriques |
kiro.profile.id | ID de profil | ID du profil Kiro |
kiro.account.id | ID de compte AWS | Compte qui contient le profil Kiro |
Si aucune métrique n’arrive, vérifiez que le secret et la clé KMS se trouvent dans la Région du profil Kiro. Confirmez que q.amazonaws.com dispose de l’autorisation secretsmanager:GetSecretValue sur le secret et des autorisations kms:Decrypt et kms:DescribeKey sur la clé KMS. Vérifiez ensuite le protocole, l’accessibilité du point de terminaison, le certificat TLS et l’en-tête d’authentification requis par votre destination.
Exporter l’activité des utilisateurs avec OpenTelemetry