• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Premiers pas avec New Relic et Terraform

Terraform est un outil logiciel d'infrastructure en tant que code populaire développé par HashiCorp. Vous l'utilisez pour provisionner toutes sortes d' infrastructure et de services, y compris New Relic et les alertes. Dans ce guide, vous apprendrez à configurer New Relic avec Terraform, mais vous pouvez consulter la documentation du fournisseur New Relic Terraform pour savoir comment configurer d'autres ressources New Relic.

Conseil

Simplifiez votre workflow en intégrant la documentation Terraform directement dans votre IDE avec l'extension IDE CodeStream de New Relic. Ajoutez des modèles pour n’importe quel type de ressource New Relic en un seul clic.

Installez CodeStream pour VS Code, Visual Studio ou tout autre IDE JetBrains, puis recherchez l’icône de clé en haut du volet CodeStream.

Vous commencerez par fournir une règle d'alerte, quatre conditions d'alerte et un canal de notification. Les quatre conditions d'alerte sont basées sur les quatre signaux dorés de monitoring introduits dans le livre Site Reliability Engineering de Google:

  • Latency: Le temps nécessaire à votre application pour traiter une demande.
  • Traffic: Le nombre de requests que votre système reçoit.
  • Errors: Le taux de requests qui échouent.
  • Saturation: La pression sur les ressources pour répondre aux exigences de votre application.

Avant de commencer

Pour utiliser ce guide, vous devez avoir des connaissances de base sur New Relic et Terraform. Si vous n'avez pas encore déployé d'agent open source New Relic, installez New Relic pour votre application. Installez également la CLI Terraform.

Bootstrap Terraform et le fournisseur New Relic

Commencez par initialiser un répertoire de travail et créer un fichier de configuration Terraform :

bash
$
mkdir terraform-project && cd terraform-project
$
touch main.tf

Ensuite, demandez à Terraform d’installer et d’utiliser le fournisseur New Relic, en définissant les blocs terraform et required_providers dans main.tf:

terraform {
# Require Terraform version 1.0 (recommended)
required_version = "~> 1.0"
# Require the latest 2.x version of the New Relic provider
required_providers {
newrelic = {
source = "newrelic/newrelic"
}
}
}

Dans ce bloc de code, vous définissez la version requise de Terraform sur 1.0 et définissez le fournisseur New Relic sur la dernière version 2.x. L'utilisation des contraintes de version adaptées à votre configuration offrira une meilleure stabilité à vos exécutions Terraform.

Maintenant que vous avez défini vos versions de fournisseur Terraform et New Relic, vous devez configurer le fournisseur New Relic.

Configurer le fournisseur New Relic

Avec terraform entièrement défini, configurez New Relic provider avec les éléments suivants :

  1. Votre identifiant de compte New Relic.

  2. Votre New Relic . La plupart des clés utilisateur commencent par le préfixe NRAK-.

  3. Votre région New Relic. Votre région est US si votre URL New Relic est one.newrelic.com et EU si votre URL est one.eu.newrelic.com.

    Dans main.tf, définissez ces valeurs sur le fournisseur :

    provider "newrelic" {
    account_id = 12345 # Your New Relic account ID
    api_key = "NRAK-***" # Your New Relic user key
    region = "US" # US or EU (defaults to US)
    }

    En définissant ces valeurs sur le fournisseur New Relic, vous configurez ce fournisseur pour apporter des modifications au nom de votre compte via les API New Relic.

    Conseil

    Vous pouvez également configurer le fournisseur New Relic à l’aide de variables d’environnement. Il s’agit d’un moyen utile de définir des valeurs par défaut pour la configuration de votre fournisseur.

    Pour plus d'informations sur la configuration du fournisseur New Relic, n'hésitez pas à consulter notre documentation officielle du fournisseur.

    Une fois votre fournisseur New Relic configuré, initialisez Terraform :

    bash
    $
    terraform init

    Une fois que Terraform a terminé d'installer et d'enregistrer le fournisseur New Relic, vous recevrez un message de réussite et quelques étapes pratiques, telles que l'exécution de terraform plan. Cependant, avant de pouvoir exécuter terraform plan, vous devez créer vos ressources.

Créer une règle d'alerte New Relic avec les alertes signaux dorés

Avec le fournisseur New Relic configuré et initialisé, vous pouvez définir une stratégie d'alerte pour votre application.

