ログ
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

ログ

ログを HTTP 経由で Datadog プラットフォームに送信します。HTTP リクエストあたりの制限は次のとおりです。

  • ペイロードあたりの最大コンテンツサイズ: 5MB
  • 単一ログの最大サイズ: 256kB
  • アレイで複数のログを送信する場合の最大アレイサイズ: 500 エントリ

256KB を超えるログは、Datadog によって受け入れられ、切り捨てられます。

  • 単一のログリクエストの場合、API はログを 256KB で切り捨て、2xx を返します。
  • マルチログリクエストの場合、API はすべてのログを処理し、256KB を超えるログのみを切り捨て、2xx を返します。

圧縮されたログを送信することをお勧めします。 圧縮されたログを送信するときは、リクエストに Content-Encoding: gzip ヘッダーを追加します。

ログのリストの取得

POST https://api.datadoghq.comhttps://api.datadoghq.eu/api/v1/logs-queries/list

概要

リストエンドポイントは、ログ検索クエリと一致するログを返します。 結果はページ区切りされます

オーガニゼーションのためのログのアーカイブを目的とする場合は、 ログリスト API の代わりに Datadog のアーカイブ機能の使用を検討してください。 Datadog のログのアーカイブに関するドキュメントを参照してください。

リクエスト

Body Data (required)

ログフィルター

Expand All

フィールド

種類

説明

index

string

The log index on which the request is performed. For multi-index organizations, the default is all live indexes. Historical indexes of rehydrated logs must be specified.

limit

int32

Number of logs return in the response.

query [required]

string

The search query - following the log search syntax.

sort

enum

Time-ascending asc or time-descending descresults. Allowed enum values: asc,desc

startAt

string

Hash identifier of the first log to return in the list, available in a log id attribute. This parameter is used for the pagination feature.

Note: This parameter is ignored if the corresponding log is out of the scope of the specified time window.

time [required]

object

Timeframe to retrieve the log from.

from [required]

date-time

Minimum timestamp for requested logs.

timezone

string

Timezone can be specified both as an offset (e.g. "UTC+03:00") or a regional zone (e.g. "Europe/Paris").

to [required]

date-time

Maximum timestamp for requested logs.

{
  "index": "retention-3,retention-15",
  "limit": "integer",
  "query": "service:web* AND @http.status_code:[200 TO 299]",
  "sort": "string",
  "startAt": "string",
  "time": {
    "from": "2020-02-02T02:02:02Z",
    "timezone": "string",
    "to": "2020-02-02T20:20:20Z"
  }
}

応答

OK

Response object with all logs matching the request and pagination information.

Expand All

フィールド

種類

説明

logs

[object]

Array of logs matching the request and the nextLogId if sent.

content

object

JSON object containing all log attributes and their associated values.

attributes

object

JSON object of attributes from your log.

host

string

Name of the machine from where the logs are being sent.

message

string

The message reserved attribute of your log. By default, Datadog ingests the value of the message attribute as the body of the log entry. That value is then highlighted and displayed in the Logstream, where it is indexed for full text search.

service

string

The name of the application or service generating the log events. It is used to switch from Logs to APM, so make sure you define the same value when you use both products.

tags

array

Array of tags associated with your log.

timestamp

date-time

Timestamp of your log.

id

string

Unique ID of the Log.

nextLogId

string

Hash identifier of the next log to return in the list. This parameter is used for the pagination feature.

status

string

Status of the response.

{
  "logs": [
    {
      "content": {
        "attributes": [
          {}
        ],
        "host": "i-0123",
        "message": "Host connected to remote",
        "service": "agent",
        "tags": [
          "team:A"
        ],
        "timestamp": "2020-05-26T13:36:14Z"
      },
      "id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA"
    }
  ],
  "nextLogId": "string",
  "status": "string"
}

Bad Request

Response returned by the Logs API when errors occur.

Expand All

フィールド

種類

説明

error

object

Error returned by the Logs API

code

string

Code identifying the error

details

[object]

Additional error details

message

string

Error message

{
  "error": {
    "code": "string",
    "details": [],
    "message": "string"
  }
}

Authentication error

Error response object.

Expand All

