DogStatsD によるイベント
Datadog の調査レポート: サーバーレスの状態 レポート: サーバーレスの状態

DogStatsD によるイベント

送信

DogStatsD をインストールした後、次の関数を使用して Datadog のイベントストリームにイベントを送信できます。

event(<タイトル>, <テキスト>, <タイムスタンプ>, <ホスト名>, <集計キー>, <優先度>, <ソースタイプ名>, <アラートタイプ>, <タグ>)

定義:

パラメーター種類必須説明
<タイトル>文字列はいイベントのタイトル
<テキスト>文字列はいイベントのテキスト本文
<タイムスタンプ>整数はいイベントの Epoch タイムスタンプ (デフォルトで DogStatsD サーバーからの現在時刻が入力されます)
<ホスト名>文字列いいえホストの名前
<集計キー>文字列いいえイベントを集計するために使用するキー
<優先度>文字列いいえイベントの優先度を指定します (normal または low)。
<ソースタイプ名>文字列いいえソースタイプの名前
<アラートタイプ>文字列いいえerrorwarningsuccess、または info (デフォルトは info)
<タグ>文字列のリストいいえこのイベントに関連付けられるタグのリスト

DogStatsD イベントによる Datadog 内でのエラーと例外を表示します。

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.NonBlockingStatsDClient;
import com.timgroup.statsd.StatsDClient;

public class DogStatsdClient {

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

        StatsDClient Statsd = new NonBlockingStatsDClient("statsd", "localhost", 8125);

        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,
        };

        StatsdClient.DogStatsd.Configure(dogstatsdConfig);

        DogStatsd.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'
    )
  );

DogStatsD-PHP ライブラリを使用すると、イベントを TCP 経由で直接 Datadog API に送信できます。速度は遅くなりますが、イベントが UDP を使用してアプリケーションから Agent に転送されるため、Agent の DogStatsD インスタンスを使うよりも信頼性が高くなります。これを使用するには、ローカルの DogStatD インスタンスの代わりに Datadog API とアプリケーションのキーを使用してライブラリを構成する必要があります。

event_through_api.php

<?php

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

use DataDog\DogStatsd;

$statsd = new DogStatsd(
    array('api_key' => '<DATADOG_API_キー>',
          'app_key' => '<DATADOG_アプリケーションキー>',
     )
  );

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

:

  • この方法でイベントを送信する場合は、API リクエストに cURL を使用します。
  • Datadog API との通信の問題によって警告やエラーが出るのを避けるために、try/catch のコード ブロックを使用する必要があります。

その他の参考資料