Étant donné que vous ciblez une application spécifique, utilisez un newrelic_entity pour récupérer les informations de l'application à partir de New Relic et nous permettre de référencer ces données ailleurs dans la configuration :

data "newrelic_entity" "example_app" {
name = "Your App Name" # Must be an exact match to your application name in New Relic
domain = "APM" # or BROWSER, INFRA, MOBILE, SYNTH, depending on your entity's domain
type = "APPLICATION"
}

Ensuite, créez un newrelic_alert_policy. Donnez à la politique un nom dynamique basé sur le nom de votre application. Cela permet de préciser la portée de la politique :

resource "newrelic_alert_policy" "golden_signal_policy" {
name = "Golden Signals - ${data.newrelic_entity.example_app.name}"
}

À ce stade, vous devriez pouvoir tester votre configuration avec un essai à sec :

bash
$
terraform plan

Vous devriez voir une sortie qui affiche le plan d’exécution de Terraform. Le plan contient les actions que Terraform exécute lorsque vous exécutez terraform apply:

bash
# Example output
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# newrelic_alert_policy.golden_signal_policy will be created
+ resource "newrelic_alert_policy" "golden_signal_policy" {
+ account_id = (known after apply)
+ id = (known after apply)
+ incident_preference = "PER_POLICY"
+ name = "Golden Signals - Your App Name"
}
Plan: 1 to add, 0 to change, 0 to destroy.
------------------------------------------------------------------------

Dans ce cas, le plan vous montre que Terraform créera une nouvelle règle d'alerte lorsque vous exécuterez terraform apply. Après avoir vérifié les détails, exécutez le plan pour provisionner la ressource règle d'alerte dans votre compte New Relic :

bash
$
terraform apply

Chaque fois que vous modifiez apply , Terraform vous demande de confirmer les actions que vous lui avez demandé d'exécuter. Tapez « oui ».

Pendant son exécution, Terraform envoie le log à votre console :

bash
# Example output of `terraform apply`
newrelic_alert_policy.golden_signal_policy: Creating...
newrelic_alert_policy.golden_signal_policy: Creation complete after 1s [id=111222333]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Connectez-vous à New Relic et accédez à Alert Policies pour confirmer que Terraform a créé votre nouvelle politique.

Au fur et à mesure que vous avancez dans les étapes suivantes de création d'une condition d'alerte, vous pouvez exécuter terraform apply après avoir configuré chaque ressource. Actualisez votre page Web de règle d'alerte pour voir les nouvelles ressources.

Mise à disposition de la condition d'alerte basée sur les quatre signaux dorés

Ensuite, ajoutez une condition d'alerte pour votre application en fonction des quatre signaux dorés : latence, trafic, erreurs et saturation. Appliquez ces conditions d’alerte à la règle d’alerte que vous avez créée à l’étape précédente.

Latency

La plupart des gens souhaitent éviter les temps de réponse lents. Vous pouvez créer un newrelic_alert_condition qui se déclenche si le temps de réponse global de votre application dépasse cinq secondes pendant cinq minutes :

# Response time
resource "newrelic_alert_condition" "response_time_web" {
policy_id = newrelic_alert_policy.golden_signal_policy.id
name = "High Response Time (Web) - ${data.newrelic_entity.example_app.name}"
type = "apm_app_metric"
entities = [data.newrelic_entity.example_app.application_id]
metric = "response_time_web"
runbook_url = "https://www.example.com"
condition_scope = "application"
term {
duration = 5
operator = "above"
priority = "critical"
threshold = "5"
time_function = "all"
}
}

Notez que vous liez cette condition d'alerte à la règle d'alerte précédemment configurée avec policy_id.

Le newrelic_alert_condition est obsolète et vous souhaiterez utiliser les alertes NRQL à l'avenir. Vous pouvez utiliser la configuration suivante pour créer une alerte NRQL qui exécute la même fonction que ci-dessus :

# Response time - Create Alert Condition
resource "newrelic_nrql_alert_condition" "response_time_alert" {
policy_id = newrelic_alert_policy.golden_signal_policy.id
type = "static"
name = "Response Time - ${data.newrelic_entity.example_app.name}"
description = "High Transaction Response Time"
runbook_url = "https://www.example.com"
enabled = true
violation_time_limit_seconds = 3600
nrql {
query = "SELECT filter(average(newrelic.timeslice.value), WHERE metricTimesliceName = 'HttpDispatcher') OR 0 FROM Metric WHERE appId IN (${data.newrelic_entity.example_app.application_id}) AND metricTimesliceName IN ('HttpDispatcher', 'Agent/MetricsReported/count')"
}
critical {
operator = "above"
threshold = 5
threshold_duration = 300
threshold_occurrences = "ALL"
}
}