フィールド

種類

説明

errors [required]

[string]

Array of errors returned by the API.

{
  "errors": [
    "Bad Request"
  ]
}

コード例


                                        # Curl command
curl -X POST "https://api.datadoghq.com"https://api.datadoghq.eu/api/v1/logs-queries/list" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_CLIENT_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_CLIENT_APP_KEY}" \
-d @- << EOF
{
  "query": "service:web* AND @http.status_code:[200 TO 299]",
  "time": {
    "from": "2020-02-02T02:02:02Z",
    "to": "2020-02-02T20:20:20Z"
  }
}
EOF
package main

import (
    "context"
    "fmt"
    "os"
    datadog "github.com/DataDog/datadog-api-client-go/api/v1/datadog"
)

func main() {
    ctx := context.WithValue(
        context.Background(),
        datadog.ContextAPIKeys,
        map[string]datadog.APIKey{
            "apiKeyAuth": {
                Key: os.Getenv("DD_CLIENT_API_KEY"),
            },
            "appKeyAuth": {
                Key: os.Getenv("DD_CLIENT_APP_KEY"),
            },
        },
    )

    body := *datadog.NewLogsListRequest("Query_example", *datadog.NewLogsListRequest_time("TODO", "TODO")) // LogsListRequest | Logs filter

    configuration := datadog.NewConfiguration()
    api_client := datadog.NewAPIClient(configuration)
    resp, r, err := api_client.LogsApi.ListLogs(context.Background()).Body(body).Execute()
    if err != nil {
        fmt.Fprintf(os.Stderr, "Error when calling `LogsApi.ListLogs``: %v\n", err)
        fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    }
    // response from `ListLogs`: LogsListResponse
    fmt.Fprintf(os.Stdout, "Response from `LogsApi.ListLogs`: %v\n", resp)
}
// Import classes:
import com.datadog.api.v1.client.ApiClient;
import com.datadog.api.v1.client.ApiException;
import com.datadog.api.v1.client.Configuration;
import com.datadog.api.v1.client.auth.*;
import com.datadog.api.v1.client.model.*;
import com.datadog.api.v1.client.api.LogsApi;

public class Example {
    public static void main(String[] args) {
        ApiClient defaultClient = Configuration.getDefaultApiClient();
        // Configure the Datadog site to send API calls to
        HashMap<String, String> serverVariables = new HashMap<String, String>();
        String site = System.getenv("DD_SITE");
        if (site != null) {
            serverVariables.put("site", site);
            defaultClient.setServerVariables(serverVariables);
        }
        // Configure API key authorization: 
        HashMap<String, String> secrets = new HashMap<String, String>();
        secrets.put("apiKeyAuth", System.getenv("DD_CLIENT_API_KEY"));
        secrets.put("appKeyAuth", System.getenv("DD_CLIENT_APP_KEY"));
        defaultClient.configureApiKeys(secrets);

        LogsApi apiInstance = new LogsApi(defaultClient);
        LogsListRequest body = new LogsListRequest(); // LogsListRequest | Logs filter
        try {
            LogsListResponse result = api.listLogs()
                .body(body)
                .execute();
            System.out.println(result);
        } catch (ApiException e) {
            System.err.println("Exception when calling LogsApi#listLogs");
            System.err.println("Status code: " + e.getCode());
            System.err.println("Reason: " + e.getResponseBody());
            System.err.println("Response headers: " + e.getResponseHeaders());
            e.printStackTrace();
        }
    }
}

ログを送信する

POST https://http-intake.logs.datadoghq.comhttps://http-intake.logs.datadoghq.eu/v1/input

概要

ログを HTTP 経由で Datadog プラットフォームに送信します。HTTP リクエストあたりの制限は次のとおりです。

  • ペイロードあたりの最大コンテンツサイズ: 5MB
  • 単一ログの最大サイズ: 256kB
  • 配列で複数のログを送信する場合の最大配列サイズ: 500 エントリ

256KB を超えるログは、Datadog によって受け入れられ、切り捨てられます。

  • 単一のログリクエストの場合、API はログを 256KB で切り捨て、2xx を返します。
  • マルチログリクエストの場合、API はすべてのログを処理し、 256KB を超えるログのみを切り捨て、2xx を返します。

