Ce document explique comment configurer des notifications programmatiques d'anomalies de budget et de coût (aperçu) à l'aide de Pub/Sub.
Les budgets et les anomalies de coût sont généralement configurés pour envoyer des notifications par e-mail. Si vous utilisez des budgets ou la détection des anomalies de coûts comme outil de contrôle des coûts, les notifications par e-mail ne sont peut-être pas la meilleure méthode pour vous assurer que vous prenez rapidement les mesures nécessaires pour contrôler vos coûts. Vous pouvez configurer et utiliser des notifications programmatiques pour automatiser les réponses de contrôle des coûts. Voici quelques exemples de réponses automatiques de contrôle des coûts :
- Intégrer Slack pour répondre plus rapidement
- Gérer la consommation de ressources pour réduire les coûts
- Limiter les dépenses en désactivant la facturation lorsque vous atteignez votre budget
Limites
Les budgets se basent sur une estimation des données Cloud Billing, susceptibles de changer avant que la facture ne soit finalisée.
Si vous définissez des règles d'administration pour limiter le partage de ressources par domaine (par exemple, en activant
enforceInTransitsur les sujets Pub/Sub), une erreur peut se produire lorsque vous essayez de configurer ou d'associer des sujets Pub/Sub. Dans ce cas, vous devrez peut-être forcer l'accès au compte pour associer correctement un sujet Pub/Sub à un budget. Pour forcer l'accès au compte, procédez comme suit :- Supprimez la règle d'administration contenant la contrainte de restriction de domaine en utilisant l'une des méthodes suivantes :
- Suivez la procédure pour associer un sujet Pub/Sub.
- Rétablissez la règle d'administration pour l'organisation ou le projet (facultatif).
Autorisations requises pour cette tâche
Notifications budgétaires
Pour configurer des notifications budgétaires programmatiques, vous devez disposer des autorisations nécessaires pour créer ou modifier des budgets et des sujets Pub/Sub. Vous avez besoin d'un ensemble d'autorisations différent en fonction de votre niveau d'accès.
| Utilisateurs disposant des autorisations associées au compte de facturation Cloud | Utilisateurs disposant uniquement d'autorisations au niveau du projet (preview) |
|---|---|
|
Si votre organisation utilise des rôles personnalisés pour l'authentification, vous devez disposer des autorisations suivantes dans les rôles personnalisés :
Pour que les rôles personnalisés puissent modifier un budget Cloud Billing existant afin de l'associer à un sujet Pub/Sub existant, vous avez besoin des autorisations suivantes :
Pour obtenir les autorisations nécessaires à l'aide de rôles prédéfinis, demandez à votre administrateur de vous attribuer l'un des rôles IAM Cloud Billing prédéfinis suivants sur votre compte de facturation Cloud : Demandez à votre administrateur de vous accorder le rôle suivant sur le projet cible contenant les sujets Pub/Sub : |
Si votre organisation utilise des rôles personnalisés pour l'authentification, vous devez disposer des autorisations suivantes dans les rôles personnalisés :
Pour obtenir les autorisations nécessaires à l'aide de rôles prédéfinis, demandez à votre administrateur de vous attribuer l'un des rôles IAM Cloud Billing prédéfinis suivants sur le projet : Demandez à votre administrateur de vous accorder le rôle suivant sur le projet cible contenant les sujets Pub/Sub : |
Notifications d'anomalies
Pour configurer des notifications d'anomalie programmatiques, vous devez disposer des autorisations nécessaires pour créer ou modifier des anomalies et des sujets Pub/Sub. Vous devez disposer d'autorisations sur le compte de facturation Cloud.
| Utilisateurs disposant des autorisations associées au compte de facturation Cloud (aperçu) |
|---|
|
Pour obtenir les autorisations nécessaires à l'aide de rôles prédéfinis, demandez à votre administrateur de vous attribuer l'un des rôles IAM Cloud Billing prédéfinis suivants sur votre compte de facturation Cloud : Demandez à votre administrateur de vous accorder le rôle suivant sur le projet cible contenant les sujets Pub/Sub : |
Créer un sujet Pub/Sub
Pour configurer des notifications budgétaires ou d'anomalie programmatiques, vous devez d'abord créer un sujet Pub/Sub. Si vous avez déjà configuré un sujet Pub/Sub pour les budgets ou les anomalies de coûts, vous pouvez ignorer cette étape.
Accédez à la page Pub/Sub de la console Google Cloud .
Sélectionnez un projet pour héberger le sujet Pub/Sub.
Lorsque vous configurez des sujets Pub/Sub pour les notifications de facturation, nous vous recommandons d'utiliser un projet d'administration FinOps pour contenir vos sujets Pub/Sub liés à la facturation.
Cliquez sur Créer un sujet.
Dans le champ ID du sujet, indiquez un nom de sujet.
Conservez les paramètres d'abonnement et de chiffrement par défaut, puis cliquez sur Créer.
Associer votre sujet Pub/Sub
Pour permettre aux notifications automatisées de recevoir des messages Pub/Sub avec l'état actuel de votre budget ou de votre anomalie, vous devez associer votre budget ou votre anomalie à votre sujet Pub/Sub.
Notifications budgétaires
Pour associer un sujet Pub/Sub à un budget Cloud Billing, procédez comme suit :
| Utilisateurs disposant des autorisations associées au compte de facturation Cloud | Utilisateurs disposant uniquement d'autorisations au niveau du projet (preview) |
|---|---|
|
|
Notifications d'anomalies
Pour associer un sujet Pub/Sub à une anomalie de coût, procédez comme suit :
| Utilisateurs disposant des autorisations associées au compte de facturation Cloud (aperçu) |
|---|
|
Format des notifications
Les notifications envoyées au sujet Pub/Sub comprennent deux parties :
- Attributs : ensemble de paires valeur/clé décrivant l'événement.
Données : chaîne contenant un objet JSON qui rassemble les détails de l'alerte budgétaire.
Notifications budgétaires
Attributs
Les attributs sont des paires valeur/clé présentes dans toutes les notifications que Cloud Billing envoie à votre sujet Pub/Sub. Les notifications comportent toujours l'ensemble de paires valeur-clé suivant, quelle que soit leur charge utile.
| Nom de l'attribut | Exemple | Description |
|---|---|---|
| billingAccountId |
01D4EE-079462-DFD6EC
|
Identifiant du compte de facturation Cloud propriétaire du budget. |
| budgetId |
de72f49d-779b-4945-a127-4d6ce8def0bb
|
Identifiant de l'alerte budgétaire dans le compte Cloud Billing. |
| schemaVersion |
1.0
|
Version du schéma des notifications. |
Données
Les détails de l'alerte budgétaire sont renvoyés dans une chaîne UTF-8 avec un code en base64 qui contient un objet JSON avec les propriétés suivantes :
| Données | Exemple | Description |
|---|---|---|
budgetDisplayName
|
"My Personal Budget"
|
Nom lisible par l'humain attribué au budget. |
costAmount
|
140.321
|
Montant des coûts accumulés. Le type de coûts suivis dépend des filtres et des paramètres du budget. |
costIntervalStart
|
"2021-02-01T08:00:00Z"
|
Début de la période de l'alerte budgétaire. "costAmount" inclut des coûts d'utilisation à partir de ce moment. Il s'agit du premier jour de la période budgétaire (mois, trimestre, année ou période personnalisée) au cours de laquelle le budget a été utilisé. |
budgetAmount
|
152.557
|
Montant du budget. |
budgetAmountType
|
"SPECIFIED_AMOUNT"
|
Type du montant du budget. Il peut s'agir de l'une des valeurs suivantes :
|
alertThresholdExceeded
|
0.9
|
Le seuil maximal de l'alerte configurée relative aux coûts réels a été franchi. La valeur est un pourcentage au format décimal (par exemple, 0,9 correspond à 90 %). Cette clé n'est pas présente si le coût réel ne dépasse aucun seuil. |
forecastThresholdExceeded
|
0.2
|
Le seuil d'alerte de coût prévu le plus élevé a été dépassé. La valeur est un pourcentage au format décimal (par exemple, 0,2 correspond à 20 %). Cette clé n'est pas présente si le coût prévu ne dépasse aucun seuil. |
currencyCode
|
"USD"
|
Devise de l'alerte budgétaire. Tous les coûts et les montants de l'alerte budgétaire sont présentés dans cette devise. |
Notifications d'anomalies
Attributs
Les attributs sont des paires valeur/clé présentes dans toutes les notifications que Cloud Billing envoie à votre sujet Pub/Sub. Les notifications comportent toujours l'ensemble de paires valeur/clé suivant, quelle que soit leur charge utile.
| Nom de l'attribut | Exemple | Description |
|---|---|---|
| scope |
scope_project
|
Champ d'application de l'anomalie. |
| billingAccountName |
billingAccounts/01D4EE-079462-DFD6EC
|
Identifiant du compte de facturation Cloud dans lequel l'anomalie s'est produite. |
| resourceDisplayName |
My project
|
Nom à afficher de la ressource dans laquelle l'anomalie s'est produite. |
| resourceName |
projects/123456
|
Identifiant de la ressource dans laquelle l'anomalie s'est produite. |
| SchemaVersion |
1.0
|
Version du schéma Pub/Sub. |
Données
Les détails de l'alerte d'anomalie sont renvoyés dans une chaîne UTF-8 avec un code en base64 qui contient un objet JSON avec les propriétés suivantes :
| Données | Exemple | Description |
|---|---|---|
anomalyName
|
billingAccounts/01D4EE-079462-DFD6EC/anomalies/aaa
|
Nom de ressource de l'anomalie. |
billingAccountName
|
billingAccounts/01D4EE-079462-DFD6EC
|
Identifiant du compte de facturation. |
resourceName
|
"projects/12345"
|
Identifiant de la ressource dans laquelle l'anomalie s'est produite. |
resourceDisplayName
|
"My project"
|
Nom à afficher de la ressource dans laquelle l'anomalie s'est produite. |
detectionDate
|
"2024-02-01T08:00:00Z"
|
Date à laquelle l'anomalie de coût a été détectée. |
Scope
|
SCOPE_PROJECT
|
Indique le champ d'application de l'anomalie. |
expectedSpendAmount
|
{
|
Dépenses attendues pour la ressource. |
actualSpendAmount
|
196.22
|
Dépenses réelles pour la ressource. |
deviationAmount
|
31.01
|
Différence entre les dépenses réelles et les dépenses prévues. |
deviationPercentage
|
18.77
|
Pourcentage de l'écart par rapport aux dépenses attendues. |
Root cause
|
root_causes {
resource: "services/XXX-XXXX-XXX"
display_name: "BigQuery"
cause_type: CAUSE_TYPE_SERVICE
deviation {
expected_spend {
currency_code: "USD"
units: "5000"
}
actual_spend {
currency_code: "USD"
units: "5000"
}
deviation_amount {
currency_code: "USD"
units: "5000"
}
deviation_percentage: "Infinity"
}
sub_causes {
resource: "locations/us-west1",
display_name: "us-west1",
cause_type: CAUSE_TYPE_LOCATION,
deviation {
expected_spend {
currency_code: "USD",
}
actual_spend {
currency_code: "USD",
units:"5000"
}
deviation_amount {
currency_code: "USD",
units: "5000"
}
deviation_percentage: "Infinity"
}
sub_causes {
resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX"
display_name: "Some display name"
cause_type: CAUSE_TYPE_SKU
deviation {
expected_spend {
currency_code: "USD"
}
actual_spend {
currency_code: "USD"
units: 5000
}
deviation_amount {
currency_code: "USD"
units: 5000
}
deviation_percentage: "Infinity"
}
}
sub_causes {
resource: "services/XXXX-XXXX-XXXX/skus/XXXX-XXXX-XXXX"
display_name: "Some display name"
cause_type: CAUSE_TYPE_SKU
deviation {
expected_spend {
currency_code: "USD"
units: "1"
nanos: 5413077
}
actual_spend {
currency_code: "USD"
units: "1",
nanos: 122606000
}
deviation_amount {
currency_code: "USD"
nanos: 117192923
}
deviation_percentage:11.656196419841217
}
}
}
}
|
Champ répété contenant des informations sur la cause première de l'anomalie. |
Garanties de distribution pour les notifications à Pub/Sub
Après avoir associé votre budget ou votre anomalie à un sujet Pub/Sub, vous pouvez vous attendre à recevoir des notifications automatisées comme suit :
Notifications budgétaires
- Les notifications de budget sont envoyées plusieurs fois par jour au sujet Pub/Sub avec l'état actuel de votre budget. Cette fréquence est différente de celle des e-mails d'alerte budgétaire, qui ne sont envoyés que lorsqu'un seuil budgétaire est atteint.
- Les notifications Pub/Sub sont envoyées même si le compte Cloud Billing n'est pas utilisé.
- La réception de la première notification Pub/Sub peut prendre plusieurs heures.
- Pub/Sub garantit une distribution sans faute au minimum d'une fois. Vous pouvez recevoir les messages plusieurs fois ou dans le désordre.
- Si la distribution échoue en raison d'une mauvaise configuration du sujet Pub/Sub, vous n'en serez pas informé.
La distribution peut échouer pour l'une des raisons suivantes :
- Le sujet Pub/Sub n'existe plus.
- Cloud Billing n'est plus autorisé à publier dans le sujet Pub/Sub.
- Vous avez dépassé votre quota de notifications.
- Vous avez mis en place des règles d'administration qui limitent le partage des ressources par domaine.
Notifications d'anomalies
- Les notifications d'anomalie ne sont envoyées au sujet Pub/Sub que lorsque le seuil est atteint.
- Pub/Sub garantit une distribution sans faute au minimum d'une fois. Vous pouvez recevoir les messages plusieurs fois ou dans le désordre.
- Si la distribution échoue en raison d'une mauvaise configuration du sujet Pub/Sub, vous n'en serez pas informé.
La distribution peut échouer pour l'une des raisons suivantes :
- Le sujet Pub/Sub n'existe plus.
- Le compte de facturation Cloud n'est plus autorisé à publier dans le sujet Pub/Sub.
- Vous avez dépassé votre quota de notifications.
- Vous avez mis en place des règles d'administration qui limitent le partage des ressources par domaine.
Pour en savoir plus, consultez Publier et recevoir des messages dans Pub/Sub.
Étapes suivantes
Pour en savoir plus sur l'utilisation des notifications programmatiques, consultez les exemples suivants de réponses programmatiques de contrôle des coûts :
- Écouter vos notifications
- Envoyer des notifications à Slack
- Contrôler l'utilisation des ressources avec les notifications
- Désactiver l'utilisation de la facturation avec les notifications