Traffic

Traffic représente la quantité de demande placée sur votre système à un moment donné. le débit est une métrique qui mesure la quantité de trafic vers votre application. Créez un newrelic_alert_condition qui se déclenche si le taux de réponse global de votre application tombe en dessous de cinq requests par minute pendant cinq minutes :

# Low throughput
resource "newrelic_alert_condition" "throughput_web" {
policy_id = newrelic_alert_policy.golden_signal_policy.id
name = "Low Throughput (Web)"
type = "apm_app_metric"
entities = [data.newrelic_entity.example_app.application_id]
metric = "throughput_web"
condition_scope = "application"
# Define a critical alert threshold that will
# trigger after 5 minutes below 5 requests per minute.
term {
priority = "critical"
duration = 5
operator = "below"
threshold = "5"
time_function = "all"
}
}

Ce type d'alerte est utile lorsque vous vous attendez à une base de référence de trafic constante tout au long de la journée : une baisse du trafic peut indiquer un problème.

Errors

Si le taux d'erreur de votre application augmente, vous devez le savoir. Créez un newrelic_alert_condition qui se déclenche si le taux d'erreur de votre application dépasse 5 % pendant cinq minutes :

# Error percentage
resource "newrelic_alert_condition" "error_percentage" {
policy_id = newrelic_alert_policy.golden_signal_policy.id
name = "High Error Percentage"
type = "apm_app_metric"
entities = [data.newrelic_entity.example_app.application_id]
metric = "error_percentage"
runbook_url = "https://www.example.com"
condition_scope = "application"
# Define a critical alert threshold that will trigger after 5 minutes above a 5% error rate.
term {
duration = 5
operator = "above"
threshold = "5"
time_function = "all"
}
}

Saturation

La saturation représente le degré de « remplissage » de votre service et peut prendre de nombreuses formes, telles que le temps CPU, l'allocation de mémoire ou la profondeur de la file d'attente. Dans cet exemple, supposons que vous disposez déjà d'un agent New Relic Infrastructure installé sur les hôtes servant votre application et que vous souhaitez configurer une alerte lorsque l'utilisation du processeur dépasse un certain seuil :

# High CPU usage
resource "newrelic_infra_alert_condition" "high_cpu" {
policy_id = newrelic_alert_policy.golden_signal_policy.id
name = "High CPU usage"
type = "infra_metric"
event = "SystemSample"
select = "cpuPercent"
comparison = "above"
runbook_url = "https://www.example.com"
where = "(`applicationId` = '${data.newrelic_entity.example_app.application_id}')"
# Define a critical alert threshold that will trigger after 5 minutes above 90% CPU utilization.
critical {
duration = 5
value = 90
time_function = "all"
}
}

Pour l'alerte d'infrastructure, vous avez créé un newrelic_infra_alert_condition qui se déclenche si l'utilisation globale du processeur sur ces hôtes dépasse 90 % pendant cinq minutes.

Soyez averti lorsqu'une alerte se déclenche

Maintenant que vous avez configuré certaines conditions d'alerte importantes, ajoutez une destination notification et un canal de notification à votre règle d'alerte pour garantir que les bonnes personnes soient averties lorsqu'une alerte se déclenche. Pour ce faire, utilisez un newrelic_notification_destination et un newrelic_notification_channel.

Pour commencer, créez une destination de notification par e-mail pour configurer votre liste de destinataires, qui peut être une personne spécifique ou une équipe. Ceci sera utilisé lors de la création d'un canal de notification :

resource "newrelic_notification_destination" "team_email_destination" {
name = "email-example"
type = "EMAIL"
property {
key = "email"
value = "team.member1@email.com,team.member2@email.com,team.member3@email.com"
}
}

Si vous souhaitez spécifier plusieurs adresses e-mail, utilisez une liste d'adresses e-mail délimitée par des virgules.

Ensuite, créez un modèle de canal de notification par e-mail pour envoyer une notification d'alerte à votre e-mail. Associez le canal à l'ID de destination :

