Envoyer des événements avec DogStatsD
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Envoyer des événements avec DogStatsD

Envoi

Une fois DogStatsD installé, vous pouvez envoyer des événements à votre flux d’événements Datadog via la fonction suivante :

event(<TITRE>, <TEXTE>, <TIMESTAMP>, <HOSTNAME>, <CLÉ_AGRÉGATION>, <PRIORITÉ>, <NOM_TYPE_SOURCE>, <TYPE_ALERTE>, <TAGS>)

Définitions :

ParamètreTypeObligatoireDescription
<TITRE>ChaîneOuiLe titre de l’événement
<TEXTE>ChaîneOuiLe corps de texte de l’événement
<TIMESTAMP>Nombre entierOuiLe timestamp de l’événement selon l’epoch Unix (par défaut, défini sur l’heure actuelle du serveur DogStatsD)
<HOSTNAME>ChaîneNonLe nom du host
<CLÉ_AGGRÉGATION>ChaîneNonLa clé à utiliser pour agréger les événements
<PRIORITÉ>ChaîneNonIndique la priorité de l’événement (normal ou low).
<NOM_TYPE_SOURCE>ChaîneNonLe nom du type de source
<TYPE_ALERTE>ChaîneNonerror, warning, success ou info (valeur par défaut : info)
<TAGS>Liste de chaînesNonLa liste des tags associés à cet événement.

Exemples

Visualisez les erreurs et les exceptions dans Datadog avec un événement DogStatsD :

event.py

from datadog import initialize, statsd

options = {
    'statsd_host':'127.0.0.1',
    'statsd_port':8125
}

initialize(**options)

statsd.event('An error occurred', 'Error message', alert_type='error', tags=['env:dev'])

event.rb

require 'datadog/statsd'

statsd = Datadog::Statsd.new('localhost', 8125)

statsd.event('An error occurred', "Error message", alert_type: 'error', tags: ['env:dev'])

event.go

package main

import (
    "log"
    "time"

    "github.com/DataDog/datadog-go/statsd"
)

func main() {

    dogstatsdClient, err := statsd.New("127.0.0.1:8125")

    if err != nil {
        log.Fatal(err)
    }
    for {
        dogstatsdClient.SimpleEvent("An error occurred", "Error message")
        time.Sleep(10 * time.Second)
    }
}

event.java

import com.timgroup.statsd.Event;
import com.timgroup.statsd.NonBlockingStatsDClientBuilder;
import com.timgroup.statsd.StatsDClient;

public class DogStatsdClient {

    public static void main(String[] args) throws Exception {

        StatsDClient Statsd = new NonBlockingStatsDClientBuilder()
            .prefix("statsd").
            .hostname("localhost")
            .port(8125)
            .build();

        Event event = Event.builder()
          .withTitle("An error occurred")
          .withText("Error message")
          .withAlertType(Event.AlertType.ERROR)
          .build();

        Statsd.recordEvent(event);
    }
}

event.cs

using StatsdClient;

public class DogStatsdClient
{
    public static void Main()
    {
        var dogstatsdConfig = new StatsdConfig
        {
            StatsdServerName = "127.0.0.1",
            StatsdPort = 8125,
        };

        using (var dogStatsdService = new DogStatsdService())
        {
            dogStatsdService.Configure(dogstatsdConfig);
            dogStatsdService.Event("An error occurred", "Error message", alertType: "error", tags: new[] { "env:dev" });
        }
    }
}

event.php

<?php

require __DIR__ . '/vendor/autoload.php';

use DataDog\DogStatsd;

$statsd = new DogStatsd(
    array('host' => '127.0.0.1',
          'port' => 8125,
     )
  );

$statsd->event('An error occurred.',
    array( 'text' => 'Error message',
           'alert_type' => 'error'
    )
  );

La bibliothèque DogStatsD-PHP vous permet d’envoyer des événements à l’API Datadog directement via TCP. Cette méthode est plus lente mais aussi plus fiable que lorsque vous faites appel à l’instance DogStatsD de l’Agent, les événements étant transmis de votre application à l’Agent via UDP. Pour l’utiliser, vous devez configurer la bibliothèque avec vos clés d’API et d’application Datadog au lieu de l’instance DogStatsD locale :

event_through_api.php

<?php

require __DIR__ . '/vendor/autoload.php';

use DataDog\DogStatsd;

$statsd = new DogStatsd(
    array('api_key' => '<CLÉ_API_DATADOG>',
          'app_key' => '<CLÉ_APPLICATION_DATADOG>',
     )
  );

$statsd->event('An error occurred.',
    array( 'text' => 'Error message',
           'alert_type' => 'error'
    )
  );

Remarques :

  • L’envoi d’événements via cette méthode fait appel à cURL pour les requêtes d’API.
  • Nous vous conseillons d’utiliser un bloc de code try/catch pour éviter d’envoyer des avertissements ou des erreurs en cas de problème de communication avec l’API Datadog.

Pour aller plus loin