圧縮されたログを送信することをお勧めします。 圧縮されたログを送信するときは、リクエストに Content-Encoding: gzip ヘッダーを追加します。

引数

クエリ文字列

名前

種類

説明

ddtags

string

Log tags can be passed as query parameters with text/plain content type.

ヘッダーパラメーター

名前

種類

説明

Content-Encoding

string

HTTP header used to compress the media-type.

リクエスト

Body Data (required)

送信するログ (JSON 形式) 。

Expand All

フィールド

種類

説明

ddsource

string

The integration name associated with your log: the technology from which the log originated. When it matches an integration name, Datadog automatically installs the corresponding parsers and facets. See reserved attributes.

ddtags

string

Tags associated with your logs.

hostname

string

The name of the originating host of the log.

message

string

The message reserved attribute of your log. By default, Datadog ingests the value of the message attribute as the body of the log entry. That value is then highlighted and displayed in the Logstream, where it is indexed for full text search.

service

string

The name of the application or service generating the log events. It is used to switch from Logs to APM, so make sure you define the same value when you use both products. See reserved attributes.

{
  "ddsource": "nginx",
  "ddtags": "env:staging,version:5.1",
  "hostname": "i-012345678",
  "message": "2019-11-19T14:37:58,995 INFO [process.name][20081] Hello World",
  "service": "payment"
}

応答

Response from server (always 200 empty JSON).

Expand All

フィールド

種類

説明

No response body

{}

unexpected error

Invalid query performed.

Expand All

フィールド

種類

説明

code [required]

int32

Error code.

message [required]

string

Error message.

{
  "code": 0,
  "message": ""
}

コード例


                                        ## Multi JSON Messages
# Pass multiple log objects at once.
# Curl command
curl -X POST "https://http-intake.logs.datadoghq.com"https://http-intake.logs.datadoghq.eu/v1/input" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_CLIENT_API_KEY}" \
-d @- << EOF
[
  {
    "message": "hello"
  },
  {
    "message": "world"
  }
]
EOF
## Simple JSON Message # Log attributes can be passed as `key:value` pairs in valid JSON messages. # Curl command curl -X POST "https://http-intake.logs.datadoghq.com"https://http-intake.logs.datadoghq.eu/v1/input" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_CLIENT_API_KEY}" \ -d @- << EOF { "ddsource": "agent", "ddtags": "env:prod,user:joe.doe", "hostname": "fa1e1e739d95", "message": "hello world" } EOF
## Multi Logplex Messages # Submit log messages. # Curl command curl -X POST "https://http-intake.logs.datadoghq.com"https://http-intake.logs.datadoghq.eu/v1/input" \ -H "Content-Type: application/logplex-1" \ -H "DD-API-KEY: ${DD_CLIENT_API_KEY}" \ -d @- << EOF hello world EOF
## Simple Logplex Message # Submit log string. # Curl command curl -X POST "https://http-intake.logs.datadoghq.com"https://http-intake.logs.datadoghq.eu/v1/input" \ -H "Content-Type: application/logplex-1" \ -H "DD-API-KEY: ${DD_CLIENT_API_KEY}" \ -d @- << EOF hello world EOF
## Multi Raw Messages # Submit log string. # Curl command curl -X POST "https://http-intake.logs.datadoghq.com"https://http-intake.logs.datadoghq.eu/v1/input" \ -H "Content-Type: text/plain" \ -H "DD-API-KEY: ${DD_CLIENT_API_KEY}" \ -d @- << EOF hello world EOF
## Simple Raw Message # Submit log string. Log attributes can be passed as query parameters in the URL. This enables the addition of tags or the source by using the `ddtags` and `ddsource` parameters: `?host=my-hostname&service=my-service&ddsource=my-source&ddtags=env:prod,user:my-user`. # Curl command curl -X POST "https://http-intake.logs.datadoghq.com"https://http-intake.logs.datadoghq.eu/v1/input" \ -H "Content-Type: text/plain" \ -H "DD-API-KEY: ${DD_CLIENT_API_KEY}" \ -d @- << EOF hello world EOF