resource "newrelic_notification_channel" "team_email_channel" {
name = "email-example"
type = "EMAIL"
destination_id = newrelic_notification_destination.team_email_destination.id
product = "IINT"
property {
key = "subject"
value = "New Subject"
}
}

Enfin, et surtout, pour appliquer le canal de notification à votre règle d'alerte, créez un newrelic_workflow:

resource "newrelic_workflow" "team_workflow" {
name = "workflow-example"
enrichments_enabled = true
destinations_enabled = true
workflow_enabled = true
muting_rules_handling = "NOTIFY_ALL_ISSUES"
enrichments {
nrql {
name = "Log"
configurations {
query = "SELECT count(*) FROM Metric"
}
}
}
issues_filter {
name = "filter-example"
type = "FILTER"
predicate {
attribute = "accumulations.sources"
operator = "EXACTLY_MATCHES"
values = [ "newrelic" ]
}
}
destination {
channel_id = newrelic_notification_channel.team_email_channel.id
}
}

Un newrelic_workflow relie le canal de notification que vous venez de créer à vos alertes.

Pour finaliser votre configuration de notification, exécutez terraform apply une dernière fois pour vous assurer que toutes vos ressources configurées sont à jour.

Être averti lorsqu'une alerte se déclenche (obsolète)

Important

Les canaux d'alerte sont obsolètes et ne seront pas pris en charge dans les versions futures.

Maintenant que vous avez configuré certaines conditions d'alerte importantes, ajoutez un canal de notification à votre règle d'alerte pour garantir que les bonnes personnes soient averties lorsqu'une alerte se déclenche. Pour ce faire, utilisez un newrelic_alert_channel.

Pour commencer, créez un canal de notification par e-mail pour envoyer une notification d'alerte à votre e-mail. Utilisez ceci lorsque vous souhaitez avertir une personne ou une équipe spécifique lorsque des alertes sont déclenchées :

resource "newrelic_alert_channel" "team_email" {
name = "example"
type = "email"
config {
recipients = "yourawesometeam@example.com"
include_json_attachment = "1"
}
}

Si vous souhaitez spécifier plusieurs recipients, utilisez une liste d'adresses e-mail délimitée par des virgules.

Enfin, et surtout, pour appliquer le canal de notification à votre règle d'alerte, créez un newrelic_alert_policy_channel:

resource "newrelic_alert_policy_channel" "golden_signals" {
policy_id = newrelic_alert_policy.golden_signal_policy.id
channel_ids = [newrelic_alert_channel.team_email.id]
}

Un newrelic_alert_policy_channel relie le canal de notification que vous venez de créer à votre règle d'alerte.

Pour finaliser configuration de vos alertes signaux dorés, exécutez terraform apply une dernière fois pour vous assurer que toutes vos ressources configurées sont à jour.

Crédit supplémentaire

new_relic_alert_channel prend en charge plusieurs types de canaux de notification, notamment le courrier électronique, Slack et PagerDuty. Donc, si vous souhaitez explorer cela davantage, essayez de créer un canal d'alerte pour un deuxième type de canal, tel que Slack :

# Slack notification channel
resource "newrelic_alert_channel" "slack_notification" {
name = "slack-example"
type = "slack"
config {
# Use the URL provided in your New Relic Slack integration
url = "https://hooks.slack.com/services/XXXXXXX/XXXXXXX/XXXXXXXXXX"
channel = "your-slack-channel-for-alerts"
}
}

Avant d' apply cette modification, vous devez ajouter l' application Slack New Relic à votre compte Slack et sélectionner un canal Slack pour envoyer la notification. Avec ce nouveau canal d'alerte, les alertes déclenchées envoient une notification au canal Slack de votre choix.

Conclusion

À mesure que votre équipe évalue le système d’alerte que vous avez mis en place, vous constaterez que vous devrez peut-être modifier les valeurs de configuration, telles que le seuil et la durée de l’alerte. Si vous gérez votre projet Terraform dans un référentiel distant, vous pouvez soumettre une demande de tirage afin que votre équipe puisse examiner ces modifications parallèlement au reste de vos contributions au code.

Conseil

Vous pouvez également envisager d’automatiser ce processus dans votre pipeline CI/CD. Utilisez le guide des pratiques recommandées de Terraform pour en savoir plus sur leur workflow recommandé et sur la manière de faire évoluer vos pratiques de provisionnement.

Droits d'auteur © 2025 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.