Eventos con DogStatsD

Envío

Después de instalar DogStatsD, puedes emitir eventos al Datadog Event Explorer con la siguiente función:

event(<title>, <message>, <alert_type>, <aggregation_key>, <source_type_name>, <date_happened>, <priority>, <tags>, <hostname>)

Definiciones:

ParámetroTipoObligatorioDescripción
<title>CadenaEl título del evento
<message>CadenaEl cuerpo del texto del evento
<alert_type>CadenaNoerror, warning, success o info (por defecto info)
<aggregation_key>CadenaNoUna clave para agregar eventos
<source_type_name>CadenaNoEl nombre del tipo de fuente (por defecto my_apps)
<date_happened>EnteroNoLa marca de tiempo de la época del evento (por defecto es la hora actual del servidor de DogStatsD)
<priority>CadenaNoEspecifica la prioridad del evento (normal o low)
<tags>Lista de cadenasNoUn lista de etiquetas asociadas a este evento
<hostname>CadenaNoEl nombre del host

Ejemplos

Ejecuta el siguiente código para ver errores y excepciones en Datadog con un evento de DogStatsD. Recuerda flush/close el cliente cuando ya no sea necesario.

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'])
require 'datadog/statsd'

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

statsd.event('An error occurred', "Error message", alert_type: 'error', tags: ['env:dev'])
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)
    }
}
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);
    }
}
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())   
        {   
            if (!dogStatsdService.Configure(dogstatsdConfig))
                throw new InvalidOperationException("Cannot initialize DogstatsD. Set optionalExceptionHandler argument in the `Configure` method for more information.");
            dogStatsdService.Event("An error occurred", "Error message", alertType: "error", date_happened='TIMESTAMP', tags: new[] { "env:dev" }); 
        }   
    }   
}
<?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'
    )
  );

Con la biblioteca de DogStatsD-PHP puedes enviar eventos a través de TCP directamente a la API de Datadog. Es más lento pero más fiable que utilizar la instancia de DogStatsD del Agent, ya que los eventos se reenvían desde tu aplicación al Agent mediante UDP. Para utilizarlo, debes configurar la biblioteca con tus claves de aplicación y API de Datadog en lugar de la instancia local de DogStatS:

<?php

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

use DataDog\DogStatsd;

$statsd = new DogStatsd(
    array('api_key' => '<DATADOG_API_KEY>',
          'app_key' => '<DATADOG_APPLICATION_KEY>',
     )
  );

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

Nota:

  • El envío de eventos mediante este método utiliza cURL para las solicitudes de API.
  • Debes utilizar un bloque de código try/catch para evitar advertencias o errores sobre problemas de comunicación con la API de Datadog.

Lectura adicional