diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml index 3ff3dc8fb1b..0a6f91d5d09 100644 --- a/config/_default/menus/api.en.yaml +++ b/config/_default/menus/api.en.yaml @@ -6555,6 +6555,102 @@ menu: url: /api/latest/app-builder/ identifier: app-builder generated: true + - name: List App Versions + url: '#list-app-versions' + identifier: app-builder-list-app-versions + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - ListAppVersions + unstable: [] + order: 13 + - name: Name App Version + url: '#name-app-version' + identifier: app-builder-name-app-version + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - UpdateAppVersionName + unstable: [] + order: 14 + - name: Update App Tags + url: '#update-app-tags' + identifier: app-builder-update-app-tags + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - UpdateAppTags + unstable: [] + order: 12 + - name: Update App Self-Service Status + url: '#update-app-self-service-status' + identifier: app-builder-update-app-self-service-status + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - UpdateAppSelfService + unstable: [] + order: 11 + - name: Revert App + url: '#revert-app' + identifier: app-builder-revert-app + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - RevertApp + unstable: [] + order: 16 + - name: Create Publish Request + url: '#create-publish-request' + identifier: app-builder-create-publish-request + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - CreatePublishRequest + unstable: [] + order: 15 + - name: Update App Protection Level + url: '#update-app-protection-level' + identifier: app-builder-update-app-protection-level + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - UpdateProtectionLevel + unstable: [] + order: 10 + - name: Update App Favorite Status + url: '#update-app-favorite-status' + identifier: app-builder-update-app-favorite-status + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - UpdateAppFavorite + unstable: [] + order: 9 - name: Publish App url: '#publish-app' identifier: app-builder-publish-app @@ -8171,6 +8267,110 @@ menu: - ListCustomCostsFiles unstable: [] order: 29 + - name: Get commitments utilization (timeseries) + url: '#get-commitments-utilization-timeseries' + identifier: cloud-cost-management-get-commitments-utilization-timeseries + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsUtilizationTimeseries + unstable: + - v2 + order: 53 + - name: Get commitments utilization (scalar) + url: '#get-commitments-utilization-scalar' + identifier: cloud-cost-management-get-commitments-utilization-scalar + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsUtilizationScalar + unstable: + - v2 + order: 48 + - name: Get commitments savings (timeseries) + url: '#get-commitments-savings-timeseries' + identifier: cloud-cost-management-get-commitments-savings-timeseries + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsSavingsTimeseries + unstable: + - v2 + order: 52 + - name: Get commitments savings (scalar) + url: '#get-commitments-savings-scalar' + identifier: cloud-cost-management-get-commitments-savings-scalar + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsSavingsScalar + unstable: + - v2 + order: 51 + - name: Get commitments on-demand hot spots (scalar) + url: '#get-commitments-on-demand-hot-spots-scalar' + identifier: cloud-cost-management-get-commitments-on-demand-hot-spots-scalar + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsOnDemandHotspotsScalar + unstable: + - v2 + order: 50 + - name: Get commitments coverage (timeseries) + url: '#get-commitments-coverage-timeseries' + identifier: cloud-cost-management-get-commitments-coverage-timeseries + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsCoverageTimeseries + unstable: + - v2 + order: 54 + - name: Get commitments coverage (scalar) + url: '#get-commitments-coverage-scalar' + identifier: cloud-cost-management-get-commitments-coverage-scalar + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsCoverageScalar + unstable: + - v2 + order: 49 + - name: Get commitments list + url: '#get-commitments-list' + identifier: cloud-cost-management-get-commitments-list + parent: cloud-cost-management + generated: true + params: + versions: + - v2 + operationids: + - GetCommitmentsCommitmentList + unstable: + - v2 + order: 55 - name: List budgets url: '#list-budgets' identifier: cloud-cost-management-list-budgets @@ -13984,6 +14184,54 @@ menu: - ListSCIMUsers unstable: [] order: 1 + - name: Get schema + url: '#get-schema' + identifier: scim-get-schema + parent: scim + generated: true + params: + versions: + - v2 + operationids: + - GetSCIMSchema + unstable: [] + order: 16 + - name: List schemas + url: '#list-schemas' + identifier: scim-list-schemas + parent: scim + generated: true + params: + versions: + - v2 + operationids: + - ListSCIMSchemas + unstable: [] + order: 15 + - name: Get resource type + url: '#get-resource-type' + identifier: scim-get-resource-type + parent: scim + generated: true + params: + versions: + - v2 + operationids: + - GetSCIMResourceType + unstable: [] + order: 14 + - name: List resource types + url: '#list-resource-types' + identifier: scim-list-resource-types + parent: scim + generated: true + params: + versions: + - v2 + operationids: + - ListSCIMResourceTypes + unstable: [] + order: 13 - name: Update group url: '#update-group' identifier: scim-update-group diff --git a/config/_default/menus/main.en.yaml b/config/_default/menus/main.en.yaml index 7a4a4f7866c..51029807c85 100644 --- a/config/_default/menus/main.en.yaml +++ b/config/_default/menus/main.en.yaml @@ -7550,11 +7550,16 @@ menu: url: /security/code_security/secret_scanning/generic_ci_providers/ parent: sec_secret_scanning weight: 2 + - name: Rule Configuration + identifier: sec_secret_scanning_configuration + url: /security/code_security/secret_scanning/configuration/ + parent: sec_secret_scanning + weight: 3 - name: Secret Validation identifier: sec_secret_scanning_secret_validation url: /security/code_security/secret_scanning/secret_validation/ parent: sec_secret_scanning - weight: 3 + weight: 4 - name: Runtime Code Analysis (IAST) identifier: sec_iast url: /security/code_security/iast/ diff --git a/content/en/account_management/guide/manage-your-support-tickets.md b/content/en/account_management/guide/manage-your-support-tickets.md index a96933b8f59..c6d64ca36d9 100644 --- a/content/en/account_management/guide/manage-your-support-tickets.md +++ b/content/en/account_management/guide/manage-your-support-tickets.md @@ -81,6 +81,11 @@ further_reading:

If your browser has ad-blockers, turn them off to see if this allows you to sign in. Some ad-blockers have their own list of exceptions. In this case, add datadog.zendesk.com to the allow list.

+

Ticket is no longer available

+

Datadog deletes closed tickets, including their attachments, 15 months after their last update.

+ +

If you need help with a related issue, you can open a new ticket or search the Datadog documentation.

+

Further reading

{{< partial name="whats-next/whats-next.html" >}} diff --git a/content/en/agent/logs/advanced_log_collection.md b/content/en/agent/logs/advanced_log_collection.md index ece1692ce6c..9a6d4acaee0 100644 --- a/content/en/agent/logs/advanced_log_collection.md +++ b/content/en/agent/logs/advanced_log_collection.md @@ -614,6 +614,7 @@ The example above matches `C:\\MyApp\\MyLog.log` and excludes `C:\\MyApp\\MyLog. **Note**: - The Agent requires read and execute permissions on a directory to list all the available files in it. - The path and exclude_paths values are case sensitive. +- Starting in Agent version 7.76.0, recursive globs (`**`) are supported in `path` and `exclude_paths` when you set `logs_config.enable_recursive_glob: true` in `datadog.yaml`. This is disabled by default. ### Prioritize tailed files by modification time diff --git a/content/en/api/v2/app-builder/examples.json b/content/en/api/v2/app-builder/examples.json index 9af0f13a795..1bb20d7f14f 100644 --- a/content/en/api/v2/app-builder/examples.json +++ b/content/en/api/v2/app-builder/examples.json @@ -1263,5 +1263,1014 @@ "json": {}, "html": "" } + }, + "UpdateAppFavorite": { + "responses": { + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "favorite": true + } + } + }, + "json": { + "data": { + "attributes": { + "favorite": true + }, + "type": "favorites" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for updating an app's favorite status.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for updating an app's favorite status.

\n
\n
\n
\n
\n
\n

favorite [required]

\n
\n

boolean

\n

Whether the app should be marked as a favorite for the current user.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The favorite resource type. \nAllowed enum values: favorites

default: favorites

\n
\n \n
\n
\n
\n
" + } + }, + "UpdateProtectionLevel": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "components": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "backgroundColor": "string", + "children": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "children": [], + "isVisible": { + "type": "undefined" + } + }, + "type": "text" + } + ], + "isVisible": { + "type": "undefined" + } + }, + "type": "grid" + } + ], + "description": "string", + "favorite": false, + "name": "string", + "queries": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "fetchPendingOrders", + "properties": { + "condition": { + "type": "undefined" + }, + "debounceInMs": { + "example": "undefined", + "format": "undefined", + "type": "undefined" + }, + "mockedOutputs": { + "type": "undefined" + }, + "onlyTriggerManually": { + "type": "undefined" + }, + "outputs": "${((outputs) => {return outputs.body.data})(self.rawOutputs)}", + "pollingIntervalInMs": { + "example": "undefined", + "format": "undefined", + "minimum": "undefined", + "type": "undefined" + }, + "requiresConfirmation": { + "type": "undefined" + }, + "showToastOnError": { + "type": "undefined" + }, + "spec": { + "type": "" + } + }, + "type": "action" + } + ], + "rootInstanceName": "string", + "tags": [ + "service:webshop-backend", + "team:webshop" + ] + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + }, + "included": [ + { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + ], + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "deleted_at": "2019-09-19T10:00:00.000Z", + "org_id": "integer", + "updated_at": "2019-09-19T10:00:00.000Z", + "updated_since_deployment": false, + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "version": "integer" + }, + "relationship": { + "connections": [ + { + "attributes": { + "name": "string", + "onPremRunner": { + "id": "string", + "url": "string" + } + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "custom_connections" + } + ], + "deployment": { + "data": { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "deployment" + }, + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + } + } + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data object containing the updated app definition.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The updated app definition attributes, such as name, description, and components.

\n
\n
\n
\n
\n
\n

components

\n
\n

[object]

\n

The UI components that make up the app.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the grid component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the grid component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this grid component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a grid component.

\n
\n
\n
\n
\n
\n

backgroundColor

\n
\n

string

\n

The background color of the grid.

default: default

\n
\n \n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the grid.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the UI component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the UI component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this UI component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a UI component. Different component types can have their own additional unique properties. See the components documentation for more detail on each component type and its properties.

\n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the UI component.

\n
\n \n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The UI component type. \nAllowed enum values: table,textInput,textArea,button,text,select,modal,schemaForm,checkbox,tabs

Show 10 more,vegaChart,radioButtons,numberInput,fileInput,jsonInput,gridCell,dateRangePicker,search,container,calloutValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

boolean

\n

default: true

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The grid component type. \nAllowed enum values: grid

default: grid

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The human-readable description for the app.

\n
\n \n
\n
\n
\n
\n
\n

favorite

\n
\n

boolean

\n

Whether the app is marked as a favorite by the current user.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the app.

\n
\n \n
\n
\n
\n
\n
\n

queries

\n
\n

[ <oneOf>]

\n

An array of queries, such as external actions and state variables, that the app uses.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

An action query. This query type is used to trigger an action, such as sending a HTTP request.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for downstream of the action query.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the action query.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this action query. This name is also used to access the query's result throughout the app.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

The properties of the action query.

\n
\n
\n
\n
\n
\n

condition

\n
\n

 <oneOf>

\n

Whether to run this query. If specified, the query will only run if this condition evaluates to true in JavaScript and all other conditions are also met.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n

debounceInMs

\n
\n

 <oneOf>

\n

The minimum time in milliseconds that must pass before the query can be triggered again. This is useful for preventing accidental double-clicks from triggering the query multiple times.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

double

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

mockedOutputs

\n
\n

 <oneOf>

\n

The mocked outputs of the action query. This is useful for testing the app without actually running the action.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The mocked outputs of the action query.

\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

 <oneOf>

\n

Whether to enable the mocked outputs for testing.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

outputs

\n
\n

string

\n

The mocked outputs of the action query, serialized as JSON.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

onlyTriggerManually

\n
\n

 <oneOf>

\n

Determines when this query is executed. If set to false, the query will run when the app loads and whenever any query arguments change. If set to true, the query will only run when manually triggered from elsewhere in the app.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

outputs

\n
\n

string

\n

The post-query transformation function, which is a JavaScript function that changes the query's .outputs property after the query's execution.

\n
\n \n
\n
\n
\n
\n
\n

pollingIntervalInMs

\n
\n

 <oneOf>

\n

If specified, the app will poll the query at the specified interval in milliseconds. The minimum polling interval is 15 seconds. The query will only poll when the app's browser tab is active.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

double

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

requiresConfirmation

\n
\n

 <oneOf>

\n

Whether to prompt the user to confirm this query before it runs.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

showToastOnError

\n
\n

 <oneOf>

\n

Whether to display a toast to the user when the query returns an error.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

spec [required]

\n
\n

 <oneOf>

\n

The definition of the action query.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The action query spec object.

\n
\n
\n
\n
\n
\n

connectionGroup

\n
\n

object

\n

The connection group to use for an action query.

\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the connection group.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

The tags of the connection group.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

connectionId

\n
\n

string

\n

The ID of the custom connection to use for this action query.

\n
\n \n
\n
\n
\n
\n
\n

fqn [required]

\n
\n

string

\n

The fully qualified name of the action type.

\n
\n \n
\n
\n
\n
\n
\n

inputs

\n
\n

 <oneOf>

\n

The inputs to the action query. These are the values that are passed to the action when it is triggered.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The inputs to the action query. See the Actions Catalog for more detail on each action and its inputs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The action query type. \nAllowed enum values: action

default: action

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

A data transformer, which is custom JavaScript code that executes and transforms data when its inputs change.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the data transformer.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this data transformer. This name is also used to access the transformer's result throughout the app.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

The properties of the data transformer.

\n
\n
\n
\n
\n
\n

outputs

\n
\n

string

\n

A JavaScript function that returns the transformed data.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The data transform type. \nAllowed enum values: dataTransform

default: dataTransform

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

A variable, which can be set and read by other components in the app.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the state variable.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this state variable. This name is also used to access the variable's value throughout the app.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

The properties of the state variable.

\n
\n
\n
\n
\n
\n

defaultValue

\n
\n

\n

The default value of the state variable.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The state variable type. \nAllowed enum values: stateVariable

default: stateVariable

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

rootInstanceName

\n
\n

string

\n

The name of the root component of the app. This must be a grid component that contains all other components.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags for the app, which can be used to filter apps.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the updated app.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

included

\n
\n

[object]

\n

Data on the version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata of an app.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was created.

\n
\n \n
\n
\n
\n
\n
\n

deleted_at

\n
\n

date-time

\n

Timestamp of when the app was deleted.

\n
\n \n
\n
\n
\n
\n
\n

org_id

\n
\n

int64

\n

The Datadog organization ID that owns the app.

\n
\n \n
\n
\n
\n
\n
\n

updated_at

\n
\n

date-time

\n

Timestamp of when the app was last updated.

\n
\n \n
\n
\n
\n
\n
\n

updated_since_deployment

\n
\n

boolean

\n

Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

The version number of the app. This starts at 1 and increments with each update.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

relationship

\n
\n

object

\n

The app's publication relationship and custom connections.

\n
\n
\n
\n
\n
\n

connections

\n
\n

[object]

\n

Array of custom connections used by the app.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The custom connection attributes.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

onPremRunner

\n
\n

object

\n

Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.

\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The Private Action Runner ID.

\n
\n \n
\n
\n
\n
\n
\n

url

\n
\n

string

\n

The URL of the Private Action Runner.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The custom connection type. \nAllowed enum values: custom_connections

default: custom_connections

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

deployment

\n
\n

object

\n

Information pointing to the app's publication status.

\n
\n
\n
\n
\n
\n

data

\n
\n

object

\n

Data object containing the deployment ID.

\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "protectionLevel": "direct_publish" + } + } + }, + "json": { + "data": { + "attributes": { + "protectionLevel": "direct_publish" + }, + "type": "protectionLevel" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for updating an app's publication protection level.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for updating an app's publication protection level.

\n
\n
\n
\n
\n
\n

protectionLevel [required]

\n
\n

enum

\n

The publication protection level of the app. approval_required means changes must go through an approval workflow before being published. \nAllowed enum values: direct_publish,approval_required

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The protection-level resource type. \nAllowed enum values: protectionLevel

default: protectionLevel

\n
\n \n
\n
\n
\n
" + } + }, + "CreatePublishRequest": { + "responses": { + "201": { + "json": { + "data": { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "title": "Release v1.2 to production" + } + } + }, + "json": { + "data": { + "attributes": { + "description": "Adds new dashboard widgets and a few bug fixes.", + "title": "Release v1.2 to production" + }, + "type": "publishRequest" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for creating a publish request.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for creating a publish request.

\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

An optional description of the changes in this publish request.

\n
\n \n
\n
\n
\n
\n
\n

title [required]

\n
\n

string

\n

A short title for the publish request.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The publish-request resource type. \nAllowed enum values: publishRequest

default: publishRequest

\n
\n \n
\n
\n
\n
" + } + }, + "RevertApp": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "components": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "backgroundColor": "string", + "children": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "children": [], + "isVisible": { + "type": "undefined" + } + }, + "type": "text" + } + ], + "isVisible": { + "type": "undefined" + } + }, + "type": "grid" + } + ], + "description": "string", + "favorite": false, + "name": "string", + "queries": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "fetchPendingOrders", + "properties": { + "condition": { + "type": "undefined" + }, + "debounceInMs": { + "example": "undefined", + "format": "undefined", + "type": "undefined" + }, + "mockedOutputs": { + "type": "undefined" + }, + "onlyTriggerManually": { + "type": "undefined" + }, + "outputs": "${((outputs) => {return outputs.body.data})(self.rawOutputs)}", + "pollingIntervalInMs": { + "example": "undefined", + "format": "undefined", + "minimum": "undefined", + "type": "undefined" + }, + "requiresConfirmation": { + "type": "undefined" + }, + "showToastOnError": { + "type": "undefined" + }, + "spec": { + "type": "" + } + }, + "type": "action" + } + ], + "rootInstanceName": "string", + "tags": [ + "service:webshop-backend", + "team:webshop" + ] + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + }, + "included": [ + { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + ], + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "deleted_at": "2019-09-19T10:00:00.000Z", + "org_id": "integer", + "updated_at": "2019-09-19T10:00:00.000Z", + "updated_since_deployment": false, + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "version": "integer" + }, + "relationship": { + "connections": [ + { + "attributes": { + "name": "string", + "onPremRunner": { + "id": "string", + "url": "string" + } + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "custom_connections" + } + ], + "deployment": { + "data": { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "deployment" + }, + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + } + } + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data object containing the updated app definition.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The updated app definition attributes, such as name, description, and components.

\n
\n
\n
\n
\n
\n

components

\n
\n

[object]

\n

The UI components that make up the app.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the grid component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the grid component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this grid component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a grid component.

\n
\n
\n
\n
\n
\n

backgroundColor

\n
\n

string

\n

The background color of the grid.

default: default

\n
\n \n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the grid.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the UI component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the UI component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this UI component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a UI component. Different component types can have their own additional unique properties. See the components documentation for more detail on each component type and its properties.

\n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the UI component.

\n
\n \n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The UI component type. \nAllowed enum values: table,textInput,textArea,button,text,select,modal,schemaForm,checkbox,tabs

Show 10 more,vegaChart,radioButtons,numberInput,fileInput,jsonInput,gridCell,dateRangePicker,search,container,calloutValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

boolean

\n

default: true

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The grid component type. \nAllowed enum values: grid

default: grid

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The human-readable description for the app.

\n
\n \n
\n
\n
\n
\n
\n

favorite

\n
\n

boolean

\n

Whether the app is marked as a favorite by the current user.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the app.

\n
\n \n
\n
\n
\n
\n
\n

queries

\n
\n

[ <oneOf>]

\n

An array of queries, such as external actions and state variables, that the app uses.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

An action query. This query type is used to trigger an action, such as sending a HTTP request.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for downstream of the action query.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the action query.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this action query. This name is also used to access the query's result throughout the app.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

The properties of the action query.

\n
\n
\n
\n
\n
\n

condition

\n
\n

 <oneOf>

\n

Whether to run this query. If specified, the query will only run if this condition evaluates to true in JavaScript and all other conditions are also met.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n

debounceInMs

\n
\n

 <oneOf>

\n

The minimum time in milliseconds that must pass before the query can be triggered again. This is useful for preventing accidental double-clicks from triggering the query multiple times.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

double

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

mockedOutputs

\n
\n

 <oneOf>

\n

The mocked outputs of the action query. This is useful for testing the app without actually running the action.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The mocked outputs of the action query.

\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

 <oneOf>

\n

Whether to enable the mocked outputs for testing.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

outputs

\n
\n

string

\n

The mocked outputs of the action query, serialized as JSON.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

onlyTriggerManually

\n
\n

 <oneOf>

\n

Determines when this query is executed. If set to false, the query will run when the app loads and whenever any query arguments change. If set to true, the query will only run when manually triggered from elsewhere in the app.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

outputs

\n
\n

string

\n

The post-query transformation function, which is a JavaScript function that changes the query's .outputs property after the query's execution.

\n
\n \n
\n
\n
\n
\n
\n

pollingIntervalInMs

\n
\n

 <oneOf>

\n

If specified, the app will poll the query at the specified interval in milliseconds. The minimum polling interval is 15 seconds. The query will only poll when the app's browser tab is active.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

double

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a number.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

requiresConfirmation

\n
\n

 <oneOf>

\n

Whether to prompt the user to confirm this query before it runs.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

showToastOnError

\n
\n

 <oneOf>

\n

Whether to display a toast to the user when the query returns an error.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

spec [required]

\n
\n

 <oneOf>

\n

The definition of the action query.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The action query spec object.

\n
\n
\n
\n
\n
\n

connectionGroup

\n
\n

object

\n

The connection group to use for an action query.

\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the connection group.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

The tags of the connection group.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

connectionId

\n
\n

string

\n

The ID of the custom connection to use for this action query.

\n
\n \n
\n
\n
\n
\n
\n

fqn [required]

\n
\n

string

\n

The fully qualified name of the action type.

\n
\n \n
\n
\n
\n
\n
\n

inputs

\n
\n

 <oneOf>

\n

The inputs to the action query. These are the values that are passed to the action when it is triggered.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The inputs to the action query. See the Actions Catalog for more detail on each action and its inputs.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The action query type. \nAllowed enum values: action

default: action

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

A data transformer, which is custom JavaScript code that executes and transforms data when its inputs change.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the data transformer.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this data transformer. This name is also used to access the transformer's result throughout the app.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

The properties of the data transformer.

\n
\n
\n
\n
\n
\n

outputs

\n
\n

string

\n

A JavaScript function that returns the transformed data.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The data transform type. \nAllowed enum values: dataTransform

default: dataTransform

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

A variable, which can be set and read by other components in the app.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the state variable.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this state variable. This name is also used to access the variable's value throughout the app.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

The properties of the state variable.

\n
\n
\n
\n
\n
\n

defaultValue

\n
\n

\n

The default value of the state variable.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The state variable type. \nAllowed enum values: stateVariable

default: stateVariable

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

rootInstanceName

\n
\n

string

\n

The name of the root component of the app. This must be a grid component that contains all other components.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags for the app, which can be used to filter apps.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the updated app.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

included

\n
\n

[object]

\n

Data on the version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata of an app.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was created.

\n
\n \n
\n
\n
\n
\n
\n

deleted_at

\n
\n

date-time

\n

Timestamp of when the app was deleted.

\n
\n \n
\n
\n
\n
\n
\n

org_id

\n
\n

int64

\n

The Datadog organization ID that owns the app.

\n
\n \n
\n
\n
\n
\n
\n

updated_at

\n
\n

date-time

\n

Timestamp of when the app was last updated.

\n
\n \n
\n
\n
\n
\n
\n

updated_since_deployment

\n
\n

boolean

\n

Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

The version number of the app. This starts at 1 and increments with each update.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

relationship

\n
\n

object

\n

The app's publication relationship and custom connections.

\n
\n
\n
\n
\n
\n

connections

\n
\n

[object]

\n

Array of custom connections used by the app.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The custom connection attributes.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

onPremRunner

\n
\n

object

\n

Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.

\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The Private Action Runner ID.

\n
\n \n
\n
\n
\n
\n
\n

url

\n
\n

string

\n

The URL of the Private Action Runner.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The custom connection type. \nAllowed enum values: custom_connections

default: custom_connections

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

deployment

\n
\n

object

\n

Information pointing to the app's publication status.

\n
\n
\n
\n
\n
\n

data

\n
\n

object

\n

Data object containing the deployment ID.

\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "UpdateAppSelfService": { + "responses": { + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "selfService": true + } + } + }, + "json": { + "data": { + "attributes": { + "selfService": true + }, + "type": "selfService" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for updating an app's self-service status.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for updating an app's self-service status.

\n
\n
\n
\n
\n
\n

selfService [required]

\n
\n

boolean

\n

Whether the app is enabled for self-service.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The self-service resource type. \nAllowed enum values: selfService

default: selfService

\n
\n \n
\n
\n
\n
" + } + }, + "UpdateAppTags": { + "responses": { + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "tags": [ + "team:platform", + "service:ops" + ] + } + } + }, + "json": { + "data": { + "attributes": { + "tags": [ + "team:platform", + "service:ops" + ] + }, + "type": "tags" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for replacing an app's tags.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for replacing an app's tags.

\n
\n
\n
\n
\n
\n

tags [required]

\n
\n

[string]

\n

The full list of tags that should be set on the app. Existing tags not present in this list are removed.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The tags resource type. \nAllowed enum values: tags

default: tags

\n
\n \n
\n
\n
\n
" + } + }, + "UpdateAppVersionName": { + "responses": { + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "name": "v1.2.0 - bug fix release" + } + } + }, + "json": { + "data": { + "attributes": { + "name": "v1.2.0 - bug fix release" + }, + "type": "versionNames" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data for naming a specific app version.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes for naming a specific app version.

\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name to assign to the app version.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The version-name resource type. \nAllowed enum values: versionNames

default: versionNames

\n
\n \n
\n
\n
\n
" + } + }, + "ListAppVersions": { + "responses": { + "200": { + "json": { + "data": [ + { + "attributes": { + "app_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "created_at": "2019-09-19T10:00:00.000Z", + "has_ever_been_published": true, + "name": "v1.2.0 - bug fix release", + "updated_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "jane.doe@example.com", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "version": 3 + }, + "id": "9e20cbaf-68da-45a6-9ccf-54193ac29fa5", + "type": "appVersions" + } + ], + "meta": { + "page": { + "totalCount": "integer", + "totalFilteredCount": "integer" + } + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

The list of app versions.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

Attributes describing an app version.

\n
\n
\n
\n
\n
\n

app_id

\n
\n

uuid

\n

The ID of the app this version belongs to.

\n
\n \n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the version was created.

\n
\n \n
\n
\n
\n
\n
\n

has_ever_been_published

\n
\n

boolean

\n

Whether this version has ever been published.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The optional human-readable name of the version.

\n
\n \n
\n
\n
\n
\n
\n

updated_at

\n
\n

date-time

\n

Timestamp of when the version was last updated.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who created the version.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email) of the user who created the version.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who created the version.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

The version number of the app, starting at 1.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the app version.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The app-version resource type. \nAllowed enum values: appVersions

default: appVersions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Pagination metadata.

\n
\n
\n
\n
\n
\n

page

\n
\n

object

\n

Information on the total number of apps, to be used for pagination.

\n
\n
\n
\n
\n
\n

totalCount

\n
\n

int64

\n

The total number of apps under the Datadog organization, disregarding any filters applied.

\n
\n \n
\n
\n
\n
\n
\n

totalFilteredCount

\n
\n

int64

\n

The total number of apps that match the specified filters.

\n
\n \n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } } } \ No newline at end of file diff --git a/content/en/api/v2/cloud-cost-management/examples.json b/content/en/api/v2/cloud-cost-management/examples.json index 22bdb7c3360..ef240bc1dc3 100644 --- a/content/en/api/v2/cloud-cost-management/examples.json +++ b/content/en/api/v2/cloud-cost-management/examples.json @@ -1853,6 +1853,579 @@ "html": "" } }, + "GetCommitmentsCommitmentList": { + "responses": { + "200": { + "json": { + "commitments": [ + { + "availability_zone": "us-east-1a", + "commitment_id": "ri-0123456789abcdef0", + "expiration_date": "2025-12-31T00:00:00Z", + "instance_type": "m5.xlarge", + "number_of_nfus": 8, + "number_of_reservations": 2, + "offering_class": "standard", + "operating_system": "Linux", + "purchase_option": "All Upfront", + "region": "us-east-1", + "start_date": "2023-01-01T00:00:00Z", + "term_length": 1, + "utilization": 0.85 + } + ], + "meta": { + "committed_spend_unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + } + }, + "html": "
\n
\n
\n
\n

commitments [required]

\n
\n

[ <oneOf>]

\n

Array of commitment items.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

AWS EC2 Reserved Instance commitment details.

\n
\n
\n
\n
\n
\n

availability_zone

\n
\n

string

\n

The availability zone of the reservation.

\n
\n \n
\n
\n
\n
\n
\n

commitment_id [required]

\n
\n

string

\n

The unique identifier of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

expiration_date

\n
\n

string

\n

The expiration date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

instance_type [required]

\n
\n

string

\n

The EC2 instance type.

\n
\n \n
\n
\n
\n
\n
\n

number_of_nfus

\n
\n

double

\n

The number of Normalized Capacity Units.

\n
\n \n
\n
\n
\n
\n
\n

number_of_reservations

\n
\n

double

\n

The number of reserved instances.

\n
\n \n
\n
\n
\n
\n
\n

offering_class [required]

\n
\n

string

\n

The offering class of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

operating_system [required]

\n
\n

string

\n

The operating system of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

purchase_option [required]

\n
\n

string

\n

The payment option for the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

region [required]

\n
\n

string

\n

The AWS region of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

start_date

\n
\n

string

\n

The start date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

term_length

\n
\n

double

\n

The term length in years.

\n
\n \n
\n
\n
\n
\n
\n

utilization

\n
\n

double

\n

The utilization percentage of the commitment.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

AWS RDS Reserved Instance commitment details.

\n
\n
\n
\n
\n
\n

commitment_id [required]

\n
\n

string

\n

The unique identifier of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

database_engine [required]

\n
\n

string

\n

The database engine of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

expiration_date

\n
\n

string

\n

The expiration date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

instance_type [required]

\n
\n

string

\n

The RDS instance type.

\n
\n \n
\n
\n
\n
\n
\n

is_multi_az

\n
\n

boolean

\n

Whether the Reserved Instance is Multi-AZ.

\n
\n \n
\n
\n
\n
\n
\n

number_of_nfus

\n
\n

double

\n

The number of Normalized Capacity Units.

\n
\n \n
\n
\n
\n
\n
\n

number_of_reservations

\n
\n

double

\n

The number of reserved instances.

\n
\n \n
\n
\n
\n
\n
\n

purchase_option [required]

\n
\n

string

\n

The payment option for the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

region [required]

\n
\n

string

\n

The AWS region of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

start_date

\n
\n

string

\n

The start date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

term_length

\n
\n

double

\n

The term length in years.

\n
\n \n
\n
\n
\n
\n
\n

utilization

\n
\n

double

\n

The utilization percentage of the commitment.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

AWS ElastiCache Reserved Instance commitment details.

\n
\n
\n
\n
\n
\n

cache_engine [required]

\n
\n

string

\n

The cache engine type of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

commitment_id [required]

\n
\n

string

\n

The unique identifier of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

expiration_date

\n
\n

string

\n

The expiration date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

instance_type [required]

\n
\n

string

\n

The ElastiCache instance type.

\n
\n \n
\n
\n
\n
\n
\n

number_of_nfus

\n
\n

double

\n

The number of Normalized Capacity Units.

\n
\n \n
\n
\n
\n
\n
\n

number_of_reservations

\n
\n

double

\n

The number of reserved instances.

\n
\n \n
\n
\n
\n
\n
\n

purchase_option [required]

\n
\n

string

\n

The payment option for the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

region [required]

\n
\n

string

\n

The AWS region of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

start_date

\n
\n

string

\n

The start date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

term_length

\n
\n

double

\n

The term length in years.

\n
\n \n
\n
\n
\n
\n
\n

utilization

\n
\n

double

\n

The utilization percentage of the commitment.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

AWS Savings Plan commitment details.

\n
\n
\n
\n
\n
\n

commitment_id [required]

\n
\n

string

\n

The unique identifier of the Savings Plan.

\n
\n \n
\n
\n
\n
\n
\n

committed_spend_per_hour

\n
\n

double

\n

The hourly committed spend for the Savings Plan.

\n
\n \n
\n
\n
\n
\n
\n

expiration_date

\n
\n

string

\n

The expiration date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

purchase_option [required]

\n
\n

string

\n

The payment option for the Savings Plan.

\n
\n \n
\n
\n
\n
\n
\n

savings_plan_type [required]

\n
\n

string

\n

The Savings Plan type.

\n
\n \n
\n
\n
\n
\n
\n

start_date

\n
\n

string

\n

The start date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

term_length

\n
\n

double

\n

The term length in years.

\n
\n \n
\n
\n
\n
\n
\n

utilization

\n
\n

double

\n

The utilization percentage of the commitment.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

Azure Virtual Machine Reserved Instance commitment details.

\n
\n
\n
\n
\n
\n

benefit_name [required]

\n
\n

string

\n

The display name of the Azure reservation.

\n
\n \n
\n
\n
\n
\n
\n

commitment_id [required]

\n
\n

string

\n

The unique identifier of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

expiration_date

\n
\n

string

\n

The expiration date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

instance_type [required]

\n
\n

string

\n

The Azure VM instance type.

\n
\n \n
\n
\n
\n
\n
\n

meter_sub_category [required]

\n
\n

string

\n

The Azure meter sub-category for the reservation.

\n
\n \n
\n
\n
\n
\n
\n

region [required]

\n
\n

string

\n

The Azure region of the Reserved Instance.

\n
\n \n
\n
\n
\n
\n
\n

start_date

\n
\n

string

\n

The start date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Status of an Azure VM Reserved Instance. \nAllowed enum values: running,expired,cancelled

\n
\n \n
\n
\n
\n
\n
\n

term_length

\n
\n

double

\n

The term length in years.

\n
\n \n
\n
\n
\n
\n
\n

utilization

\n
\n

double

\n

The utilization percentage of the commitment.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

Azure Compute Savings Plan commitment details.

\n
\n
\n
\n
\n
\n

benefit_name [required]

\n
\n

string

\n

The display name of the Azure Savings Plan.

\n
\n \n
\n
\n
\n
\n
\n

commitment_id [required]

\n
\n

string

\n

The unique identifier of the Savings Plan.

\n
\n \n
\n
\n
\n
\n
\n

committed_spend_per_hour

\n
\n

double

\n

The hourly committed spend for the Savings Plan.

\n
\n \n
\n
\n
\n
\n
\n

expiration_date

\n
\n

string

\n

The expiration date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

start_date

\n
\n

string

\n

The start date of the commitment.

\n
\n \n
\n
\n
\n
\n
\n

term_length

\n
\n

double

\n

The term length in years.

\n
\n \n
\n
\n
\n
\n
\n

utilization

\n
\n

double

\n

The utilization percentage of the commitment.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata for a commitments list response.

\n
\n
\n
\n
\n
\n

committed_spend_unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetCommitmentsCoverageScalar": { + "responses": { + "200": { + "json": { + "columns": [ + { + "meta": { + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "name": "utilization", + "type": "group", + "values": [ + 0.85, + 0.72 + ] + } + ] + }, + "html": "
\n
\n
\n
\n

columns [required]

\n
\n

[object]

\n

Array of scalar columns in the response.

\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata for a scalar column, including unit information.

\n
\n
\n
\n
\n
\n

unit [required]

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The column name.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The column type. "group" for dimension columns, "number" for metric columns. \nAllowed enum values: group,number

\n
\n \n
\n
\n
\n
\n
\n

values [required]

\n
\n

[]

\n

Values for a scalar column. Arrays of strings for group columns, numbers for value columns.

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetCommitmentsCoverageTimeseries": { + "responses": { + "200": { + "json": { + "cost": { + "series": { + "": [] + }, + "times": [ + 1693526400, + 1693612800 + ], + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "hours": { + "series": { + "": [] + }, + "times": [ + 1693526400, + 1693612800 + ], + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + } + }, + "html": "
\n
\n
\n
\n

cost [required]

\n
\n

object

\n

A timeseries metric containing timestamps, series values, and optional unit metadata.

\n
\n
\n
\n
\n
\n

series [required]

\n
\n

object

\n

Timeseries data as a map of series names to their corresponding value arrays.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

[number]

\n

A series of numeric values for a timeseries metric.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

times [required]

\n
\n

[integer]

\n

Unix timestamps in seconds for the timeseries data points.

\n
\n \n
\n
\n
\n
\n
\n

unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

hours [required]

\n
\n

object

\n

A timeseries metric containing timestamps, series values, and optional unit metadata.

\n
\n
\n
\n
\n
\n

series [required]

\n
\n

object

\n

Timeseries data as a map of series names to their corresponding value arrays.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

[number]

\n

A series of numeric values for a timeseries metric.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

times [required]

\n
\n

[integer]

\n

Unix timestamps in seconds for the timeseries data points.

\n
\n \n
\n
\n
\n
\n
\n

unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetCommitmentsOnDemandHotspotsScalar": { + "responses": { + "200": { + "json": { + "columns": [ + { + "meta": { + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "name": "utilization", + "type": "group", + "values": [ + 0.85, + 0.72 + ] + } + ], + "meta": { + "on_demand_filters": "region:us-east-1" + }, + "total": [ + { + "meta": { + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "name": "utilization", + "type": "group", + "values": [ + 0.85, + 0.72 + ] + } + ] + }, + "html": "
\n
\n
\n
\n

columns [required]

\n
\n

[object]

\n

Array of scalar columns in the response.

\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata for a scalar column, including unit information.

\n
\n
\n
\n
\n
\n

unit [required]

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The column name.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The column type. "group" for dimension columns, "number" for metric columns. \nAllowed enum values: group,number

\n
\n \n
\n
\n
\n
\n
\n

values [required]

\n
\n

[]

\n

Values for a scalar column. Arrays of strings for group columns, numbers for value columns.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata for the on-demand hot-spots scalar response.

\n
\n
\n
\n
\n
\n

on_demand_filters [required]

\n
\n

string

\n

Active on-demand filters applied to the response.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

total [required]

\n
\n

[object]

\n

Array of scalar columns in the response.

\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata for a scalar column, including unit information.

\n
\n
\n
\n
\n
\n

unit [required]

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The column name.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The column type. "group" for dimension columns, "number" for metric columns. \nAllowed enum values: group,number

\n
\n \n
\n
\n
\n
\n
\n

values [required]

\n
\n

[]

\n

Values for a scalar column. Arrays of strings for group columns, numbers for value columns.

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetCommitmentsSavingsScalar": { + "responses": { + "200": { + "json": { + "columns": [ + { + "meta": { + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "name": "utilization", + "type": "group", + "values": [ + 0.85, + 0.72 + ] + } + ] + }, + "html": "
\n
\n
\n
\n

columns [required]

\n
\n

[object]

\n

Array of scalar columns in the response.

\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata for a scalar column, including unit information.

\n
\n
\n
\n
\n
\n

unit [required]

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The column name.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The column type. "group" for dimension columns, "number" for metric columns. \nAllowed enum values: group,number

\n
\n \n
\n
\n
\n
\n
\n

values [required]

\n
\n

[]

\n

Values for a scalar column. Arrays of strings for group columns, numbers for value columns.

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetCommitmentsSavingsTimeseries": { + "responses": { + "200": { + "json": { + "actual_cost": { + "series": { + "": [] + }, + "times": [ + 1693526400, + 1693612800 + ], + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "effective_savings_rate": { + "series": { + "": [] + }, + "times": [ + 1693526400, + 1693612800 + ], + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "on_demand_equivalent_cost": { + "series": { + "": [] + }, + "times": [ + 1693526400, + 1693612800 + ], + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "realized_savings": { + "series": { + "": [] + }, + "times": [ + 1693526400, + 1693612800 + ], + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + } + }, + "html": "
\n
\n
\n
\n

actual_cost [required]

\n
\n

object

\n

A timeseries metric containing timestamps, series values, and optional unit metadata.

\n
\n
\n
\n
\n
\n

series [required]

\n
\n

object

\n

Timeseries data as a map of series names to their corresponding value arrays.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

[number]

\n

A series of numeric values for a timeseries metric.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

times [required]

\n
\n

[integer]

\n

Unix timestamps in seconds for the timeseries data points.

\n
\n \n
\n
\n
\n
\n
\n

unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

effective_savings_rate [required]

\n
\n

object

\n

A timeseries metric containing timestamps, series values, and optional unit metadata.

\n
\n
\n
\n
\n
\n

series [required]

\n
\n

object

\n

Timeseries data as a map of series names to their corresponding value arrays.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

[number]

\n

A series of numeric values for a timeseries metric.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

times [required]

\n
\n

[integer]

\n

Unix timestamps in seconds for the timeseries data points.

\n
\n \n
\n
\n
\n
\n
\n

unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

on_demand_equivalent_cost [required]

\n
\n

object

\n

A timeseries metric containing timestamps, series values, and optional unit metadata.

\n
\n
\n
\n
\n
\n

series [required]

\n
\n

object

\n

Timeseries data as a map of series names to their corresponding value arrays.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

[number]

\n

A series of numeric values for a timeseries metric.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

times [required]

\n
\n

[integer]

\n

Unix timestamps in seconds for the timeseries data points.

\n
\n \n
\n
\n
\n
\n
\n

unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

realized_savings [required]

\n
\n

object

\n

A timeseries metric containing timestamps, series values, and optional unit metadata.

\n
\n
\n
\n
\n
\n

series [required]

\n
\n

object

\n

Timeseries data as a map of series names to their corresponding value arrays.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

[number]

\n

A series of numeric values for a timeseries metric.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

times [required]

\n
\n

[integer]

\n

Unix timestamps in seconds for the timeseries data points.

\n
\n \n
\n
\n
\n
\n
\n

unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetCommitmentsUtilizationScalar": { + "responses": { + "200": { + "json": { + "columns": [ + { + "meta": { + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "name": "utilization", + "type": "group", + "values": [ + 0.85, + 0.72 + ] + } + ], + "product_breakdown": [ + { + "product": "ec2", + "utilization": 0.85 + } + ] + }, + "html": "
\n
\n
\n
\n

columns [required]

\n
\n

[object]

\n

Array of scalar columns in the response.

\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata for a scalar column, including unit information.

\n
\n
\n
\n
\n
\n

unit [required]

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The column name.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The column type. "group" for dimension columns, "number" for metric columns. \nAllowed enum values: group,number

\n
\n \n
\n
\n
\n
\n
\n

values [required]

\n
\n

[]

\n

Values for a scalar column. Arrays of strings for group columns, numbers for value columns.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

product_breakdown

\n
\n

[object]

\n

Array of per-product utilization breakdown entries.

\n
\n
\n
\n
\n
\n

product [required]

\n
\n

string

\n

The cloud product name.

\n
\n \n
\n
\n
\n
\n
\n

utilization [required]

\n
\n

double

\n

The utilization percentage for the product.

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetCommitmentsUtilizationTimeseries": { + "responses": { + "200": { + "json": { + "series": { + "": [] + }, + "times": [ + 1693526400, + 1693612800 + ], + "unit": { + "family": "percentage", + "id": 17, + "name": "percent", + "plural": "percent", + "scale_factor": 1, + "short_name": "%" + } + }, + "html": "
\n
\n
\n
\n

series [required]

\n
\n

object

\n

Timeseries data as a map of series names to their corresponding value arrays.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

[number]

\n

A series of numeric values for a timeseries metric.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

times [required]

\n
\n

[integer]

\n

Unix timestamps in seconds for the timeseries data points.

\n
\n \n
\n
\n
\n
\n
\n

unit

\n
\n

object

\n

Unit metadata for a numeric metric.

\n
\n
\n
\n
\n
\n

family [required]

\n
\n

string

\n

The unit family (for example, percentage or money).

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

int64

\n

The unit identifier.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The unit name (for example, percent or dollar).

\n
\n \n
\n
\n
\n
\n
\n

plural [required]

\n
\n

string

\n

The plural form of the unit name.

\n
\n \n
\n
\n
\n
\n
\n

scale_factor [required]

\n
\n

double

\n

The scale factor for the unit.

\n
\n \n
\n
\n
\n
\n
\n

short_name [required]

\n
\n

string

\n

The abbreviated unit name (for example, % or $).

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, "ListCustomCostsFiles": { "responses": { "200": { diff --git a/content/en/api/v2/llm-observability/examples.json b/content/en/api/v2/llm-observability/examples.json index 88c14e4d073..5694cf1f8ef 100644 --- a/content/en/api/v2/llm-observability/examples.json +++ b/content/en/api/v2/llm-observability/examples.json @@ -1025,7 +1025,7 @@ "type": "annotated_interactions" } }, - "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Data object for annotated interactions.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes containing the list of annotated interactions.

\n
\n
\n
\n
\n
\n

annotated_interactions [required]

\n
\n

[object]

\n

List of interactions with their annotations.

\n
\n
\n
\n
\n
\n

annotations [required]

\n
\n

[object]

\n

List of annotations for this interaction.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

Timestamp when the annotation was created.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

string

\n

Identifier of the user who created the annotation.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the annotation.

\n
\n \n
\n
\n
\n
\n
\n

interaction_id [required]

\n
\n

string

\n

Identifier of the interaction this annotation belongs to.

\n
\n \n
\n
\n
\n
\n
\n

label_values [required]

\n
\n

object

\n

The label values for this annotation.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

Timestamp when the annotation was last modified.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

string

\n

Identifier of the user who last modified the annotation.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Identifier of the content (trace ID or session ID) for this interaction.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the interaction.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of interaction in an annotation queue. \nAllowed enum values: trace,experiment_trace,session

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The queue ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Resource type for annotated interactions. \nAllowed enum values: annotated_interactions

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Data object for annotated interactions.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes containing the list of annotated interactions.

\n
\n
\n
\n
\n
\n

annotated_interactions [required]

\n
\n

[ <oneOf>]

\n

List of interactions with their annotations.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

A trace, experiment trace, or session interaction with its associated annotations.

\n
\n
\n
\n
\n
\n

annotations [required]

\n
\n

[object]

\n

List of annotations for this interaction.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

Timestamp when the annotation was created.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

string

\n

Identifier of the user who created the annotation.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the annotation.

\n
\n \n
\n
\n
\n
\n
\n

interaction_id [required]

\n
\n

string

\n

Identifier of the interaction this annotation belongs to.

\n
\n \n
\n
\n
\n
\n
\n

label_values [required]

\n
\n

object

\n

The label values for this annotation.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

Timestamp when the annotation was last modified.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

string

\n

Identifier of the user who last modified the annotation.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Upstream entity identifier supplied by the caller.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the interaction.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of an upstream-entity interaction. \nAllowed enum values: trace,experiment_trace,session

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

A display_block interaction with its associated annotations.

\n
\n
\n
\n
\n
\n

annotations [required]

\n
\n

[object]

\n

List of annotations for this interaction.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

Timestamp when the annotation was created.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

string

\n

Identifier of the user who created the annotation.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the annotation.

\n
\n \n
\n
\n
\n
\n
\n

interaction_id [required]

\n
\n

string

\n

Identifier of the interaction this annotation belongs to.

\n
\n \n
\n
\n
\n
\n
\n

label_values [required]

\n
\n

object

\n

The label values for this annotation.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

Timestamp when the annotation was last modified.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

string

\n

Identifier of the user who last modified the annotation.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Server-generated deterministic identifier derived from the block list.

\n
\n \n
\n
\n
\n
\n
\n

display_block [required]

\n
\n

[object]

\n

List of content blocks that make up a display_block interaction.\nMust contain at least one block.

\n
\n
\n
\n
\n
\n

alt

\n
\n

string

\n

Alternative text for an image block.

\n
\n \n
\n
\n
\n
\n
\n

content

\n
\n

\n

Block payload. A string for markdown, header, and text; an\narbitrary JSON value (object, array, or scalar) for json. Omitted\nfor image, widget, and llmobs_trace.

\n
\n \n
\n
\n
\n
\n
\n

height

\n
\n

int64

\n

Optional rendered height. Must be positive when set.

\n
\n \n
\n
\n
\n
\n
\n

interactionType

\n
\n

enum

\n

Upstream interaction type referenced by an llmobs_trace block.\nRestricted to trace or experiment_trace. \nAllowed enum values: trace,experiment_trace

\n
\n \n
\n
\n
\n
\n
\n

label

\n
\n

string

\n

Optional label rendered alongside the block.

\n
\n \n
\n
\n
\n
\n
\n

level

\n
\n

enum

\n

Visual size for a header block. \nAllowed enum values: sm,md,lg,xl

\n
\n \n
\n
\n
\n
\n
\n

tileDef

\n
\n

\n

Tile definition for a widget block. Required for widget. The\nschema is owned by the frontend renderer.

\n
\n \n
\n
\n
\n
\n
\n

timeFrame

\n
\n

object

\n

Unix-millis time range used by chart blocks.

\n
\n
\n
\n
\n
\n

end [required]

\n
\n

int64

\n

End of the range, in Unix milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

start [required]

\n
\n

int64

\n

Start of the range, in Unix milliseconds.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

traceId

\n
\n

string

\n

Trace identifier. Required for llmobs_trace blocks.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Discriminator for a single display_block content block. Adding a\nvariant requires coordinated changes in the frontend renderer. \nAllowed enum values: markdown,header,text,json,image,widget,llmobs_trace

\n
\n \n
\n
\n
\n
\n
\n

url

\n
\n

string

\n

URL of the image. Required for image blocks.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the interaction.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type discriminator for a display_block interaction. \nAllowed enum values: display_block

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The queue ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Resource type for annotated interactions. \nAllowed enum values: annotated_interactions

\n
\n \n
\n
\n
\n
" }, "400": { "json": { @@ -1133,7 +1133,7 @@ "type": "interactions" } }, - "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Data object for the interaction addition response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the interaction addition response.

\n
\n
\n
\n
\n
\n

interactions [required]

\n
\n

[object]

\n

List of interactions that were processed.

\n
\n
\n
\n
\n
\n

already_existed [required]

\n
\n

boolean

\n

Whether this interaction already existed in the queue.

\n
\n \n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Identifier of the content (trace ID or session ID) for this interaction.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the interaction.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of interaction in an annotation queue. \nAllowed enum values: trace,experiment_trace,session

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The queue ID the interactions were added to.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Resource type for annotation queue interactions. \nAllowed enum values: interactions

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Data object for the interaction addition response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the interaction addition response.

\n
\n
\n
\n
\n
\n

interactions [required]

\n
\n

[ <oneOf>]

\n

List of interactions that were processed.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

A trace, experiment trace, or session interaction result.

\n
\n
\n
\n
\n
\n

already_existed [required]

\n
\n

boolean

\n

Whether this interaction already existed in the queue.

\n
\n \n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Upstream entity identifier supplied by the caller.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the interaction.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of an upstream-entity interaction. \nAllowed enum values: trace,experiment_trace,session

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

A display_block interaction result.

\n
\n
\n
\n
\n
\n

already_existed [required]

\n
\n

boolean

\n

Whether this interaction already existed in the queue.

\n
\n \n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Server-generated deterministic identifier derived from the block list.

\n
\n \n
\n
\n
\n
\n
\n

display_block [required]

\n
\n

[object]

\n

List of content blocks that make up a display_block interaction.\nMust contain at least one block.

\n
\n
\n
\n
\n
\n

alt

\n
\n

string

\n

Alternative text for an image block.

\n
\n \n
\n
\n
\n
\n
\n

content

\n
\n

\n

Block payload. A string for markdown, header, and text; an\narbitrary JSON value (object, array, or scalar) for json. Omitted\nfor image, widget, and llmobs_trace.

\n
\n \n
\n
\n
\n
\n
\n

height

\n
\n

int64

\n

Optional rendered height. Must be positive when set.

\n
\n \n
\n
\n
\n
\n
\n

interactionType

\n
\n

enum

\n

Upstream interaction type referenced by an llmobs_trace block.\nRestricted to trace or experiment_trace. \nAllowed enum values: trace,experiment_trace

\n
\n \n
\n
\n
\n
\n
\n

label

\n
\n

string

\n

Optional label rendered alongside the block.

\n
\n \n
\n
\n
\n
\n
\n

level

\n
\n

enum

\n

Visual size for a header block. \nAllowed enum values: sm,md,lg,xl

\n
\n \n
\n
\n
\n
\n
\n

tileDef

\n
\n

\n

Tile definition for a widget block. Required for widget. The\nschema is owned by the frontend renderer.

\n
\n \n
\n
\n
\n
\n
\n

timeFrame

\n
\n

object

\n

Unix-millis time range used by chart blocks.

\n
\n
\n
\n
\n
\n

end [required]

\n
\n

int64

\n

End of the range, in Unix milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

start [required]

\n
\n

int64

\n

Start of the range, in Unix milliseconds.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

traceId

\n
\n

string

\n

Trace identifier. Required for llmobs_trace blocks.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Discriminator for a single display_block content block. Adding a\nvariant requires coordinated changes in the frontend renderer. \nAllowed enum values: markdown,header,text,json,image,widget,llmobs_trace

\n
\n \n
\n
\n
\n
\n
\n

url

\n
\n

string

\n

URL of the image. Required for image blocks.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Unique identifier of the interaction.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type discriminator for a display_block interaction. \nAllowed enum values: display_block

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The queue ID the interactions were added to.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Resource type for annotation queue interactions. \nAllowed enum values: interactions

\n
\n \n
\n
\n
\n
" }, "400": { "json": { @@ -1221,10 +1221,7 @@ "data": { "attributes": { "interactions": [ - { - "content_id": "trace-abc-123", - "type": "trace" - } + {} ] }, "type": "interactions" @@ -1243,7 +1240,7 @@ "type": "interactions" } }, - "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Data object for adding interactions to an annotation queue.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes for adding interactions to an annotation queue.

\n
\n
\n
\n
\n
\n

interactions [required]

\n
\n

[object]

\n

List of interactions to add to the queue. Must contain at least one item.

\n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Identifier of the content (trace ID or session ID) for this interaction.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of interaction in an annotation queue. \nAllowed enum values: trace,experiment_trace,session

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Resource type for annotation queue interactions. \nAllowed enum values: interactions

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Data object for adding interactions to an annotation queue.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes for adding interactions to an annotation queue.

\n
\n
\n
\n
\n
\n

interactions [required]

\n
\n

[ <oneOf>]

\n

List of interactions to add to the queue. Must contain at least one item.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

An interaction that references an upstream trace, experiment trace, or session.

\n
\n
\n
\n
\n
\n

content_id [required]

\n
\n

string

\n

Upstream entity identifier (trace, experiment trace, or session ID).

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of an upstream-entity interaction. \nAllowed enum values: trace,experiment_trace,session

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

An interaction whose rendered content is supplied directly as a list\nof display blocks. The server generates content_id deterministically\nfrom the block list.

\n
\n
\n
\n
\n
\n

display_block [required]

\n
\n

[object]

\n

List of content blocks that make up a display_block interaction.\nMust contain at least one block.

\n
\n
\n
\n
\n
\n

alt

\n
\n

string

\n

Alternative text for an image block.

\n
\n \n
\n
\n
\n
\n
\n

content

\n
\n

\n

Block payload. A string for markdown, header, and text; an\narbitrary JSON value (object, array, or scalar) for json. Omitted\nfor image, widget, and llmobs_trace.

\n
\n \n
\n
\n
\n
\n
\n

height

\n
\n

int64

\n

Optional rendered height. Must be positive when set.

\n
\n \n
\n
\n
\n
\n
\n

interactionType

\n
\n

enum

\n

Upstream interaction type referenced by an llmobs_trace block.\nRestricted to trace or experiment_trace. \nAllowed enum values: trace,experiment_trace

\n
\n \n
\n
\n
\n
\n
\n

label

\n
\n

string

\n

Optional label rendered alongside the block.

\n
\n \n
\n
\n
\n
\n
\n

level

\n
\n

enum

\n

Visual size for a header block. \nAllowed enum values: sm,md,lg,xl

\n
\n \n
\n
\n
\n
\n
\n

tileDef

\n
\n

\n

Tile definition for a widget block. Required for widget. The\nschema is owned by the frontend renderer.

\n
\n \n
\n
\n
\n
\n
\n

timeFrame

\n
\n

object

\n

Unix-millis time range used by chart blocks.

\n
\n
\n
\n
\n
\n

end [required]

\n
\n

int64

\n

End of the range, in Unix milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

start [required]

\n
\n

int64

\n

Start of the range, in Unix milliseconds.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

traceId

\n
\n

string

\n

Trace identifier. Required for llmobs_trace blocks.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Discriminator for a single display_block content block. Adding a\nvariant requires coordinated changes in the frontend renderer. \nAllowed enum values: markdown,header,text,json,image,widget,llmobs_trace

\n
\n \n
\n
\n
\n
\n
\n

url

\n
\n

string

\n

URL of the image. Required for image blocks.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type discriminator for a display_block interaction. \nAllowed enum values: display_block

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Resource type for annotation queue interactions. \nAllowed enum values: interactions

\n
\n \n
\n
\n
\n
" } }, "DeleteLLMObsAnnotationQueueInteractions": { diff --git a/content/en/api/v2/scim/examples.json b/content/en/api/v2/scim/examples.json index fcf5be5354e..5a12ef9064c 100644 --- a/content/en/api/v2/scim/examples.json +++ b/content/en/api/v2/scim/examples.json @@ -411,6 +411,237 @@ "html": "
\n
\n
\n
\n

displayName

\n
\n

string

\n

A human-readable name for the group.

\n
\n \n
\n
\n
\n
\n
\n

externalId

\n
\n

string

\n

An identifier for the resource as defined by the provisioning client.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The identifier of the resource. Not required when creating a group.

\n
\n \n
\n
\n
\n
\n
\n

members

\n
\n

[object]

\n

Members of the group.

\n
\n
\n
\n
\n
\n

$ref

\n
\n

string

\n

The URI corresponding to a SCIM resource that is a member of this group.

\n
\n \n
\n
\n
\n
\n
\n

display

\n
\n

string

\n

A human-readable name for the group member.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

A label indicating the type of resource.

\n
\n \n
\n
\n
\n
\n
\n

value

\n
\n

string

\n

The identifier of the member of this group.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata associated with a group.

\n
\n
\n
\n
\n
\n

created

\n
\n

date-time

\n

The date and time the group was created.

\n
\n \n
\n
\n
\n
\n
\n

lastModified

\n
\n

date-time

\n

The date and time the group was last changed.

\n
\n \n
\n
\n
\n
\n
\n

location

\n
\n

string

\n

URL identifying the resource.

\n
\n \n
\n
\n
\n
\n
\n

resourceType

\n
\n

string

\n

Type of resource.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

schemas

\n
\n

[string]

\n

Input JSON Schemas.

\n
\n \n
\n
" } }, + "ListSCIMResourceTypes": { + "responses": { + "200": { + "json": { + "Resources": [ + { + "description": "https://tools.ietf.org/html/rfc7643#section-8.7.1", + "endpoint": "/Groups", + "id": "Group", + "meta": { + "location": "https://app.datadoghq.com/api/v2/scim/ResourceTypes/Group", + "resourceType": "ResourceType" + }, + "name": "Group", + "schema": "urn:ietf:params:scim:schemas:core:2.0:Group", + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:ResourceType" + ] + }, + { + "description": "https://tools.ietf.org/html/rfc7643#section-8.7.1", + "endpoint": "/Users", + "id": "User", + "meta": { + "location": "https://app.datadoghq.com/api/v2/scim/ResourceTypes/User", + "resourceType": "ResourceType" + }, + "name": "User", + "schema": "urn:ietf:params:scim:schemas:core:2.0:User", + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:ResourceType" + ] + } + ], + "itemsPerPage": 2, + "schemas": [ + "urn:ietf:params:scim:api:messages:2.0:ListResponse" + ], + "startIndex": 1, + "totalResults": 2 + }, + "html": "
\n
\n
\n
\n

Resources

\n
\n

[object]

\n

List of resource types supported by this SCIM service provider.

\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

Human-readable description of the resource type.

\n
\n \n
\n
\n
\n
\n
\n

endpoint

\n
\n

string

\n

HTTP-addressable endpoint relative to the base URL where the resource is located.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The resource type's server unique id.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata associated with a resource type.

\n
\n
\n
\n
\n
\n

location

\n
\n

string

\n

URL identifying the resource type.

\n
\n \n
\n
\n
\n
\n
\n

resourceType

\n
\n

string

\n

Type of resource.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The resource type name.

\n
\n \n
\n
\n
\n
\n
\n

schema

\n
\n

string

\n

The resource type's primary or base SCIM schema URI.

\n
\n \n
\n
\n
\n
\n
\n

schemas

\n
\n

[string]

\n

A list of SCIM schema URI identifying the protocol or schema used in this object.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

itemsPerPage

\n
\n

int64

\n

Number of resource types returned per page.

\n
\n \n
\n
\n
\n
\n
\n

schemas

\n
\n

[string]

\n

List response JSON Schemas.

\n
\n \n
\n
\n
\n
\n
\n

startIndex

\n
\n

int64

\n

Starting index of the resource types for this page (1-indexed).

\n
\n \n
\n
\n
\n
\n
\n

totalResults

\n
\n

int64

\n

Total number of resource types.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetSCIMResourceType": { + "responses": { + "200": { + "json": { + "description": "https://tools.ietf.org/html/rfc7643#section-8.7.1", + "endpoint": "/Users", + "id": "User", + "meta": { + "location": "https://app.datadoghq.com/api/v2/scim/ResourceTypes/User", + "resourceType": "ResourceType" + }, + "name": "User", + "schema": "urn:ietf:params:scim:schemas:core:2.0:User", + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:ResourceType" + ] + }, + "html": "
\n
\n
\n
\n

description

\n
\n

string

\n

Human-readable description of the resource type.

\n
\n \n
\n
\n
\n
\n
\n

endpoint

\n
\n

string

\n

HTTP-addressable endpoint relative to the base URL where the resource is located.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The resource type's server unique id.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata associated with a resource type.

\n
\n
\n
\n
\n
\n

location

\n
\n

string

\n

URL identifying the resource type.

\n
\n \n
\n
\n
\n
\n
\n

resourceType

\n
\n

string

\n

Type of resource.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The resource type name.

\n
\n \n
\n
\n
\n
\n
\n

schema

\n
\n

string

\n

The resource type's primary or base SCIM schema URI.

\n
\n \n
\n
\n
\n
\n
\n

schemas

\n
\n

[string]

\n

A list of SCIM schema URI identifying the protocol or schema used in this object.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "ListSCIMSchemas": { + "responses": { + "200": { + "json": { + "Resources": [ + { + "description": "User Schema", + "id": "urn:ietf:params:scim:schemas:core:2.0:User", + "meta": { + "location": "https://app.datadoghq.com/api/v2/scim/Schemas/urn:ietf:params:scim:schemas:core:2.0:User", + "resourceType": "Schema" + }, + "name": "User" + }, + { + "description": "Group Schema", + "id": "urn:ietf:params:scim:schemas:core:2.0:Group", + "meta": { + "location": "https://app.datadoghq.com/api/v2/scim/Schemas/urn:ietf:params:scim:schemas:core:2.0:Group", + "resourceType": "Schema" + }, + "name": "Group" + } + ], + "itemsPerPage": 2, + "schemas": [ + "urn:ietf:params:scim:api:messages:2.0:ListResponse" + ], + "startIndex": 1, + "totalResults": 2 + }, + "html": "
\n
\n
\n
\n

Resources

\n
\n

[object]

\n

List of schemas supported by this SCIM service provider.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

[object]

\n

A list of attributes that make up the schema.

\n
\n
\n
\n
\n
\n

canonicalValues

\n
\n

[string]

\n

A collection of canonical values.

\n
\n \n
\n
\n
\n
\n
\n

caseExact

\n
\n

boolean

\n

A Boolean value that specifies whether or not a string attribute is case sensitive.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The attribute's human-readable description.

\n
\n \n
\n
\n
\n
\n
\n

multiValued

\n
\n

boolean

\n

A Boolean value indicating an attribute's plurality.

\n
\n \n
\n
\n
\n
\n
\n

mutability

\n
\n

string

\n

A single keyword indicating the circumstances under which the value of\nthe attribute can be (re)defined.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The attribute's name.

\n
\n \n
\n
\n
\n
\n
\n

referenceTypes

\n
\n

[string]

\n

A list of resource types or external resources the reference may refer to.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

boolean

\n

A Boolean value that specifies whether or not the attribute is required.

\n
\n \n
\n
\n
\n
\n
\n

returned

\n
\n

string

\n

A single keyword that indicates when an attribute and associated values\nare returned in response to a GET request or in response to a PUT, POST,\nor PATCH request.

\n
\n \n
\n
\n
\n
\n
\n

subAttributes

\n
\n

[object]

\n

A list of sub-attributes for complex attributes.

\n
\n
\n
\n
\n
\n

canonicalValues

\n
\n

[string]

\n

A collection of canonical values.

\n
\n \n
\n
\n
\n
\n
\n

caseExact

\n
\n

boolean

\n

A Boolean value that specifies whether or not a string attribute is case sensitive.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The attribute's human-readable description.

\n
\n \n
\n
\n
\n
\n
\n

multiValued

\n
\n

boolean

\n

A Boolean value indicating an attribute's plurality.

\n
\n \n
\n
\n
\n
\n
\n

mutability

\n
\n

string

\n

A single keyword indicating the circumstances under which the value of\nthe attribute can be (re)defined.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The sub-attribute's name.

\n
\n \n
\n
\n
\n
\n
\n

referenceTypes

\n
\n

[string]

\n

A list of resource types or external resources the reference may refer to.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

boolean

\n

A Boolean value that specifies whether or not the attribute is required.

\n
\n \n
\n
\n
\n
\n
\n

returned

\n
\n

string

\n

A single keyword that indicates when an attribute and associated values\nare returned in response to a GET request or in response to a PUT, POST,\nor PATCH request.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

The data type of the attribute.

\n
\n \n
\n
\n
\n
\n
\n

uniqueness

\n
\n

string

\n

A single keyword value that specifies how the service provider enforces\nuniqueness of attribute values.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

The data type of the attribute.

\n
\n \n
\n
\n
\n
\n
\n

uniqueness

\n
\n

string

\n

A single keyword value that specifies how the service provider enforces\nuniqueness of attribute values.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

Human-readable description of the schema.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The unique URI of the schema.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata associated with a SCIM schema.

\n
\n
\n
\n
\n
\n

location

\n
\n

string

\n

URL identifying the schema.

\n
\n \n
\n
\n
\n
\n
\n

resourceType

\n
\n

string

\n

Type of resource.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The human-readable name of the schema.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

itemsPerPage

\n
\n

int64

\n

Number of schemas returned per page.

\n
\n \n
\n
\n
\n
\n
\n

schemas

\n
\n

[string]

\n

List response JSON Schemas.

\n
\n \n
\n
\n
\n
\n
\n

startIndex

\n
\n

int64

\n

Starting index of the schemas for this page (1-indexed).

\n
\n \n
\n
\n
\n
\n
\n

totalResults

\n
\n

int64

\n

Total number of schemas.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetSCIMSchema": { + "responses": { + "200": { + "json": { + "attributes": [ + { + "canonicalValues": [], + "caseExact": false, + "description": "string", + "multiValued": false, + "mutability": "string", + "name": "string", + "referenceTypes": [], + "required": false, + "returned": "string", + "subAttributes": [ + { + "canonicalValues": [], + "caseExact": false, + "description": "string", + "multiValued": false, + "mutability": "string", + "name": "string", + "referenceTypes": [], + "required": false, + "returned": "string", + "type": "string", + "uniqueness": "string" + } + ], + "type": "string", + "uniqueness": "string" + } + ], + "description": "User Schema", + "id": "urn:ietf:params:scim:schemas:core:2.0:User", + "meta": { + "location": "https://app.datadoghq.com/api/v2/scim/Schemas/urn:ietf:params:scim:schemas:core:2.0:User", + "resourceType": "Schema" + }, + "name": "User" + }, + "html": "
\n
\n
\n
\n

attributes

\n
\n

[object]

\n

A list of attributes that make up the schema.

\n
\n
\n
\n
\n
\n

canonicalValues

\n
\n

[string]

\n

A collection of canonical values.

\n
\n \n
\n
\n
\n
\n
\n

caseExact

\n
\n

boolean

\n

A Boolean value that specifies whether or not a string attribute is case sensitive.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The attribute's human-readable description.

\n
\n \n
\n
\n
\n
\n
\n

multiValued

\n
\n

boolean

\n

A Boolean value indicating an attribute's plurality.

\n
\n \n
\n
\n
\n
\n
\n

mutability

\n
\n

string

\n

A single keyword indicating the circumstances under which the value of\nthe attribute can be (re)defined.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The attribute's name.

\n
\n \n
\n
\n
\n
\n
\n

referenceTypes

\n
\n

[string]

\n

A list of resource types or external resources the reference may refer to.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

boolean

\n

A Boolean value that specifies whether or not the attribute is required.

\n
\n \n
\n
\n
\n
\n
\n

returned

\n
\n

string

\n

A single keyword that indicates when an attribute and associated values\nare returned in response to a GET request or in response to a PUT, POST,\nor PATCH request.

\n
\n \n
\n
\n
\n
\n
\n

subAttributes

\n
\n

[object]

\n

A list of sub-attributes for complex attributes.

\n
\n
\n
\n
\n
\n

canonicalValues

\n
\n

[string]

\n

A collection of canonical values.

\n
\n \n
\n
\n
\n
\n
\n

caseExact

\n
\n

boolean

\n

A Boolean value that specifies whether or not a string attribute is case sensitive.

\n
\n \n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The attribute's human-readable description.

\n
\n \n
\n
\n
\n
\n
\n

multiValued

\n
\n

boolean

\n

A Boolean value indicating an attribute's plurality.

\n
\n \n
\n
\n
\n
\n
\n

mutability

\n
\n

string

\n

A single keyword indicating the circumstances under which the value of\nthe attribute can be (re)defined.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The sub-attribute's name.

\n
\n \n
\n
\n
\n
\n
\n

referenceTypes

\n
\n

[string]

\n

A list of resource types or external resources the reference may refer to.

\n
\n \n
\n
\n
\n
\n
\n

required

\n
\n

boolean

\n

A Boolean value that specifies whether or not the attribute is required.

\n
\n \n
\n
\n
\n
\n
\n

returned

\n
\n

string

\n

A single keyword that indicates when an attribute and associated values\nare returned in response to a GET request or in response to a PUT, POST,\nor PATCH request.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

The data type of the attribute.

\n
\n \n
\n
\n
\n
\n
\n

uniqueness

\n
\n

string

\n

A single keyword value that specifies how the service provider enforces\nuniqueness of attribute values.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

The data type of the attribute.

\n
\n \n
\n
\n
\n
\n
\n

uniqueness

\n
\n

string

\n

A single keyword value that specifies how the service provider enforces\nuniqueness of attribute values.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

Human-readable description of the schema.

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The unique URI of the schema.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata associated with a SCIM schema.

\n
\n
\n
\n
\n
\n

location

\n
\n

string

\n

URL identifying the schema.

\n
\n \n
\n
\n
\n
\n
\n

resourceType

\n
\n

string

\n

Type of resource.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The human-readable name of the schema.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, "ListSCIMUsers": { "responses": { "200": { diff --git a/content/en/database_monitoring/database_investigator/_index.md b/content/en/database_monitoring/database_investigator/_index.md index bc6322380fa..2339f62628e 100644 --- a/content/en/database_monitoring/database_investigator/_index.md +++ b/content/en/database_monitoring/database_investigator/_index.md @@ -84,6 +84,10 @@ To use Database Investigator, your role must have the **Database Monitoring Read Database Investigator reads the telemetry your account already collects, including query metrics, query samples, explain plans, instance and host metrics. It also reads related APM service dependencies, incidents, events, and metrics in your Datadog organization. It accesses only the resources permitted by your role. +### Is data sent to Database Investigator used to train AI models? + +Database Investigator operates under zero-retention and zero-training agreements with the third-party AI service providers that power it. Data processed during an investigation is not retained by those providers and is not used to train or improve their models. + ### Does Database Investigator modify the database? No. Database Investigator reads observability data and produces recommendations. It does not connect to your database, run SQL against it, or change configuration. SQL changes in its responses are suggestions for you to review and apply. diff --git a/content/en/getting_started/tagging/unified_service_tagging.md b/content/en/getting_started/tagging/unified_service_tagging.md index ce95098cc98..0f5200e658b 100644 --- a/content/en/getting_started/tagging/unified_service_tagging.md +++ b/content/en/getting_started/tagging/unified_service_tagging.md @@ -30,7 +30,7 @@ With these three tags, you can: **Notes**: - The `version` tag is expected to change with each new application deployment. Two different versions of your application's code should have distinct `version` tags. -- The official service of a log defaults to the container short-image if no Autodiscovery logs configuration is present. To override the official service of a log, add Autodiscovery [Docker labels/pod annotations][2]. For example: `"com.datadoghq.ad.logs"='[{"service": "service-name"}]'` +- The official `service` of a log defaults to the container short-image if no Autodiscovery logs configuration is present. To override the official `service` of a log, use the Unified Service Tagging options below or add a full custom [Docker][21] or [Kubernetes][22] Autodiscovery log configuration. - Host information is excluded for database and cache spans because the host associated with the span is not the database/cache host. ### Requirements @@ -79,11 +79,17 @@ To setup unified service tagging in a containerized environment: {{< tabs >}} {{% tab "Kubernetes" %}} -If you deployed the Datadog Cluster Agent with [Admission Controller][1] enabled, the Admission Controller mutates the pod manifests and injects all required environment variables (based on configured mutation conditions). In that case, manual configuration of `DD_` environment variables in pod manifests is unnecessary. For more information, see the [Admission Controller documentation][1]. - ##### Full configuration -To get the full range of unified service tagging when using Kubernetes, add environment variables to both the deployment object level and the pod template spec level: +To get the full range of unified service tagging in Kubernetes, add the following labels to both the parent workload and the pod template. + +- `tags.datadoghq.com/env: ""` +- `tags.datadoghq.com/service: ""` +- `tags.datadoghq.com/version: "" ` + +For APM-enabled applications additionally set the environment variables `DD_ENV`, `DD_SERVICE`, and `DD_VERSION` for the Datadog tracers. + +You can set these environment variables manually or with the [Kubernetes's downward API][2]. If you are using the Cluster Agent's [Admission Controller][1] to mutate your pods, those three environment variables are automatically injected to match your labels. ```yaml apiVersion: apps/v1 @@ -93,28 +99,29 @@ metadata: tags.datadoghq.com/env: "" tags.datadoghq.com/service: "" tags.datadoghq.com/version: "" -... -template: - metadata: - labels: - tags.datadoghq.com/env: "" - tags.datadoghq.com/service: "" - tags.datadoghq.com/version: "" - containers: - - ... - env: - - name: DD_ENV - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/env'] - - name: DD_SERVICE - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/service'] - - name: DD_VERSION - valueFrom: - fieldRef: - fieldPath: metadata.labels['tags.datadoghq.com/version'] +# (...) +spec: + template: + metadata: + labels: + tags.datadoghq.com/env: "" + tags.datadoghq.com/service: "" + tags.datadoghq.com/version: "" + containers: + - # (...) + env: + - name: DD_ENV + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/env'] + - name: DD_SERVICE + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/service'] + - name: DD_VERSION + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/version'] ``` You can also use the OpenTelemetry Resource Attributes environment variables to set the `env`, `service`, and `version` tags: @@ -130,11 +137,35 @@ You can also use the OpenTelemetry Resource Attributes environment variables to ```
The OTEL_SERVICE_NAME environment variable takes precedence over the service.name attribute in the OTEL_RESOURCE_ATTRIBUTES environment variable.
+These labels cover Kubernetes CPU, memory, network, and disk metrics, as well as general container tagging and log collection. These labels are also used by the Cluster Agent and its reported [Kubernetes State Metrics][3]. + ##### Partial configuration +###### Global env handling +If your Kubernetes cluster is entirely a single environment, for example, only `env:production` nodes and workloads, you can provide this to your Agent configuration rather than tagging each workload individually. + +With the Datadog Operator: +```yaml +#(...) +spec: + global: + tags: + - "env:" +``` + +With the Datadog Helm Chart: +```yaml +datadog: + #(...) + tags: + - "env:" +``` + +This establishes this as a host-level tag inherited on all your data associated with each host. This is also applied to all [Kubernetes State Metrics][3] and is the default `env` on your APM spans. Take care with these tags, as if you have a global `env` tag set and a *different* `env` tag set on your pod, that pod's data contains **both** `env` tags. + ###### Pod-level metrics -To configure pod-level metrics, add the following standard labels (`tags.datadoghq.com`) to the pod spec of a Deployment, StatefulSet, or Job: +The `DD_ENV`, `DD_SERVICE`, and `DD_VERSION` environment variables are only required if you are using APM in your applications; otherwise, you can omit them. Add the following standard labels (`tags.datadoghq.com`) to the pod spec, as well as optionally to the parent workload, like the Deployment, StatefulSet, or Job: ```yaml template: @@ -144,41 +175,15 @@ template: tags.datadoghq.com/service: "" tags.datadoghq.com/version: "" ``` -These labels cover pod-level Kubernetes CPU, memory, network, and disk metrics, and can be used for injecting `DD_ENV`, `DD_SERVICE`, and `DD_VERSION` into your service's container through [Kubernetes's downward API][2]. If you have multiple containers per pod, you can specify standard labels by container: ```yaml -tags.datadoghq.com/.env -tags.datadoghq.com/.service -tags.datadoghq.com/.version +tags.datadoghq.com/.env +tags.datadoghq.com/.service +tags.datadoghq.com/.version ``` -###### State metrics - -To configure [Kubernetes State Metrics][3]: - -1. Set `join_standard_tags` to `true` in your configuration file. See this [example configuration file][4] for the setting location. - -2. Add the same standard labels to the collection of labels for the parent resource, for example: `Deployment`. - - ```yaml - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: - tags.datadoghq.com/env: "" - tags.datadoghq.com/service: "" - tags.datadoghq.com/version: "" - spec: - template: - metadata: - labels: - tags.datadoghq.com/env: "" - tags.datadoghq.com/service: "" - tags.datadoghq.com/version: "" - ``` - ###### Datadog SDK and StatsD client To configure [Datadog SDK][5] and [StatsD client][6] environment variables, use the [Kubernetes's downward API][2] in the format below: @@ -195,41 +200,18 @@ containers: valueFrom: fieldRef: fieldPath: metadata.labels['tags.datadoghq.com/service'] - - name: DD_VERSION - valueFrom: - fieldRef: + - name: DD_VERSION + valueFrom: + fieldRef: fieldPath: metadata.labels['tags.datadoghq.com/version'] ``` -##### Automatic version tagging for APM data in containerized environments - -
This feature is only enabled for Application Performance Monitoring (APM) data.
- -You can use the `version` tag in APM to [monitor deployments][7] and to identify faulty code deployments through [Automatic Faulty Deployment Detection][8]. - -For APM data, Datadog sets the `version` tag for you in the following priority order. If you manually set `version`, Datadog does not override your `version` value. - -| Priority | Version Value | -|--------------|------------| -| 1 | {your version value} | -| 2 | {image_tag}_{first_7_digits_of_git_commit_sha} | -| 3 | {image_tag} or {first_7_digits_of_git_commit_sha} if only one is available | - -Requirements: -- Datadog Agent Version 7.52.0 or greater -- If your services run in a containerized environment and `image_tag` is sufficient for tracking new version deployments, no further configuration is needed. -- If your services are not running in a containerized environment, or if you'd also like to have the Git SHA included, [embed Git information in your build artifacts][9]. - - [1]: /agent/cluster_agent/admission_controller/ [2]: https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#capabilities-of-the-downward-api -[3]: /agent/kubernetes/data_collected/#kube-state-metrics +[3]: /integrations/kubernetes_state_core/?tab=helm#data-collected [4]: https://github.com/DataDog/integrations-core/blob/master/kubernetes_state/datadog_checks/kubernetes_state/data/conf.yaml.example [5]: /tracing/send_traces/ [6]: /integrations/statsd/ -[7]: /tracing/services/deployment_tracking/ -[8]: /watchdog/faulty_deployment_detection/ -[9]: /integrations/guide/source-code-integration/?tab=go#embed-git-information-in-your-build-artifacts {{% /tab %}} @@ -278,30 +260,6 @@ com.datadoghq.tags.version As explained in the full configuration, these labels can be set in a Dockerfile or as arguments for launching the container. -##### Automatic version tagging for APM data in containerized environments - -
This feature is only enabled for Application Performance Monitoring (APM) data.
- -You can use the `version` tag in APM to [monitor deployments][1] and to identify faulty code deployments through [Automatic Faulty Deployment Detection][2]. - -For APM data, Datadog sets the `version` tag for you in the following priority order. If you manually set `version`, Datadog does not override your `version` value. - -| Priority | Version Value | -|--------------|------------| -| 1 | {your version value} | -| 2 | {image_tag}_{first_7_digits_of_git_commit_sha} | -| 3 | {image_tag} or {first_7_digits_of_git_commit_sha} if only one is available | - -Requirements: -- Datadog Agent Version 7.52.0 or greater -- If your services run in a containerized environment and `image_tag` is sufficient for tracking new version deployments, no further configuration is needed. -- If your services are not running in a containerized environment, or if you'd also like to have the Git SHA included, [embed Git information in your build artifacts][3]. - - -[1]: /tracing/services/deployment_tracking/ -[2]: /watchdog/faulty_deployment_detection/ -[3]: /integrations/guide/source-code-integration/?tab=go#embed-git-information-in-your-build-artifacts - {{% /tab %}} {{% tab "ECS" %}} @@ -352,11 +310,14 @@ If your service has no need for the Datadog environment variables (for example, } ``` +{{% /tab %}} +{{% /tabs %}} + ##### Automatic version tagging for APM data in containerized environments
This feature is only enabled for Application Performance Monitoring (APM) data.
-You can use the `version` tag in APM to [monitor deployments][1] and to identify faulty code deployments through [Automatic Faulty Deployment Detection][2]. +You can use the `version` tag in APM to [monitor deployments][18] and to identify faulty code deployments through [Automatic Faulty Deployment Detection][19]. For APM data, Datadog sets the `version` tag for you in the following priority order. If you manually set `version`, Datadog does not override your `version` value. @@ -369,14 +330,7 @@ For APM data, Datadog sets the `version` tag for you in the following priority o Requirements: - Datadog Agent Version 7.52.0 or greater - If your services run in a containerized environment and `image_tag` is sufficient for tracking new version deployments, no further configuration is needed. -- If your services are not running in a containerized environment, or if you'd also like to have the Git SHA included, [embed Git information in your build artifacts][3]. - -[1]: /tracing/services/deployment_tracking/ -[2]: /watchdog/faulty_deployment_detection/ -[3]: /integrations/guide/source-code-integration/?tab=go#embed-git-information-in-your-build-artifacts - -{{% /tab %}} -{{% /tabs %}} +- If your services are not running in a containerized environment, or to include the Git SHA, [embed Git information in your build artifacts][20]. ### Non-containerized environment @@ -589,3 +543,8 @@ processors: [15]: /serverless/configuration/#connect-telemetry-using-tags [16]: https://opentelemetry.io/docs/languages/js/resources/ [17]: https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.27.0 +[18]: /tracing/services/deployment_tracking/ +[19]: /watchdog/faulty_deployment_detection/ +[20]: /integrations/guide/source-code-integration/?tab=go#embed-git-information-in-your-build-artifacts +[21]: /containers/docker/log +[22]: /containers/kubernetes/log \ No newline at end of file diff --git a/content/en/ide_plugins/idea/code_security.md b/content/en/ide_plugins/idea/code_security.md index 0f4c90a5620..3071df7252f 100644 --- a/content/en/ide_plugins/idea/code_security.md +++ b/content/en/ide_plugins/idea/code_security.md @@ -19,7 +19,7 @@ The Datadog plugin reports library and runtime code vulnerabilities by highlight {{< img src="/ide_plugins/idea/code_security/library-vulnerability.png" alt="A library vulnerability highlighted in the source editor" style="width:80%;" >}} -Full details of each vulnerability are shown in the Datadog tool window in the **File Insights** and **Project Insights** tabs. +Full details of each vulnerability are shown in the Datadog tool window in the **File Insights** and **Project Insights** tabs. {{< img src="/ide_plugins/idea/code_security/library-vulnerability-tool-window.png" alt="A library vulnerability shown in the Datadog tool-window" style="width:100%;" >}} @@ -28,7 +28,7 @@ Click on the link in the **Code Links** section to navigate to the source locati ## Local code analysis ### File editing -As you edit your source files, the Datadog plugin checks the content (locally) against a set of [rules][2] to detect and flag quality and security issues before you commit your changes. +As you edit your source files, the Datadog plugin checks the content locally against a set of [rules][2] to detect and flag quality and security issues before you commit. The plugin also flags hard-coded secret values with [Secret Scanning][6]. The local analysis engine supports all the file types listed in [Static Analysis Rules][3]. Issues are shown in the source code editor with the JetBrains inspection system, and you can apply suggested fixes directly. @@ -37,9 +37,9 @@ The local analysis engine supports all the file types listed in [Static Analysis Additionally, all issues detected by this feature are listed in the standard **Problems** view. ### Analyzing multiple files -You can run the local code analysis across multiple files. In the **Code** menu, select **Analyze Code** → **Run Inspection By Name…** and choose `Datadog Static Analysis`: +You can run the local code analysis across multiple files. In the **Code** menu, select **Analyze Code** → **Run Inspection By Name…** and choose `Datadog Code Security`: -{{< img src="/ide_plugins/idea/code_security/inspection-by-name.png" alt="Datadog Static Analysis inspection" style="width:60%;" >}} +{{< img src="/ide_plugins/idea/code_security/run-inspection-by-name.png" alt="The JetBrains Run Inspection By Name dialog with Datadog Code Security selected from the inspection list." style="width:60%;" >}} Choose the scope, click **OK**, and review the flagged issues in the **Problems** view. @@ -62,9 +62,9 @@ You can save a local configuration file (`static-analysis.datadog.yml`) at the r Read more about how to [customize your configuration][5]. ### Settings -The Datadog Static Analyzer can be activated and deactivated in the IDE settings under **Editor** → **Inspections**. +The Datadog Code Security inspection can be activated and deactivated in the IDE settings under **Editor** → **Inspections**. -{{< img src="/ide_plugins/idea/code_security/inspections-settings.png" alt="Settings to activate and deactivate Static Analysis" style="width:80%;" >}} +{{< img src="/ide_plugins/idea/code_security/code-security-inspection-settings.png" alt="Settings to activate and deactivate Code Security" style="width:80%;" >}} ## Further reading @@ -74,4 +74,5 @@ The Datadog Static Analyzer can be activated and deactivated in the IDE settings [2]: /security/code_security/static_analysis/setup/?tab=github [3]: /security/code_security/static_analysis/static_analysis_rules/ [4]: /security/code_security/ -[5]: /security/code_security/static_analysis/setup/?tab=github#customize-your-configuration \ No newline at end of file +[5]: /security/code_security/static_analysis/setup/?tab=github#customize-your-configuration +[6]: /security/code_security/secret_scanning/ diff --git a/content/en/incident_response/status_pages/_index.md b/content/en/incident_response/status_pages/_index.md index 5640d67b44d..49afbcb3cbc 100644 --- a/content/en/incident_response/status_pages/_index.md +++ b/content/en/incident_response/status_pages/_index.md @@ -168,6 +168,15 @@ After reviewing and scheduling, the maintenance window: You can post updates if plans change or reschedule the maintenance window as needed. +## Backfill a notice + +If an incident occurred and you did not publish a notice to the status page while it was happening, you can still document it retroactively using a backfilled notice. Unlike a regular notice, a backfilled notice is built from a list of updates, each with its own start time, so the notice accurately reflects the full incident timeline in the uptime history. + +1. From a status page, under **Publish Notice**, click **Publish Backfilled Notice**. +1. Enter a **Title** for the notice. +1. Add one or more **Updates**. For each update, provide a start time and any relevant details. +1. Click **Publish Notice**. + ## Email subscriptions Email subscriptions on status pages are **double opt-in**. After entering an email to subscribe, users receive a confirmation email and must click the confirmation link to activate their subscription. During this process, users can choose to receive notifications for the entire status page or select specific components they want to monitor. A preferred timezone can be configured for timestamp formatting within notifications. Users can manage their preferences and update their subscriptions at any time through the subscription management link included in notification emails. diff --git a/content/en/llm_observability/evaluations/export_api.md b/content/en/llm_observability/evaluations/export_api.md index fd244ccbc37..bb33338d85f 100644 --- a/content/en/llm_observability/evaluations/export_api.md +++ b/content/en/llm_observability/evaluations/export_api.md @@ -122,7 +122,7 @@ Method | sort | string | Sort order. Allowed values: timestamp, -timestamp | | include_attachments | boolean | Whether to retrieve truncated input and output content. Defaults to True. | | page[cursor] | string | List following results with a cursor provided in the previous query. | -| page[limit] | integer | Maximum number of spans in the response. Default: 10. Maximum configurable limit: 5000. | +| page[limit] | integer | Maximum number of spans in the response. Default: 10. Maximum configurable limit: 5000.
**Note:** Responses are subject to a 50 MB size limit. If your spans contain large inputs or outputs, use a lower limit and paginate with `page[cursor]`. | #### Code example @@ -298,7 +298,7 @@ Both endpoints have the same response format. [Results are paginated](/logs/guid | Field | Type | Description | |-------|------|-------------| -| limit | integer | Maximum number of spans in the response. Default: 10. Maximum configurable limit: 5000. | +| limit | integer | Maximum number of spans in the response. Default: 10. Maximum configurable limit: 5000.
**Note:** Responses are subject to a 50 MB size limit. If your spans contain large inputs or outputs, use a lower limit and paginate with `cursor`. | | cursor | string | List following results with a cursor provided in the previous query. | ### SearchedSpanResource diff --git a/content/en/network_monitoring/_index.md b/content/en/network_monitoring/_index.md index 18eb01d7fcf..dfd165d88b5 100644 --- a/content/en/network_monitoring/_index.md +++ b/content/en/network_monitoring/_index.md @@ -38,6 +38,8 @@ cascade: {{< nextlink href="network_monitoring/cloud_network_monitoring" >}}Cloud Network Monitoring: Explore metrics for point to point communication on your infrastructure.{{< /nextlink >}} {{< nextlink href="network_monitoring/dns" >}}DNS Monitoring: Diagnose and debug DNS server issues.{{< /nextlink >}} {{< nextlink href="network_monitoring/devices" >}}Network Device Monitoring: Gain visibility into your network-connected devices, such as routers, switches, servers, and firewalls.{{< /nextlink >}} + {{< nextlink href="network_monitoring/netflow" >}}NetFlow Monitoring: Analyze network traffic flows to identify top talkers and bandwidth usage across your infrastructure.{{< /nextlink >}} + {{< nextlink href="network_monitoring/network_path" >}}Network Path: Investigate the routes network traffic follows from source to destination to pinpoint network issues.{{< /nextlink >}} {{< /whatsnext >}} ## Further Reading diff --git a/content/en/opentelemetry/instrument/dd_sdks/api_support.mdoc.md b/content/en/opentelemetry/instrument/dd_sdks/api_support.mdoc.md index d57fdc6eac9..a7b43bdb122 100644 --- a/content/en/opentelemetry/instrument/dd_sdks/api_support.mdoc.md +++ b/content/en/opentelemetry/instrument/dd_sdks/api_support.mdoc.md @@ -12,6 +12,7 @@ aliases: - /opentelemetry/instrument/api_support/go/metrics - /opentelemetry/instrument/api_support/go/traces - /opentelemetry/instrument/api_support/java + - /opentelemetry/instrument/api_support/java/logs - /opentelemetry/instrument/api_support/java/metrics - /opentelemetry/instrument/api_support/java/traces - /opentelemetry/instrument/api_support/nodejs/ @@ -57,15 +58,6 @@ further_reading: - -{% if equals($prog_lang, "java") %} -{% if equals($platform, "logs") %} -{% alert level="danger" %} -OpenTelemetry API support for logs is not available for this language. Use [Datadog Log Collection][210] instead. -{% /alert %} -{% /if %} -{% /if %} - {% if equals($prog_lang, "php") %} {% if equals($platform, "logs") %} @@ -190,7 +182,7 @@ The OpenTelemetry Metrics SDK for Ruby is currently in [alpha implementation](ht - **Rust**: MSRV 1.84 or later. {% /if %} {% if equals($prog_lang, "java") %} -- **Datadog SDK**: dd-trace-java version 1.61.0 or later. +- **Datadog SDK**: `dd-trace-java` version 1.61.0 or later. {% /if %} - **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. {% if includes($prog_lang, ["dot_net", "node_js", "python", "ruby", "go", "java"]) %} @@ -838,7 +830,7 @@ If you are currently using the Datadog DogStatsD client and want to migrate to t - Verify `DD_METRICS_OTEL_ENABLED=true` is set before initializing the meter provider. {% /if %} {% if equals($prog_lang, "java") %} -- Verify Datadog automatic instrumentation is active. This feature relies on Datadog's automatic instrumentation to function. +- Verify the `dd-trace-java` javaagent is running. The javaagent registers itself as the global OTel MeterProvider at startup; without it, OTel API calls fall through to no-op providers and no data is sent. {% /if %} {% if equals($prog_lang, "dot_net") %} @@ -875,14 +867,14 @@ Here is the minimum version required for each instrument type: {% if equals($platform, "logs") %} -{% if includes($prog_lang, ["dot_net", "node_js", "python", "go", "rust"]) %} +{% if includes($prog_lang, ["dot_net", "node_js", "python", "go", "rust", "java"]) %} ## Overview Use the OpenTelemetry Logs API with Datadog SDKs to send custom application logs. This is an alternative to Datadog's traditional log injection. - -{% if includes($prog_lang, ["dot_net", "node_js", "go", "rust"]) %} + +{% if includes($prog_lang, ["dot_net", "node_js", "go", "rust", "java"]) %} The Datadog SDK provides a native implementation of the OpenTelemetry API. This means you can write code against the standard OTel interfaces without needing the official OpenTelemetry SDK. @@ -924,6 +916,12 @@ If you encounter an issue after upgrading `@opentelemetry/api-logs`, [open an is - **Rust**: MSRV 1.84.1 or later. - **OpenTelemetry Rust SDK**: The SDK provides the logs implementation automatically. {% /if %} +{% if equals($prog_lang, "java") %} +- **Datadog SDK**: `dd-trace-java` version 1.62.0 or later. + + +- **OpenTelemetry API**: `opentelemetry-api` version 1.27.0 (the version that introduced the stable Logs API) or later. +{% /if %} - **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel logs. ## Setup @@ -1050,6 +1048,15 @@ Follow these steps to enable OTel Logs API support in your application. ``` {% /if %} +{% if equals($prog_lang, "java") %} +1. Add the Datadog SDK (`dd-trace-java`) to your project and [enable its instrumentation][207]. +2. Make sure you only depend on the OpenTelemetry API (and not the OpenTelemetry SDK). +3. Enable OTel logs by setting the following environment variable: + ```sh + export DD_LOGS_OTEL_ENABLED=true + ``` +{% /if %} + ## Examples {% if equals($prog_lang, "dot_net") %} @@ -1342,6 +1349,57 @@ logger.emit(log_record); ``` {% /if %} +{% if equals($prog_lang, "java") %} +### Emitting a log {% #emitting-log-java %} + +After the Datadog SDK is initialized, you can use the standard OpenTelemetry Logs API to get a logger and emit log records. + +```java +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.logs.Logger; +import io.opentelemetry.api.logs.Severity; + +Logger logger = GlobalOpenTelemetry.get().getLogsBridge().get("my-service"); + +logger.logRecordBuilder() + .setBody("User clicked the checkout button.") + .setSeverity(Severity.INFO) + .setSeverityText("INFO") + .setAttribute(AttributeKey.stringKey("cart.id"), "c-12345") + .setAttribute(AttributeKey.stringKey("user.id"), "u-54321") + .emit(); +``` + +### Trace and log correlation {% #trace-log-correlation-java %} + +Trace and log correlation is automatic. When you emit a log using the OTel Logs API within an active Datadog trace, the `trace_id` and `span_id` are automatically added to the log record. + +```java +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.logs.Logger; +import io.opentelemetry.api.logs.Severity; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Scope; + +Tracer tracer = GlobalOpenTelemetry.getTracer("my-service"); +Logger logger = GlobalOpenTelemetry.get().getLogsBridge().get("my-service"); + +Span span = tracer.spanBuilder("process.user.request").startSpan(); +try (Scope scope = span.makeCurrent()) { + // This log is automatically correlated with the active span + logger.logRecordBuilder() + .setBody("Processing user request for ID: 12345") + .setSeverity(Severity.INFO) + .setSeverityText("INFO") + .emit(); +} finally { + span.end(); +} +``` +{% /if %} + ## Supported configuration To enable this feature, you must set `DD_LOGS_OTEL_ENABLED=true`. @@ -1398,6 +1456,12 @@ The Datadog SDK programmatically configures the OTel SDK for you. 4. Set the `DD_LOGS_OTEL_ENABLED=true` environment variable. {% /if %} +{% if equals($prog_lang, "java") %} +1. Add the Datadog SDK (`dd-trace-java`) to your project and [enable its instrumentation][207]. +2. Make sure you only depend on the OpenTelemetry API (and not the OpenTelemetry SDK). +3. Set the `DD_LOGS_OTEL_ENABLED=true` environment variable. +{% /if %} + ### Existing Datadog log injection If you are using Datadog's traditional log injection (where `DD_LOGS_INJECTION=true` adds trace context to text logs) and an Agent to tail log files: @@ -1434,6 +1498,9 @@ If you are using Datadog's traditional log injection (where `DD_LOGS_INJECTION=t - Verify `datadog_opentelemetry::logs().init()` is called before using the logger. - Check protocol configuration. Only `grpc` and `http/protobuf` protocols are supported. HTTP/JSON is not supported. {% /if %} +{% if equals($prog_lang, "java") %} +- Verify the `dd-trace-java` javaagent is running. The javaagent registers itself as the global OTel LoggerProvider at startup; without it, OTel API calls fall through to no-op providers and no data is sent. +{% /if %} {% /if %} diff --git a/content/en/product_analytics/charts/funnel_analysis.md b/content/en/product_analytics/charts/funnel_analysis.md index 7e88946192d..5e6ceec0bb4 100644 --- a/content/en/product_analytics/charts/funnel_analysis.md +++ b/content/en/product_analytics/charts/funnel_analysis.md @@ -15,86 +15,77 @@ algolia: ## Overview -Funnel analysis helps you track conversion rates across key workflows to identify and address any bottlenecks in end-to-end user journeys. Specifically, you can: +Funnel analysis helps you track conversion rates across key workflows to identify and address any bottlenecks in end-to-end journey paths. Specifically, you can: - See if customers drop off at a certain point due to poor website performance - Track how the conversion rate changes over time as new features are built -- Measure how adding new steps to a workflow impacts drop off rate -- Understand how much time on average it takes for users to go through the funnel (time to convert) -- Filter on individual events (action or view) on different steps in your funnel +- Assess how adding new steps to a workflow impacts dropoff rate +- Measure the average time to convert +- Filter on individual events at different steps in your funnel - Combine multiple events within a given step, as end users might have different ways to achieve the same outcome through different flows ## Build a funnel -To build a funnel, navigate to [**Product Analytics > Charts**][1] and click **Funnel**. +To start building a funnel, navigate to [**Product Analytics**][1], then select [**Create New** > **Funnel**][2]. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_overview.png" alt="Navigate to the Funnel Analysis tab within Product Analytics" style="width:100%;" >}} +{{< img src="product_analytics/journeys/funnel_analysis/funnel_overview.png" alt="The funnel option highlighted in the Create New dialog in Product Analytics" style="width:100%;" >}} -From this page, choose your starting view or action and click on `+ Step` to build additional steps. You can also use drag and drop functionality to move steps around. - -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_video1.mp4" alt="Filtering network map with search" video=true >}} - -If you aren't sure what your users did, the funnel step editor automatically loads common **views** and **actions** that you can choose to add as steps. - -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_dropoffs.png" alt="The funnel step editor automatically loads the top most common views and actions that users typically see and take next." style="width:50%;" >}} +Select the user steps that start the funnel, and use **Add step** to add additional steps. Drag and drop steps to reorder them in the funnel. +{{< img src="product_analytics/journeys/funnel_analysis/funnel_add_step_video.mp4" alt="Using the Add step button to add a step to an existing funnel, and using drag and drop to move the new step to the correct place in the funnel." video=true >}} ### Add filters -When constructing your funnel, you can filter users globally, or for a specific step. +You can filter users globally, or for specific steps: -- **Global filters** are applied to the entire funnel. +- To apply global filters to the entire funnel, select **Filter by** and choose your options. - {{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_filter_by-2.png" alt="Use attributes to filter information globally when constructing your funnel" style="width:50%;" >}} - -- **Filtering on a step** provides insight on how the step changes based on a particular constraint on that step. For example, you may want to see how a specific device, operating system, geolocation, or user impacts conversion between steps. - - {{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_filter_by_step.png" alt="Use attributes to filter information between steps when constructing your funnel" style="width:50%;" >}} +- To filter users on an individual step, select the **filter icon** for that step and choose your options. Filtering on a step provides insight into how user behavior changes based on a particular constraint on that step. For example, you may want to see how a specific device, operating system, or geolocation impacts conversion at a particular step. ### Combine events -When constructing your funnel, you can combine multiple events within a given step, as end users may have different ways to achieve the same outcome through different flows. When combining events, any of the events in the step can represent the step. The numerical value you see is the combination of all steps within the combined step. +You can combine multiple events within a single funnel step, to account for end users achieving the same outcome through different flows. When combining events, any included event can trigger step conversion, using "or" logic. The Funnel Chart for a combined step shows data for all events that it contains. + +To add multiple events to a step, click the **or** button next to an existing event. -To combine an event, click the three dots next to an event and select **+ Combine Events**. +### Compare data -### Group data +Select **Compare**, then choose one of the options below to compare funnel data in different ways: -Use the **Group by** dropdown to group the data by a specific attribute. +**By breakdown**: Group data by a specific attribute, like device type or geolocation. You can also adjust whether to show the top (most common) or bottom (least common) values within the attribute, and how many values to include. -**Note**: Grouping data is not supported for the funnel steps [visualization](#change-the-visualization); when applied, the visualization automatically changes to a top list. +{{< img src="product_analytics/journeys/funnel_analysis/funnel_compare_by_country.png" alt="The Compare by breakdown view, configured to show the top five conversion sources by country." >}} -## Refine conversion +**By property or segment**: Compare multiple user segments or user attributes side by side. -You can further analyze the information on the funnel page to understand the conversion rate. Conversion rate is a crucial metric that measures the effectiveness of your site or application. +- To compare user segments, select the segments you want to compare. +- To compare a user attribute, select a property (such as Browser Name or Country), then choose the values you want to compare (such as Firefox, Chrome, and Safari). -You can analyze conversion by **session**, **user** or **account**. This can be useful if you suspect, for instance, that a minority of your user base converts at a high rate. +{{< img src="product_analytics/journeys/funnel_analysis/funnel_side_by_side.png" alt="The Compare by property or segment view, showing side-by-side comparison of five selected Browser Name values." >}} -- If you select **Session**, all steps must be completed within the same `@session.id` to count as a conversion. +**By time**: Compare conversion data side by side between time periods. -- If you select **User**, the funnel requires the same individual user (`@user.id`) to complete every step for the conversion to count. +## Refine conversion insights -- If you select **Account**, different users within the same account can complete different steps and the conversion still counts. In this case, the funnel is tied to the `@account.id` facet. +You can further analyze the information on the funnel page to understand your site's effectiveness in driving conversions. A [conversion](#conversion-computing-metrics) occurs when a user completes the last step defined in the funnel. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_refine_conversion.png" alt="The section of the UI where you can select Session, User, or Account to analyze your conversion." style="width:50%;" >}} - +{{< img src="product_analytics/journeys/funnel_analysis/funnel_conversion_dropdown.png" alt="The conversion refinement dropdown with options for analysis by unique or total conversions." style="width:100%;" >}} -A conversion refers to the moment when a user responds to a call to action. You can measure conversion by the following attributes: +Use the dropdown above the chart side panel to select different conversion analysis views. Conversion analysis is available by: -- **Conversion count**: A count of users who went through the funnel you've defined. -- **Conversion rate**: This rate is the percentage of users who have entered the funnel and converted. -- **Time to convert**: The time it took for the user to complete the step events. This option is not available for the funnel steps [visualization](#change-the-visualization); if you select it, the visualization automatically changes to a timeseries. +- **Unique converted sessions**: Conversions where all steps were completed with the same `@session.id`. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_conversion_measures.png" alt="The section of the UI where you can select Session, User, or Account to analyze your conversion." style="width:50%;" >}} +- **Unique converted users**: Conversions where the same individual user, tracked by `@user.id`, completed all steps. -You can measure these attributes **across all steps** or between **specific steps**. +- **Unique converted accounts**: Conversions where the same account, tracked by `@account.id`, completed all steps. This analysis is useful for identifying conversions completed by signed-in users across a longer period of time than the `@user.id` facet persists. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_conversion.png" alt="Measure attributes across all steps or specific steps." style="width:60%;" >}} +- **Total conversions**: Total conversions across sessions, users, or accounts. -Use the [**filter**](#add-filters) selector to filter data down to specific types of users. These filters are applied to all steps in your funnel. +- **Time to convert**: A timeseries view of conversions by sessions, users, or accounts. -Next, click a datapoint to **investigate the specific attributes** that might have affected conversion rates, such as page load speed, ease of navigation, or checkout experience. +For any conversion analysis view, you can choose to view conversions by count or rate, and view data for all steps or individual steps. For conversion views by user or account, you can adjust the time frame within which a conversion must occur. ## Conversion computing metrics @@ -112,72 +103,72 @@ Datadog calculates the average time between steps by averaging the total duratio If you analyze your funnel by **user** or by **account**, you can define your conversion time frame in hours or days since the first event. The default time frame for conversions is one day (a 24-hour window, not a calendar date) to determine if a conversion happened. -### Choose a conversion counting method +### Conversion counting methods -When computing your conversion, select how conversions are counted by choosing **unique** or **total** beside **Conversion count** in your funnel settings. +When computing your conversions, select how conversions are counted by choosing a **unique** conversion option (sessions, users, or accounts) or the **Total Conversion Count** option in your conversion visualization. -- **Unique**: Counts conversion only once per session, user, or account. For example, if the user completes the funnel sequence `A → B → C` multiple times within the same session (for example, `A, B, C, A, B, C`), it counts as **one conversion**. The `Unique` setting counts only the first conversion per session (or per user, depending on your analysis scope). +- **Unique**: Counts a conversion only once per session, user, or account. For example, if the user completes the funnel sequence `A → B → C` multiple times within the same session (`A, B, C, A, B, C`), it counts as **one conversion**. - **Total**: Counts a conversion each time the same session ID, user, or account completes the defined funnel. Using the same example (`A, B, C, A, B, C`), this method counts **two conversions**. The `Total` setting counts complete flows, not the number of times an intermediate step is repeated. -{{< img src="product_analytics/journeys/funnel_analysis/funnel_analysis_conversion.png" alt="Select a conversion measure, whether Unique or Total, to determine how your session conversions are counted." style="width:80%;" >}} - - ## Change the visualization After you've defined the step events and conversion measurement, you can switch to a different visualization to better understand user conversions for your app. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_change_viz.mp4" alt="Click the visualization dropdown to select a different view" video=true >}} +{{< img src="product_analytics/journeys/funnel_analysis/funnel_visualization_video.mp4" alt="Changing the visualization from Steps to Timeseries using a dropdown." video=true >}} ### Timeseries -Seeing the conversion as a timeseries can be helpful in understanding conversion trends. Each datapoint across the x-axis represents the conversion for the identified query. - -You can select the time period for graphing the conversion and view conversions in percentages or in absolute count. +Viewing the funnel as a timeseries can be helpful in understanding conversion trends. You can select the time period for graphing the conversion, and can view conversions as an absolute count or a rate. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_timeseries.png" alt="View conversion data as a timeseries." style="width:80%;" >}} +{{< img src="product_analytics/journeys/funnel_analysis/funnel_timeseries_view.png" alt="The timeseries visualization, configured to show daily unique converted users over the past week." style="width:80%;" >}} ### Query value -Query values display the current value of the given usage metric. +The query value visualization displays the current value of a metric. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_query_value.png" alt="View conversion data as a query value." style="width:80%;" >}} +{{< img src="product_analytics/journeys/funnel_analysis/funnel_query_value.png" alt="The query value visualization, configured to show the total number of unique conversted sessions over the past week." style="width:80%;" >}} ### Top list -Visualize the top values from a facet based on your chosen measure. +The top list visualization identifies the top values from a facet based on a chosen measure. + +{{< img src="product_analytics/journeys/funnel_analysis/funnel_top_list.png" alt="The top list visualization, configured to show the top four conversion sources by continent." style="width:80%;" >}} + +## View conversion drivers and journey paths + +To gain more context about user conversions and dropoffs, click on a funnel step to access conversion analysis and journey paths. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_toplist.png" alt="View conversion data as a top list." style="width:80%;" >}} +
Conversion analysis is in Preview.
-## Navigate funnel charts -To get more context about user dropoffs, click on the funnel chart to open a side panel that contains additional information. Then, navigate between steps to see: +- **Conversion analysis**: View conversion drivers, user journeys, available user replays for conversions and dropoffs, and user details. -- **Step performance**: See metrics related to conversion (for example, conversion rate, dropped off sessions, and average conversion time). -- **Branching paths from the previous step**: Discover the other paths that users take instead of the ones you anticipate. This section is only available when looking at a step between two views in a funnel. -- **Issues that might be affecting conversion**: See the top issues that might be affecting conversions and investigate them further with the links to RUM, Error Tracking, and Session Replay. + {{< img src="product_analytics/journeys/funnel_analysis/funnel_analysis_side_panel.png" alt="The side panel view after clicking a funnel step, showing conversion drivers, available replays, and converted users." style="width:100%;" >}} +- **Journey paths**: View conversion and dropoff user paths for the selected step sequence, including branching paths to other steps outside of the funnel. -{{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_metrics.png" alt="Click on the funnel view to see additional context about user dropoffs." style="width:90%;" >}} + {{< img src="product_analytics/journeys/funnel_analysis/funnel_journey_paths.png" alt="A journey path showing the top five dropoff paths following step 1 in the funnel." style="width:100%;" >}} ## Share a funnel -Funnels can be shared with your teams on [dashboards][5] to analyze conversion alongside other telemetry metrics, or in a [Notebook][6] to be used for reporting. +Funnels can be shared with your teams on [dashboards][3] to analyze conversion alongside other telemetry metrics, or in a [Notebook][4] to be used for reporting. You can share the entire visualization or individual widgets. - Share the entire visualization to Notebooks and dashboards: - {{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_share_funnel.png" alt="Share the entire visualization by clicking Export" style="width:90%;" >}} + {{< img src="product_analytics/journeys/funnel_analysis/funnels_share_export.png" alt="The expanded visualization Share option, showing the additional option to Export to PNG " style="width:100%;" >}} - Share individual widgets from a dashboard: - {{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_share_dashboard.png" alt="Share a widget by clicking the export icon in the upper-right of the widget" style="width:90%;" >}} + {{< img src="product_analytics/journeys/funnel_analysis/pana_funnel_share_dashboard.png" alt="Share a widget by clicking the export icon in the upper-right of the widget" style="width:100%;" >}} ## Further reading {{< partial name="whats-next/whats-next.html" >}} -[1]: https://app.datadoghq.com/product-analytics/user-journey/funnel -[5]: /product_analytics/dashboards/ -[6]: /notebooks/ \ No newline at end of file +[1]: https://app.datadoghq.com/product-analytics/ +[2]: https://app.datadoghq.com/product-analytics/user-journey/funnel +[3]: /product_analytics/dashboards/ +[4]: /notebooks/ \ No newline at end of file diff --git a/content/en/security/cloud_security_management/guide/public-accessibility-logic.md b/content/en/security/cloud_security_management/guide/public-accessibility-logic.md index 19805213ff9..63b93b5a838 100644 --- a/content/en/security/cloud_security_management/guide/public-accessibility-logic.md +++ b/content/en/security/cloud_security_management/guide/public-accessibility-logic.md @@ -16,7 +16,7 @@ Datadog uses a graph processing framework to map relationships between cloud res The following diagrams show how related resources are used to determine whether other resources are publicly accessible. For example, an AWS CloudTrail Trail stored in a public Amazon S3 bucket is itself publicly accessible. If a resource is publicly accessible because of another resource, the relationship is shown in the Cloud Security Misconfigurations resource relationships graph. -**Note**: Not all resources with the Publicly Accessible attribute are shown in these diagrams. +
Not all resources with the Publicly Accessible attribute are shown in these diagrams.
### AWS @@ -36,23 +36,23 @@ For more information on AWS network reachability, see the [AWS documentation][34 ### Amazon S3 bucket -An [S3 bucket][1] (`aws_s3_bucket`) is considered publicly accessible if: +An [S3 bucket][1] (`aws_s3_bucket`) is considered publicly accessible in either of the following cases: -* _Public by bucket policy:_ +* **Public by bucket policy** if all of the following are true: -| **Criteria** | **Explanation** | -|--------------|-----------------| -|The bucket policy allows risky S3 actions (read, write, delete, or management permissions) unconditionally, with resource and principal set to `"*"`. |This defines a public policy on the bucket, meaning that unauthenticated access is allowed. `"*"` is a wildcard, meaning access is given to any resource and principal. Wildcard actions such as `s3:*` or `s3:Put*` are also matched. | -| None of the bucket's `public_access_block_configuration` and the AWS account's public access block (`aws_s3_account_public_access_block`) have `restrict_public_buckets` set to `true`. | None of the buckets or accounts explicitly block public access, meaning that the public bucket policy takes effect. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + | The bucket policy allows risky S3 actions (read, write, delete, or management permissions) unconditionally, with resource and principal set to `"*"`. |This defines a public policy on the bucket, meaning that unauthenticated access is allowed. `"*"` is a wildcard, meaning access is given to any resource and principal. Wildcard actions such as `s3:*` or `s3:Put*` are also matched. | + | None of the bucket's `public_access_block_configuration` and the AWS account's public access block (`aws_s3_account_public_access_block`) have `restrict_public_buckets` set to `true`. | None of the buckets or accounts explicitly block public access, meaning that the public bucket policy takes effect. | ***OR*** -* _Public by Access Control List (ACL):_ +* **Public by Access Control List (ACL)** if all of the following are true: -| **Criteria** | **Explanation** | -|--------------|-----------------| -|The bucket has ACL grants that allow insecure permissions to public grantees. |The bucket's ACL grants one or more of the following permissions (`full_control`, `read`, `write`, `write_acp`) to either authenticated users (`http://acs.amazonaws.com/groups/global/authenticatedusers`) or all users (`http://acs.amazonaws.com/groups/global/allusers`). | -| None of the bucket's `public_access_block_configuration` and the AWS account's public access block (`aws_s3_account_public_access_block`) have `ignore_public_acls` set to `true`. | None of the buckets or accounts explicitly ignore public ACLs, meaning that the public ACL grants take effect. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + | The bucket has ACL grants that allow insecure permissions to public grantees. |The bucket's ACL grants one or more of the following permissions (`full_control`, `read`, `write`, `write_acp`) to either authenticated users (`http://acs.amazonaws.com/groups/global/authenticatedusers`) or all users (`http://acs.amazonaws.com/groups/global/allusers`). | + | None of the bucket's `public_access_block_configuration` and the AWS account's public access block (`aws_s3_account_public_access_block`) have `ignore_public_acls` set to `true`. | None of the buckets or accounts explicitly ignore public ACLs, meaning that the public ACL grants take effect. | See [Blocking public access to your Amazon S3 storage][2] for more information. @@ -66,7 +66,7 @@ A [CloudTrail trail][3] (`aws_cloudtrail_trail`) is considered publicly accessib ### Amazon VPC subnet -A [subnet][4] (`aws_subnet`) is considered public if: +A [subnet][4] (`aws_subnet`) is considered public if all of the following are true: | **Criteria** | **Explanation** | |--------------|-----------------| @@ -77,11 +77,11 @@ See [Subnets for your VPC][8] for the AWS definition of a public subnet. ### Amazon Redshift cluster -A [Redshift cluster][9] (`aws_redshift_cluster`) is considered publicly accessible if: +A [Redshift cluster][9] (`aws_redshift_cluster`) is considered publicly accessible if all of the following are true: | **Criteria** | **Explanation** | |--------------|-----------------| -|If it has `publicly_accessible` set to `true` in its configuration.|See [Managing clusters in a VPC][10]. | +|It has `publicly_accessible` set to `true` in its configuration.|See [Managing clusters in a VPC][10]. | |It's in a public [VPC][11]. |A public VPC is a VPC with at least one public subnet, connected to one or more network ACLs that have at least one ingress and at least one egress entry that have a CIDR block of `"0.0.0.0/0"`, or an IPv6 CIDR block of `"::/0"`.| |It's associated with a [security group][12] that has rules allowing access from a CIDR range of `"0.0.0.0/0"`, or an IPv6 CIDR range of `"::/0"`. |A security group controls inbound traffic to a VPC. With an open CIDR range, all IP addresses are able to gain access. | |It's connected to one or more [route tables][5] that are connected to an [Internet gateway][6], and that route to a destination CIDR block of `"0.0.0.0/0"`, or an IPv6 CIDR block of `"::/0"`.| The route table attached to this subnet routes egress traffic through an Internet gateway, meaning resources in the subnet can access the public Internet.| @@ -90,7 +90,7 @@ See [Make a private Amazon Redshift Cluster publicly accessible][13] for more in ### Amazon RDS DB instance -An [RDS DB instance][14] (`aws_rds_instance`) is considered publicly accessible if: +An [RDS DB instance][14] (`aws_rds_instance`) is considered publicly accessible if all of the following are true: | **Criteria** | **Explanation** | |--------------|-----------------| @@ -112,7 +112,7 @@ See [Sharing a DB snapshot][17] for more information. ### Amazon Elastic Load Balancer -An ELB (`aws_elbv2_load_balancer`) is considered publicly accessible if: +An ELB (`aws_elbv2_load_balancer`) is considered publicly accessible if all of the following are true: | **Criteria** | **Explanation** | |--------------|-----------------| @@ -123,26 +123,26 @@ See [Create an Application Load Balancer][20] for more information about Interne ### Amazon EC2 instance -An [EC2 Instance][18] (`aws_ec2_instance`) is considered publicly accessible if: +An [EC2 Instance][18] (`aws_ec2_instance`) is considered publicly accessible in either of the following cases: -* _"Public subnet"-determined access:_ +* **"Public subnet"-determined access** if all of the following are true: -| **Criteria** | **Explanation** | -|--------------|-----------------| -|It has one or more [public IP addresses][18].|A public IP address allows your instance to be reached from the internet.| -|It's in a public [subnet][4].|-| -|It's associated with a [security group][12] that has rules allowing access from a CIDR range of `"0.0.0.0/0"`, or an IPv6 CIDR range of `"::/0"`. |A security group controls inbound traffic to a VPC. With an open CIDR range, all IP addresses are able to gain access. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + |It has one or more [public IP addresses][18].|A public IP address allows your instance to be reached from the internet.| + |It's in a public [subnet][4].|-| + |It's associated with a [security group][12] that has rules allowing access from a CIDR range of `"0.0.0.0/0"`, or an IPv6 CIDR range of `"::/0"`. |A security group controls inbound traffic to a VPC. With an open CIDR range, all IP addresses are able to gain access. | ***OR*** -* _ELB-determined access:_ +* **ELB-determined access** if all of the following are true: -| **Criteria** | **Explanation** | -|--------------|-----------------| -| A security group (for example, `SG1`) attached to the load balancer is publicly accessible and allows ingress traffic to some port `X`. | This opens the load balancer to incoming traffic from the internet on a specific port. | -| The load balancer has a listener accepting traffic on port `X`. | A [listener][37] is a process that checks for connection requests using the protocol and port that you configure. | -| The load balancer has a target group forwarding traffic to some port `Y`. | [Target groups][38] route requests to one or more registered targets, such as EC2 instances, on a protocol and port that you specify. | -| The EC2 instance is listed as a target of the target group, and has a security group with at least one rule that allows ingress traffic on port `Y` from `0.0.0.0/0`, from the VPC CIDR (for example, `10.0.0.0/8`), or from the load balancer's security group (`SG1`). | Because the instance is registered as a target of the target group, the load balancer can forward traffic to it through port `Y`. The security group must allow traffic coming from the load balancer. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + | A security group (for example, `SG1`) attached to the load balancer is publicly accessible and allows ingress traffic to some port `X`. | This opens the load balancer to incoming traffic from the internet on a specific port. | + | The load balancer has a listener accepting traffic on port `X`. | A [listener][37] is a process that checks for connection requests using the protocol and port that you configure. | + | The load balancer has a target group forwarding traffic to some port `Y`. | [Target groups][38] route requests to one or more registered targets, such as EC2 instances, on a protocol and port that you specify. | + | The EC2 instance is listed as a target of the target group, and has a security group with at least one rule that allows ingress traffic on port `Y` from `0.0.0.0/0`, from the VPC CIDR (for example, `10.0.0.0/8`), or from the load balancer's security group (`SG1`). | Because the instance is registered as a target of the target group, the load balancer can forward traffic to it through port `Y`. The security group must allow traffic coming from the load balancer. | See [Authorize inbound traffic for your Linux instances][19] for more information about EC2 Instances and public access. See [Example: VPC with servers in private subnets and NAT][36] for an example of EC2 instances that are exposed through a load balancer. @@ -158,7 +158,7 @@ See [Launching your Amazon OpenSearch Service domains within a VPC][24] for more ### Amazon Machine Images (AMI) -A [Machine Image][25] (`aws_ami`) is considered publicly accessible if: +A [Machine Image][25] (`aws_ami`) is considered publicly accessible if all of the following are true: | **Criteria** | **Explanation** | |--------------|-----------------| @@ -179,7 +179,7 @@ See [Share an Amazon EBS snapshot][29] for information about public EBS snapshot ### Amazon EKS clusters -An [EKS cluster][30] (`aws_eks_cluster`) is considered publicly accessible if: +An [EKS cluster][30] (`aws_eks_cluster`) is considered publicly accessible if all of the following are true: | **Criteria** | **Explanation** | |--------------|-----------------| @@ -212,7 +212,7 @@ See [Best practices for working with AWS Lambda functions][59] for more informat ### Azure Network Security Group (NSG) -An Azure NSG (`azure_security_group`) grants public access if: +An Azure NSG (`azure_security_group`) grants public access if all of the following are true: | Criteria | Explanation | |----------|-------------| @@ -225,29 +225,29 @@ For details on how Azure NSGs allow and deny Internet access for a resource, see ### Azure Virtual Machine Instance -A Virtual Machine Instance (`azure_virtual_machine_instance`) is considered publicly accessible if: +A Virtual Machine Instance (`azure_virtual_machine_instance`) is considered publicly accessible in either of the following cases: -* _Attached to Network Security Group allowing public access:_ +* **Attached to Network Security Group allowing public access** if all of the following are true: -| Criteria | Explanation | -|----------|-------------| -|The virtual machine instance has a public IP address attached to one of its network interfaces. | A public IP is required for Internet access to a virtual machine instance. | -|The virtual machine instance has a network security group granting public access attached to one of its network interfaces. | To learn more about how a network can grant public access, see [Azure Network Security Group (NSG)](#azure-network-security-group-nsg). | + | Criteria | Explanation | + |----------|-------------| + |The virtual machine instance has a public IP address attached to one of its network interfaces. | A public IP is required for Internet access to a virtual machine instance. | + |The virtual machine instance has a network security group granting public access attached to one of its network interfaces. | To learn more about how a network can grant public access, see [Azure Network Security Group (NSG)](#azure-network-security-group-nsg). | ***OR*** -* _Has Public IP with SKU "Basic":_ +* **Has Public IP with SKU "Basic"** if all of the following are true: -| Criteria | Explanation | -|----------|-------------| -|The virtual machine instance has a public IP address with SKU Basic attached to its network interface. | A public IP address with SKU basic is open by default (see [Public IP addresses][41]). | -|The virtual machine instance has no attached network security groups. | If no network security groups are attached, then there are no rules blocking access through the open public IP address. | + | Criteria | Explanation | + |----------|-------------| + |The virtual machine instance has a public IP address with SKU Basic attached to its network interface. | A public IP address with SKU basic is open by default (see [Public IP addresses][41]). | + |The virtual machine instance has no attached network security groups. | If no network security groups are attached, then there are no rules blocking access through the open public IP address. | To learn more about Azure Virtual Machine Instances and public access, see [Associate a public IP address to a virtual machine][42]. ### Azure Storage blob container -A Storage blob container (`azure_storage_blob_container`) is considered publicly accessible if: +A Storage blob container (`azure_storage_blob_container`) is considered publicly accessible if all of the following are true: | Criteria | Explanation | |----------|-------------| @@ -259,7 +259,7 @@ To learn more about disallowing blob public access on Azure Storage accounts, se ### Azure Kubernetes Service (AKS) cluster -An [AKS cluster][60] (`azure_aks_cluster`) is considered publicly accessible if: +An [AKS cluster][60] (`azure_aks_cluster`) is considered publicly accessible if all of the following are true: | **Criteria** | **Explanation** | |--------------|-----------------| @@ -272,7 +272,7 @@ See [AKS best practices][61] for more information on public AKS clusters. ### Google Cloud Compute firewall -A Compute Firewall (`gcp_compute_firewall`) grants public access if: +A Compute Firewall (`gcp_compute_firewall`) grants public access if all of the following are true: | Criteria | Explanation | |----------|-------------| @@ -283,18 +283,18 @@ For more information about using Compute firewalls, [Choose to allow or disallow ### Google Cloud Compute instance -A Compute instance (`gcp_compute_instance`) is considered publicly accessible if: +A Compute instance (`gcp_compute_instance`) is considered publicly accessible if all of the following are true: | Criteria | Explanation | |----------|-------------| |The compute instance has a public IP address, meaning at least one of its network interfaces has a public IP address defined in its access configurations, | To learn more about adding an external IP to a compute instance, see [Reserve a static external IP address][48]. | -|The compute instance has associated firewall rules that combine to open some range of ports to the internet. The firewall rules can be associated with the instance by:

  • Having no `target_tags` or `target_service_accounts`, meaning the rule applies to the whole network.
  • Having `target_service_accounts` associated with one of the compute instance's `service_accounts`.
  • Having some `target_tags` that match the compute instance's network tags.

The rules should grant public access (see [Google Cloud Compute Firewall](#google-cloud-compute-firewall)). | To learn how compute firewall rules are used to restrict port ranges for a compute instance, see [Firewall rule components][49]. | +|The compute instance has associated firewall rules that combine to open some range of ports to the internet. The firewall rules can be associated with the instance by:
  • Having no `target_tags` or `target_service_accounts`, meaning the rule applies to the whole network.
  • Having `target_service_accounts` associated with one of the compute instance's `service_accounts`.
  • Having some `target_tags` that match the compute instance's network tags.
The rules should grant public access (see [Google Cloud Compute Firewall](#google-cloud-compute-firewall)). | To learn how compute firewall rules are used to restrict port ranges for a compute instance, see [Firewall rule components][49]. | Learn more about how compute firewall rules are used to restrict port ranges for a compute instance [here][50]. ### Google Cloud BigQuery dataset -A BigQuery dataset (`gcp_bigquery_dataset`) is considered publicly accessible if: +A BigQuery dataset (`gcp_bigquery_dataset`) is considered publicly accessible if all of the following are true: | Criteria | Explanation | |----------|-------------| @@ -305,7 +305,7 @@ Learn more about [BigQuery datasets][53]. ### Google Cloud Storage bucket -A Storage Bucket (`gcp_storage_bucket`) is considered publicly accessible if: +A Storage Bucket (`gcp_storage_bucket`) is considered publicly accessible if all of the following are true: | Criteria | Explanation | |----------|-------------| @@ -317,7 +317,7 @@ Explore more information about making storage buckets public [here][57]. ### Google Cloud Kubernetes Engine clusters -A Kubernetes Engine cluster (`gcp_kubernetes_engine_cluster`) is considered publicly accessible if it meets **all** of the following **base criteria** AND **at least one** of the additional conditions listed below: +A Kubernetes Engine cluster (`gcp_kubernetes_engine_cluster`) is considered publicly accessible if it meets **all** of the following **base criteria**, **AND at least one** of the additional conditions listed below: **Base criteria (all required):** @@ -328,37 +328,37 @@ A Kubernetes Engine cluster (`gcp_kubernetes_engine_cluster`) is considered publ **AND at least one of the following conditions:** -* _Authorized networks is disabled:_ +* **Authorized networks is disabled** -| **Criteria** | **Explanation** | -|--------------|-----------------| -| [Authorized networks][63] is not enabled. | There are no IP allowlist restrictions on who can access the cluster's control plane, allowing access from any IP address. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + | [Authorized networks][63] is not enabled. | There are no IP allowlist restrictions on who can access the cluster's control plane, allowing access from any IP address. | ***OR*** -* _Unrestricted CIDR block allowed:_ +* **Unrestricted CIDR block allowed** -| **Criteria** | **Explanation** | -|--------------|-----------------| -| The authorized networks configuration includes the `0.0.0.0/0` CIDR block. | This CIDR block allows access from any IP address on the internet. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + | The authorized networks configuration includes the `0.0.0.0/0` CIDR block. | This CIDR block allows access from any IP address on the internet. | ***OR*** -* _Google Cloud external IP addresses added to authorized networks:_ +* **Google Cloud external IP addresses added to authorized networks** -| **Criteria** | **Explanation** | -|--------------|-----------------| -| Google Cloud external IP addresses are added to authorized networks (`gcpPublicCidrsAccessEnabled` is set to `true`). | This allows access from any external IP address assigned to Google Cloud VMs, meaning anyone can create a VM in Google Cloud and access the cluster's control plane. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + | Google Cloud external IP addresses are added to authorized networks (`gcpPublicCidrsAccessEnabled` is set to `true`). | This allows access from any external IP address assigned to Google Cloud VMs, meaning anyone can create a VM in Google Cloud and access the cluster's control plane. | ***OR*** -* _Broad Google Cloud IP range allowed:_ +* **Broad Google Cloud IP range allowed** -| **Criteria** | **Explanation** | -|--------------|-----------------| -| The authorized networks configuration includes the `34.0.0.0/7` CIDR block. | This CIDR range is sometimes used to allow access from Google Cloud IP ranges and is considered publicly accessible. | + | **Criteria** | **Explanation** | + |--------------|-----------------| + | The authorized networks configuration includes the `34.0.0.0/7` CIDR block. | This CIDR range is sometimes used to allow access from Google Cloud IP ranges and is considered publicly accessible. | -**Note**: A cluster with authorized networks enabled (`{"enabled":true}`) but with an empty CIDR blocks list (`{"enabled":true, "cidr_blocks":[]}`) is **not** considered publicly accessible, as it blocks all external access to the control plane. +
A cluster with authorized networks enabled ({"enabled":true}) but with an empty CIDR blocks list ({"enabled":true, "cidr_blocks":[]}) is not considered publicly accessible, as it blocks all external access to the control plane.
## Further Reading diff --git a/content/en/security/cloud_security_management/setup/agentless_scanning/enable.md b/content/en/security/cloud_security_management/setup/agentless_scanning/enable.md index f0cdfa1eed5..a6f18b47299 100644 --- a/content/en/security/cloud_security_management/setup/agentless_scanning/enable.md +++ b/content/en/security/cloud_security_management/setup/agentless_scanning/enable.md @@ -168,7 +168,7 @@ This setup deploys the delegate role required for [cross-account scanning](/secu 1. Select **Service-managed permissions**. 1. Under **Specify template**, select **Amazon S3 URL** and enter the following URL: ``` - https://datadog-cloudformation-template-quickstart.s3.amazonaws.com/aws/v4.3.1/datadog_agentless_delegate_role_stackset.yaml + https://datadog-cloudformation-template-quickstart.s3.amazonaws.com/aws/v4.9.1/datadog_agentless_delegate_role_stackset.yaml ``` 1. Enter a **StackSet name** (for example, `DatadogAgentlessScanningStackSet`). 1. Configure the **ScannerInstanceRoleARN** parameter, which is the ARN of the IAM role attached to your Agentless scanner instances. diff --git a/content/en/security/cloud_siem/detect_and_monitor/mitre_attack_map.md b/content/en/security/cloud_siem/detect_and_monitor/mitre_attack_map.md index bfd8e4644b8..887cf9fe543 100644 --- a/content/en/security/cloud_siem/detect_and_monitor/mitre_attack_map.md +++ b/content/en/security/cloud_siem/detect_and_monitor/mitre_attack_map.md @@ -70,6 +70,6 @@ Note the following formatting details: {{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/security/siem/rules -[2]: https://docs.datadoghq.com/security/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api/ +[2]: /security/cloud_siem/guide/customize-which-logs-cloud-siem-analyzes/ [3]: https://app.datadoghq.com/security/siem/rules?query=product=siem&sort=date&viz=attck-map -[4]: https://docs.datadoghq.com/security/cloud_siem/detect_and_monitor/custom_detection_rules/?tab=threshold +[4]: /security/cloud_siem/detect_and_monitor/custom_detection_rules/?tab=threshold diff --git a/content/en/security/cloud_siem/guide/_index.md b/content/en/security/cloud_siem/guide/_index.md index be29d72b844..e35d6655b95 100644 --- a/content/en/security/cloud_siem/guide/_index.md +++ b/content/en/security/cloud_siem/guide/_index.md @@ -17,6 +17,6 @@ disable_toc: true {{< nextlink href="/security/cloud_siem/guide/azure-config-guide-for-cloud-siem/" >}}Azure Configuration Guide for Cloud SIEM{{< /nextlink >}} {{< nextlink href="/security/cloud_siem/guide/oci-config-guide-for-cloud-siem/" >}}OCI Configuration Guide for Cloud SIEM{{< /nextlink >}} {{< nextlink href="security/cloud_siem/guide/monitor-authentication-logs-for-security-threats" >}}Monitor Authentication Logs for Security Threats{{< /nextlink >}} - {{< nextlink href="/security/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api" >}}Security Filters with the Cloud SIEM API{{< /nextlink >}} + {{< nextlink href="/security/cloud_siem/guide/customize-which-logs-cloud-siem-analyzes" >}}Customize which logs Cloud SIEM analyzes{{< /nextlink >}} {{< nextlink href="/security/cloud_siem/guide/troubleshoot-cribl-stream-cloud-siem" >}}Troubleshoot using Cribl Stream with Cloud SIEM{{< /nextlink >}} {{< /whatsnext >}} \ No newline at end of file diff --git a/content/en/security/cloud_siem/guide/customize-which-logs-cloud-siem-analyzes.md b/content/en/security/cloud_siem/guide/customize-which-logs-cloud-siem-analyzes.md new file mode 100644 index 00000000000..61484007c2e --- /dev/null +++ b/content/en/security/cloud_siem/guide/customize-which-logs-cloud-siem-analyzes.md @@ -0,0 +1,375 @@ +--- +title: Customize which logs Cloud SIEM analyzes +description: Customize which ingested logs Cloud SIEM analyzes by configuring Security Filters or log index filters. Covers the Cloud SIEM product that applies to your organization, UI and API configuration, supported and unsupported filter fields, and common patterns for AWS, Azure, Google Cloud, identity providers, and more. +aliases: + - /security_monitoring/guide/how-to-setup-security-filters-using-security-monitoring-api/ + - /security_platform/guide/how-to-setup-security-filters-using-security-monitoring-api/ + - /security_monitoring/guide/how-to-setup-security-filters-using-cloud-siem-api/ + - /cloud_siem/guide/how-to-setup-security-filters-using-security-monitoring-api/ + - /security_platform/guide/how-to-setup-security-filters-using-cloud-siem-api/ + - /security_platform/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api/ + - /security/guide/how-to-setup-security-filters-using-security-monitoring-api/ + - /security/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api/ +further_reading: +- link: /security/detection_rules/ + tag: Documentation + text: Detection Rules +- link: /security/cloud_siem/ingest_and_enrich/content_packs + tag: Documentation + text: Content Packs +- link: /security/cloud_siem/guide/determine-cloud-siem-product/ + tag: Documentation + text: Determine the Cloud SIEM product your organization is using +--- + +## Overview + +Cloud SIEM analyzes ingested logs to detect threats using [detection rules][1]. Most organizations rely on [Content Packs][7] to manage which logs Cloud SIEM analyzes; each Content Pack includes prebuilt filters for the log source it covers. If you need more granular control (for example, to exclude an environment or to restrict analysis to a custom log set), configure log filtering directly. + +## Filtering tools and configuration methods + +The filtering tools and configuration methods available depend on your Cloud SIEM product: + +| Cloud SIEM product | Filtering tool | Configuration methods | +|-----------------------|------------------------------------------|-----------------------------------------------------------------------------------------------------------------------| +| Standalone | Log index filters (not Security Filters) | [Log Configuration UI](#cloud-siem-standalone-filter-the-cloud-siem-index) | +| Add-on with Flex Logs | Security Filters | [UI](#configure-security-filters-in-the-ui-add-on-with-flex-logs) and [API](#configure-security-filters-with-the-api) | +| Legacy | Security Filters | [API](#configure-security-filters-with-the-api) | + +If you're not sure which Cloud SIEM product your organization uses, see [Determine the Cloud SIEM product your organization is using][2]. + +
Security Filters and log index filters control only the logs analyzed by Cloud SIEM. Logs generated by the Datadog Agent for Workload Protection (source:runtime-security-agent) and Cloud Security Misconfigurations (source:compliance-agent) are not billed as analyzed logs regardless of filter configuration.
+ +### Cloud SIEM Standalone: Filter the Cloud SIEM index + +Cloud SIEM Standalone does not use Security Filters. Standalone organizations control which logs Cloud SIEM analyzes by configuring an index filter on the Cloud SIEM log index. + +An index filter is a query that specifies which logs enter the index. Logs that do not match the filter are not indexed, and therefore are not analyzed by Cloud SIEM. The query syntax is the same as the standard Datadog log search syntax. + +For full configuration instructions, see [Indexes filters][3] in the Log Configuration documentation. + +**This guide does not apply to Cloud SIEM Standalone.** + +## How Security Filters work + +Security Filters specify which ingested logs Cloud SIEM analyzes. Cloud SIEM evaluates every ingested log against all enabled Security Filters. + +Security Filters are **inclusive**: Datadog analyzes a log if the log matches at least one enabled Security Filter and is not removed by an exclusion on that filter. A Security Filter has three parts: + +- A **query** that selects the logs the filter matches. +- Zero or more **exclusion filters**, each with its own query. A log matched by the main query is removed from analysis if it also matches any exclusion query. +- A **status** (active or inactive). Inactive filters are ignored by Cloud SIEM but remain saved for later use. + +Cloud SIEM tags every ingested log with `datadog.cloud_siem:true` or `datadog.cloud_siem:false`, based on whether Security Filters selected the log for analysis. You can use this tag in Logs Explorer to verify the effect of your Security Filters on any specific log. + +### Limitations on Security Filter queries + +Datadog evaluates Security Filters before Cloud SIEM applies geoIP, threat intel, and OCSF observable enrichment. The fields that enrichment populates are not present on the log when Security Filters evaluate it, so Security Filter queries cannot reliably reference them. The constraint applies in two distinct ways: + +- **Fields not present at filter-evaluation time.** These fields are populated only by Cloud SIEM's out-of-the-box enrichment, which runs after Security Filters. A Security Filter query that references one of these fields matches no logs. + - `network.ip.list` + - `network.ip.attributes` + - `network.client.is_private_network_ip` + - `network.destination.is_private_network_ip` + - `ocsf.observables` + - `ocsf.type_uid` + + To filter on these categories of data, rewrite the query using attributes present at ingestion time, such as `source`, `service`, `host`, tags, and parsed log attributes. + +- **Fields whose availability depends on Pipeline configuration.** These fields can be populated either by a Logs Pipeline processor (before Security Filters), or by Cloud SIEM's out-of-the-box enrichment (after Security Filters). Whether a Security Filter query against one of these fields works depends on whether the corresponding Pipeline processor is configured. + - `network.client.geoip` (and sub-attributes such as `network.client.geoip.country.iso_code`) + - `threat_intel.results` + - `threat_intel.indicators_matched` + + To make these fields available to Security Filter queries, configure the corresponding GeoIP or Threat Intel Enrichment processor in your [Logs Pipeline][8]. With the processor in place, the fields get populated before Security Filters run. + +Cloud SIEM's geoIP enrichment uses the same GeoIPFilter and IPinfo database as a Pipeline GeoIP processor, so the geoIP data is identical regardless of which path populates it. The threat intel workaround is different: a Pipeline Threat Intel Enrichment processor draws on your own threat intel sources (see [Bring your own threat intelligence][9] for setup guidance), which produces a different set of matches than Cloud SIEM's out-of-the-box, Datadog-managed threat intel. If you rely on Cloud SIEM's out-of-the-box threat intel, the matching cannot be moved upstream of Security Filters. + +The pre-enrichment evaluation applies to Security Filters only. Detection rules, suppression rules, and signal queries run against the post-enrichment log and can continue to reference these fields. + +## Configure Security Filters in the UI (Add-on with Flex Logs) + +**Applies to:** Cloud SIEM Add-on with Flex Logs. Cloud SIEM Legacy organizations must configure Security Filters through the [API](#configure-security-filters-with-the-api). + +
For most use cases, the easiest way to manage which logs Cloud SIEM analyzes is by enabling or disabling Content Packs. Each Content Pack manages its own Security Filter, so toggling a Content Pack adds or removes the corresponding filter automatically. The Security Filters UI described below is provided for fine tuning and custom log control beyond what Content Packs cover.
+ +The Security Filters Configuration section lists every Security Filter, its query, its exclusions, and whether it is currently active. A Preview pane at the bottom of the section streams the logs that reach Cloud SIEM analysis after every enabled filter is applied. Use the Preview pane to validate that your filter configuration produces the expected result. + +{{< img src="security/cloud_siem/guide/siem_settings_page_security_filters.png" alt="The Security Filters Configuration section of the Cloud SIEM settings page, showing a list of configured filters with columns for Name, Filters, and Active, followed by a Preview pane streaming matching logs" style="width:100%;" >}} + +### Create a Security Filter + +1. In Datadog, go to **Security** > **Cloud SIEM** > [**Settings**][4]. +1. Scroll to the **Security Filters Configuration** section and click it to expand it. +1. In the **Security Filters Configuration** section, click **+ New Security Filter**. The New Security Filter window opens. +1. In the **New Security Filter** window, enter: + - **Name:** A short, descriptive name (for example, `AWS CloudTrail`). + - **Query:** The log query that selects the logs Cloud SIEM should analyze (for example, `source:cloudtrail`). + - **Exclusion filters** (optional): One or more exclusion queries that subtract logs from the filter's match. To add one, click **+ New Exclusion Filter** and enter an exclusion query. + - **Filter status:** Set to **Active** to enable the filter on save. +1. Review the **Preview** pane to confirm the filter matches the logs you expect. +1. Click **Save**. + +{{< img src="security/cloud_siem/guide/siem_settings_add_security-filter_empty.png" alt="The New Security Filter dialog with empty Name and Query fields, no exclusion filters, Filter status set to Active, and a Preview pane showing live log ingestion statistics" style="width:100%;" >}} + +### Edit or disable a Security Filter + +1. In the **Security Filters Configuration** section, click the **Edit** {{< img src="icons/pencil.png" inline="true" style="width:14px;">}} icon on the filter row. +2. In the **Edit Security Filter** dialog, update the name, query, exclusions, or filter status. +3. Click **Save**. + +To disable a filter without deleting it, set **Filter status** to inactive. The filter remains saved so you can re-enable it later. + +### Delete a Security Filter + +In the **Security Filters Configuration** section, click the **Delete** icon {{< img src="icons/delete.png" inline="true" style="width:14px;">}} on the filter row, then confirm the deletion. + +The built-in `all ingested logs` filter cannot be deleted, but you can disable it. + +## Configure Security Filters with the API + +**Applies to:** Cloud SIEM Legacy and Cloud SIEM Add-on with Flex Logs. + +### Prerequisites for the Cloud SIEM API + +- An API key and an application key from an admin user. Both are available on your [Datadog account API key page][5]. Replace `` and `` in the examples in this section with your API key and application key. +- `curl` installed on the machine running the examples. For examples in other languages, see the [Security Monitoring API documentation][6]. + +
Several of the Security Filter API payloads include a version attribute. version is optional: if you omit it, the API updates the latest version of the filter. Include version when you want the request to succeed only against a specific known version (for example, to avoid overwriting concurrent changes).
+ +### Add an exclusion to the default Security Filter + +The built-in `all ingested logs` filter matches every log. To reduce analyzed volume, add one or more exclusions to this filter. This example excludes logs tagged `env:staging`. + +1. GET existing Security Filters to find the filter's `id`: + ```bash + curl -L -X GET 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters' \ + --header 'Content-Type: application/json' \ + --header 'DD-API-KEY: ' \ + --header 'DD-APPLICATION-KEY: ' + ``` + + Example response: + + ```json + { + "data": [ + { + "attributes": { + "is_enabled": true, + "is_builtin": true, + "name": "all ingested logs", + "filtered_data_type": "logs", + "exclusion_filters": [], + "version": 1, + "query": "*" + }, + "type": "security_filters", + "id": "l6l-rmx-mqx" + } + ] + } + ``` + + In the example response, the filter `id` is `l6l-rmx-mqx`. Every organization has its own unique filter IDs, so always retrieve the current `id` before sending a PATCH. +2. PATCH the filter to add the exclusion. Replace `` with the `id` returned by the list request: + ```bash + curl -L -X PATCH 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters/' \ + --header 'Content-Type: application/json' \ + --header 'DD-API-KEY: ' \ + --header 'DD-APPLICATION-KEY: ' \ + --data-raw '{ + "data": { + "attributes": { + "exclusion_filters": [ + { + "query": "env:staging", + "name": "exclude env:staging" + } + ], + "version": 1 + }, + "type": "security_filters" + } + }' + ``` + + Example response: + + ```json + { + "data": { + "attributes": { + "is_enabled": true, + "is_builtin": true, + "name": "all ingested logs", + "filtered_data_type": "logs", + "exclusion_filters": [ + { + "query": "env:staging", + "name": "exclude env:staging" + } + ], + "version": 2, + "query": "*" + }, + "type": "security_filters", + "id": "" + } + } + ``` + +### Create a custom Security Filter + +Custom Security Filters restrict analysis to explicitly specified logs. This example call creates a filter that matches only `source:cloudtrail`, so Datadog analyzes logs from AWS CloudTrail and no other source. + +```bash +curl -L -X POST 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters' \ +--header 'Content-Type: application/json' \ +--header 'DD-API-KEY: ' \ +--header 'DD-APPLICATION-KEY: ' \ +--data-raw '{ + "data": { + "type": "security_filters", + "attributes": { + "is_enabled": true, + "name": "cloudtrail", + "exclusion_filters": [], + "filtered_data_type": "logs", + "query": "source:cloudtrail" + } + } +}' +``` + +Example response: + +```json +{ + "data": { + "attributes": { + "is_enabled": true, + "is_builtin": false, + "name": "cloudtrail", + "filtered_data_type": "logs", + "exclusion_filters": [], + "version": 1, + "query": "source:cloudtrail" + }, + "type": "security_filters", + "id": "qa6-tzm-rp7" + } +} +``` + +### Disable the default Security Filter + +Security Filters are inclusive: a log is analyzed if it matches at least one enabled Security Filter. To restrict analysis to only the logs matched by your custom filters, disable the built-in `all ingested logs` filter by setting its `is_enabled` attribute to `false`: + +```bash +curl -L -X PATCH 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters/' \ +--header 'Content-Type: application/json' \ +--header 'DD-API-KEY: ' \ +--header 'DD-APPLICATION-KEY: ' \ +--data-raw '{ + "data": { + "attributes": { + "is_enabled": false + }, + "type": "security_filters" + } +}' +``` + +Example response: + +```json +{ + "data": { + "attributes": { + "is_enabled": false, + "is_builtin": true, + "name": "all ingested logs", + "filtered_data_type": "logs", + "exclusion_filters": [ + { + "query": "env:staging", + "name": "exclude env:staging" + } + ], + "version": 3, + "query": "*" + }, + "type": "security_filters", + "id": "l6l-rmx-mqx" + } +} +``` + +### Delete a Security Filter + +To delete a custom Security Filter, send a DELETE request with the filter `id`: + +```bash +curl -L -X DELETE 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters/' \ +--header 'Content-Type: application/json' \ +--header 'DD-API-KEY: ' \ +--header 'DD-APPLICATION-KEY: ' +``` + +A successful request returns `HTTP 204 No Content`. + +## Troubleshoot Security Filters + +If a log you expect Cloud SIEM to analyze is not producing signals, work through these checks in order: + +1. **Verify that Security Filters selected the log for analysis.** Open the log in Logs Explorer and check the value of `datadog.cloud_siem`. + - If the tag is `false`, the log was excluded by Security Filters. Review your filter set and confirm that at least one enabled filter matches the log, and that no exclusion removes it. + - If the tag is `true`, the log was selected for analysis and the issue is downstream of Security Filters (for example, no detection rule matched). +2. **Check whether your filter query references an unsupported field.** See [Limitations on Security Filter queries](#limitations-on-security-filter-queries). + - A query against a field not present at filter-evaluation time returns zero matches. + - A query against a field whose availability depends on Pipeline configuration returns matches only when the corresponding Pipeline processor is configured. +3. **Validate the combined effect of all filters.** + - In the UI, expand the **Preview** pane in the Security Filters Configuration section to stream the logs that reach analysis after every enabled filter is applied. + - With the API, send a `GET` request to list all filters and review the combined `query` and `exclusion_filters` payloads. + +## Useful tags and attributes for Security Filter queries + +If you restrict analysis to specific categories of logs, take care not to exclude logs that contain valuable security-relevant users, entities, or sources. The tables in this section list common queries you can use or adapt. + +### Key users and entities for Security Filter queries + +| Name | Query | +| ----------------- | ----------------------------------------------- | +| All named events | `@evt.name:*` | +| All client IPs | `@network.client.ip:*` | +| All destination IPs | `@network.destination.ip:*` | +| All users | `@usr.id:* OR @usr.name:* OR @usr.email:*` | +| All hosts | `host:* OR instance-id:*` | + +### Key security sources for Security Filter queries + +| Name | Query | +| ----------------------- | ------------------------------------------------ | +| AWS Security Logs | `source:(cloudtrail OR guardduty OR route53)` | +| AWS Network Logs | `source:(vpc OR waf OR elb OR alb)` | +| Google Cloud Logs | `source:gcp*` | +| Azure Logs | `source:azure*` | +| Kubernetes Audit Logs | `source:kubernetes.audit` | +| Identity Provider Logs | `source:(okta OR gsuite OR auth0)` | +| CDN Logs | `source:(cloudfront OR cloudflare OR fastly)` | +| Web Server Logs | `source:(nginx* OR apache OR iis)` | + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /security/default_rules/#cat-cloud-siem +[2]: /security/cloud_siem/guide/determine-cloud-siem-product/ +[3]: /logs/log_configuration/indexes/#indexes-filters +[4]: https://app.datadoghq.com/security/configuration/siem/setup +[5]: /account_management/api-app-keys/ +[6]: /api/latest/security-monitoring/#get-all-security-filters +[7]: /security/cloud_siem/ingest_and_enrich/content_packs +[8]: /logs/log_configuration/pipelines/ +[9]: /security/cloud_siem/ingest_and_enrich/threat_intelligence/ diff --git a/content/en/security/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api.md b/content/en/security/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api.md deleted file mode 100644 index 78d9e478475..00000000000 --- a/content/en/security/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api.md +++ /dev/null @@ -1,244 +0,0 @@ ---- -title: Security Filters with the Cloud SIEM API -aliases: - - /security_monitoring/guide/how-to-setup-security-filters-using-security-monitoring-api/ - - /security_platform/guide/how-to-setup-security-filters-using-security-monitoring-api/ - - /security_monitoring/guide/how-to-setup-security-filters-using-cloud-siem-api/ - - /cloud_siem/guide/how-to-setup-security-filters-using-security-monitoring-api/ - - /security_platform/guide/how-to-setup-security-filters-using-cloud-siem-api/ - - /security_platform/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api/ - - /security/guide/how-to-setup-security-filters-using-security-monitoring-api/ ---- - -## Overview - -The Cloud SIEM product analyzes your ingested logs to detect threats in real time, such as by matching logs with threat intelligence, or by applying [detection rules][1] to detect attacks or anomalies. - -Datadog charges for analyzed logs based on the total number of gigabytes ingested and analyzed by the Datadog Cloud SIEM service. By default, Cloud SIEM analyzes all your ingested logs to maximize detection coverage. However, by using the [Cloud SIEM API][2], you can programmatically setup Security Filters to configure which subset of ingested logs to analyze. - -The following examples are covered in this guide: - -* [Configure the default security filter to exclude certain logs](#add-an-exclusion) -* [Create custom security filters to specify which log sources to analyze](#create-a-custom-filter) - -**Note**: Security Filters are only required to control logs analyzed by the Cloud SIEM product. You do not need to write Security Filters to exclude logs generated by the Datadog Agent as part of the Workload Protection (`source:runtime-security-agent`) and Cloud Security Misconfigurations (`source:compliance-agent`) products, as they're not billed as analyzed logs regardless. - -## Prerequisites - -* An API key and an application key **from an admin user** is required to use the API. These are available in your [Datadog account API key page][3]. Replace `` and `` with your Datadog API key and your Datadog application key. - -* This guide features `curl` examples. Install [cURL][4] if you do not have it installed, or reference additional language examples for this API endpoint in the [API documentation][2]. - -## Examples - -### Add an exclusion - -By default, a single Security Filter exists that analyzes all ingested logs. It's named `all ingested logs` and has a query of `*`. You can customize it by adding an exclusion to exclude a subset of logs based on their tags. To do so, you first need to retrieve the list of Security Filters in order to get the filter's `id`. - -**API call:** - -```bash -curl -L -X GET 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters' \ ---header 'Content-Type: application/json' \ ---header 'DD-API-KEY: ' \ ---header 'DD-APPLICATION-KEY: ' -``` - -**Response:** - -```json -{ - "data": [ - { - "attributes": { - "is_enabled": true, - "is_builtin": true, - "name": "all ingested logs", - "filtered_data_type": "logs", - "exclusion_filters": [], - "version": 1, - "query": "*" - }, - "type": "security_filters", - "id": "l6l-rmx-mqx" - } - ] -} -``` - -In this example, the filter's `id` is `"l6l-rmx-mqx"`. You can then modify it to add an exclusion, for example exclude all the logs tagged with `env:staging`. - -**Note**: `version` indicates the current version of the filter you want to update. This field is optional. If it is not provided, the latest version is updated. - -**API call:** - -```bash -curl -L -X PATCH 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters/l6l-rmx-mqx' \ ---header 'Content-Type: application/json' \ ---header 'DD-API-KEY: ' \ ---header 'DD-APPLICATION-KEY: ' \ ---data-raw '{ - "data": { - "attributes": { - "exclusion_filters": [ - { - "query": "env:staging", - "name": "exclude env:staging" - } - ], - "version": 1 - }, - "type": "security_filters" - } -}' -``` - -**Response:** - -```json -{ - "data": { - "attributes": { - "is_enabled": true, - "is_builtin": true, - "name": "all ingested logs", - "filtered_data_type": "logs", - "exclusion_filters": [ - { - "query": "env:staging", - "name": "exclude env:staging" - } - ], - "version": 2, - "query": "*" - }, - "type": "security_filters", - "id": "l6l-rmx-mqx" - } -} -``` - -### Create a custom filter - -You can also create custom Security Filters in order to restrict analysis to explicitly specified logs. For example, you can choose to analyze logs from AWS CloudTrail with a filter that matches only `source:cloudtrail`. - -**API call:** - -```bash -curl -L -X POST 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters' \ ---header 'Content-Type: application/json' \ ---header 'DD-API-KEY: ' \ ---header 'DD-APPLICATION-KEY: ' \ ---data-raw '{ - "data": { - "type": "security_filters", - "attributes": { - "is_enabled": true, - "name": "cloudtrail", - "exclusion_filters": [], - "filtered_data_type": "logs", - "query": "source:cloudtrail" - } - } -}' -``` - -**Response:** - -```json -{ - "data": { - "attributes": { - "is_enabled": true, - "is_builtin": false, - "name": "cloudtrail", - "filtered_data_type": "logs", - "exclusion_filters": [], - "version": 1, - "query": "source:cloudtrail" - }, - "type": "security_filters", - "id": "qa6-tzm-rp7" - } -} -``` - -**Note**: `version` indicates the current version of the filter you want to update. This field is optional. If it is not provided, the latest version is updated. - -Security Filters are inclusive, which means a given log is analyzed **if it matches at least one Security Filter**. If you're aiming to specify a subset of logs to analyze, you likely also would want to disable the default built-in filter named `all ingested logs`. You would do so by setting its `is_enabled` attribute to `false`, as follows: - -**API call:** - -```bash -curl -L -X PATCH 'https://api.{{< region-param key="dd_site" code="true" >}}/api/v2/security_monitoring/configuration/security_filters/l6l-rmx-mqx' \ ---header 'Content-Type: application/json' \ ---header 'DD-API-KEY: ' \ ---header 'DD-APPLICATION-KEY: ' \ ---data-raw '{ - "data": { - "attributes": { - "is_enabled": false - }, - "type": "security_filters" - } -}' -``` - -**Response:** - -```json -{ - "data": { - "attributes": { - "is_enabled": false, - "is_builtin": true, - "name": "all ingested logs", - "filtered_data_type": "logs", - "exclusion_filters": [ - { - "query": "env:staging", - "name": "exclude env:staging" - } - ], - "version": 3, - "query": "*" - }, - "type": "security_filters", - "id": "l6l-rmx-mqx" - } -} -``` - -**Note**: `version` indicates the current version of the filter you want to update. This field is optional. If it is not provided, the latest version is updated. - -## Key security-relevant tags and attributes - -If you aim to only analyze explicitly specified categories of logs, be cautious not to exclude logs that contain valuable security-relevant users and entities, or key sources of security logs. The tables below provide useful examples. - -**Key users and entities** - -| Name | Query | -| --------------------- |--------------------------------------------------| -| All named events | `@evt.name:*` | -| All client IPs | `@network.client.ip:*` | -| All destination IPs | `@network.destination.ip:*` | -| All users | `@usr.id:* OR @usr.name:* @usr.email:*` | -| All hosts | `host:* OR instance-id:*` | - -**Key security sources** - -| Name | Query | -| --------------------- |--------------------------------------------------| -| AWS Security Logs | `source:(cloudtrail OR guardduty OR route53)` | -| AWS Network Logs | `source:(vpc OR waf OR elb OR alb)` | -| Google Cloud Logs | `source:gcp*` | -| Azure Logs | `source:azure*` | -| Kubernetes Audit Logs | `source:kubernetes.audit` | -| Identity Provider Logs| `source:(okta OR gsuite OR auth0)` | -| CDN Logs | `source:(cloudfront OR cloudflare OR fastly)` | -| Web Server Logs | `source:(nginx* OR apache OR iis)` | - -[1]: /security/default_rules#cat-cloud-siem -[2]: /api/latest/security-monitoring/#get-all-security-filters -[3]: /api/v1/authentication/ -[4]: https://curl.haxx.se/download.html diff --git a/content/en/security/code_security/secret_scanning/configuration.md b/content/en/security/code_security/secret_scanning/configuration.md new file mode 100644 index 00000000000..eda6b8ed406 --- /dev/null +++ b/content/en/security/code_security/secret_scanning/configuration.md @@ -0,0 +1,49 @@ +--- +title: Rule Configuration +algolia: + tags: ['static analysis', 'ci pipeline', 'SAST', 'secret scanning'] +description: Configure rules for Datadog Secret Scanning, including managed default rules and custom regex rules. +--- + +By default, Datadog Secret Scanning scans enabled repositories with all [rules in the Secrets & Credentials category of Sensitive Data Scanner][1]. You can customize which rules run, modify default rules, and create custom rules on the [**Code** configuration page][2] in SDS. +## Scanning groups +There are two scanning groups that configure Secret Scanning rules. +### Managed scanning group +The managed scanning group is managed by Datadog's security team. It automatically receives new rules and updates to rules, and is enabled by default for all organizations. + +{{< img src="/code_security/secret_scanning/managed_scanning_group_not_customized.png" alt="Managed scanning group" style="width:100%;">}} + +### Custom rule scanning group +The custom scanning group is managed by user orgs. You can [create and test custom regex rules][3] or add rules from the SDS rules library. + +{{< img src="/code_security/secret_scanning/custom_scanning_group.png" alt="Custom scanning group" style="width:100%;">}} + +## Configuring rules +### Customizing default rules +To customize the severity and keywords of a managed default rule, hover over the rule and click the pencil icon on the right. +{{< img src="/code_security/secret_scanning/customize_default_rule.png" alt="Edit rule" style="width:100%;">}} + +The edit dialog opens. +{{< img src="/code_security/secret_scanning/configure_default_rule.png" alt="Edit rule popup" style="width:100%;">}} + +After editing the rule and clicking **Update** at the bottom right, the modified rule appears as **Customized** in the managed scanning group. + +{{< img src="/code_security/secret_scanning/disable_rule.png" alt="Customized secret scanning rule in managed group" style="width:100%;">}} + +
Customized rules do not automatically receive severity/default keyword updates from Datadog's security team. To restore a rule to its managed state, hover over a customized rule and click the restore icon at the right.
+ +### Creating custom rules +To create a custom rule, go to the custom scanning group and click **Add scanning rule** at the bottom or **Add rule** at the top right. Create your regex rule, then configure the severity and keywords. After they're enabled, your repositories are scanned with the new rules on the next commit. + +{{< img src="/code_security/secret_scanning/add_to_custom.png" alt="Add rule to custom group" style="width:100%;">}} + +To update a custom rule, hover over the rule and click the pencil icon on the right. + +### Disabling rules +Disable a rule by clicking the blue toggle on the right. + +
After a specific rule is disabled, existing findings from that rule are auto-closed in Secret Scanning on the next commit.
+ +[1]: /security/sensitive_data_scanner/scanning_rules/library_rules/?category=Secrets+and+credentials +[2]: https://app.datadoghq.com/sensitive-data-scanner/configuration/code +[3]: /security/sensitive_data_scanner/scanning_rules/custom_rules/ diff --git a/content/en/security/guide/_index.md b/content/en/security/guide/_index.md index 257e3e03f75..9bacb278982 100644 --- a/content/en/security/guide/_index.md +++ b/content/en/security/guide/_index.md @@ -21,7 +21,7 @@ disable_toc: true {{< nextlink href="/security/cloud_siem/guide/google-cloud-config-guide-for-cloud-siem/" >}}Google Cloud Configuration Guide for Cloud SIEM{{< /nextlink >}} {{< nextlink href="/security/cloud_siem/guide/azure-config-guide-for-cloud-siem/" >}}Azure Configuration Guide for Cloud SIEM{{< /nextlink >}} {{< nextlink href="security/cloud_siem/guide/monitor-authentication-logs-for-security-threats" >}}Monitor Authentication Logs for Security Threats{{< /nextlink >}} - {{< nextlink href="/security/cloud_siem/guide/how-to-setup-security-filters-using-cloud-siem-api" >}}Security Filters with the Cloud SIEM API{{< /nextlink >}} + {{< nextlink href="/security/cloud_siem/guide/customize-which-logs-cloud-siem-analyzes/" >}}Customize which logs Cloud SIEM analyzes{{< /nextlink >}} {{< /whatsnext >}} {{< whatsnext desc="Code Security Guides:" >}} diff --git a/content/en/serverless/azure_app_service/windows_code.md b/content/en/serverless/azure_app_service/windows_code.md index f3df83772bb..f1d62e3c5de 100644 --- a/content/en/serverless/azure_app_service/windows_code.md +++ b/content/en/serverless/azure_app_service/windows_code.md @@ -46,7 +46,7 @@ The Datadog .NET, Java, and Node.js APM extensions support the following runtime | Framework | Supported runtimes | | --------- | ------------------ | -| .NET | `ASPNET:V3.5`, `ASPNET:V4.8`, `dotnet:8`, `dotnet:9` | +| .NET | `ASPNET:V3.5`, `ASPNET:V4.8`, `dotnet:8`, `dotnet:9`, `dotnet:10` | | Java | `JAVA:8`, `JAVA:11`, `JAVA:17`, `JAVA:21`, `TOMCAT:9.0-java8`, `TOMCAT:9.0-java11`, `TOMCAT:9.0-java17`, `TOMCAT:9.0-java21`, `TOMCAT:10.1-java8`, `TOMCAT:10.1-java11`, `TOMCAT:10.1-java17`, `TOMCAT:10.1-java21`, `TOMCAT:11.0-java8`, `TOMCAT:11.0-java11`, `TOMCAT:11.0-java17`, `TOMCAT:11.0-java21` | | Node.js | `NODE:20LTS`, `NODE:22LTS` | diff --git a/content/es/account_management/teams/_index.md b/content/es/account_management/teams/_index.md index cbc196f70b5..ad95b618ed2 100644 --- a/content/es/account_management/teams/_index.md +++ b/content/es/account_management/teams/_index.md @@ -1,156 +1,177 @@ --- +description: Organiza los activos del equipo, filtra las experiencias de Datadog y + gestiona la membresía del equipo con identificadores de equipo, notificaciones y + asociaciones de recursos. +further_reading: +- link: https://www.datadoghq.com/blog/datadog-teams-github-integration + tag: Blog + text: Mantén la propiedad del servicio actualizada con la integración de GitHub + de los Equipos de Datadog title: Equipos --- +## Resumen {#overview} +Los Equipos de Datadog permiten a grupos de usuarios organizar sus activos de equipo dentro de Datadog y filtrar automáticamente su experiencia en Datadog para priorizar estos activos. -## Información general -Datadog Teams permite a los grupos de usuarios organizar los activos de sus equipos dentro de Datadog y filtrarlos automáticamente en Datadog para clasificarlos por relevancia. +Utiliza Equipos para vincular recursos como tableros, servicios, seguimientos e incidentes a un grupo de usuarios. También puedes agregar enlaces específicos del equipo a canales de Slack, tableros de Jira, repositorios de GitHub y más. -Puedes utilizar Teams para vincular recursos como dashboards, servicios, monitores e incidencias a un grupo de usuarios. También puedes añadir enlaces específicos para equipos a los canales de Slack, paneles de Jira o repositorios de GitHub, entre otros. +La membresía del equipo es flexible. Los usuarios pueden unirse a equipos, ser añadidos por otros miembros o ser añadidos por un administrador. Los usuarios pueden pertenecer a múltiples equipos. -Existen varias formas de ser miembro de un equipo. Los usuarios pueden unirse a los equipos, o pueden agregarlos otros miembros o un administrador. Además, un usuario puede estar en varios equipos al mismo tiempo. +## Configuración {#setup} -{{< callout url="https://www.datadoghq.com/product-preview/github-integration-for-teams/" header="Únete a la Vista previa.">}} - La integración de Github para Teams está en Vista previa. -{{< /callout >}} +### Navegación {#navigation} -## Configuración +Accede a la página del directorio del equipo desde [Configuraciones de la Organización][1] o navegando a [**Equipos**][2]. La [página del directorio del equipo][1] lista todos los equipos dentro de tu organización. -### Navegación +### Crear equipo {#create-team} -Accede a la página del directorio de equipos desde los [parámetros de organización][1] o consulta [**Service Management > Teams**][2] (Gestión de servicios > Teams). La [página del directorio de equipos][1] enumera todos los equipos de tu organización. - -### Crear un equipo - -1. En la [página del directorio de equipos][1], haz clic en **New Team** (Nuevo equipo), en la parte superior derecha. -1. Elige un **Team Name** (Nombre de equipo). -1. El **Handle** (Identificador) se rellena según el nombre de tu equipo. -1. Usa el menú desplegable para seleccionar miembros y administradores del equipo. -1. Escribe una descripción opcional en **Description**. -1. Haz clic en **Create** (Crear). +1. En la [página del directorio del equipo][1], haz clic en {{< ui >}}New Team{{< /ui >}} en la esquina superior derecha. +1. Elige un {{< ui >}}Team Name{{< /ui >}}. +1. El {{< ui >}}Handle{{< /ui >}} se completa según el nombre de tu equipo. +1. Utiliza el menú desplegable para seleccionar miembros del equipo y gerentes del equipo. +1. Proporciona un {{< ui >}}Description{{< /ui >}} opcional. +1. Haz clic en {{< ui >}}Create{{< /ui >}}. **Notas**: -- Los caracteres permitidos para los nombres de equipos son `a-z`, `A-Z`, `0-9` y `._-:/`. Sustituye los espacios por guiones bajos. -- Los caracteres permitidos para los identificadores de equipos son `a-z`, `0-9` y `._-:/`. El último carácter no puede ser un guion bajo. +- Los caracteres permitidos para los nombres de equipo son `a-z`, `A-Z`, `0-9` y `._-:/`. Reemplace los espacios con guiones bajos. +- Los caracteres permitidos para los identificadores de equipo son `a-z`, `0-9` y `._-:/`. El último carácter no puede ser un guion bajo. -### Modificar el equipo +### Modifica el equipo {#modify-team} -1. En la [página del directorio de equipos][1], haz clic en el equipo que quieres modificar. Aparecerá la [página de detalles del equipo][3]. -1. Haz clic en el botón **Parámetros**, situado en la parte superior de la pantalla. Aparecerá una ventana emergente. -1. Selecciona el elemento que quieres modificar. -1. Realiza los cambios y pulsa **Guardar**. +1. En la [página del directorio de equipos][1], haz clic en el equipo que deseas modificar. Aparece la [página de detalles del equipo][3]. +1. Haz clic en el engranaje {{< ui >}}Settings{{< /ui >}} en la parte superior de la pantalla. Aparece una ventana emergente. +1. Selecciona el elemento que deseas modificar. +1. Realiza tus cambios, luego haz clic en {{< ui >}}Save{{< /ui >}}. -### Elige la fuente de suministro +### Elige la fuente de aprovisionamiento {#choose-provisioning-source} -Elige entre tres opciones para determinar cómo los administradores y los jefes de equipo pueden actualizar los miembros de un equipo: +Elige entre tres opciones para determinar cómo los administradores y gerentes de equipo pueden actualizar la membresía del equipo: -Interfaz de usuario y API -: Actualiza los miembros de un equipo únicamente mediante acciones de interfaz de usuario y llamadas a la API. +UI y API +: Actualice la membresía solo a través de acciones de UI y llamadas a la API SAML -: Utiliza un modelo *SAML estricto* para que los datos del proveedor de identidad determinen los miembros del equipo. +: Utilice un modelo *SAML estricto* para que los datos del proveedor de identidad determinen la membresía del equipo. Todas las fuentes -: Utiliza SAML como punto de partida y permite anulaciones a través de la interfaz de usuario y la API. +: Utiliza SAML como punto de partida y permite sobrescrituras a través de la interfaz de usuario y la API -1. En la [página del directorio de equipos][1], haz clic en **Parámetros de equipo**. -1. Selecciona una de las opciones en **Fuentes de suministro de los equipos**. +1. En la [página del directorio de equipos][1], haz clic en {{< ui >}}Teams Settings{{< /ui >}}. +1. Selecciona una de las opciones bajo {{< ui >}}Team Provisioning Sources{{< /ui >}}. -Si tienes equipos con miembros existentes, al elegir la opción de SAML strict (SALM estricto) se anulan los parámetros y se elimina a los miembros de esos equipos. Si eliges la opción All Sources (Todos los orígenes), se conservarán los miembros existentes. Para gestionar los equipos y sus miembros mediante atributos SAML, consulta [Asignar atributos SAML a equipos][4]. +Si tienes equipos con miembros existentes, elegir la opción estricta de SAML sobrescribe tus configuraciones y elimina a los miembros de esos equipos. Elegir la opción Todas las fuentes preserva las membresías existentes. Para gestionar equipos y la membresía de equipos utilizando atributos SAML, consulta [Mapear atributos SAML a Equipos][4]. -## Identificador de equipos +## Identificador de equipo {#team-handle} -Un identificador de equipos sirve para vincular los equipos a los recursos de Datadog. Estos identificadores aparecen en las barras y facetas de búsqueda con el formato `team:` o `teams:`. +Un identificador de equipo vincula equipos a recursos de Datadog. Los identificadores de equipo aparecen en las barras de búsqueda y facetas en el formato `team:` o `teams:`. -Para buscar un identificador de equipos: -1. Haz clic en el nombre del equipo en la página del directorio de equipos. Aparecerá la página de detalles del equipo. -1. El identificador del equipo aparece a la derecha del nombre, en la parte superior de la página. +Para encontrar un identificador de equipo: +1. Haz clic en el nombre del equipo en la página del directorio de equipos. Aparece la página de detalles del equipo. +1. El identificador de equipo aparece a la derecha del nombre, en la parte superior de la página. -Para asociar un recurso con un equipo definido, el equipo debe tener en Datadog un identificador coincidente. Al hacer clic en un recurso asociado a un equipo definido, aparecerá una ventanita con el identificador del equipo y otros datos adicionales. Los equipos definidos tienen funcionalidades adicionales, como el filtro que te mostramos más abajo. +Para asociar un recurso con un equipo definido, debe existir un equipo en Datadog con un identificador de equipo coincidente. Cuando haces clic en un recurso asociado con un equipo definido, aparece una ventana pequeña con el identificador de equipo y información adicional. Los equipos definidos proporcionan funcionalidad adicional, como el filtro de equipo a continuación. -Los identificadores de equipos que no están asociados con un equipo definido en Datadog se comportan de forma similar a las etiquetas (tags). Para aprovechar todas las ventajas de Teams, puedes convertir los identificadores que no están definidos en definidos. +Los identificadores de equipo que no están asociados con un equipo definido en Datadog se comportan de manera similar a las etiquetas. Convierte cualquier identificador de equipo indefinido en equipos definidos para aprovechar las características de Teams. -### Asociar recursos con identificadores de equipos +### Asocia recursos con identificadores de equipo {#associate-resources-with-team-handles} -Datadog permite asociar los siguientes recursos con identificadores de equipos: +Datadog admite asociar los siguientes recursos con los identificadores de equipo: - [Dashboards][5] -- [Incidencias][6] -- [Monitores][7] -- [Catálogo de recursos][8] +- [Incidentes][6] +- [Seguimientos][7] +- [Resource Catalog][8] - [Software Catalog][9] -- [Objetivos de nivel de servicio (SLOs)][10] -- Monitoreos de Sintético, variables globales, ubicaciones privadas +- [SLO][10] +- Pruebas Synthetic, Variables Globales, Ubicaciones Privadas -### Enviar notificaciones a un canal de comunicación específico +### Enviar notificaciones a un canal de comunicación específico {#send-notifications-to-a-specific-communication-channel} -Añade un canal de notificación a tu equipo para redirigir las alertas a canales de comunicación como Slack o Microsoft Teams. Las alertas de monitorización dirigidas a `@team-` se redirigen al canal seleccionado. +Agrega un canal de notificación a tu equipo para dirigir alertas a canales de comunicación como Slack o Microsoft Teams. Las alertas de seguimiento dirigidas a `@team-` se redirigen al canal seleccionado. -1. En la [página del directorio de equipos][1], haz clic en el equipo que quieres modificar. -1. Haz clic en el botón **Parámetros**, situado en la parte superior de la pantalla. Aparecerá una ventana emergente. -1. Selecciona **Notificaciones**. -1. Añade un canal y haz clic en **Guardar**. +1. En la [página del directorio de equipos][1], haz clic en el equipo que deseas modificar. +1. Haz clic en el {{< ui >}}Settings{{< /ui >}} engranaje en la parte superior de la pantalla. Aparece una ventana emergente. +1. Selecciona {{< ui >}}Notifications{{< /ui >}}. +1. Agrega un canal, luego haz clic en {{< ui >}}Save{{< /ui >}}. -## Filtro de equipos +## Filtro de equipo {#team-filter} -El filtro de equipos adapta tu experiencia en Datadog al mostrarte contenido asociado con tus equipos. La lista **My Teams** (Mis equipos) incluye los equipos de los que eres miembro y los que seleccionaste como favoritos. +El filtro de equipo adapta tu experiencia en Datadog al mostrarte contenido asociado con tus equipos. La lista {{< ui >}}My Teams{{< /ui >}} incluye equipos de los que eres miembro y equipos que seleccionaste como favoritos. -{{< img src="/account_management/teams/team-filter.png" alt="Página de lista de monitores con un recuadro rojo alrededor del filtro de equipos. Dos de las tres opciones de Mis equipos seleccionadas.">}} +{{< img src="/account_management/teams/team-filter.png" alt="Página de lista de seguimientos con un cuadro rojo alrededor del filtro de equipo. Dos de tres Mis Equipos seleccionados.">}} -Cuando habilitas el filtro de equipos, solo ves los recursos asociados con tus equipos o con los servicios que son propiedad de tus equipos. El estado del filtro de equipos es global y persistente, por lo que Datadog aplica el contexto de tu equipo a medida que navegas por diferentes productos. +Cuando habilitas el filtro de equipo, solo ves los recursos asociados con tus equipos o con los servicios que pertenecen a tus equipos. El estado del filtro de equipo es global y persistente, por lo que Datadog aplica tu contexto de equipo mientras navegas por diferentes productos. -El filtro de equipos funciona al añadir términos de búsqueda basados ​​en el equipo a la consulta de búsqueda. Cuando habilitas el filtro de equipos, puedes ver los términos de búsqueda basados ​​en el equipo que se añaden en la barra de búsqueda. +El filtro de equipo funciona añadiendo términos de búsqueda basados en el equipo a la consulta de búsqueda. Cuando habilitas el filtro de equipo, puedes ver los términos de búsqueda basados en el equipo que se añaden en la barra de búsqueda. -### Equipos favoritos +### Equipos favoritos {#favorite-teams} -Es posible que te interesen los recursos de un equipo en particular sin ser miembro de este. Si añades un equipo a tus equipos favoritos, podrás obtener vistas filtradas de los recursos de ese equipo sin tener que unirte. +Puedes estar interesado en los recursos de un equipo en particular sin ser miembro de ese equipo. Agregar un equipo a tus equipos favoritos te permite obtener vistas filtradas de los recursos de ese equipo sin unirte al equipo. -Tus equipos favoritos aparecen junto a los equipos a los que perteneces en la parte superior de la página del directorio de equipos y en el filtro de equipos. +Tus equipos favoritos aparecen junto a los equipos a los que perteneces en la parte superior de la página del directorio de equipos y en el filtro de equipo. -#### Añadir o eliminar equipos favoritos +#### Agregar o quitar equipos favoritos {#add-or-remove-favorite-teams} -Puedes añadir o eliminar un equipo de tus favoritos desde la página del directorio de equipos o desde el filtro de equipos. +Puedes agregar o quitar un equipo de tus favoritos desde la página del directorio de equipos o desde el filtro de equipo. Desde la [página del directorio de equipos][1]: -1. Haz clic en el equipo que quieres añadir como favorito. Aparecerá la [página de detalles del equipo][3]. -1. Haz clic en **Add Favorite** (Añadir favorito) o **Remove Favorite** (Eliminar favorito) en la parte superior derecha. - -De manera alternativa, también puedes hacerlo desde la página del directorio de equipos: -1. Pasa el ratón sobre el equipo que quieres añadir o eliminar. Aparecerán iconos en línea a la derecha del nombre del equipo. -1. Haz clic en el icono de estrella (**Add to Favorites** [Añadir a favoritos] o **Remove from Favorites** [Eliminar de favoritos]). - -Desde el filtro de equipos: -1. Si el filtro está contraído, haz clic en **My Teams** (Mis equipos) para expandirlo. -1. Haz clic en **Add Favorites** (Añadir favoritos). Aparecerá un cuadro de búsqueda y una lista de equipos. -1. Para limitar la lista de equipos, comienza a escribir el nombre de un equipo en el cuadro de búsqueda. -1. Haz clic en la estrella junto al equipo que quieras para añadirlo o eliminarlo de tus favoritos. - -### Productos compatibles - -En la siguiente tabla se describen los productos en los que puedes usar el filtro de equipos: - -| Página de listas del producto | Base de filtro | -|-------------------------|----------------------------------------------------------------------------------| -| [Dashboards][11] | Identificador de equipos | -| [Catálogo de recursos][8] | Identificador de equipos | -| [Software Catalog][12] | Identificador de equipos | -| [Incidentes][13] | Identificador de equipos | -| [Monitores][14] | Identificador de equipos | -| [Seguimiento de errores de APM][15] | Servicio propiedad de los equipos (determinado por la propiedad dentro del [Software Catalog][12]) | -| [Seguimiento de errores de logs][16] | Servicio propiedad de los equipos (determinado por la propiedad dentro del [Software Catalog][12]) | -| [Objetivos de nivel de servicio (SLOs)][17] | Identificador de equipos | -| [Data Streams Monitoring][18] | Identificador de equipos | -| [Tests Synthetic][19] | Identificador de equipos | -| [Notebooks][20] | Identificador de equipos | - - -## Permisos - -Cualquier usuario con el permiso de gestión de equipos puede crear equipos, cambiarles el nombre, borrarlos y modificar sus identificadores. Los usuarios con `user_access_manage` pueden añadir, eliminar y promocionar a miembros y jefes de equipos. - -## Gestionar equipos - -Para personalizar tu equipo, consulta [Gestión de equipos][3]. +1. Haz clic en el equipo que deseas agregar como favorito. Aparece la [página de detalles del equipo][3]. +1. Haz clic en {{< ui >}}Add Favorite{{< /ui >}} o {{< ui >}}Remove Favorite{{< /ui >}} en la esquina superior derecha. + +Alternativamente, también desde la página del directorio de equipos: +1. Pasa el cursor sobre el equipo que deseas agregar o quitar. Los íconos en línea aparecen a la derecha del nombre del equipo. +1. Haz clic en el ícono de estrella ({{< ui >}}Add to Favorites{{< /ui >}} o {{< ui >}}Remove from Favorites{{< /ui >}}). + +Desde el filtro de equipo: +1. Si el filtro está colapsado, haz clic en {{< ui >}}My Teams{{< /ui >}} para expandirlo. +1. Haz clic en {{< ui >}}Add Favorites{{< /ui >}}. Aparece un cuadro de búsqueda y una lista de equipos. +1. Para reducir la lista de equipos, comienza a escribir el nombre de un equipo en el cuadro de búsqueda. +1. Haz clic en la estrella junto al equipo deseado para agregarlo o quitarlo de tus favoritos. + +### Productos soportados {#supported-products} + +La siguiente tabla describe los productos en los que puedes usar el filtro de equipos: + +| Página de lista de productos | Base de filtro | +|--------------------------------|------------------------------------------------------------------------------------| +| [APM Error Tracking][15] | Service owned by teams (determined by ownership inside the [Software Catalog][12]) | +| [Apps][21] | Identificador de equipo | +| [Case Management projects][22] | Identificador de equipo | +| [Connections][23] | Identificador de equipo | +| [Connection Groups][24] | Identificador de equipo | +| [Cross Org Connections][25] | Identificador de equipo | +| [Datastores][26] | Identificador de equipo | +| [Data Streams Monitoring][18] | Identificador de equipo | +| [Dashboards][11] | Identificador de equipo | +| [Incidentes][13] | Identificador de equipo | +| [Integrations][27] | Identificador de equipo | +| [Logs Error Tracking][16] | Servicio propiedad de equipos (determinado por la propiedad dentro del [Software Catalog][12]) | +| [Logs Pipelines][28] | Identificador de equipo | +| [Monitors][14] | Identificador de equipo | +| [Notebooks][20] | Identificador de equipo | +| [Observability Pipelines][29] | Identificador de equipo | +| [On-Call][30] | Servicio propiedad de equipos (determinado por la propiedad dentro del [Software Catalog][12]) | +| [Powerpacks][32] | Identificador de equipo | +| [Private Action Runner][31] | Identificador de equipo | +| [Tablas de referencia][33] | Identificador de equipo | +| [Resource Catalog][8] | Identificador de equipo | +| [RUM apps][34] | Identificador de equipo | +| [Security rules][35] | Identificador de equipo | +| [Security suppressions][36] | Identificador de equipo | +| [Service Level Objectives][17] | Identificador de equipo | +| [Sheets][37] | Identificador de equipo | +| [Software Catalog][12] | Identificador de equipo | +| [Synthetic Tests][19] | Identificador de equipo | +| [Flujos de trabajo][38] | Identificador de equipo | + + +## Permisos {#permissions} + +Cualquier usuario en un rol con el permiso Teams Manage puede crear equipos, renombrar equipos, eliminar equipos y cambiar los identificadores de equipo. Los usuarios con `user_access_manage` pueden agregar, eliminar y promover miembros y gerentes de equipo. + +## Manage teams {#manage-teams} + +Para personalizar tu equipo, consulta [Team Management][3]. [1]: https://app.datadoghq.com/organization-settings/teams @@ -158,11 +179,11 @@ Para personalizar tu equipo, consulta [Gestión de equipos][3]. [3]: /es/account_management/teams/manage/ [4]: /es/account_management/saml/mapping/#map-saml-attributes-to-teams [5]: /es/dashboards/#dashboard-details -[6]: /es/service_management/incident_management/ +[6]: /es/incident_response/incident_management/ [7]: /es/monitors/configuration/?tab=thresholdalert#add-metadata -[8]: /es/infrastructure/resource_catalog/ +[8]: https://app.datadoghq.com/infrastructure/catalog [9]: /es/tracing/software_catalog/adding_metadata/#add-metadata-from-the-datadog-ui -[10]: /es/service_management/service_level_objectives/#slo-tags +[10]: /es/service_level_objectives/#slo-tags [11]: https://app.datadoghq.com/dashboard/lists [12]: https://app.datadoghq.com/services [13]: https://app.datadoghq.com/incidents @@ -172,4 +193,22 @@ Para personalizar tu equipo, consulta [Gestión de equipos][3]. [17]: https://app.datadoghq.com/slo/manage [18]: https://app.datadoghq.com/data-streams [19]: https://app.datadoghq.com/synthetics -[20]: https://app.datadoghq.com/notebook/list/ \ No newline at end of file +[20]: https://app.datadoghq.com/notebook/list/ +[21]: https://app.datadoghq.com/app-builder/apps/list +[22]: https://app.datadoghq.com/cases +[23]: https://app.datadoghq.com/actions/connections +[24]: https://app.datadoghq.com/actions/connections?sort=-updated_at&tab=groups +[25]: https://app.datadoghq.com/organization-settings/cross-org-visibility +[26]: https://app.datadoghq.com/actions/datastores +[27]: https://app.datadoghq.com/integrations +[28]: https://app.datadoghq.com/logs/pipelines +[29]: https://app.datadoghq.com/observability-pipelines +[30]: https://app.datadoghq.com/on-call/summary +[31]: https://app.datadoghq.com/actions/private-action-runners +[32]: /es/dashboards/widgets/powerpack/#powerpack-permissions +[33]: https://app.datadoghq.com/reference-tables +[34]: https://app.datadoghq.com/rum/list +[35]: https://app.datadoghq.com/security/configuration/notification-rules +[36]: https://app.datadoghq.com/security/configuration/suppressions +[37]: https://app.datadoghq.com/sheets +[38]: https://app.datadoghq.com/workflow \ No newline at end of file diff --git a/content/es/agent/configuration/secrets-management.md b/content/es/agent/configuration/secrets-management.md index 1047d1aa691..a8d957a90ec 100644 --- a/content/es/agent/configuration/secrets-management.md +++ b/content/es/agent/configuration/secrets-management.md @@ -10,11 +10,11 @@ aliases: - /es/agent/guide/secrets-management further_reading: - link: /agent/autodiscovery/ - tag: Documentation + tag: Documentación text: Autodiscovery -title: Gestión de Secretos +title: Gestión de secretos --- -## Resumen +## Resumen {#overview} El Agente de Datadog te ayuda a gestionar tus secretos de manera segura integrándose con las siguientes soluciones de gestión de secretos: - [AWS Secrets Manager](#id-for-secrets) @@ -24,7 +24,7 @@ El Agente de Datadog te ayuda a gestionar tus secretos de manera segura integrá - [HashiCorp Vault](#id-for-hashicorp) - [Kubernetes Secrets](#id-for-kubernetes) - [Docker Secrets](#id-for-docker) -- [Archivo de Texto](#id-for-json-yaml-text) +- [Texto de archivo](#id-for-json-yaml-text) - [Archivo JSON](#id-for-json-yaml-text) - [Archivo YAML](#id-for-json-yaml-text) @@ -32,15 +32,15 @@ En lugar de codificar valores sensibles como claves de API o contraseñas en tex **Nota**: No puedes usar la sintaxis `ENC[]` en configuraciones `secret_*` como `secret_backend_command`. -## Opciones para recuperar secretos +## Opciones para recuperar secretos {#options-for-retrieving-secrets} -### Opción 1: Usar soporte nativo del Agente para obtener secretos +### Opción 1: Usar soporte nativo del Agente para recuperar secretos {#option-1-using-native-agent-support-for-fetching-secrets} **Nota**: A partir de la versión `7.76` del Agente y en adelante, la gestión nativa de secretos está disponible para Agentes habilitados para FIPS. -A partir de la versión `7.70` del Agente, el Agente de Datadog admite de forma nativa varias soluciones de gestión de secretos. Se han introducido dos nuevas configuraciones en `datadog.yaml`: `secret_backend_type` y `secret_backend_config`. +A partir de la versión `7.70` del Agente, el Agente de Datadog soporta nativamente varias soluciones de gestión de secretos. Se han introducido dos nuevas configuraciones en `datadog.yaml`: `secret_backend_type` y `secret_backend_config`. -`secret_backend_type` se utiliza para especificar qué solución de gestión de secretos utilizar, y `secret_backend_config` contiene configuración adicional relevante para esa solución. +`secret_backend_type` se utiliza para especificar qué solución de gestión de secretos usar, y `secret_backend_config` contiene configuración adicional relevante para esa solución. ```yaml # datadog.yaml @@ -50,26 +50,26 @@ secret_backend_config: : ``` -**Nota**: Si está ejecutando Datadog en un entorno contenedorizado, el [Agente de Clúster](/containers/cluster_agent/) requiere el Agente 7.77 o posterior para admitir la obtención nativa de secretos. Para versiones anteriores, usa [Opción 2](#option-2-using-the-built-in-script-for-kubernetes-and-docker) o [Opción 3](#option-3-creating-a-custom-executable) en su lugar. +**Nota**: Si estás ejecutando Datadog en un entorno contenedorizado, el [Agente de clúster](/containers/cluster_agent/) requiere el Agente 7.77 o posterior para soportar la obtención nativa de secretos. Para versiones anteriores, utiliza [Opción 2](#option-2-using-the-built-in-script-for-kubernetes-and-docker) o [Opción 3](#option-3-creating-a-custom-executable) en su lugar. -Las instrucciones de configuración más específicas dependen del tipo de backend utilizado. Consulta la sección correspondiente a continuación para más información: +Instrucciones de configuración más específicas dependen del tipo de backend utilizado. Consulta la sección apropiada a continuación para obtener más información: {{% collapse-content title="Secretos de AWS" level="h4" expanded=false id="id-for-secrets" %}} Los siguientes servicios de AWS son compatibles: -|valor de secret_backend_type | Servicio de AWS | +|valor de tipo_secret_backend | Servicio de AWS | |---------------------------------------------|-----------------------------------------| |`aws.secrets` |[AWS Secrets Manager][1000] | -##### Configurar un perfil de instancia +##### Configurar un perfil de instancia {#set-up-an-instance-profile} -Datadog recomienda usar el [método de perfil de instancia][1006] para recuperar secretos, ya que AWS maneja todas las variables de entorno y perfiles de sesión por ti. Más instrucciones sobre cómo hacer esto se pueden encontrar en la [documentación oficial de AWS Secrets Manager][1000]. +Datadog recomienda usar el [método de perfil de instancia][1006] para recuperar secretos, ya que AWS maneja todas las variables de entorno y los perfiles de sesión por ti. Puedes encontrar más instrucciones sobre cómo hacer esto en la [documentación oficial de AWS Secrets Manager][1000]. -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example} {{< tabs >}} -{{% tab "Archivo YAML del Agente" %}} +{{% tab "Archivo YAML del agente" %}} Configura el Agente de Datadog para usar AWS Secrets para resolver secretos utilizando la siguiente configuración: @@ -88,17 +88,17 @@ DD_SECRET_BACKEND_TYPE="aws.secrets" DD_SECRET_BACKEND_CONFIG='{"aws_session":{"aws_region":""}}' ``` -Después de configurar el Agente para usar AWS Secrets, puedes hacer referencia a cualquier secreto en tus configuraciones con `ENC[secretId;secretKey]`. +Después de configurar el Agente para usar AWS Secrets, puedes referenciar cualquier secreto en tus configuraciones con `ENC[secretId;secretKey]`. La notación ENC se compone de: * `secretId`: ya sea el "nombre amigable" del secreto (por ejemplo, `/DatadogAgent/Production`) o el ARN (por ejemplo, `arn:aws:secretsmanager:us-east-1:123456789012:secret:/DatadogAgent/Production-FOga1K`). - - **Nota**: Se requiere el formato completo de ARN al acceder a secretos de una cuenta diferente donde se define la credencial de AWS o la credencial `sts:AssumeRole`. + - **Nota**: Se requiere el formato completo del ARN al acceder a secretos de una cuenta diferente donde se define la credencial de AWS o la credencial `sts:AssumeRole`. * `secretKey`: la clave JSON del secreto de AWS que deseas usar. El Administrador de Secretos de AWS puede almacenar múltiples pares clave-valor dentro de un solo secreto. Una configuración de backend que utiliza el Administrador de Secretos tiene acceso a todas las claves definidas en un secreto. -Por ejemplo, suponiendo que el ID del secreto `My-Secrets` contiene los siguientes 3 valores: +Por ejemplo, asumiendo que el ID del secreto `My-Secrets` contiene los siguientes 3 valores: ```json { @@ -108,7 +108,7 @@ Por ejemplo, suponiendo que el ID del secreto `My-Secrets` contiene los siguient } ``` -El siguiente es un ejemplo completo del archivo de configuración `datadog.yaml` utilizando AWS Secrets para obtener la clave de API de `My-Secrets`: +El siguiente es un ejemplo completo del archivo de configuración `datadog.yaml` utilizando AWS Secrets para recuperar su clave de API de `My-Secrets`: ```yaml api_key: ENC[My-Secrets;prodApiKey] @@ -125,7 +125,7 @@ secret_backend_config: Configura el Agente de Datadog para usar AWS Secrets para resolver secretos en Helm utilizando la siguiente configuración: -##### Verificación de integración +##### Verificación de integración {#integration-check} ```sh datadog: @@ -154,7 +154,7 @@ agents:
-##### Verificación de clúster: sin ejecutores de verificación de clúster habilitados +##### Verificación de clúster: sin ejecutores de verificación de clúster habilitados {#cluster-check-without-cluster-check-runners-enabled} ```sh datadog: @@ -178,7 +178,7 @@ clusterAgent: password: "ENC[secretId;secretKey]" ``` -##### Verificación de clúster: con ejecutores de verificación de clúster habilitados +##### Verificación de clúster: con ejecutores de verificación de clúster habilitados {#cluster-check-with-cluster-check-runners-enabled} ```sh datadog: @@ -209,13 +209,15 @@ clusterChecksRunner: ``` +**Alternativamente**, con la versión del gráfico de Helm v3.171.0+ y la versión del Agente v7.70+, puedes usar campos nativos `secretBackend.type` y `secretBackend.config` en lugar de variables de entorno. Por ejemplo: `datadog.secretBackend.type: "aws.secrets"` y `datadog.secretBackend.config.aws_session.aws_region: ""`. + {{% /tab %}} {{% tab "Operador" %}} Configura el Agente de Datadog para usar AWS Secrets para resolver secretos con el Operador de Datadog utilizando la siguiente configuración: -##### Verificación de integración +##### Verificación de integración {#integration-check-1} ```sh @@ -252,7 +254,7 @@ spec:
-##### Verificación de clúster: sin ejecutores de verificación de clúster habilitados +##### Verificación de clúster: sin ejecutores de verificación de clúster habilitados {#cluster-check-without-cluster-check-runners-enabled-1} ```sh apiVersion: datadoghq.com/v2alpha1 @@ -284,7 +286,7 @@ spec:
-##### Verificación de clúster: con ejecutores de verificación de clúster habilitados +##### Verificación de clúster: con ejecutores de verificación de clúster habilitados {#cluster-check-with-cluster-check-runners-enabled-1} ```sh apiVersion: datadoghq.com/v2alpha1 @@ -320,6 +322,8 @@ spec: ``` +**Alternativamente**, con el Operador de Datadog v1.25.0+ y el Agente v7.70+, puedes usar campos nativos `secretBackend.type` y `secretBackend.config` en lugar de variables de entorno. Por ejemplo: `spec.global.secretBackend.type: "aws.secrets"` y `spec.global.secretBackend.config` con `aws_session.aws_region: ""`. + {{% /tab %}} {{< /tabs >}} @@ -329,15 +333,15 @@ spec: {{% collapse-content title="AWS SSM" level="h4" expanded=false id="id-for-ssm" %}} Los siguientes servicios de AWS son compatibles: -|valor de secret_backend_type | Servicio de AWS | +|valor de tipo_secret_backend | Servicio de AWS | |---------------------------------------------|-----------------------------------------| |`aws.ssm` |[AWS Systems Manager Parameter Store][1001] | -##### Configurar un perfil de instancia +##### Configurar un perfil de instancia {#set-up-an-instance-profile-1} -Datadog recomienda usar el [método de perfil de instancia][1006] para recuperar secretos, ya que AWS maneja todas las variables de entorno y perfiles de sesión por ti. Más instrucciones sobre cómo hacer esto se pueden encontrar en la documentación oficial de [AWS Secrets Manager][1001]. +Datadog recomienda usar el [método de perfil de instancia][1006] para recuperar secretos, ya que AWS maneja todas las variables de entorno y los perfiles de sesión por ti. Puedes encontrar más instrucciones sobre cómo hacer esto en la [documentación oficial de AWS Secrets Manager][1001]. -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-1} El AWS System Manager Parameter Store soporta un modelo jerárquico. Por ejemplo, asumiendo las siguientes rutas del AWS System Manager Parameter Store: @@ -373,15 +377,15 @@ Los siguientes servicios de Azure son compatibles: | ----------------------------------------|------------------------| | `azure.keyvault` | [Azure Keyvault][2000] | -##### Autenticación de Azure +##### Autenticación de Azure {#azure-authentication} -Datadog recomienda usar Identidades Administradas para autenticarte con Azure. Esto te permite asociar recursos en la nube con cuentas de AMI y elimina la necesidad de poner información sensible en tu archivo de configuración `datadog.yaml`. +Datadog recomienda usar identidades administradas para autenticar con Azure. Esto te permite asociar recursos en la nube con cuentas de AMI y elimina la necesidad de poner información sensible en tu archivo de configuración `datadog.yaml`. -##### Identidad administrada +##### Identidad administrada {#managed-identity} Para acceder a tu Key Vault, crea una identidad administrada y asígnala a tu máquina virtual. Luego, configura la asignación de rol apropiada en el Key Vault para permitir que esa identidad acceda a sus secretos. -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-2} La configuración del backend para los secretos de Azure Key Vault está estructurada como YAML siguiendo este esquema: @@ -392,7 +396,7 @@ secret_backend_config: keyvaulturl: {keyVaultURL} ``` -El secreto del backend se referencia en tu archivo de configuración del Agente de Datadog con `ENC[ ]`. El siguiente es un ejemplo donde se necesita recuperar un secreto de texto plano: +El secreto del backend se referencia en el archivo de configuración de tu Agente de Datadog con `ENC[ ]`. El siguiente es un ejemplo donde se necesita recuperar un secreto en texto plano: ```yaml # datadog.yaml @@ -412,19 +416,19 @@ Los siguientes servicios de GCP son compatibles: | ------------------------------------------------------- | ------------------------------ | | `gcp.secretmanager` | [GCP Secret Manager][5000] | -##### Autenticación y política de acceso de GCP +##### Política de autenticación y acceso de GCP {#gcp-authentication-and-access-policy} La implementación de GCP Secret Manager utiliza [Credenciales Predeterminadas de Aplicación (ADC)][5001] para la autenticación con Google. Para interactuar con GCP Secret Manager, la cuenta de servicio utilizada por el Agente de Datadog (como la cuenta de servicio de la VM, una identidad de carga de trabajo o credenciales activadas localmente) requiere el permiso `secretmanager.versions.access`. -Esto se puede otorgar con el rol predefinido **Acceso a Secretos del Administrador de Secretos** (`roles/secretmanager.secretAccessor`) o un rol personalizado con [acceso][5002] equivalente. +Esto se puede otorgar con el rol predefinido {{< ui >}}Secret Manager Secret Accessor{{< /ui >}} (`roles/secretmanager.secretAccessor`) o un rol personalizado con [acceso][5002] equivalente. -En entornos de GCE o GKE, ADC se configura automáticamente a través de la cuenta de servicio adjunta a la instancia o pod. La cuenta de servicio adjunta necesita tener los roles adecuados para acceder a GCP Secret Manager. Además, el entorno de GCE o GKE requiere el `cloud-platform` [alcance de acceso OAuth][5003]. +En entornos de GCE o GKE, ADC se configura automáticamente a través de la cuenta de servicio adjunta a la instancia o pod. La cuenta de servicio adjunta necesita tener los roles adecuados para acceder a GCP Secret Manager. Además, el entorno de GCE o GKE requiere el `cloud-platform` [contexto de acceso OAuth][5003]. -##### Ejemplo de configuración de GCP +##### Ejemplo de configuración de GCP {#gcp-configuration-example} -Configura el Agente de Datadog para usar GCP Secret Manager para resolver secretos con la siguiente configuración: +Configura el Datadog Agent para usar GCP Secret Manager para resolver secretos con la siguiente configuración: ```yaml # datadog.yaml @@ -434,7 +438,7 @@ secret_backend_config: project_id: ``` -Después de configurar el Agente para usar GCP Secret Manager, referencia los secretos en tus configuraciones con `ENC[secret-name]` o `ENC[secret-name;key;version;]`. +Después de configurar el Datadog Agent para usar GCP Secret Manager, referencia los secretos en tus configuraciones con `ENC[secret-name]` o `ENC[secret-name;key;version;]`. La notación ENC se compone de: @@ -446,7 +450,7 @@ La notación ENC se compone de: - `secret-key;;latest` - Versión `latest` explícita - `secret-key;;1` - Número de versión específico -Por ejemplo, suponiendo secretos de GCP llamados `datadog-api-key` con dos versiones y `datadog-app-key`: +Por ejemplo, asumiendo secretos de GCP llamados `datadog-api-key` con dos versiones y `datadog-app-key`: ```yaml # datadog.yaml @@ -459,7 +463,7 @@ secret_backend_config: project_id: ``` -Para secretos en formato JSON, suponiendo que un secreto llamado `datadog-keys` contiene: +Para secretos en formato JSON, asumiendo que un secreto llamado `datadog-keys` contiene: ```json { @@ -468,7 +472,7 @@ Para secretos en formato JSON, suponiendo que un secreto llamado `datadog-keys` } ``` -Referencia a claves específicas de esta manera: +Referencia claves específicas así: ```yaml # datadog.yaml @@ -481,14 +485,14 @@ secret_backend_config: project_id: ``` -##### Versionado de secretos +##### Versionado de secretos {#secret-versioning} -GCP Secret Manager admite versiones de secretos. La implementación del Agent también admite el versionado de secretos utilizando el delimitador `;`. Si no se especifica una versión, se utiliza la versión `latest`. +GCP Secret Manager soporta versiones de secretos. La implementación del Datadog Agent también soporta el versionado de secretos usando el delimitador `;`. Si no se especifica una versión, se utiliza la versión `latest`. -##### Soporte para secretos en JSON +##### Soporte de secretos JSON {#json-secret-support} -El Datadog Agent admite la extracción de claves específicas de secretos en formato JSON utilizando el delimitador `;`: +El Datadog Agent soporta la extracción de claves específicas de secretos en formato JSON usando el delimitador `;`: - `datadog;api_key` - Extrae el campo `api_key` del secreto `datadog` con una versión `latest` implícita - `datadog;api_key;1` - Extrae el campo `api_key` del secreto `datadog` de la versión `1` @@ -500,13 +504,13 @@ El Datadog Agent admite la extracción de claves específicas de secretos en for Los siguientes servicios de HashiCorp son compatibles: -| valor del tipo de backend secreto | Servicio de HashiCorp | +| valor de secret_backend_type | Servicio de HashiCorp | | ------------------------------------------ | -------------------------------------------------- | | `hashicorp.vault` | [HashiCorp Vault (Versiones del Motor de Secretos 1 y 2)][3000] | -##### Cómo configurar HashiCorp Vault +##### Cómo configurar HashiCorp Vault {#how-to-set-up-hashicorp-vault} 1. Ejecuta tu HashiCorp Vault. Consulta la [documentación oficial de HashiCorp Vault][3001] para más información. -2. Escribe una política que otorgue el permiso para extraer secretos de tu bóveda. Crea un `*.hcl` archivo e incluye el siguiente permiso si usas la Versión 1 del Motor de Secretos: +2. Escribe una política que otorgue el permiso para extraer secretos de tu vault. Crea un `*.hcl` archivo e incluye el siguiente permiso si usas la Versión 1 del Motor de Secretos: ``` path "/" { @@ -528,17 +532,17 @@ path "sys/mounts" { capabilities = ["read"] } ``` -3. Ejecuta `vault policy write ` +3. Ejecutar `vault policy write ` -4. Elige el método de autenticación para tu bóveda. Si usas el método de perfil de instancia de AWS, ejecuta `vault auth enable aws`. +4. Elige el método de autenticación para tu vault. Si usas el método de perfil de instancia de AWS, ejecuta `vault auth enable aws`. -##### Instrucciones del perfil de instancia de AWS +##### Instrucciones del perfil de instancia de AWS {#aws-instance-profile-instructions} Datadog recomienda que te autentiques usando el [método de perfil de instancia][3003] si estás ejecutando tu HashiCorp Vault desde una máquina conectada a AWS. -Después de que esto se haya configurado, escribe una [política de bóveda específica de autenticación][3004]. +Después de que esto se haya configurado, escribe una [política de vault específica para la autenticación][3004]. -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-3} En el siguiente ejemplo, asume que el prefijo de la ruta secreta de HashiCorp Vault es `/Datadog/Production` con una clave de parámetro de `apikey`: @@ -546,7 +550,7 @@ En el siguiente ejemplo, asume que el prefijo de la ruta secreta de HashiCorp Va /DatadogAgent/Production/apikey: (SecureString) "" ``` -El siguiente ejemplo obtiene el valor de la clave de API de HashiCorp Vault aprovechando AWS para la autenticación. +El siguiente ejemplo obtiene el valor de la clave de API de HashiCorp Vault utilizando AWS para la autenticación. ```yaml # datadog.yaml @@ -565,22 +569,22 @@ secret_backend_config: {{% collapse-content title="Secretos de Kubernetes" level="h4" expanded=false id="id-for-kubernetes" %}} -**Disponible en la versión 7.75+ del Agente** +**Disponible en la versión de Datadog Agent 7.75+** Los siguientes servicios de Kubernetes son compatibles: -| valor del tipo de backend secreto | Servicio | +| valor de secret_backend_type | Servicio | |---------------------------|---------| | `k8s.secrets` | [Secretos de Kubernetes][7000] | -##### Requisitos previos +##### Requisitos previos {#prerequisites} El backend de secretos de Kubernetes requiere: -- **Credenciales de ServiceAccount**: Por defecto, utiliza tokens de ServiceAccount montados automáticamente (`automountServiceAccountToken: true`, ver [documentación de Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#opt-out-of-api-credential-automounting)). Se pueden configurar rutas personalizadas si es necesario. -- **Permisos de RBAC**: La ServiceAccount del Agent debe tener permisos para leer secretos de los namespaces de destino -- **Acceso a la red**: El pod del Agent debe poder alcanzar el servidor API de Kubernetes +- **credenciales de ServiceAccount**: Por defecto, utiliza tokens de ServiceAccount montados automáticamente (`automountServiceAccountToken: true`, ver [documentación de Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#opt-out-of-api-credential-automounting)). Se pueden configurar rutas personalizadas si es necesario. +- **permisos de RBAC**: La ServiceAccount del Datadog Agent debe tener permisos para leer secretos de los namespaces de destino +- **Acceso a la red**: El pod de Datadog Agent debe poder alcanzar el servidor API de Kubernetes -##### Configuración de RBAC +##### Configuración de RBAC {#rbac-setup} Para cada namespace que contenga secretos, crea un `Role` y `RoleBinding` utilizando el siguiente ejemplo con el nombre de namespace correcto: @@ -612,12 +616,12 @@ subjects: namespace: datadog # Where Agent runs ``` -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-4} {{< tabs >}} -{{% tab "Archivo YAML del Agent" %}} +{{% tab "Archivo YAML de Datadog Agent" %}} -Configura el Datadog Agent para usar Secretos de Kubernetes con la siguiente configuración: +Configura el Agente de Datadog para usar Secretos de Kubernetes con la siguiente configuración: ```yaml # datadog.yaml @@ -654,7 +658,7 @@ app_key: "ENC[secrets-ns/dd-api-key;app_key]" ``` **Soporte multi-namespace:** -Cada referencia de secreto puede especificar un namespace diferente (se debe configurar RBAC para cada uno): +Cada referencia secreta puede especificar un namespace diferente (RBAC debe ser configurado para cada uno): ```yaml api_key: "ENC[secrets-ns/dd-keys;api_key]" @@ -665,7 +669,7 @@ db_password: "ENC[secrets-shared/db-creds;password]" {{% tab "Helm" %}} -Configura el Datadog Agent para usar Secrets de Kubernetes con Helm: +Configura el Agente de Datadog para usar Secretos de Kubernetes con Helm: ```yaml # values.yaml @@ -679,15 +683,15 @@ datadog: value: "ENC[secrets-ns/dd-api-key;api_key]" ``` -**Nota:** Se requiere un marcador de posición `apiKey` para la validación del gráfico de Helm al usar el backend de secretos para resolver la clave de API. La variable de entorno `DD_API_KEY` la anula. Debes crear manualmente RBAC (Rol + RoleBinding) para cada namespace que contenga secretos. Para más información, consulta la sección de [configuración de RBAC](#rbac-setup). +**Nota:** Se requiere un marcador de posición `apiKey` para la validación del gráfico de Helm al usar un backend secreto para resolver la clave API. La variable de entorno `DD_API_KEY` la anula. Debes crear manualmente RBAC (Rol + RoleBinding) para cada namespace que contenga secretos. Para más información, consulta la sección de [configuración de RBAC](#rbac-setup). -
Helm no tiene configuración nativa de secretBackend.type. Usa variables de entorno.
+**Alternativamente**, con la versión 3.171.0+ del gráfico de Helm y la versión 7.70+ del Datadog Agent, puedes usar el campo nativo `datadog.secretBackend.type` en lugar de variables de entorno. {{% /tab %}} {{% tab "Operador" %}} -Configura el Datadog Agent para usar Secrets de Kubernetes con el Datadog Operator: +Configura el Agente de Datadog para usar Secretos de Kubernetes con el Operador de Datadog: ```yaml apiVersion: datadoghq.com/v2alpha1 @@ -708,18 +712,18 @@ spec: value: "ENC[secrets-ns/dd-api-key;api_key]" ``` -**Nota:** Un marcador de posición de clave de API satisface la validación del Datadog Operator al usar el backend de secretos para resolver la clave de API. La variable de entorno `DD_API_KEY` la anula. Debes crear manualmente RBAC (Rol + RoleBinding) para cada namespace que contenga secretos. Para más información, consulta la sección de [configuración de RBAC](#rbac-setup). +**Nota:** Un marcador de posición de clave de API satisface la validación del Operador de Datadog al usar un backend secreto para resolver la clave de API. La variable de entorno `DD_API_KEY` la anula. Debes crear manualmente RBAC (Rol + RoleBinding) para cada namespace que contenga secretos. Para más información, consulta la sección de [configuración de RBAC](#rbac-setup). -
El Operador no tiene configuración nativa de secretBackend.type. Usa variables de entorno en override.nodeAgent.env.
+**Alternativamente**, con la versión 1.25.0+ del Operador de Datadog y la versión 7.70+ del Datadog Agent, puedes usar el campo nativo `spec.global.secretBackend.type` en lugar de variables de entorno. {{% /tab %}} {{< /tabs >}} -##### Configuración de ruta personalizada +##### Configuración de ruta personalizada {#custom-path-configuration} Si tu configuración no sigue las ubicaciones predeterminadas para la autenticación basada en ServiceAccount, puedes especificar `token_path` y `ca_path` en su lugar. {{< tabs >}} -{{% tab "YAML del Agente" %}} +{{% tab "YAML de Datadog Agent" %}} ```yaml secret_backend_type: k8s.secrets @@ -739,6 +743,9 @@ datadog: - name: DD_SECRET_BACKEND_CONFIG value: '{"token_path":"/custom/path/to/token","ca_path":"/custom/path/to/ca.crt"}' ``` + +**Alternativamente**, con la versión 3.171.0+ del gráfico de Helm, puedes usar: `datadog.secretBackend.type: "k8s.secrets"` y `datadog.secretBackend.config` con las claves `token_path` y `ca_path`. + {{% /tab %}} {{% tab "Operador" %}} @@ -752,15 +759,18 @@ override: - name: DD_SECRET_BACKEND_CONFIG value: '{"token_path":"/custom/path/to/token","ca_path":"/custom/path/to/ca.crt"}' ``` + +**Alternativamente**, con la versión 1.25.0+ del Operador de Datadog, puedes usar: `spec.global.secretBackend.type: "k8s.secrets"` y `spec.global.secretBackend.config` con las claves `token_path` y `ca_path`. + {{% /tab %}} {{< /tabs >}} -##### Configuración personalizada del servidor API +##### Configuración personalizada del servidor API {#custom-api-server-configuration} -Si tu configuración no expone las variables de entorno predeterminadas `KUBERNETES_SERVICE_HOST` y `KUBERNETES_SERVICE_PORT`, puedes proporcionar una `api_server` URL para interactuar con la API REST de Kubernetes. +Si tu configuración no expone las variables de entorno predeterminadas `KUBERNETES_SERVICE_HOST` y `KUBERNETES_SERVICE_PORT`, puedes proporcionar una URL `api_server` para interactuar con la API REST de Kubernetes. {{< tabs >}} -{{% tab "YAML del Agent" %}} +{{% tab "YAML de Datadog Agent" %}} ```yaml secret_backend_type: k8s.secrets @@ -779,6 +789,9 @@ datadog: - name: DD_SECRET_BACKEND_CONFIG value: '{"api_server":"https://{KUBERNETES_SERVICE_HOST}:{KUBERNETES_SERVICE_PORT}"}' ``` + +**Alternativamente**, con la versión 3.171.0+ del gráfico de Helm, puedes usar: `datadog.secretBackend.type: "k8s.secrets"` y `datadog.secretBackend.config` con la clave `api_server`. + {{% /tab %}} {{% tab "Operador" %}} @@ -792,6 +805,9 @@ override: - name: DD_SECRET_BACKEND_CONFIG value: '{"api_server":"https://{KUBERNETES_SERVICE_HOST}:{KUBERNETES_SERVICE_PORT}"}' ``` + +**Alternativamente**, con la versión 1.25.0+ del Operador de Datadog, puedes usar: `spec.global.secretBackend.type: "k8s.secrets"` y `spec.global.secretBackend.config` con la clave `api_server`. + {{% /tab %}} {{< /tabs >}} @@ -799,23 +815,23 @@ override: {{% collapse-content title="Secretos de Docker" level="h4" expanded=false id="id-for-docker" %}} -**Disponible en la versión 7.75+ del Agente** +**Disponible en la versión de Datadog Agent 7.75+** Los siguientes servicios de Docker son compatibles: -| valor del tipo de backend secreto | Servicio | +| valor de secret_backend_type | Servicio | |---------------------------|---------| | `docker.secrets` | [Secretos de Docker][6001] | -##### Requisitos previos +##### Requisitos previos {#prerequisites-1} El backend de secretos de Docker admite tanto [secretos de Docker Swarm][6002] como [secretos de Docker Compose][6003]. Por defecto, tanto Swarm como Compose montan automáticamente los secretos dentro del contenedor como archivos en `/run/secrets` (Linux) o `C:\ProgramData\Docker\secrets` (Windows). **Nota**: Los secretos de Compose pueden ser basados en archivos (apuntando a archivos locales) o externos (referenciando secretos existentes de Swarm). -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-5} -Configura el Datadog Agent para usar Secretos de Docker con la siguiente configuración: +Configura el Datadog Agent para usar secretos de Docker con la siguiente configuración: ```yaml # datadog.yaml @@ -837,7 +853,7 @@ secret_backend_config: secrets_path: /custom/secrets/path ``` -##### Ejemplo de Docker Swarm +##### Ejemplo de Docker Swarm {#docker-swarm-example} [Crear][6002] y usar un secreto de Docker Swarm: @@ -853,12 +869,12 @@ docker service create \ --env DD_SECRET_BACKEND_TYPE="docker.secrets" \ --env DD_SITE="datadoghq.com" \ --env DD_HOSTNAME="dd-agent" \ - datadog/agent:latest + registry.datadoghq.com/agent:latest ``` -El secreto `dd_api_key` se monta automáticamente en `/run/secrets/dd_api_key`, y el Agent lo lee usando el backend `docker.secrets`. +El secreto `dd_api_key` se monta automáticamente en `/run/secrets/dd_api_key`, y el Agente lo lee usando el backend `docker.secrets`. -##### Ejemplo de Docker Compose +##### Ejemplo de Docker Compose {#docker-compose-example} [Crear][6003] un `docker-compose.yml` con secretos basados en archivos: @@ -867,7 +883,7 @@ version: '3.8' services: datadog: - image: datadog/agent:latest + image: registry.datadoghq.com/agent:latest environment: - DD_API_KEY=ENC[dd_api_key] - DD_SECRET_BACKEND_TYPE=docker.secrets @@ -881,31 +897,31 @@ secrets: file: ./secrets/api_key.txt ``` -El archivo secreto `./secrets/api_key.txt` se monta en `/run/secrets/dd_api_key` dentro del contenedor. +El archivo secreto `./secrets/api_key.txt` se monta en `/run/secrets/dd_api_key` en el contenedor. {{% /collapse-content %}} -{{% collapse-content title="Backends de secretos de archivo JSON, YAML o TEXT" level="h4" expanded=false id="id-for-json-yaml-text" %}} +{{% collapse-content title="Backends de secretos en archivos JSON, YAML o TEXT" level="h4" expanded=false id="id-for-json-yaml-text" %}} -| valor secret_backend_type | Servicio de Archivo | +| valor del tipo de backend_secreto | Servicio de Archivo | |---------------------------------------------|-----------------------------------------| |`file.json` |[JSON][4001] | |`file.yaml` |[YAML][4002] | | -|`file.text` |[TEXTO][4003] | | +|`file.text` |[TEXT][4003] | | -##### Permisos de archivo -El backend de archivo solo requiere permisos de **lectura** para los archivos JSON, YAML o TEXT configurados. Estos permisos deben ser otorgados al usuario local del Datadog Agent (`dd-agent` en Linux, `ddagentuser` en Windows). +##### Permisos de archivo {#file-permissions} +El backend de archivo solo requiere **lectura** permisos para los archivos JSON, YAML o TEXT configurados. Estos permisos deben ser otorgados al usuario local del Agente de Datadog (`dd-agent` en Linux, `ddagentuser` en Windows). {{< tabs >}} -{{% tab "Backend de archivo JSON" %}} +{{% tab "Backend de Archivo JSON" %}} -**Nota**: Solo se admite un nivel de profundidad de JSON (por ejemplo, `{"key": "value"}`) +**Nota**: Solo se admite un nivel de profundidad JSON (por ejemplo, `{"key": "value"}`) -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-6} -Puedes usar un archivo JSON para almacenar secretos localmente. +Puede usar un archivo JSON para almacenar secretos localmente. Por ejemplo, con un archivo JSON en `/path/to/secret.json` que contenga lo siguiente: @@ -915,7 +931,7 @@ Por ejemplo, con un archivo JSON en `/path/to/secret.json` que contenga lo sigui } ``` -Puedes usar esta configuración para obtener sus secretos: +Puede usar esta configuración para extraer sus secretos: ```yaml # datadog.yaml @@ -928,13 +944,13 @@ secret_backend_config: {{% /tab %}} -{{% tab "Backend de archivo YAML" %}} +{{% tab "Backend de Archivo YAML" %}} -**Nota**: Solo se admite un nivel de profundidad de YAML (por ejemplo, `key: value`) +**Nota**: Solo se admite un nivel de profundidad YAML (por ejemplo, `key: value`) -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-7} -Puedes usar un archivo YAML para almacenar secretos localmente. +Puede usar un archivo YAML para almacenar secretos localmente. Como ejemplo, si tenemos un archivo YAML en `/path/to/secret.yaml` que contenga: @@ -942,7 +958,7 @@ Como ejemplo, si tenemos un archivo YAML en `/path/to/secret.yaml` que contenga: datadog_api_key: your api key ``` -Puedes usar la siguiente configuración para obtener secretos de él: +Puede usar la siguiente configuración para extraer secretos de él: ```yaml # datadog.yaml @@ -953,17 +969,17 @@ secret_backend_config: ``` {{% /tab %}} -{{% tab "Backend de archivos TEXT" %}} +{{% tab "Backend de Archivo TEXT" %}} -**Disponible en la versión 7.75+ del Agente** +**Disponible en la versión del Agente 7.75+** -**Nota**: Cada secreto debe ser almacenado en su propio archivo de texto individual. +**Nota**: Cada secreto debe almacenarse en su propio archivo TEXT individual. -##### Ejemplo de configuración +##### Ejemplo de configuración {#configuration-example-8} -Puede utilizar archivos de texto individuales para almacenar secretos localmente. +Puede usar archivos TEXT individuales para almacenar secretos localmente. -Por ejemplo, con archivos de texto en `/path/to/secrets/`: +Por ejemplo, con archivos TEXT en `/path/to/secrets/`: `/path/to/secrets/dd_api_key` que contiene: @@ -989,13 +1005,13 @@ secret_backend_config: secrets_path: /path/to/secrets ``` -##### Seguridad de la ruta: +##### Seguridad de la ruta: {#path-security} -- Las rutas relativas en `ENC[]` se resuelven en relación con `secrets_path` (por ejemplo, `ENC[dd_api_key]` con `secret_path: /path/to/secrets` se resolverá a `/path/to/secrets/dd_api_key`) +- Las rutas relativas en `ENC[]` se resuelven en relación con `secrets_path` (por ejemplo, `ENC[dd_api_key]` con `secret_path: /path/to/secrets` se resolverá en `/path/to/secrets/dd_api_key`) - Las rutas absolutas en `ENC[]` deben estar dentro de `secrets_path` (por ejemplo, `ENC[/path/to/secrets/dd_api_key]` con `secret_path: /path/to/secrets` funcionará) - Los intentos de recorrido de ruta (por ejemplo, `ENC[../etc/passwd]`) están bloqueados y fallarán con "ruta fuera del directorio permitido" -**Nota:** Algunas herramientas agregan automáticamente saltos de línea al exportar secretos a archivos. Vea [Eliminar saltos de línea finales](#remove-trailing-line-breaks) para saber cómo manejar esto. +**Nota:** Algunas herramientas añaden automáticamente saltos de línea al exportar secretos a archivos. Vea [Eliminar saltos de línea finales](#remove-trailing-line-breaks) para saber cómo manejar esto. {{% /tab %}} {{< /tabs >}} @@ -1003,9 +1019,9 @@ secret_backend_config: {{% /collapse-content %}} -### Opción 2: Usando el Script incorporado para Kubernetes y Docker +### Opción 2: Usando el script incorporado para Kubernetes y Docker {#option-2-using-the-built-in-script-for-kubernetes-and-docker} -Para entornos en contenedores, las imágenes de contenedor del Datadog Agent incluyen un script incorporado `/readsecret_multiple_providers.sh` a partir de la versión v7.32.0. Este script admite la lectura de secretos desde: +Para entornos en contenedores, las imágenes de contenedor del Agente de Datadog incluyen un script incorporado `/readsecret_multiple_providers.sh` a partir de la versión v7.32.0. Este script admite la lectura de secretos desde: * Archivos: usando `ENC[file@/path/to/file]` * Secretos de Kubernetes: usando `ENC[k8s_secret@namespace/secret-name/key]` @@ -1028,7 +1044,7 @@ spec: {{% /tab %}} {{% tab "Helm" %}} -Para usar este ejecutable con el gráfico de Helm, configúrelo de la siguiente manera: +Para usar este ejecutable con el chart de Helm, configúrelo como el siguiente: ```yaml datadog: @@ -1040,7 +1056,7 @@ datadog: {{% /tab %}} {{% tab "DaemonSet" %}} -Para usar este ejecutable, establezca la variable de entorno `DD_SECRET_BACKEND_COMMAND` de la siguiente manera: +Para usar este ejecutable, establece la variable de entorno `DD_SECRET_BACKEND_COMMAND` de la siguiente manera: ``` DD_SECRET_BACKEND_COMMAND=/readsecret_multiple_providers.sh @@ -1049,11 +1065,11 @@ DD_SECRET_BACKEND_COMMAND=/readsecret_multiple_providers.sh {{% /tab %}} {{< /tabs >}} -#### Ejemplo: Leyendo desde archivos montados +#### Ejemplo: Leyendo desde archivos montados {#example-reading-from-mounted-files} -Kubernetes admite [exponer secretos como archivos][2] dentro de un pod que el Agent puede leer para resolver secretos. +Kubernetes admite [exponer Secrets como archivos][2] dentro de un pod que el Agente puede leer para resolver secretos. -En Kubernetes, puede montar un secreto como un volumen de esta manera: +En Kubernetes, puedes montar un Secret como un volumen de esta manera: ```yaml containers: @@ -1069,27 +1085,27 @@ En Kubernetes, puede montar un secreto como un volumen de esta manera: secretName: test-secret ``` -Puede referenciar el secreto de esta manera: +Luego puedes hacer referencia al secreto de esta manera: ``` password: ENC[file@/etc/secret-volume/password] ``` **Notas**: -- El secreto debe existir en el mismo espacio de nombres que el pod en el que se está montando. -- El script puede acceder a todas las subcarpetas, incluyendo el sensible `/var/run/secrets/kubernetes.io/serviceaccount/token`. Por lo tanto, Datadog recomienda usar una carpeta dedicada en lugar de `/var/run/secrets`. +- El Secret debe existir en el mismo namespace que el pod en el que se está montando. +- El script puede acceder a todas las subcarpetas, incluyendo el `/var/run/secrets/kubernetes.io/serviceaccount/token` sensible. Por lo tanto, Datadog recomienda usar una carpeta dedicada en lugar de `/var/run/secrets`. -[Los secretos de Docker swarm][3] se montan en la carpeta `/run/secrets`. Por ejemplo, el secreto de Docker `db_prod_passsword` se encuentra en `/run/secrets/db_prod_password` en el contenedor del Agent. Esto se referenciaría en la configuración con `ENC[file@/run/secrets/db_prod_password]`. +[Los secretos de Docker Swarm][3] se montan en la carpeta `/run/secrets`. Por ejemplo, el secreto de Docker `db_prod_passsword` se encuentra en `/run/secrets/db_prod_password` en el contenedor del Agente. Esto se referenciaría en la configuración con `ENC[file@/run/secrets/db_prod_password]`. -#### Ejemplo: Leyendo un secreto de Kubernetes a través de espacios de nombres +#### Ejemplo: Leyendo un secreto de Kubernetes a través de namespaces {#example-reading-a-kubernetes-secret-across-namespaces} -Si deseas que el Agent lea un secreto de un espacio de nombres diferente, usa el prefijo `k8s_secret@`. Por ejemplo: +Si deseas que el Agente lea un Secret de un namespace diferente, usa el prefijo `k8s_secret@`. Por ejemplo: ``` password: ENC[k8s_secret@database/database-secret/password] ``` -Configura RBAC para permitir que la Cuenta de Servicio del Agent lea el secreto. El siguiente rol otorga acceso de lectura al secreto `database-secret` en el espacio de nombres `database`: +Configura RBAC para permitir que la Cuenta de Servicio del Agente lea el Secret. El siguiente Rol otorga acceso de lectura al Secret `database-secret` en el namespace `database`: {{< tabs >}} {{% tab "Datadog Operator" %}} @@ -1107,7 +1123,7 @@ spec: secrets: - "database-secret" ``` -***Nota***: Cada espacio de nombres en la lista de roles también debe estar configurado en la variable de entorno `WATCH_NAMESPACE` o `DD_AGENT_WATCH_NAMESPACE` en el despliegue del Datadog Operator. +***Nota***: Cada namespace en la lista de roles también debe estar configurado en la variable de entorno `WATCH_NAMESPACE` o `DD_AGENT_WATCH_NAMESPACE` en el despliegue del Datadog Operator. {{% /tab %}} {{% tab "Helm" %}} @@ -1125,7 +1141,7 @@ datadog: {{< /tabs >}} -Alternativamente, puedes definir recursos de RBAC directamente: +Alternativamente, puedes definir recursos RBAC directamente: ```yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -1155,17 +1171,17 @@ roleRef: apiGroup: "" ``` -Este `Role` otorga acceso al `Secret: database-secret` en el `Namespace: database`. El `RoleBinding` vincula este permiso al `ServiceAccount: datadog-agent` en el `Namespace: default`. Esto necesita ser agregado manualmente a tu clúster con respecto a tus recursos desplegados. +Esto `Role` da acceso al `Secret: database-secret` en el `Namespace: database`. El `RoleBinding` vincula este permiso al `ServiceAccount: datadog-agent` en el `Namespace: default`. Esto necesita ser agregado manualmente a su clúster con respecto a los recursos desplegados. -### Opción 3: Creando un ejecutable personalizado +### Opción 3: Creando un ejecutable personalizado {#option-3-creating-a-custom-executable} -Para recuperar secretos, el Agent utiliza un ejecutable externo que tú proporcionas. El ejecutable se utiliza cuando se descubren nuevos secretos y se almacenan en caché durante el ciclo de vida del Agent. Si necesitas actualizar o rotar un secreto, debes reiniciar el Agent para recargarlo. +Para recuperar secretos, el Agente utiliza un ejecutable externo que tú proporcionas. El ejecutable se utiliza cuando se descubren nuevos secretos y se almacenan en caché durante el ciclo de vida del Agente. Si necesita actualizar o rotar un secreto, debe reiniciar el Agente para recargarlo. -Esto te permite utilizar cualquier solución de gestión de secretos y te da control total sobre cómo el Agent accede a los secretos. +Esto le permite usar cualquier solución de gestión de secretos y le da control total sobre cómo el Agente accede a los secretos. -El Agent envía a este ejecutable una carga útil JSON a través de la entrada estándar que contiene una lista de identificadores de secretos a resolver. Luego, tu ejecutable obtiene cada secreto y los devuelve en un formato JSON a través de la salida estándar. +El Agente envía a este ejecutable una carga útil JSON a través de la entrada estándar que contiene una lista de identificadores de secretos por resolver. Luego, su ejecutable obtiene cada secreto y los devuelve en un formato JSON a través de la salida estándar. -El siguiente ejemplo muestra lo que el Agent envía a tu ejecutable en STDIN: +El siguiente ejemplo muestra lo que el Agente envía a su ejecutable en STDIN: ``` { @@ -1190,9 +1206,9 @@ El ejecutable responde a través de la siguiente salida STDOUT: * `value` (cadena): El valor del secreto que se utilizará en las configuraciones. Esto puede ser `null` en caso de un error. * `error` (cadena): Un mensaje de error o `null`. -Si un secreto no se puede resolver (ya sea devolviendo un código de salida distinto de cero o un error no nulo), la configuración relacionada es ignorada por el Agent. +Si un secreto no se puede resolver (ya sea devolviendo un código de salida distinto de cero o un error no nulo), la configuración relacionada es ignorada por el Agente. -**Nunca muestre información sensible en `stderr`**. Si el binario sale con un código de estado diferente a `0`, el Agent registra la salida de error estándar de tu ejecutable para solucionar problemas. +**Nunca divulgue información sensible en `stderr`**. Si el binario sale con un código de estado diferente a `0`, el Agente registra la salida de error estándar de su ejecutable para la solución de problemas. También puede construir su propio ejecutable de recuperación de secretos utilizando cualquier lenguaje. El único requisito es que siga el formato de entrada/salida descrito anteriormente. @@ -1239,7 +1255,7 @@ func main() { } ``` -Esto transforma tu configuración: +Esto transforma su configuración: ```yaml instances: @@ -1257,59 +1273,59 @@ instances: password: decrypted_db_prod_password ``` -Puedes configurar el Agent para usar el binario para resolver secretos añadiendo lo siguiente: +Puede configurar el Agente para usar el binario para resolver secretos agregando lo siguiente: ``` secret_backend_command: /path/to/binary ``` -## Requisitos de seguridad del Agent +## Requisitos de seguridad del Agente {#agent-security-requirements} -El Agent ejecuta el ejecutable proporcionado como un subproceso. Los patrones de ejecución difieren en Linux y Windows. +El Agente ejecuta el ejecutable proporcionado como un subproceso. Los patrones de ejecución difieren en Linux y Windows. {{< tabs >}} {{% tab "Linux" %}} -En Linux, tu ejecutable debe: +En Linux, su ejecutable debe: -* Pertenecer al mismo usuario que ejecuta el Agent (`dd-agent` por defecto, o `root` dentro de un contenedor). +* Pertenecer al mismo usuario que ejecuta el Agente (`dd-agent` por defecto, o `root` dentro de un contenedor). * No tener derechos para `group` o `other`. * Tener al menos el derecho de **ejecutar** para el propietario. {{% /tab %}} {{% tab "Windows" %}} -En Windows, tu ejecutable debe: +En Windows, su ejecutable debe: -* Tener **lectura** o **ejecución** para `ddagentuser` (el usuario utilizado para ejecutar el Agent). -* No tener derechos para ningún usuario o grupo excepto para el grupo de **Administradores**, la cuenta incorporada de **Sistema Local**, o el contexto del usuario del Agent (`ddagentuser` por defecto). -* Ser una aplicación Win32 válida para que el Agent pueda ejecutarla (por ejemplo, un script de PowerShell o Python no funciona). +* Tener **lectura** o **ejecutar** para `ddagentuser` (el usuario utilizado para ejecutar el Agente). +* No tener derechos para ningún usuario o grupo excepto para el grupo de **Administradores**, la cuenta incorporada de **Sistema Local**, o el contexto de usuario del Agente (`ddagentuser` por defecto). +* Ser una aplicación Win32 válida para que el Agente pueda ejecutarla (por ejemplo, un script de PowerShell o Python no funciona). {{% /tab %}} {{< /tabs >}} -**Nota**: Tu ejecutable comparte las mismas variables de entorno que el Agent. +**Nota**: Su ejecutable comparte las mismas variables de entorno que el Agente. -## Refrescando secretos en tiempo de ejecución +## Actualizando secretos en tiempo de ejecución {#refreshing-secrets-at-runtime} -A partir de la versión 7.67 del Agent, puedes configurar el Agent para refrescar secretos resueltos sin necesidad de reiniciar. +A partir de la versión 7.67 del Agente, puede configurar el Agente para actualizar secretos resueltos sin requerir un reinicio. -Establece un intervalo de refresco: +Establezca un intervalo de actualización: ```yaml secret_refresh_interval: 3600 # refresh every hour ``` -O, activa un refresco manualmente: +O, active una actualización manualmente: ```shell datadog-agent secret refresh ``` -### Refresco de clave de API/APP -Las claves API/APP extraídas como secretos admiten refresco en tiempo de ejecución. +### Actualización de clave API/APP {#apiapp-key-refresh} +Las claves API/APP extraídas como secretos admiten actualización en tiempo de ejecución. -Puedes habilitar esto configurando `secret_refresh_interval` (en segundos) en `datadog.yaml`: +Puede habilitar esto configurando `secret_refresh_interval` (en segundos) en `datadog.yaml`: ```yaml api_key: ENC[] @@ -1317,21 +1333,21 @@ api_key: ENC[] secret_refresh_interval: 3600 # refresh every hour ``` -Por defecto, el Agent aleatoriza el refresco inicial dentro de la ventana de `secret_refresh_interval` para evitar que una flota de -para evitar que todos los Agent se refresquen simultáneamente. La clave se resuelve al inicio, luego se refresca una vez dentro del primer intervalo +Por defecto, el Agente aleatoriza la actualización inicial dentro de la ventana de `secret_refresh_interval` para evitar que una flota de +Agentes se actualicen simultáneamente. La clave se resuelve al inicio, luego se actualiza una vez dentro del primer intervalo y cada intervalo posterior. -Para evitar tiempo de inactividad, invalida las claves antiguas solo después de que toda tu flota haya extraído las claves actualizadas. Puedes rastrear el uso de claves +Para evitar tiempo de inactividad, invalide las claves antiguas solo después de que toda su flota haya extraído las claves actualizadas. Puede rastrear el uso de claves en la página [Gestión de Flota](https://app.datadoghq.com/fleet). -Puedes deshabilitar este comportamiento configurando: +Puede desactivar este comportamiento configurando: ```yaml secret_refresh_scatter: false ``` -### Refresco de secretos de verificación de Autodiscovery -A partir de la versión 7.76 del Agent, las verificaciones programadas de [Autodiscovery][1] pueden refrescar secretos en tiempo de ejecución si la plantilla utiliza la sintaxis `ENC[]`. +### Actualización de secretos de la verificación de Autodiscovery {#autodiscovery-check-secrets-refresh} +A partir de la versión 7.76 del Agente, las verificaciones programadas de [Autodiscovery][1] pueden actualizar secretos en tiempo de ejecución si la plantilla utiliza la sintaxis `ENC[]`. ```yaml labels: @@ -1354,15 +1370,15 @@ annotations: } ``` -El Agent puede entonces activar el refresco de secretos ya sea en el intervalo establecido en `secret_refresh_interval` o manualmente con `datadog-agent secret refresh`. +El Agente puede entonces activar la actualización de secretos ya sea en el intervalo establecido en `secret_refresh_interval` o manualmente con `datadog-agent secret refresh`. -### Refresco automático de secretos en caso de fallo/invalidación de clave de API +### La actualización automática de secretos se realiza al fallar o invalidar la clave de API {#automatic-secrets-refresh-on-api-key-failure-invalidation} -A partir de la versión 7.74 del Agent, el Agent puede refrescar automáticamente secretos cuando detecta una clave de API inválida. Esto sucede cuando el Agent recibe una respuesta 403 Prohibido de Datadog o cuando la verificación de salud periódica detecta una clave de API inválida o expirada. +A partir de la versión v7.74 del Agente, este puede actualizar automáticamente los secretos cuando detecta una clave de API inválida. Esto ocurre cuando el Agente recibe una respuesta 403 Prohibido de Datadog o cuando la verificación de salud periódica detecta una clave de API inválida o caducada. -Para habilitar esta función, establece `secret_refresh_on_api_key_failure_interval` en un intervalo en minutos en tu archivo `datadog.yaml`. Establecer en `0` para deshabilitar (predeterminado). +Para habilitar esta función, establece `secret_refresh_on_api_key_failure_interval` en un intervalo en minutos en tu archivo `datadog.yaml`. Establece en `0` para deshabilitar (predeterminado). -Este intervalo es la cantidad mínima de tiempo entre 2 actualizaciones para evitar saturar tu solución de gestión de secretos cuando se detecta una clave de API inválida. +Este intervalo es el tiempo mínimo entre 2 actualizaciones para evitar saturar tu solución de gestión de secretos cuando se detecta una clave de API inválida. ```yaml api_key: ENC[] @@ -1372,8 +1388,8 @@ secret_refresh_on_api_key_failure_interval: 10 Esta configuración es compatible con `secret_refresh_interval`. -### Habilitando la actualización del colector DDOT -Si estás utilizando [colector DDOT][6] y deseas habilitar la actualización de API/APP, debes agregar la siguiente configuración adicional a tu archivo `datadog.yaml`: +### Habilitando la actualización del colector DDOT {#enabling-ddot-collector-refresh} +Si estás utilizando el [colector DDOT][6] y deseas habilitar la actualización de API/APP, debes agregar la siguiente configuración adicional a tu archivo `datadog.yaml`: ``` agent_ipc: @@ -1381,15 +1397,15 @@ agent_ipc: config_refresh_interval: 3600 ``` -Esto asegura que el colector DDOT permanezca sincronizado con el Agent después de que se actualicen los secretos. De manera similar a cómo el Agent verifica periódicamente su estado de configuración, el colector DDOT utiliza esta configuración para verificar regularmente los valores actualizados del Agent. +Esto asegura que el colector DDOT se mantenga sincronizado con el Agente después de que se actualicen los secretos. De manera similar a cómo el Agente verifica periódicamente su estado de configuración, el colector DDOT utiliza esta configuración para verificar regularmente los valores actualizados del Agente. -## Resolución de problemas +## Resolución de problemas {#troubleshooting} -### Lista de secretos detectados +### Listando secretos detectados {#listing-detected-secrets} -El comando `secret` en la CLI del Agent muestra cualquier error relacionado con tu configuración. Por ejemplo, si los derechos sobre el ejecutable son incorrectos. También lista todos los manejadores encontrados y dónde se encuentran. +El comando `secret` en la CLI del Agente muestra cualquier error relacionado con tu configuración. Por ejemplo, si los permisos sobre el ejecutable son incorrectos. También lista todos los manejadores encontrados y dónde se encuentran. -En Linux, el comando muestra el modo de archivo, propietario y grupo para el ejecutable. En Windows, se listan los derechos de ACL. +En Linux, el comando muestra el modo de archivo, propietario y grupo para el ejecutable. En Windows, se listan los permisos de ACL. {{< tabs >}} {{% tab "Linux" %}} @@ -1418,7 +1434,7 @@ Secrets handle decrypted: {{% /tab %}} {{% tab "Windows" %}} -Ejemplo en Windows (desde un PowerShell de Administrador): +Ejemplo en Windows (desde un PowerShell de administrador): ```powershell PS C:\> & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" secret @@ -1451,7 +1467,7 @@ Secrets handle decrypted: {{% /tab %}} {{< /tabs >}} -### Ver configuraciones después de que se inyectaron los secretos. +### Viendo configuraciones después de que se inyectaron secretos {#seeing-configurations-after-secrets-were-injected} Para ver rápidamente cómo se resuelven las configuraciones de la verificación, puedes usar el comando `configcheck`: @@ -1477,11 +1493,11 @@ password: === ``` -**Nota**: El Agente necesita ser [reiniciado][7] para recoger los cambios en los archivos de configuración. +**Nota**: El Agent necesita ser [reiniciado][7] para recoger cambios en los archivos de configuración. -### Depurando tu secret_backend_command +### Depurando tu comando_secret_backend {#debugging-your-secret-backend-command} -Para probar o depurar fuera del Agente, puedes imitar cómo lo ejecuta el Agente: +Para probar o depurar fuera del Agent, puedes imitar cómo lo ejecuta el Agent: {{< tabs >}} {{% tab "Linux" %}} @@ -1491,21 +1507,21 @@ Para probar o depurar fuera del Agente, puedes imitar cómo lo ejecuta el Agente sudo -u dd-agent bash -c "echo '{\"version\": \"1.0\", \"secrets\": [\"secret1\", \"secret2\"]}' | /path/to/the/secret_backend_command" ``` -El `dd-agent` usuario se crea cuando instalas el Agente de Datadog. +El usuario `dd-agent` se crea cuando instalas el Agent de Datadog. {{% /tab %}} {{% tab "Windows" %}} -##### Errores relacionados con los derechos +##### Errores relacionados con permisos {#rights-related-errors} Los siguientes errores indican que falta algo en tu configuración. -1. Si algún otro grupo o usuario que no sea el necesario tiene derechos sobre el ejecutable, se registra un error similar al siguiente: +1. Si algún otro grupo o usuario que no sea el necesario tiene permisos sobre el ejecutable, se registra un error similar al siguiente: ``` error while decrypting secrets in an instance: Invalid executable 'C:\decrypt.exe': other users/groups than LOCAL_SYSTEM, Administrators or ddagentuser have rights on it ``` -2. Si `ddagentuser` no tiene derechos de lectura y ejecución sobre el archivo, se registra un error similar: +2. Si `ddagentuser` no tiene permisos de lectura y ejecución sobre el archivo, se registra un error similar: ``` error while decrypting secrets in an instance: could not query ACLs for C:\decrypt.exe ``` @@ -1544,13 +1560,13 @@ Number of secrets resolved: 0 Secrets handle resolved: ``` -##### Probando tu ejecutable +##### Probando tu ejecutable {#testing-your-executable} -Tu ejecutable es ejecutado por el Agente al obtener tus secretos. El Agente de Datadog se ejecuta utilizando el `ddagentuser`. Este usuario no tiene derechos específicos, pero es parte del grupo `Performance Monitor Users`. La contraseña para este usuario se genera aleatoriamente en el momento de la instalación y nunca se guarda en ningún lugar. +Tu ejecutable es ejecutado por el Agent al obtener tus secretos. El Agent de Datadog se ejecuta utilizando el `ddagentuser`. Este usuario no tiene permisos específicos, pero es parte del grupo `Performance Monitor Users`. La contraseña para este usuario se genera aleatoriamente en el momento de la instalación y nunca se guarda en ningún lugar. -Esto significa que tu ejecutable puede funcionar con tu usuario predeterminado o usuario de desarrollo, pero no cuando es ejecutado por el Agente, ya que `ddagentuser` tiene derechos más restringidos. +Esto significa que tu ejecutable podría funcionar con tu usuario predeterminado o usuario de desarrollo, pero no cuando lo ejecute el Agent, ya que `ddagentuser` tiene permisos más restringidos. -Para probar tu ejecutable en las mismas condiciones que el Agente, actualiza la contraseña del `ddagentuser` en tu máquina de desarrollo. De esta manera, puedes autenticarte como `ddagentuser` y ejecutar tu ejecutable en el mismo contexto en el que lo haría el Agente. +Para probar tu ejecutable en las mismas condiciones que el Agent, actualiza la contraseña del `ddagentuser` en tu máquina de desarrollo. De esta manera, puedes autenticarte como `ddagentuser` y ejecutar tu ejecutable en el mismo contexto en el que lo haría el Agent. Para hacerlo, sigue estos pasos: @@ -1588,23 +1604,23 @@ exit code: {{% /tab %}} {{< /tabs >}} -### Agente se niega a iniciar +### Agent se niega a iniciar {#agent-refusing-to-start} -Lo primero que hace el Agente al iniciar es cargar `datadog.yaml` y descifrar cualquier secreto en él. Esto se hace antes de configurar el registro. Esto significa que en plataformas como Windows, los errores que ocurren al cargar `datadog.yaml` no se escriben en los registros, sino en `stderr`. Esto puede ocurrir cuando el ejecutable proporcionado al Agente para secretos devuelve un error. +Lo primero que hace el Agent al iniciar es cargar `datadog.yaml` y descifrar cualquier secreto en él. Esto se hace antes de configurar el registro. Esto significa que en plataformas como Windows, los errores que ocurren al cargar `datadog.yaml` no se escriben en el registro, sino en `stderr`. Esto puede ocurrir cuando el ejecutable proporcionado al Agent para secretos devuelve un error. -Si tienes secretos en `datadog.yaml` y el Agente se niega a iniciar: +Si tienes secretos en `datadog.yaml` y el Agent se niega a iniciar: -* Intenta iniciar el Agente manualmente para poder ver `stderr`. -* Elimina los secretos de `datadog.yaml` y prueba primero con secretos en un archivo de configuración de verificación. +* Intenta iniciar el Agent manualmente para poder ver `stderr`. +* Elimina los secretos de `datadog.yaml` y prueba con secretos en un archivo de configuración de verificación primero. -### Pruebas de Permisos de Kubernetes -Al leer Secrets directamente desde Kubernetes, puedes verificar tus permisos con el comando `kubectl auth`. La forma general de esto es: +### Pruebas de permisos de Kubernetes {#testing-kubernetes-permissions} +Al leer secretos directamente de Kubernetes, puedes verificar tus permisos con el comando `kubectl auth`. La forma general de esto es: ``` kubectl auth can-i get secret/ -n --as system:serviceaccount:: ``` -Considera el ejemplo anterior de [Kubernetes Secrets](#example-reading-a-kubernetes-secret-across-namespaces), donde el Secret `Secret:database-secret` existe en el `Namespace: database`, y la cuenta de servicio `ServiceAccount:datadog-agent` existe en el `Namespace: default`. +Considera el ejemplo anterior de [Secretos de Kubernetes](#example-reading-a-kubernetes-secret-across-namespaces), donde el Secreto `Secret:database-secret` existe en el `Namespace: database`, y la Cuenta de Servicio `ServiceAccount:datadog-agent` existe en el `Namespace: default`. En este caso, utiliza el siguiente comando: @@ -1612,13 +1628,13 @@ En este caso, utiliza el siguiente comando: kubectl auth can-i get secret/database-secret -n database --as system:serviceaccount:default:datadog-agent ``` -Este comando devuelve si los permisos son válidos para que el Agente vea este Secret. +Este comando devuelve si los permisos son válidos para que el Agent vea este Secreto. ### Elimina los saltos de línea finales {#remove-trailing-line-breaks} Algunas herramientas de gestión de secretos añaden automáticamente un salto de línea al exportar secretos a través de archivos. Puedes eliminar estos saltos de línea configurando `secret_backend_remove_trailing_line_break: true` en [el archivo de configuración datadog.yaml][8], o usar la variable de entorno `DD_SECRET_BACKEND_REMOVE_TRAILING_LINE_BREAK` para hacer lo mismo, especialmente en entornos contenedorizados. -### Variables de Autodiscovery en manejadores de secretos. +### Variables de Autodiscovery en manejadores de secretos {#autodiscovery-variables-in-secret-handles} También es posible usar variables de [Autodiscovery][1] en manejadores de secretos. El Agente resuelve estas variables antes de resolver el secreto. Por ejemplo: @@ -1629,7 +1645,7 @@ instances: password: ENC[db_prod_password_%%host%%] ``` -## Lectura adicional +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/es/agent/logs/_index.md b/content/es/agent/logs/_index.md index 1c8cd7a99b0..c0bcee3850c 100644 --- a/content/es/agent/logs/_index.md +++ b/content/es/agent/logs/_index.md @@ -1,62 +1,74 @@ --- -description: Utiliza el Datadog Agent para recopilar tus logs y enviarlos a Datadog +description: Utiliza el Agente de Datadog para recopilar tus registros y enviarlos + a Datadog further_reading: +- link: agent/logs/agent_tags/ + tag: Documentación + text: Etiquetas del agente añadidas automáticamente a los registros - link: agent/logs/advanced_log_collection/#filter-logs tag: Documentación - text: Filtrar los logs enviados a Datalog + text: Filtrar registros enviados a Datadog - link: agent/logs/advanced_log_collection/#scrub-sensitive-data-from-your-logs tag: Documentación - text: Limpiar datos confidenciales de tus logs + text: Eliminar datos sensibles de tus registros - link: agent/logs/advanced_log_collection/#multi-line-aggregation tag: Documentación - text: Agregación de logs multilínea + text: Agregación de registros de múltiples líneas - link: agent/logs/advanced_log_collection/#tail-directories-using-wildcards tag: Documentación - text: Rastrear directorios utilizando comodines + text: Realiza el seguimiento de directorios utilizando comodines - link: agent/logs/advanced_log_collection/#global-processing-rules tag: Documentación - text: Reglas generales de procesamiento -title: Recopilación de logs del Agent del host + text: Reglas de procesamiento globales +title: Recopilación de registros del Agente del servidor --- +La recopilación de registros requiere el Agente de Datadog v6.0 o superior. Las versiones anteriores del Agente no incluyen la interfaz `log collection`. Si aún no utilizas el Agente, sigue las [instrucciones de instalación del Agente][1]. -Para recopilar logs con el Datadog Agent es necesario disponer de la versión 6.0 o posterior. Las versiones anteriores del Agent no incluyen la interfaz `log collection`. Si todavía no utilizas el Agent, sigue las [instrucciones de instalación del Agent][1]. +Consulta [Pipelines de Observabilidad][2] si deseas enviar registros utilizando el colector o reenvío de otro proveedor, o si deseas preprocesar tus datos de registro dentro de tu entorno antes de enviarlos. -Consulta [Observability Pipelines][2] si quieres enviar logs utilizando el Collector o Forwarder de otro proveedor, o si quieres procesar previamente los datos de los logs dentro de tu entorno antes del envío. +## Activa la recopilación de registros {#activate-log-collection} -## Activar la recopilación de logs +La recopilación de registros **no está habilitada** por defecto en el Agente de Datadog. Si estás ejecutando el Agente en un entorno de Kubernetes o Docker, consulta la documentación dedicada de [Recopilación de Registros de Kubernetes][3] o [Recopilación de Registros de Docker][4]. -La recopilación de logs **no está activada** por defecto en el Datadog Agent. Si estás ejecutando el Agent en un entorno Kubernetes o Docker, consulta la documentación sobre [recopilación de logs de Kubernetes][3] o [recopilación de logs de Docker][4] específica. +Para habilitar la recopilación de registros con un Agente que se ejecuta en tu servidor, cambia `logs_enabled: false` a `logs_enabled: true` en el [archivo de configuración principal][5] del Agente (`datadog.yaml`). -Para habilitar la recopilación de logs con un Agent ejecutándose en el host, cambia `logs_enabled: false` por `logs_enabled: true` en el [archivo principal de configuración ][5] (`datadog.yaml`) del Agent. +{{< code-block lang="yaml" filename="datadog.yaml" disable_copy="false" collapsible="true" >}} +logs_enabled: true +logs_config: + auto_multi_line_detection: true + force_use_http: true +{{< /code-block >}} -{{< agent-config type="log collection configuration" filename="datadog.yaml" collapsible="true">}} +Consulta el [archivo de configuración config_template.yaml de ejemplo][6] para todas las opciones de configuración disponibles. -A partir del Agent v6.19/v7.19 o posteriores, HTTPS es el transporte utilizado por defecto. Para obtener más detalles sobre cómo aplicar el transporte HTTPS/TCP, consulta la [documentación sobre transporte del Agent][6]. +
A partir del Agente v6.19+/v7.19+, el transporte HTTPS es el transporte predeterminado utilizado. Para más detalles, consulta Transporte del Agente.
-Para enviar logs con variables de entorno, configura lo siguiente: +Para enviar registros con **variables de entorno**, configure lo siguiente: -* `DD_LOGS_ENABLED=true` +``` +DD_LOGS_ENABLED=true +``` -Después de activar la recopilación de logs, el Agent podrá reenviarlos a Datadog. A continuación, configura el Agent para indicarle desde dónde debe recopilar los logs. +Después de activar la recopilación de registros, el Agente está listo para enviar registros a Datadog. A continuación, configure el Agente para indicar desde dónde recopilar registros. -## Recopilación de logs personalizada +## Recolección de registros personalizada {#custom-log-collection} -El Datadog Agent v6 puede recopilar logs y reenviarlos a Datadog desde archivos, la red (TCP o UDP), journald y canales de Windows: +El Agente de Datadog v6 puede recopilar registros y enviarlos a Datadog desde archivos, la red (TCP o UDP), journald y canales de Windows: -1. En el directorio `conf.d/` en la raíz del [directorio de configuración del Agent][5], crea una nueva carpeta `.d/` que sea accesible para el usuario de Datadog. -2. En ella, crea un archivo `conf.yaml` nuevo. -3. Añade un grupo de configuración de recopilación de logs personalizada con los parámetros que se detallan a continuación. -4. [Reinicia el Agent][7] para añadir esta nueva configuración. -5. Ejecuta el [subcomando de estado del Agent][8] y busca `` en la sección de checks. +1. En el directorio `conf.d/` en la raíz de tu [directorio de configuración del Agente][5], crea una nueva carpeta `.d/` que sea accesible por el usuario de Datadog. +2. Crea un nuevo archivo `conf.yaml` en esta nueva carpeta. +3. Agrega un grupo de configuración de recolección de registros personalizada con los parámetros a continuación. +4. [Reinicia tu Agente][8] para tener en cuenta esta nueva configuración. +5. Ejecuta el [subcomando de estado del Agente][9] y busca `` en la sección de Comprobaciones. -Si se producen errores de permisos, consulta [Problemas de permisos para el rastreo de archivos de logs][9] para solucionar el problema. +Si hay errores de permisos, consulta [Problemas de permisos al seguir archivos de registro][10] para solucionar problemas. -A continuación, encontrarás ejemplos de una configuración de recopilación de logs personalizada: +A continuación se presentan ejemplos de configuración de recopilación de registros personalizada: {{< tabs >}} -{{% tab "Rastrear archivos" %}} +{{% tab "Seguimiento de las últimas líneas de archivos" %}} -Para recopilar logs de tu aplicación `` almacenada en `/.log`, crea un archivo `.d/conf.yaml` en la raíz del [directorio de configuración del Agent][1] que incluya lo siguiente: +Para recopilar registros de tu `` aplicación almacenada en `/.log`, crea un archivo `.d/conf.yaml` en la raíz de tu [directorio de configuración del Agente][1] con el siguiente contenido: ```yaml logs: @@ -66,16 +78,22 @@ logs: source: "" ``` -En **Windows**, utiliza la ruta `:\\.log` y verifica que el usuario `ddagentuser` tenga permiso de lectura y escritura en el archivo de log. +En **Windows**, usa la ruta `:\\\\.log` y verifica que el usuario `ddagentuser` tenga acceso de lectura al archivo de registro. -**Nota**: Una línea de logs debe terminar con un carácter de nueva línea, `\n` o `\r\n`, de lo contrario el Agent espera indefinidamente y no envía la línea de logs. +**Nota**: Una línea de registro debe terminar con un carácter de nueva línea, `\n` o `\r\n`, de lo contrario, el Agente espera indefinidamente y no envía la línea de registro. [1]: /es/agent/configuration/agent-configuration-files/ {{% /tab %}} {{% tab "TCP/UDP" %}} -Para recopilar logs de tu aplicación ``, que los transfiere a través del puerto TCP **10518**, crea un archivo `.d/conf.yaml` en la raíz del [directorio de configuración del Agent][1] que incluya lo siguiente: +Para capturar la dirección IP del remitente e incluirla en la carga del mensaje de registro, agrega la siguiente configuración a tu archivo `datadog.yaml`: + +```yaml + logs_config: + use_sourcehost_tag: true +``` +Para recopilar registros de tu `` aplicación que envía sus registros al puerto TCP **10518**, crea un archivo `.d/conf.yaml` en la raíz de tu [directorio de configuración del Agente][1] con el siguiente contenido: ```yaml logs: @@ -85,19 +103,19 @@ logs: source: "" ``` -Si utilizas Serilog, puedes usar `Serilog.Sinks.Network` para conectarte a través de UDP. +Si estás utilizando Serilog, `Serilog.Sinks.Network` es una opción para conectarte con UDP. -En versiones del Agent 7.31.0 y posteriores, la conexión TCP permanece abierta de forma indefinida, incluso en reposo. +En la versión 7.31.0+ del Agente, la conexión TCP permanece abierta indefinidamente incluso cuando está inactiva. **Notas**: -- El Agent admite cadenas sin procesar, JSON y el logs con el formato Syslog. Si envías logs por lotes, utiliza caracteres de salto de línea para separar tus logs. -- Una línea de logs debe terminar con un carácter de nueva línea, `\n` o `\r\n`, de lo contrario el Agent espera indefinidamente y no envía la línea de logs. +- El Agente soporta registros en formato de cadena sin procesar, JSON y Syslog. Si estás enviando registros en lotes, utiliza caracteres de salto de línea para separar tus registros. +- Una línea de registro debe terminar con un carácter de nueva línea, `\n` o `\r\n`, de lo contrario, el Agente espera indefinidamente y no envía la línea de registro. [1]: /es/agent/configuration/agent-configuration-files/ {{% /tab %}} {{% tab "journald" %}} -Para recopilar logs de journald, crea un archivo `journald.d/conf.yaml` en la raíz del [directorio de configuración del Agent][1] que incluya lo siguiente: +Para recopilar registros de journald, crea un archivo `journald.d/conf.yaml` en la raíz de tu [directorio de configuración del Agente][1] con el siguiente contenido: ```yaml logs: @@ -105,28 +123,28 @@ logs: path: /var/log/journal/ ``` -Consulta la documentación sobre la [integración con journald][2] para obtener más información sobre la configuración de entornos contenedorizados y el filtrado de unidades. +Consulta la documentación de la [integración de journald][2] para más detalles sobre la configuración para entornos en contenedores y filtrado de unidades. [1]: /es/agent/configuration/agent-configuration-files/ [2]: /es/integrations/journald/ {{% /tab %}} {{% tab "Eventos de Windows" %}} -Para enviar eventos de Windows como logs a Datadog, añade los canales a `conf.d/win32_event_log.d/conf.yaml` de forma manual o utiliza el administrador del Datadog. +Para enviar eventos de Windows como registros a Datadog, agrega los canales a `conf.d/win32_event_log.d/conf.yaml` manualmente o utiliza el Administrador del Agente de Datadog. -Para consultar la lista de canales, ejecuta el siguiente comando en un PowerShell: +Para ver tu lista de canales, ejecuta el siguiente comando en PowerShell: ```text Get-WinEvent -ListLog * ``` -Para consultar los canales más activos, ejecuta el siguiente comando en un PowerShell: +Para ver los canales más activos, ejecuta el siguiente comando en PowerShell: ```text Get-WinEvent -ListLog * | sort RecordCount -Descending ``` -Luego, añade los canales al archivo de configuración `win32_event_log.d/conf.yaml`: +Luego agrega los canales a tu archivo de configuración `win32_event_log.d/conf.yaml`: ```yaml logs: @@ -143,69 +161,108 @@ logs: sourcecategory: windowsevent ``` -Edita los parámetros `` con el nombre del canal de Windows desde el que quieres recopilar los eventos. -Establece el mismo nombre de canal en el parámetro `source` correspondiente para beneficiarte de la [configuración del pipeline de procesamiento automático de la integración][1]. +Edita los parámetros de `` con el nombre del canal de Windows del cual deseas recopilar eventos. +Establece el parámetro correspondiente `source` al mismo nombre de canal para beneficiarte de la [configuración del pipeline de procesamiento automático de integración][1]. -Por último, [reinicia el Agent][2]. +Finalmente, [reinicia el Agente][2]. [1]: /es/logs/log_configuration/pipelines/#integration-pipelines [2]: /es/agent/basic_agent_usage/windows/ {{% /tab %}} +{{% tab "Ubicación Privada de Windows" %}} +Sigue los pasos en estas secciones para enviar los registros de Windows Private Location a Datadog: + +### Configura el Agente {#configure-the-agent} + +1. Habilita la recolección de registros del Agente configurando `logs_enabled: true` en el archivo de configuración del Agente. +2. Navega a `C:\ProgramData\Datadog\conf.d` y crea una carpeta llamada `synthetics_worker.d`. +3. Dentro de la carpeta `synthetics_worker.d`, crea un archivo llamado `conf.yaml` utilizando el siguiente ejemplo como plantilla: + +```yaml +logs: + - type: file + path: "C:\\Program Files\\Datadog-Synthetics\\Synthetics\\private-location-service.out.log" + service: + source: synthetics + tags: # Defined per user preference + - env: + - private_location: +``` + +### Verifica el usuario que ejecuta el Agente {#verify-the-user-running-the-agent} + +Dado que la carpeta de instalación de Ubicación Privada está restringida al acceso de administrador, el Agente de Datadog necesita permiso para acceder al archivo de registro. Sigue estos pasos para verificar el usuario que ejecuta el Agente de Datadog: + +1. Presiona la tecla de Windows y `R`, y busca {{< ui >}}Run{{< /ui >}}. +2. Encuentra el Agente de Datadog, haz clic derecho sobre él y selecciona {{< ui >}}Properties{{< /ui >}}. +3. En la pestaña {{< ui >}}Log On{{< /ui >}}, verifica la cuenta (el predeterminado es `ddagentuser`). +4. Cierra la ventana. + +### Otorga permiso al usuario que ejecuta el Agente {#grant-permission-to-the-user-running-the-agent} + +1. Ve a `C:\Program Files` y encuentra la carpeta `synthetics_worker.d`. +2. Haz clic derecho en la carpeta `synthetics_worker.d` y selecciona {{< ui >}}Properties{{< /ui >}}. +3. Ve a la pestaña {{< ui >}}Security{{< /ui >}}. +4. Haz clic en {{< ui >}}Edit{{< /ui >}} y agrega `ddagentuser`. +5. Concede los permisos necesarios. +6. Reinicia el Agente de Datadog a través de la pantalla de Servicios o la línea de comandos para aplicar los cambios y comenzar a enviar registros a Datadog. +{{% /tab %}} {{< /tabs >}} -Esta es una lista de todos los parámetros disponibles para la recopilación de logs: +Lista de todos los parámetros disponibles para la recopilación de registros: -| Parámetro | Obligatorio | Descripción | +| Parámetro | Requerido | Descripción | |------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `type` | Sí | Tipo de origen de entrada del log. Los valores válidos son: `tcp`, `udp`, `file`, `windows_event`, `docker` o `journald`. | -| `port` | Sí | Si `type` es **tcp** o **udp**, define el puerto en el que se realiza la escucha de los logs. | -| `path` | Sí | Si `type` es **archivo** o **journald**, configura la ruta de archivo para la recopilación de logs. | -| `channel_path` | Sí | Si `type` es **windows_event**, establece una lista de los canales de eventos de Windows para la recopilación de logs. | -| `service` | Sí | El nombre del servicio que posee el log. Si has instrumentado tu servicio con [Datadog APM [10], este debe ser el mismo nombre de servicio. Consulta las instrucciones de [etiquetado unificado de servicios][11] al configurar `service` en diferentes tipos de datos. | -| `source` | Sí | Atributo que define qué integración está enviando los logs. Si los logs no proceden de una integración existente, este campo puede incluir un nombre de origen personalizado. Sin embargo, se recomienda hacer coincidir este valor con el espacio de nombres de cualquier [métrica personalizada][12] relacionada que estés recopilando. Por ejemplo: `myapp` de `myapp.request.count`. | -| `include_units` | No | Si `type` es **journald**, es la lista de unidades journald específicas que se deben incluir. | -| `exclude_paths` | No | Si `type` es **archivo**, y `path` contiene un carácter comodín, es la lista con el archivo o archivos coincidentes que hay que excluir de la recopilación de logs. Disponible a partir de la versión 6.18 del Agent. | -| `exclude_units` | No | Si `type` es **journald**, es la lista de unidades journald específicas que se deben excluir. | -| `sourcecategory` | No | Atributo que se utiliza para definir la categoría a la que pertenece un atributo de origen. Por ejemplo: `source:postgres, sourcecategory:database` o `source: apache, sourcecategory: http_web_access`. | -| `start_position` | No | Consulta [Posición inicial](#start-position) para obtener más información.| -| `encoding` | No | Si `type` es **archivo**, establece qué codificación debe utilizar el Agent para leer el archivo. Utiliza `utf-16-le` para UTF-16 little-endian, `utf-16-be` para UTF-16 big-endian o `shift-jis` para Shift JIS. Si se establece cualquier otro valor, el Agent leerá el archivo como UTF-8. _Se añadieron `utf-16-le` y `utf-16be` en las versiones 6.23/7.23 del Agent, y `shift-jis` en las versiones 6.34/7.34 del Agent_ | -| `tags` | No | Una lista de etiquetas (tags) añadida a cada log recopilado ([más información sobre etiquetado][13]). | - -### Posición inicial - -El parámetro `start_position` es compatible con los tipos de rastreadores **file** y **journald**. El parámetro `start_position` es siempre `beginning` cuando se rastrea un contenedor. - -Compatibilidad: -- **File**: Agent v6.19/7.19 o posteriores -- **Journald**: Agent v6.38/7.38 o posteriores +| `type` | Sí | El tipo de fuente de entrada de registros. Los valores válidos son: `tcp`, `udp`, `file`, `windows_event`, `docker` o `journald`. | +| `port` | Sí | Si `type` es **tcp** o **udp**, establece el puerto para escuchar los registros. | +| `path` | Sí | Si `type` es **file** o **journald**, establece la ruta del archivo para recopilar registros. | +| `channel_path` | Sí | Si `type` es **windows_event**, enumera los canales de eventos de Windows para recopilar registros. | +| `service` | Sí | El nombre del servicio que posee el registro. Si instrumentaste tu servicio con [Datadog APM][11], este debe ser el mismo nombre del servicio. Consulta las instrucciones de [unified service tagging][12] al configurar `service` a través de múltiples tipos de datos. | +| `source` | Sí | El atributo que define qué integración está enviando los registros. Si los registros no provienen de una integración existente, entonces este campo puede incluir un nombre de fuente personalizado. Sin embargo, se recomienda que configure este valor para que coincida con el espacio de nombres de las métricas personalizadas relacionadas que esté recopilando, por ejemplo: `myapp` de `myapp.request.count`. | +| `include_units` | No | Si `type` es **journald**, lista de las unidades específicas de journald a incluir. | +| `exclude_paths` | No | Si `type` es **file**, y `path` contiene un carácter comodín, lista el archivo o archivos que coincidan para excluir de la recopilación de registros. Esto está disponible para la versión del Agente >= 6.18. | +| `exclude_units` | No | Si `type` es **journald**, lista de las unidades específicas de journald a excluir. | +| `sourcecategory` | No | El atributo utilizado para definir la categoría a la que pertenece un atributo de fuente, por ejemplo: `source:postgres, sourcecategory:database` o `source: apache, sourcecategory: http_web_access`. | +| `start_position` | No | Vea [Posición de inicio](#start-position) para más información.| +| `encoding` | No | Si `type` es **file**, establezca la codificación para que el Agente lea el archivo. Establezca en `utf-16-le` para UTF-16 little-endian, `utf-16-be` para UTF-16 big-endian, o `shift-jis` para Shift JIS. Si se establece en cualquier otro valor, el Agente lee el archivo como UTF-8. _Agregado `utf-16-le` y `utf-16be` en la versión 6.23/7.23 del Agente, `shift-jis` en la versión 6.34/7.34 del Agente_ | +| `tags` | No | Una lista de etiquetas añadidas a cada registro recopilado ([aprenda más sobre etiquetado][14]). | + +### Posición de inicio {#start-position} + +El parámetro `start_position` es compatible con **file** y **journald** tipos de tailer. El `start_position` siempre es `beginning` al seguir un contenedor. + +Soporte: +- **File**: Agente 6.19+/7.19+ +- **Journald**: Agente 6.38+/7.38+ Si `type` es **file**: -- Define la posición desde la que el Agent debe comenzar a leer el archivo. -- Los valores válidos son `beginning`, `end`, `forceBeginning` y `forceEnd` (por defecto: `end`). -- La posición `beginning` no admite rutas con comodines. +- Establezca la posición para que el Agente comience a leer el archivo. +- Los valores válidos son `beginning`, `end`, `forceBeginning` y `forceEnd` (predeterminado: `end`). +- La `beginning` posición no admite rutas con comodines. Si `type` es **journald**: -- Define la posición desde la que el Agent debe comenzar a leer el registro. -- Los valores válidos son `beginning`, `end`, `forceBeginning` y `forceEnd` (por defecto: `end`). +- Establezca la posición para que el Agente comience a leer el diario. +- Los valores válidos son `beginning`, `end`, `forceBeginning` y `forceEnd` (predeterminado: `end`). -#### Prioridad +#### Precedencia {#precedence} -Tanto para el tipo de rastreador file como journald, si se especifica una posición `end` o `beginning`, pero se almacena un desplazamiento, este tiene prioridad. El uso de `forceBeginning` o `forceEnd` obliga al Agent a utilizar el valor especificado, aunque haya un desplazamiento almacenado. +Para ambos tipos de tailer, file y journald, si se especifica una posición `end` o `beginning`, pero se almacena un desplazamiento, el desplazamiento tiene prioridad. Usar `forceBeginning` o `forceEnd` obliga al Agente a usar el valor especificado incluso si hay un desplazamiento almacenado. -## Leer más +## Lectura Adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/account/settings/agent/latest [2]: https://docs.datadoghq.com/es/observability_pipelines/ -[3]: /es/agent/kubernetes/log/ -[4]: /es/agent/docker/log/ +[3]: /es/containers/kubernetes/log/ +[4]: /es/containers/docker/log/ [5]: /es/agent/configuration/agent-configuration-files/ -[6]: /es/agent/logs/log_transport/ -[7]: /es/agent/configuration/agent-commands/#restart-the-agent -[8]: /es/agent/configuration/agent-commands/#agent-status-and-information -[9]: /es/logs/guide/log-collection-troubleshooting-guide/#permission-issues-tailing-log-files' -[10]: /es/tracing/ -[11]: /es/getting_started/tagging/unified_service_tagging -[12]: /es/metrics/custom_metrics/#overview -[13]: /es/getting_started/tagging/ \ No newline at end of file +[6]: https://github.com/DataDog/datadog-agent/blob/master/pkg/config/config_template.yaml +[7]: /es/agent/logs/log_transport/ +[8]: /es/agent/configuration/agent-commands/#restart-the-agent +[9]: /es/agent/configuration/agent-commands/#agent-status-and-information +[10]: /es/logs/guide/log-collection-troubleshooting-guide/#permission-issues-tailing-log-files +[11]: /es/tracing/ +[12]: /es/getting_started/tagging/unified_service_tagging +[13]: /es/metrics/custom_metrics/#overview +[14]: /es/getting_started/tagging/ \ No newline at end of file diff --git a/content/es/agent/logs/advanced_log_collection.md b/content/es/agent/logs/advanced_log_collection.md index 88805e4af60..744c9ad5505 100644 --- a/content/es/agent/logs/advanced_log_collection.md +++ b/content/es/agent/logs/advanced_log_collection.md @@ -2,65 +2,65 @@ algolia: tags: - advanced log filter -description: Utiliza el Datadog Agent para recopilar tus logs y enviarlos a Datadog +description: Utiliza el Agente de Datadog para recopilar tus registros y enviarlos + a Datadog further_reading: - link: /logs/guide/getting-started-lwl/ tag: Documentación - text: Empezando con Logging without LimitsTM + text: Comenzando con Logging without Limits™ - link: /logs/guide/how-to-set-up-only-logs/ tag: Documentación - text: Utiliza el Datadog Agent solo para la recopilación de logs + text: Utiliza el Agente de Datadog solo para la recopilación de registros - link: /logs/log_configuration/processors tag: Documentación - text: Descubre cómo procesar tus logs + text: Descubre cómo procesar tus registros - link: /logs/log_configuration/parsing tag: Documentación - text: Obtener más información sobre el análisis + text: Aprende más sobre el parseo - link: /logs/live_tail/ tag: Documentación - text: Función de rastreo en directo de Datadog + text: Funcionalidad de seguimiento de las últimas líneas de Datadog - link: /logs/explorer/ tag: Documentación - text: Aprender a explorar tus logs + text: Ve cómo explorar tus registros - link: /glossary/#tail tag: Glosario - text: Entrada del glosario para "rastreo" -title: Configuraciones avanzadas de recopilación de logs + text: Entrada del glosario para "tail" +title: Configuraciones avanzadas de recopilación de registros --- - -Después de establecer la [recopilación de logs][1], puedes personalizar la configuración de la recopilación: -- [Filtrar logs](#filter-logs) - - [Excluir en la coincidencia](#exclude-at-match) - - [Incluir en la coincidencia](#include-at-match) - - [Excluir truncado](#excluir-truncado) -- [Limpia los datos confidenciales de tus logs](#scrub-sensitive-data-from-your-logs) -- [Agregación multilínea](#manually-aggregate-multi-line-logs) -- [Agregar automáticamente logs multilínea](#automatically-aggregate-multi-line-logs) -- [Reglas de procesamiento de logs de uso común](#commonly-used-log-processing-rules) -- [Rastrear directorios utilizando comodines](#tail-directories-using-wildcards) - - [Priorizar los archivos supervisados por tiempo de modificación](#prioritize-tailed-files-by-modification-time) -- [Cifrado de archivos de log](#log-file-encodings) -- [Reglas de procesamiento global](#global-processing-rules) -- [Referencias adicionales](#further-reading) - -Para aplicar una regla de procesamiento a todos los logs que recopila el Datadog Agent, consulta la sección [Reglas de procesamiento generales](#global-processing-rules). +Después de configurar [la recopilación de registros][1], puedes personalizar tu configuración de recopilación: +- [Filtrar registros](#filter-logs) + - [Excluir en coincidencia](#exclude-at-match) + - [Incluir en coincidencia](#include-at-match) + - [Excluir truncados](#exclude-truncated) +- [Eliminar datos sensibles de tus registros](#scrub-sensitive-data-from-your-logs) +- [Agregación de múltiples líneas](#manually-aggregate-multi-line-logs) +- [Agregar automáticamente registros de múltiples líneas](#automatically-aggregate-multi-line-logs) +- [Reglas de procesamiento de registros comúnmente utilizadas](#commonly-used-log-processing-rules) +- [Realizar seguimiento de las últimas líneas en directorios utilizando comodines](#tail-directories-using-wildcards) + Prioriza los archivos que se están siguiendo según su tiempo de modificación. +- [Codificaciones de archivos de registro](#log-file-encodings) +- [Reglas de procesamiento globales](#global-processing-rules) +- [Lectura adicional](#further-reading) + +Para aplicar una regla de procesamiento a todos los registros recopilados por un Agente de Datadog, consulta la sección [Reglas de procesamiento globales](#global-processing-rules). **Notas**: -- Si configuras reglas de procesamiento multilínea, se aplicarán secuencialmente, de forma que cada una se aplicará al resultado de la anterior. -- Los patrones de las reglas de procesamiento se deben ajustar a la [sintaxis de la expresión regular de Golang][2]. -- El parámetro `log_processing_rules` se utiliza en las configuraciones de la integración para personalizar la configuración de la recopilación de logs. Mientras que en la [configuración principal][5] del Agent, el parámetro `processing_rules` se utiliza para definir reglas de procesamiento generales. +- Si configura múltiples reglas de procesamiento, se aplican secuencialmente y cada regla se aplica sobre el resultado de la anterior. +- Los patrones de reglas de procesamiento deben ajustarse a la [sintaxis de regexp de Golang][2]. +- El parámetro `log_processing_rules` se utiliza en configuraciones de integración para personalizar su configuración de recopilación de registros. Mientras estés en la [configuración principal del Agente][5], el parámetro `processing_rules` se utiliza para definir reglas de procesamiento globales. -## Filtrar logs +## Filtrar registros {#filter-logs} -Para enviar solo un subconjunto específico de logs a Datadog, utiliza el parámetro `log_processing_rules` en el archivo de configuración con el tipo `exclude_at_match` o `include_at_match`. +Para enviar solo un subconjunto específico de registros a Datadog, utiliza el parámetro `log_processing_rules` en tu archivo de configuración con el tipo `exclude_at_match` o `include_at_match`. -### Excluir si hay coincidencia +### Excluir en coincidencia {#exclude-at-match} | Parámetro | Descripción | |--------------------|----------------------------------------------------------------------------------------------------| -| `exclude_at_match` | Si el patrón especificado aparece en el mensaje, se excluye el log y no se envía a Datadog. | +| `exclude_at_match` | Si el patrón especificado está contenido en el mensaje, el registro se excluye y no se envía a Datadog. | -Por ejemplo, para **excluir** los logs que contienen una dirección de correo electrónico de Datadog, utiliza `log_processing_rules` de la siguiente manera: +Por ejemplo, para **filtrar** registros que contengan una dirección de correo electrónico de Datadog, utiliza lo siguiente `log_processing_rules`: {{< tabs >}} {{% tab "Archivo de configuración" %}} @@ -82,10 +82,10 @@ logs: {{% tab "Docker" %}}
-Para obtener más información sobre la configuración del Agent, consulta Gestión de la detección de contenedores. +Para más información sobre la configuración del Agente, consulta Gestión del Descubrimiento de Contenedores.
-En un entorno de Docker, utiliza la etiqueta (label) `com.datadoghq.ad.logs` en el **contenedor que envíe los logs que quieres filtrar** para especificar el parámetro `log_processing_rules`. Por ejemplo: +En un entorno de Docker, use la etiqueta `com.datadoghq.ad.logs` en el **contenedor que envía los registros que desea filtrar** para especificar el `log_processing_rules`, por ejemplo: ```yaml labels: @@ -102,17 +102,17 @@ En un entorno de Docker, utiliza la etiqueta (label) `com.datadoghq.ad.logs` en ``` **Nota**: -- Escapa los caracteres de expresión regular en tus patrones cuando utilices etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. -- El valor de la etiqueta debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. +- Escapa los caracteres regex en tus patrones al usar etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{% tab "Kubernetes" %}}
-Para obtener más información sobre la configuración del Agent, consulta Gestión de la detección de contenedores. +Para más información sobre la configuración del Agente, consulta Gestión del Descubrimiento de Contenedores.
-Para configurar Autodiscovery para la recopilación de logs de contenedor de un contenedor dado (con el nombre `CONTAINER_NAME`) dentro de tu pod, añade las siguientes anotaciones a las `log_processing_rules` de tu pod: +Para configurar usando Autodiscovery para recopilar registros de un contenedor específico (con el nombre `CONTAINER_NAME`) dentro de tu pod, agrega las siguientes anotaciones a tu pod `log_processing_rules`: ```yaml apiVersion: apps/v1 @@ -145,20 +145,20 @@ spec: ``` **Nota**: -- Escapa los caracteres de expresión regular de tus patrones cuando utilices anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. -- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. +- Escapa los caracteres regex en tus patrones al usar anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debe incluir comas finales ni comentarios. {{% /tab %}} {{< /tabs >}} -### Incluir si hay coincidencia +### Incluir en coincidencia {#include-at-match} | Parámetro | Descripción | |--------------------|-----------------------------------------------------------------------------------| -| `include_at_match` | Solo se enviarán a Datadog aquellos logs que tengan un mensaje con el patrón especificado. Si se definen varias reglas `include_at_match`, deberán coincidir todos los patrones de reglas para que se incluya el log. | +| `include_at_match` | Solo se envían a Datadog los registros con un mensaje que incluya el patrón especificado. Si se definen múltiples `include_at_match` reglas, todos los patrones de las reglas deben coincidir para que el registro sea incluido. | -Por ejemplo, utiliza la siguiente configuración del parámetro `log_processing_rules` para **incluir** los logs que contienen una dirección de correo electrónico de Datadog: +Por ejemplo, use la siguiente `log_processing_rules` configuración para **filtrar en** registros que contengan una dirección de correo electrónico de Datadog: {{< tabs >}} {{% tab "Archivo de configuración" %}} @@ -176,7 +176,7 @@ logs: pattern: \w+@datadoghq.com ``` -Si quieres que coincidan uno o varios patrones, debes definirlos en una única expresión: +Si deseas coincidir uno o más patrones, debes definirlos en una sola expresión: ```yaml logs: @@ -190,7 +190,7 @@ logs: pattern: abc|123 ``` -Si los patrones son demasiado largos para caber en una sola línea de forma legible, puedes distribuirlos en varias líneas: +Si los patrones son demasiado largos para caber legiblemente en una sola línea, puedes dividirlos en múltiples líneas: ```yaml logs: @@ -209,7 +209,7 @@ logs: {{% /tab %}} {{% tab "Docker" %}} -En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el contenedor que envía los logs que quieres filtrar, para especificar el parámetro`log_processing_rules`. Por ejemplo: +En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el contenedor que está enviando los registros que deseas filtrar, para especificar el `log_processing_rules`. Por ejemplo: ```yaml labels: @@ -226,13 +226,13 @@ En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el conte ``` **Nota**: -- Escapa los caracteres de expresión regular en tus patrones cuando utilices etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. -- El valor de la etiqueta debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. +- Escape de caracteres regex en sus patrones al usar etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debe incluir comas finales ni comentarios. {{% /tab %}} {{% tab "Kubernetes" %}} -En un entorno de Kubernetes, utiliza la anotación de pod `ad.datadoghq.com` en tu pod para definir el parámetro `log_processing_rules`. Por ejemplo: +En un entorno de Kubernetes, utiliza la anotación del pod `ad.datadoghq.com` en tu pod para especificar el `log_processing_rules`. Por ejemplo: ```yaml apiVersion: apps/v1 @@ -265,19 +265,19 @@ spec: ``` **Nota**: -- Escapa los caracteres de expresión regular de tus patrones cuando utilices anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. -- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. +- Escape de caracteres regex en sus patrones al usar anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debe incluir comas finales ni comentarios. {{% /tab %}} {{< /tabs >}} -### Excluir truncado +### Excluir truncados {#exclude-truncated} | Parámetro | Descripción | |---------------------|--------------------------------------------------------------------| -| `exclude_truncated` | Cuando está presente, excluye los logs truncados y no los envía a Datadog. La regla `exclude_truncated` está disponible a partir del Agent v7.69. | +| `exclude_truncated` | Cuando está presente, excluye registros truncados y no los envía a Datadog. La regla `exclude_truncated` está disponible a partir de la versión del Agente v7.69. | -Por ejemplo, para **filtrar** logs truncados: +Por ejemplo, para **filtrar** registros truncados: {{< tabs >}} {{% tab "Archivo de configuración" %}} @@ -295,7 +295,7 @@ logs: {{% /tab %}} {{% tab "Docker" %}} -En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el contenedor que envía los logs que quieres filtrar, para especificar el parámetro`log_processing_rules`. Por ejemplo: +En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el contenedor que está enviando los registros que deseas filtrar, para especificar el `log_processing_rules`. Por ejemplo: ```yaml labels: @@ -314,7 +314,7 @@ En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en el conte {{% /tab %}} {{% tab "Kubernetes" %}} -En un entorno de Kubernetes, utiliza la anotación de pod `ad.datadoghq.com` en tu pod para definir el parámetro `log_processing_rules`. Por ejemplo: +En un entorno de Kubernetes, utiliza la anotación del pod `ad.datadoghq.com` en tu pod para especificar el `log_processing_rules`. Por ejemplo: ```yaml apiVersion: apps/v1 @@ -349,13 +349,13 @@ spec: {{% /tab %}} {{< /tabs >}} -## Limpia los datos confidenciales de tus logs +## Eliminar datos sensibles de tus registros {#scrub-sensitive-data-from-your-logs} -Si tus logs contienen información confidencial que es necesario ocultar, configura el Datadog Agent para limpiar secuencias confidenciales y utiliza el parámetro `log_processing_rules` en tu archivo de configuración con el tipo `mask_sequences`. +Si tus registros contienen información sensible que necesita ser redactada, configura el Agente de Datadog para eliminar secuencias sensibles utilizando el parámetro `log_processing_rules` en tu archivo de configuración con el tipo `mask_sequences`. -Esto reemplazará todos los grupos coincidentes con el valor del parámetro `replace_placeholder`. +Esto reemplaza todos los grupos coincidentes con el valor del parámetro `replace_placeholder`. -Por ejemplo, para ocultar los números de tarjetas de crédito: +Por ejemplo, para redactar números de tarjetas de crédito: {{< tabs >}} {{% tab "Archivo de configuración" %}} @@ -377,7 +377,7 @@ logs: {{% /tab %}} {{% tab "Docker" %}} -En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en tu contenedor para especificar el parámetro `log_processing_rules`. Por ejemplo: +En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en tu contenedor para especificar el `log_processing_rules`. Por ejemplo: ```yaml labels: @@ -395,13 +395,13 @@ En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en tu conte ``` **Nota**: -- Escapa los caracteres de expresión regular en tus patrones cuando utilices etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. -- El valor de la etiqueta debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. +- Escapa los caracteres regex en tus patrones al usar etiquetas. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la etiqueta debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{% tab "Kubernetes" %}} -En un entorno de Kubernetes, utiliza la anotación de pod `ad.datadoghq.com` en tu pod para definir el parámetro `log_processing_rules`. Por ejemplo: +En un entorno de Kubernetes, utiliza la anotación del pod `ad.datadoghq.com` en tu pod para especificar el `log_processing_rules`. Por ejemplo: ```yaml apiVersion: apps/v1 @@ -435,36 +435,36 @@ spec: ``` **Nota**: -- Escapa los caracteres de expresión regular de tus patrones cuando utilices anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. -- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. +- Escapa los caracteres regex en tus patrones al usar anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debes incluir comas finales ni comentarios. {{% /tab %}} {{< /tabs >}} -A partir de la versión 7.17 o posterior del Agent, la cadena `replace_placeholder` puede ampliar las referencias para capturar grupos como `$1`, `$2`, etc. Si quieres que una cadena vaya después del grupo de captura sin espacio de separación, utiliza el formato `${}`. +Con la versión del Agente 7.17+, la cadena `replace_placeholder` puede expandir referencias a grupos de captura como `$1`, `$2` y así sucesivamente. Si deseas que una cadena siga al grupo de captura sin espacio entre ellos, utiliza el formato `${}`. -Por ejemplo, para limpiar información de usuario del log`User email: foo.bar@example.com`, utiliza: +Por ejemplo, para eliminar información del usuario del registro `User email: foo.bar@example.com`, utiliza: * `pattern: "(User email: )[^@]*@(.*)"` * `replace_placeholder: "$1 masked_user@${2}"` -Así, se enviará el siguiente log a Datadog: `User email: masked_user@example.com` +Esto envía el siguiente registro a Datadog: `User email: masked_user@example.com` -## Agregar automáticamente logs multilínea +## Agrega automáticamente registros de varias líneas {#automatically-aggregate-multi-line-logs} -La detección multilínea automática es útil cuando se tienen muchas fuentes de logs con formatos complejos o cuando no se dispone de tiempo para configurar cada fuente individualmente. Esta función detecta y agrega automáticamente los logs multilínea sin necesidad de escribir patrones de expresión regular (regex) personalizados. +La detección automática de varias líneas es útil cuando tienes muchas fuentes de registro con formatos complejos o cuando no tienes tiempo para configurar cada fuente individualmente. Esta función detecta y agrega automáticamente registros de varias líneas sin requerir que escribas patrones regex personalizados. -Consulta la documentación [Detección y agregación multilínea automática][7]. +Consulta la documentación de [Detección y Agregación Automática de Varias Líneas][7]. -Para la compatibilidad legacy de la función, consulta la documentación [Detección y agregación multilínea automática (Legacy)][8]. +Para soporte legado de la función, consulta la documentación de [Detección y Agregación Automática de Varias Líneas (Legado)][8]. -## Agregar manualmente logs multilínea +## Agrega manualmente registros de varias líneas {#manually-aggregate-multi-line-logs} -Las reglas multilínea manuales te ofrecen un control preciso de la agregación de logs cuando conoces tus formatos de logs. Esta estrategia es ideal para garantizar un procesamiento coherente de los logs con patrones regex personalizados adaptados a tu estructura de log específica. +Las reglas manuales de varias líneas te brindan un control preciso sobre la agregación de registros cuando conoces tus formatos de registro. Este enfoque es ideal para asegurar un procesamiento consistente de registros con patrones regex personalizados adaptados a tu estructura de registro específica. -Si tus logs no se envían en JSON y quieres agregar varias líneas en una sola entrada, configura el Datadog Agent para que detecte un log nuevo mediante un patrón de expresión regular específico en lugar de tener un log por línea. Utiliza el tipo `multi_line` en el parámetro `log_processing_rules` para agregar todas las líneas en una sola entrada hasta que se vuelva a detectar el patrón dado. +Si tus registros no se envían en JSON y deseas agregar varias líneas en una sola entrada, configura el Agente de Datadog para detectar un nuevo registro utilizando un patrón regex específico en lugar de tener un registro por línea. Utiliza el tipo `multi_line` en el parámetro `log_processing_rules` para agregar todas las líneas en una sola entrada hasta que se detecte nuevamente el patrón dado. -Por ejemplo, cada línea de log de Java empieza con una marca de tiempo en formato `yyyy-dd-mm`. Estas líneas incluyen un stack trace que puede enviarse como dos logs: +Por ejemplo, cada línea de registro de Java comienza con una marca de tiempo en formato `yyyy-dd-mm`. Estas líneas incluyen una traza de pila que puede enviarse como dos registros: ```text 2018-01-03T09:24:24.983Z UTC Exception in thread "main" java.lang.NullPointerException @@ -477,7 +477,7 @@ Por ejemplo, cada línea de log de Java empieza con una marca de tiempo en forma {{< tabs >}} {{% tab "Archivo de configuración" %}} -Para enviar los logs del ejemplo anterior con un archivo de configuración, utiliza `log_processing_rules` de la siguiente manera: +Para enviar los registros de ejemplo anteriores con un archivo de configuración, utiliza lo siguiente `log_processing_rules`: ```yaml logs: @@ -494,7 +494,7 @@ logs: {{% /tab %}} {{% tab "Docker" %}} -En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en tu contenedor para especificar el parámetro `log_processing_rules`. Por ejemplo: +En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en tu contenedor para especificar el `log_processing_rules`. Por ejemplo: ```yaml labels: @@ -513,7 +513,7 @@ En un entorno de Docker, utiliza la etiqueta `com.datadoghq.ad.logs` en tu conte {{% /tab %}} {{% tab "Kubernetes" %}} -En un entorno de Kubernetes, utiliza la anotación de pod `ad.datadoghq.com` en tu pod para definir el parámetro `log_processing_rules`. Por ejemplo: +En un entorno de Kubernetes, utiliza la anotación del pod `ad.datadoghq.com` en tu pod para especificar el `log_processing_rules`. Por ejemplo: ```yaml apiVersion: apps/v1 @@ -546,57 +546,57 @@ spec: ``` **Nota**: -- Escapa los caracteres de expresión regular de tus patrones cuando realices agregaciones multilínea con anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. -- El valor de la anotación debe seguir la sintaxis de JSON, lo que significa que no debes incluir comas finales ni comentarios. +- Escapa los caracteres regex en tus patrones al realizar la agregación de varias líneas con anotaciones de pod. Por ejemplo, `\d` se convierte en `\\d`, `\w` se convierte en `\\w`. +- El valor de la anotación debe seguir la sintaxis JSON, lo que significa que no debe incluir comas finales ni comentarios. {{% /tab %}} {{< /tabs >}} -
¡Importante! Los patrones de expresión regular para logs multilíneas deben comenzar al principio de un log. Los patrones no pueden coincidir a mitad de línea. Un patrón que nunca coincida puede causar pérdidas de líneas de logs .

La recopilación de logs funciona con una precisión de hasta milisegundos. Los logs con mayor precisión no se envían aunque coincidan con el patrón.
+
¡Importante! Los patrones regex para registros de varias líneas deben comenzar en el inicio de un registro. Los patrones no pueden coincidir a mitad de línea. Un patrón que nunca coincide puede causar pérdidas de líneas de registro.

La recolección de registros funciona con una precisión de hasta milisegundos. Los registros con mayor precisión no se envían, incluso si coinciden con el patrón.
Más ejemplos: -| **Cadena sin formato** | **Patrón** | +| **Cadena cruda** | **Patrón** | |--------------------------|---------------------------------------------------| | 14:20:15 | `\d{2}:\d{2}:\d{2}` | -| 10/11/2014 | `\d{2}\/\d{2}\/\d{4}` | -| Jueves 16 de junio de 2016 08:29:03 | `\w{3}\s+\w{3}\s+\d{2}\s\d{2}:\d{2}:\d{2}\s\d{4}` | +| 11/10/2014 | `\d{2}\/\d{2}\/\d{4}` | +| Jue Jun 16 08:29:03 2016 | `\w{3}\s+\w{3}\s+\d{2}\s\d{2}:\d{2}:\d{2}\s\d{4}` | | 20180228 | `\d{8}` | | 2020-10-27 05:10:49.657 | `\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d{3}` | | {"date": "2018-01-02" | `\{"date": "\d{4}-\d{2}-\d{2}` | -## Reglas de procesamiento de logs habitualmente utilizadas +## Reglas de procesamiento de registros {#commonly-used-log-processing-rules} -Consulta las [preguntas frecuentes sobre las reglas de procesamiento de logs habitualmente utilizadas][4] para ver una lista de ejemplos. +Consulte la [FAQ de Reglas de Procesamiento de Registros Comúnmente Utilizadas][4] para ver una lista de ejemplos. -## Rastrear directorios utilizando comodines +## Seguimiento de las últimas líneas de directorios usando comodines {#tail-directories-using-wildcards} -Si tus archivos de log se han etiquetado por fecha o si todos ellos se encuentran almacenados en el mismo directorio, configura el Datadog Agent para monitorizarlos a todos y detectar de manera automática los nuevos mediante comodines en el atributo `path`. Si quieres excluir algunos archivos coincidentes con la ruta `path` seleccionada, inclúyelos en el atributo `exclude_paths`. +Si sus archivos de registro están etiquetados por fecha o todos almacenados en el mismo directorio, configure su Agente de Datadog para monitorearlos todos y detectar automáticamente los nuevos usando comodines en el atributo `path`. Si desea excluir algunos archivos que coincidan con el `path` elegido, enumérelos en el atributo `exclude_paths`. -* Al utilizar `path: /var/log/myapp/*.log`: - * Habrá coincidencia con todos los archivos `.log` contenidos en el directorio `/var/log/myapp/`. - * No habrá coincidencia con `/var/log/myapp/myapp.conf`. +* Usando `path: /var/log/myapp/*.log`: + * Coincide con todos los `.log` archivos contenidos en el directorio `/var/log/myapp/`. + * No coincide con `/var/log/myapp/myapp.conf`. -* Al utilizar `path: /var/log/myapp/*/*.log`: - * Habrá coincidencia con `/var/log/myapp/log/myfile.log`. - * Habrá coincidencia con `/var/log/myapp/errorLog/myerrorfile.log`. - * No habrá coincidencia con `/var/log/myapp/mylogfile.log`. +* Usando `path: /var/log/myapp/*/*.log`: + * Coincide con `/var/log/myapp/log/myfile.log`. + * Coincide con `/var/log/myapp/errorLog/myerrorfile.log` + * No coincide con `/var/log/myapp/mylogfile.log`. Ejemplo de configuración para Linux: ```yaml logs: - type: file - path: /var/log/myapp/*.log + path: /var/log/myapp/log/*.log exclude_paths: - - /var/log/myapp/debug.log - - /var/log/myapp/trace.log + - /var/log/myapp/log/debug.log + - /var/log/myapp/log/trace.log service: mywebapp source: go ``` -En el ejemplo anterior, hay coincidencia con `/var/log/myapp/log/myfile.log` y se excluyen `/var/log/myapp/log/debug.log` y `/var/log/myapp/log/trace.log`. +El ejemplo anterior coincide con `/var/log/myapp/log/myfile.log` y excluye `/var/log/myapp/log/debug.log` y `/var/log/myapp/log/trace.log`. Ejemplo de configuración para Windows: @@ -610,25 +610,25 @@ logs: source: csharp ``` -En el ejemplo anterior, hay coincidencia con `C:\\MyApp\\MyLog.log` y se excluyen `C:\\MyApp\\MyLog.20230101.log` y `C:\\MyApp\\MyLog.20230102.log`. +El ejemplo anterior coincide con `C:\\MyApp\\MyLog.log` y excluye `C:\\MyApp\\MyLog.20230101.log` y `C:\\MyApp\\MyLog.20230102.log`. **Nota**: -- El Agent requiere permisos de lectura y ejecución en un directorio para enumerar todos los archivos disponibles en él. -- Los valores de trayectoria y excluir_trayectorias son sensibles al case (incidencia). +- El Agente requiere permisos de lectura y ejecución en un directorio para listar todos los archivos disponibles en él. +- Los valores de path y exclude_paths son sensibles a mayúsculas y minúsculas. -### Priorizar los archivos supervisados por tiempo de modificación +### Prioriza los archivos a los que se realiza seguimiento de las últimas líneas por tiempo de modificación {#prioritize-tailed-files-by-modification-time} -Para usar esta función, se necesita la versión 7.40.0 o posterior del Agent. +Esta función requiere la versión 7.40.0 o superior del Agente. -El Agent limita el número de archivos que puede supervisar simultáneamente con el parámetro `logs_config.open_files_limit`. Si el número de archivos que coinciden con las sources (fuentes) de logs configuradas (como comodines) está dentro del límite, el Agent los supervisa a todos. Si coinciden más archivos de los que permite el límite, el Agent prioriza ordenando los nombres de archivo en orden lexicográfico inverso, de modo que los archivos con marcas de tiempo más recientes o números más altos se supervisen primero. +El Agente limita cuántos archivos puede realizar seguimiento de las últimas líneas simultáneamente con el parámetro `logs_config.open_files_limit`. Si el número de archivos que coinciden con tus fuentes de registro configuradas (como comodines) está dentro del límite, el Agente realiza seguimiento de las últimas líneas de todos ellos. Si hay más archivos que coinciden de lo que permite el límite, el Agente prioriza ordenando los nombres de archivo en orden lexicográfico inverso, de modo que los archivos con marcas de tiempo más recientes o números más altos son los primeros a los que se les realiza el seguimiento de las últimas líneas. -Si los nombres de los archivos no siguen patrones secuenciales o de marca de tiempo, el orden predeterminado puede no ser el ideal. Para priorizar por tiempo de modificación, configura `logs_config.file_wildcard_selection_mode` en `by_modification_time`. Con esta configuración, el Agent ordena primero los archivos modificados más recientemente. +Si los nombres de archivo no siguen patrones secuenciales o de marcas de tiempo, el orden predeterminado puede no ser ideal. Para priorizar por tiempo de modificación en su lugar, establece `logs_config.file_wildcard_selection_mode` en `by_modification_time`. Con esta configuración, el Agente realiza seguimiento de las últimas líneas primero de los archivos modificados más recientemente. **Ejemplo**: - `open_files_limit` = 500 - Tu patrón de comodín coincide con 700 archivos. -- Con `by_name`: el Agent supervisa los 500 archivos con los nombres más altos en orden lexicográfico inverso (por ejemplo, app.log.700 hasta app.log.201). -- Con `by_modification_time`: el Agent supervisa los 500 archivos en los que se ha escrito más recientemente, independientemente de sus nombres. +- Con `by_name`: el Agente realiza seguimiento de las últimas líneas de los 500 archivos con los nombres más altos en orden lexicográfico inverso (por ejemplo, app.log.700 hasta app.log.201). +- Con `by_modification_time`: el Agente realiza seguimiento de las últimas líneas de los 500 archivos más recientemente escritos, sin importar sus nombres. ```yaml logs_enabled: true @@ -645,16 +645,18 @@ logs_config: file_wildcard_selection_mode: by_modification_time ``` -Para definir el comportamiento predeterminado, elimina la entrada `logs_config.file_wildcard_selection_mode` o defínela explícitamente como `by_name`. +Para restaurar el comportamiento predeterminado, elimine la entrada `logs_config.file_wildcard_selection_mode` o configúrela explícitamente en `by_name`. + +## Codificaciones de archivos de registro {#log-file-encodings} -## Codificaciones del archivo de logs +Por defecto, el Agente de Datadog asume que los registros utilizan codificación UTF-8. Si los registros de su aplicación utilizan una codificación diferente, especifique el parámetro `encoding` en la configuración de los registros. -De forma predeterminada, el Datadog Agent asume que los logs utilizan la codificación UTF-8. Si los logs de tu aplicación utilizan otra codificación, define el parámetro `encoding` con la configuración de logs. +La lista a continuación proporciona los valores de codificación soportados. Si proporciona un valor no soportado, el Agente ignora el valor y lee el archivo como UTF-8. + * `utf-16-le` - UTF-16 little-endian (Agente de Datadog **v6.23/v7.23**) + * `utf-16-be` - UTF-16 big-endian (Agente de Datadog **v6.23/v7.23**) + * `shift-jis` - Shift-JIS (Agente de Datadog **v6.34/v7.34**) -En la siguiente lista se indican los valores de codificación compatibles. Si indicas un valor no compatible, el Agent lo ignorará y leerá el archivo como UTF-8. - * `utf-16-le`: UTF-16 little-endian (Datadog Agent **v6.23/v7.23**) - * `utf-16-be`: UTF-16 big-endian (Datadog Agent **v6.23/v7.23**) - * `shift-jis`: Shift-JIS (Datadog Agent **v6.34/v7.34**) +
Si cambia el encoding de un archivo que el Agente está ya realizando seguimiento de las últimas líneas, puede producir caracteres distorsionados (mojibake). El Agente reanuda desde el desplazamiento de byte anterior, que puede no alinearse con los límites de caracteres después de un cambio de codificación. Para solucionar esto, rote el archivo de registro, reemplácelo o reinicie el seguimiento desde el principio de un archivo que utilice la nueva codificación. Estas acciones ayudan al Agente a comenzar con la codificación correcta.
Ejemplo de configuración: @@ -668,11 +670,11 @@ logs: encoding: utf-16-be ``` -**Nota**: El parámetro `encoding` solo resulta aplicable cuando el parámetro `type` está establecido como `file`. +**Nota**: El parámetro `encoding` solo es aplicable cuando el parámetro `type` está configurado en `file`. -## Reglas generales de procesamiento +## Reglas de procesamiento globales {#global-processing-rules} -A partir de la versión 6.10 o posterior del Datadog Agent, es posible definir las reglas de procesamiento `exclude_at_match`, `include_at_match` y `mask_sequences` de manera general en el [archivo de configuración principal][5] del Agent o mediante una variable de entorno. La regla `exclude_truncated` está disponible a partir de la versión 7.69 del Agent. +Para el Agente de Datadog v6.10+, las reglas de procesamiento `exclude_at_match`, `include_at_match` y `mask_sequences` se pueden definir globalmente en el [archivo de configuración principal del Agente][5] o a través de una variable de entorno. La regla `exclude_truncated` está disponible a partir del Agente v7.69. {{< tabs >}} {{% tab "Archivos de configuración" %}} @@ -694,16 +696,16 @@ logs_config: {{% /tab %}} {{% tab "Variable de entorno" %}} -Utiliza la variable de entorno `DD_LOGS_CONFIG_PROCESSING_RULES` para configurar reglas de procesamiento generales. Por ejemplo: +Utilice la variable de entorno `DD_LOGS_CONFIG_PROCESSING_RULES` para configurar las reglas de procesamiento globales, por ejemplo: ```shell DD_LOGS_CONFIG_PROCESSING_RULES='[{"type": "mask_sequences", "name": "mask_user_email", "replace_placeholder": "MASKED_EMAIL", "pattern" : "\\w+@datadoghq.com"}]' ``` {{% /tab %}} -{{% tab "Datadog Operator" %}} +{{% tab "Operador de Datadog" %}} -Utiliza el parámetro `spec.override.[key].env` en tu manifiesto del Datadog Operator para definir la variable de entorno `DD_LOGS_CONFIG_PROCESSING_RULES` y configurar reglas de procesamiento globales, donde `[key]` es `nodeAgent`, `clusterAgent` o `clusterChecksRunner`. Por ejemplo: +Utilice el parámetro `spec.override.[key].env` en su manifiesto del Operador de Datadog para establecer la variable de entorno `DD_LOGS_CONFIG_PROCESSING_RULES` y configurar las reglas de procesamiento globales, donde `[key]` es `nodeAgent`, `clusterAgent` o `clusterChecksRunner`. Por ejemplo: ```yaml apiVersion: datadoghq.com/v2alpha1 @@ -721,7 +723,7 @@ spec: {{% /tab %}} {{% tab "Helm" %}} -Utiliza el parámetro `datadog.env` en el Helm chart para definir la variable de entorno`DD_LOGS_CONFIG_PROCESSING_RULES` para configurar reglas de procesamiento globales Por ejemplo: +Utilice el parámetro `datadog.env` en el Helm chart para establecer la variable de entorno `DD_LOGS_CONFIG_PROCESSING_RULES` y configurar las reglas de procesamiento globales. Por ejemplo: ```yaml datadog: @@ -732,26 +734,26 @@ datadog: {{% /tab %}} {{< /tabs >}} -Todos los logs recopilados por el Datadog Agent se ven afectados por las reglas de procesamiento generales. +Todos los registros recopilados por el Agente de Datadog están afectados por las reglas de procesamiento globales. -**Nota**: El Datadog Agent no inicia el Collector de logs si existe un problema de formato en las reglas de procesamiento generales. Ejecuta el [subcomando de estado][6] del Agent para solucionar los problemas que encuentres. +**Nota**: El Agente de Datadog no inicia el recolector de registros si hay un problema de formato en las reglas de procesamiento globales. Ejecute el [subcomando de estado del Agente][6] para solucionar cualquier problema. -## FAQ sobre la agregación de logs multilínea +## Preguntas frecuentes sobre la agregación de registros de múltiples líneas {#multi-line-log-aggregation-faq} -**1. ¿Cuándo debo utilizar reglas multilínea manuales en lugar de la detección multilínea automática?** +**1. ¿Cuándo debo usar reglas manuales de múltiples líneas en lugar de la detección automática de múltiples líneas?** -Si conoces el formato de tus logs, deberías utilizar reglas multilínea manuales para un control preciso. -Si envías muchos logs multilínea y no estás seguro de su formato o no tienes medios para configurar todas las sources (fuentes) individualmente, debes utilizar la detección multilínea automática. +Si conoce el formato de sus registros, debe usar reglas manuales de múltiples líneas para un control preciso. +Si está enviando muchos registros de múltiples líneas y no está seguro de su formato o no tiene los medios para configurar todas las fuentes individualmente, debe usar la detección automática de múltiples líneas. -**2. ¿Qué ocurre cuando un patrón multilínea no coincide con ningún log?** +**2. ¿Qué sucede cuando un patrón de múltiples líneas no coincide con ningún registro?** -Todas las líneas de logs que no son JSON se procesan individualmente como entradas de logs separadas. -Todas las líneas de logs con formato JSON se tratan como una única línea de logs. Solo se admite el primer formato JSON válido y el resto se descartan. +Todas las líneas de registro que no son JSON se procesan individualmente como entradas de registro separadas. +Todas las líneas de registro en formato JSON se tratan como una única línea de registro, y solo el primer JSON válido se envía a la ingesta; el resto se descarta. -**3. ¿Qué ocurre cuando hay reglas globales y reglas específicas de una integración? -Las reglas específicas de la integración anulan por completo las reglas globales de la integración en cuestión. +**3. ¿Qué sucede cuando hay reglas globales y reglas específicas de integración?** +Las reglas específicas de integración anulan completamente las reglas globales para la integración particular. -## Referencias adicionales +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/es/agent/supported_platforms/linux.md b/content/es/agent/supported_platforms/linux.md index 92a52e2a9fd..3c17f835343 100644 --- a/content/es/agent/supported_platforms/linux.md +++ b/content/es/agent/supported_platforms/linux.md @@ -26,13 +26,13 @@ aliases: further_reading: - link: /logs/ tag: Documentación - text: Recoge tus registros + text: Reúne tus registros - link: /infrastructure/process/ tag: Documentación - text: Recoge tus procesos + text: Reúne tus procesos - link: /tracing/ tag: Documentación - text: Recoge tus trazas + text: Reúne tus trazas - link: /agent/architecture/#agent-architecture tag: Documentación text: Descubre más sobre la arquitectura del Agente @@ -44,27 +44,27 @@ title: Linux --- ## Resumen {#overview} -Esta página describe las características básicas del Agente de Datadog para entornos de Linux. Consulta la documentación de [Plataformas Soportadas][5] para la lista completa de distribuciones y versiones de Linux soportadas. +Esta página describe las características básicas del Agente de Datadog para entornos Linux. Consulta la documentación de [Plataformas Soportadas][5] para obtener la lista completa de distribuciones y versiones de Linux soportadas. -## Instala el Agente {#install-the-agent} -Para instalar el Agente en Linux, sigue las [instrucciones en la aplicación en Fleet Automation][6], y ejecuta el script generado en tus hosts. +## Instalar el Agente {#install-the-agent} +Para instalar el Agente en Linux, sigue las [instrucciones en la aplicación en Fleet Automation][6] y ejecuta el script generado en tus servidores. -{{< img src="/agent/basic_agent_usage/linux_img_july_25.png" alt="Pasos de instalación en la aplicación para el Agente de Datadog en un host de Linux." style="width:90%;">}} +{{< img src="/agent/basic_agent_usage/linux_img_july_25.png" alt="Pasos de instalación en la aplicación para el Agente de Datadog en un servidor Linux." style="width:90%;">}} -## Configura el Agente {#configure-the-agent} -El archivo de configuración del Agente de Datadog se encuentra en `/etc/datadog-agent/datadog.yaml`. Este archivo YAML contiene los detalles de conexión a nivel de host utilizados para enviar datos a Datadog, incluyendo: -- `api_key`: La [clave API de Datadog][7] de tu organización -- `site`: Región de Datadog objetivo (por ejemplo `datadoghq.com`, `datadoghq.eu`, `ddog-gov.com`) -- `proxy`: Puntos finales de proxy HTTP/HTTPS para tráfico saliente (ver [Configuración del Proxy del Agente de Datadog][8]) +## Configurar el Agente {#configure-the-agent} +El archivo de configuración del Agente de Datadog se encuentra en `/etc/datadog-agent/datadog.yaml`. Este archivo YAML contiene los detalles de conexión a nivel de servidor utilizados para enviar datos a Datadog, incluyendo: +- `api_key`: La [clave de API de Datadog][7] de tu organización +- `site`: Región objetivo de Datadog (por ejemplo `datadoghq.com`, `datadoghq.eu`, `ddog-gov.com`, `us2.ddog-gov.com`) +- `proxy`: Puntos de conexión de proxy HTTP/HTTPS para tráfico saliente (ver [Configuración del Proxy del Agente de Datadog][8]) - Etiquetas predeterminadas, nivel de registro y configuraciones de Datadog -Un archivo de referencia completamente comentado, ubicado en `/etc/datadog-agent/datadog.yaml.example`, lista todas las opciones disponibles para comparación o para copiar y pegar. Alternativamente, consulte el archivo de muestra `config_template.yaml` para todas las opciones de configuración disponibles. +Un archivo de referencia completamente comentado, ubicado en `/etc/datadog-agent/datadog.yaml.example`, enumera todas las opciones disponibles para comparación o para copiar y pegar. Alternativamente, consulta el archivo de muestra `config_template.yaml` para todas las opciones de configuración disponibles. ### Archivos de integración {#integration-files} Los archivos de configuración para integraciones se encuentran en `/etc/datadog-agent/conf.d/`. Cada integración tiene su propio subdirectorio, `.d/`, que contiene: - `conf.yaml`: La configuración activa que controla cómo la integración recopila métricas y registros -- `conf.yaml.example`: Un ejemplo que ilustra las claves y valores predeterminados soportados +- `conf.yaml.example`: Un ejemplo que ilustra las claves y los valores predeterminados soportados ## Comandos {#commands} @@ -76,16 +76,16 @@ Los archivos de configuración para integraciones se encuentran en `/etc/datadog | Reiniciar el Agente que se ejecuta como un servicio | `sudo systemctl restart datadog-agent` | | Estado del servicio del Agente | `sudo systemctl status datadog-agent` | | Página de estado del Agente en ejecución | `sudo datadog-agent status` | -| Enviar señal | `sudo datadog-agent flare` | +| Enviar flare | `sudo datadog-agent flare` | | Mostrar uso del comando | `sudo datadog-agent --help` | | Ejecutar una verificación | `sudo -u dd-agent -- datadog-agent check ` | -**Nota**: Para sistemas basados en upstart, como `CentOS/RHEL 6` o `SUSE 11`, intercambie `systemctl ` con ``. Por ejemplo, al iniciar un Agente como servicio en un `SUSE 11` sistema, usa `sudo start datadog-agent`. +**Nota**: Para sistemas basados en upstart, como `CentOS/RHEL 6` o `SUSE 11`, intercambie `systemctl ` con ``. Por ejemplo, al iniciar un Agente como un servicio en un sistema `SUSE 11`, use `sudo start datadog-agent`. ## Desinstalar el Agente {#uninstall-the-agent} -Para desinstalar el Agente, ejecuta el comando para el entorno de Linux correspondiente: +Para desinstalar el Agente, ejecute el comando para el entorno de Linux correspondiente: ### Para CentOS, Rocky, AlmaLinux, Amazon Linux, Oracle Linux y Red Hat {#for-centos-rocky-almalinux-amazon-linux-oracle-linux-and-red-hat} @@ -115,7 +115,7 @@ sudo zypper remove datadog-agent * El usuario `dd-agent` * Archivos de registro de Datadog -**Para eliminar estos elementos, ejecuta este comando después de eliminar el Agente:** +**Para eliminar estos elementos, ejecute este comando después de eliminar el Agente:** ```shell sudo userdel dd-agent \ @@ -124,7 +124,7 @@ sudo userdel dd-agent \ && sudo rm -rf /var/log/datadog/ ``` -Para desinstalar los artefactos restantes del Agente para `Debian` y `Ubuntu`, ejecuta: +Para desinstalar los artefactos restantes del Agente para `Debian` y `Ubuntu`, ejecute: ```shell sudo apt-get remove --purge datadog-agent -y @@ -134,18 +134,18 @@ sudo apt-get remove --purge datadog-agent -y ### Desinstalar Instrumentación APM de Un Solo Paso {#uninstall-single-step-apm-instrumentation} -Si instalaste el Agente con Instrumentación APM de Un Solo Paso y deseas desinstalarlo, necesitas [ejecutar comandos adicionales][9] para eliminar la Instrumentación APM. Sigue los pasos para tu [entorno específico][10]. +Si instaló el Agente con Instrumentación APM de Un Solo Paso y desea desinstalarlo, necesita [ejecutar comandos adicionales][9] para eliminar la Instrumentación APM. Siga los pasos para su [entorno específico][10]. -## Solución de problemas {#troubleshooting} +## Solución de Problemas {#troubleshooting} -Para pasos detallados, consulta [Solución de Problemas del Agente][2]. +Para pasos detallados, consulte [Solución de Problemas del Agente][2]. -## Trabajando con el Agente embebido {#working-with-the-embedded-agent} +## Trabajando con el agente embebido {#working-with-the-embedded-agent} -El Agente contiene un entorno de Python embebido en `/opt/datadog-agent/embedded/`. Binarios comunes como `python` y `pip` están contenidos dentro de `/opt/datadog-agent/embedded/bin/`. +El Agente contiene un entorno de Python embebido en `/opt/datadog-agent/embedded/`. Los binarios comunes como `python` y `pip` están contenidos dentro de `/opt/datadog-agent/embedded/bin/`. -Consulte las instrucciones sobre cómo [agregar paquetes al Agente embebido][3] para más información. +Consulte las instrucciones sobre cómo [agregar paquetes al agente embebido][3] para más información. ## Lectura adicional {#further-reading} diff --git a/content/es/containers/docker/_index.md b/content/es/containers/docker/_index.md index c078460b75c..86d4365ba7f 100644 --- a/content/es/containers/docker/_index.md +++ b/content/es/containers/docker/_index.md @@ -5,320 +5,334 @@ aliases: - /es/agent/basic_agent_usage/docker/ - /es/integrations/docker_daemon/ - /es/docker/ +description: Instala y configura el Datadog Agent para contenedores Docker y entornos + de ejecución de contenedores further_reading: - link: https://app.datadoghq.com/release-notes?category=Container%20Monitoring tag: Notas de la versión - text: ¡Échale un vistazo a las últimas versiones de Datadog Containers! (Es necesario - iniciar sesión en la aplicación). + text: ¡Consulta las últimas versiones de Datadog Containers! (Se requiere inicio + de sesión en la aplicación). - link: /agent/docker/log/ tag: Documentación - text: Recopilar tus logs de aplicación + text: Recopila los registros de tu aplicación - link: /agent/docker/apm/ tag: Documentación - text: Recopila tus trazas de aplicaciones + text: Recopila las trazas de tu aplicación - link: /agent/docker/prometheus/ tag: Documentación text: Recopila tus métricas de Prometheus - link: /agent/docker/integrations/ tag: Documentación - text: Recopila las métricas de tus aplicaciones y logs automáticamente + text: Recopila automáticamente las métricas y registros de tu aplicación - link: /agent/guide/autodiscovery-management/ tag: Documentación - text: Limita la recopilación de datos solo a un subconjunto de contenedores + text: Limita la recopilación de datos a un subconjunto de contenedores solamente - link: /agent/docker/tag/ tag: Documentación - text: Asignar etiquetas a todos los datos emitidos por un contenedor -title: Docker Agent para Docker, containerd y Podman + text: Asigna etiquetas a todos los datos emitidos por un contenedor +- link: https://learn.datadoghq.com/courses/agent-on-docker + tag: Centro de Aprendizaje + text: El Agente en Docker +title: Agente de Docker de Datadog para Docker, containerd y Podman --- +## Resumen {#overview} -## Información general +El Agente de Docker de Datadog es una versión del [Agente de Datadog][1] que soporta Docker, containerd y entornos de Podman. Para las versiones de Docker soportadas, consulta [Plataformas Soportadas][2]. -El Datadog Docker Agent es la versión en contenedores del [Agent][1] host. El Docker Agent admite los tiempos de ejecución de Docker, containerd y Podman. La [imagen de Docker][2] oficial está disponible en Docker Hub, Google Container Registry (GCR) y ECR-Public. +## Instala el Agente de Docker de Datadog {#install-the-datadog-docker-agent} +Sigue el [flujo de instalación en la aplicación en Datadog][3]. Este es el flujo recomendado, que te ayuda a crear tu `docker run` comando con tu clave de API, las configuraciones mínimas requeridas y opciones para varias características de Datadog. -
Docker Hub está sujeto a límites en la tasa de extracción de imágenes. Si no eres cliente de Docker Hub, Datadog recomienda que actualices tu configuración de Datadog Agent y Cluster Agent para extraer desde GCR o ECR. Para obtener instrucciones, consulta Cambiar tu registro de contenedor.
+{{< img src="/agent/basic_agent_usage/agent_install_docker.png" alt="Pasos de instalación en la aplicación para el Agente de Datadog en Docker." style="width:90%;">}} -Las imágenes están disponibles para las arquitecturas de 64-bit x86 y Arm v8. +## Ejecutar manualmente el Agente de Docker de Datadog {#manually-run-the-datadog-docker-agent} -| ECR-Public | Google Container Registry | Docker Hub | -|----------------------------------------------------------------------|-----------------------------------------------------------------|--------------------------------------------------------| -| [Agent v6+][4]
`docker pull public.ecr.aws/datadog/agent` | [Agent v6+][3]
`docker pull gcr.io/datadoghq/agent` | [Agent v6+][2]
`docker pull datadog/agent` | -| [Agent v5][7]
`docker pull public.ecr.aws/datadog/docker-dd-agent`| [Agent v5][6]
`docker pull gcr.io/datadoghq/docker-dd-agent` | [Agent v5][5]
`docker pull datadog/docker-dd-agent` | +El flujo de Fleet Automation ayuda a configurar tu contenedor del Agente de Datadog con las instrucciones recomendadas por Datadog. Para configurar esto manualmente, consulta los ejemplos a continuación. - -Los comandos de CLI en esta página son para el tiempo de ejecución de Docker. Sustituye `docker` por `nerdctl` para el tiempo de ejecución del containerd, o `podman` para el tiempo de ejecución del Podman. - -## Ajustes - -Si no has instalado Docker Agent, sigue las [instrucciones de instalación dentro de la aplicación][8] o consulta lo que se indica a continuación. Para [versiones compatibles][9], consulta la documentación de Agent. Utiliza el comando de instalación de un solo paso. Sustituye `` por tu [clave API de Datadog][10], y `` por {{< region-param key=dd_site code="true" >}}. +Utiliza el siguiente comando para ejecutar el Agente como un contenedor de Docker una vez en cada servidor que deseas monitorear. Reemplaza `` con tu clave de API de Datadog y `` con tu {{< region-param key=dd_site code="true" >}}. {{< tabs >}} -{{% tab "Estándar" %}}a +{{% tab "Linux" %}} ```shell -docker run -d --cgroupns host --pid host --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= gcr.io/datadoghq/agent:7 +docker run -d --cgroupns host --pid host --name dd-agent \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + -v /proc/:/host/proc/:ro \ + -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ + -e DD_SITE= \ + -e DD_API_KEY= \ + registry.datadoghq.com/agent:7 +``` +{{% /tab %}} +{{% tab "Windows" %}} +El Agente de Datadog es compatible con Windows Server 2019 (LTSC) y Windows Server 2022 (LTSC). El siguiente comando de PowerShell ejecuta el contenedor del Agente de Datadog: + +```powershell +docker run -d --name dd-agent ` + -v \\.\pipe\docker_engine:\\.\pipe\docker_engine ` + -e DD_SITE= ` + -e DD_API_KEY= ` + registry.datadoghq.com/agent:7 ``` +{{% /tab %}} +{{< /tabs >}} -Para ECR-public: +**Nota**: Para Docker Compose, consulta [Compose y el Agente de Datadog][4]. Para desplegar el Agente en Podman, consulta las instrucciones en [Usando la integración de Docker con el tiempo de ejecución de contenedores Podman][5]. -```shell -docker run -d --cgroupns host --pid host --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= public.ecr.aws/datadog/agent:7 -``` +## Integrations {#integrations} -**Nota**: Si estás usando un registro que no sea ni GCR ni ECR-public, asegúrate de actualizar la imagen. +Después de que el Agente de Docker de Datadog esté en funcionamiento, puedes [configurar integraciones de Datadog][6] para recopilar métricas y registros automáticamente de tus contenedores de aplicación. La [Autodiscovery de Contenedores][7] de Datadog te permite definir la configuración de seguimiento para recursos dinámicos en sistemas con contenedores. -**Nota**: Para algunas de las funciones proporcionadas por system-probe, incluida la monitorización de redes, el agent de seguridad y el check de oom_kill, también necesitas montar el archivo `/etc/os-release` con `-v /etc/os-release:/host/etc/os-release:ro`. If your Linux distribution does not include an `/etc/os-release` file, mount the equivalent one provided, for example `/etc/redhat-release` or `/etc/fedora-release`. +## Opciones de configuración para el Agente de Docker de Datadog {#configuration-options-for-the-datadog-docker-agent} -{{% /tab %}} -{{% tab "Amazon Linux" %}} +### Registros de contenedores {#container-registries} -Para Amazon Linux < v2: +Las imágenes están disponibles para arquitecturas de 64 bits x86 y Arm v8. Datadog publica imágenes de contenedores en el Registro de Contenedores de Datadog, Google Artifact Registry (GAR), Amazon ECR, Azure ACR y Docker Hub: -```shell -docker run -d --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= gcr.io/datadoghq/agent:7 -``` -Para ECR-public: +{{% container-images-table %}} -```shell -docker run -d --cgroupns host --pid host --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= public.ecr.aws/datadog/agent:7 -``` +Por defecto, las instrucciones anteriores obtienen la imagen del Registro de Contenedores de Datadog (`registry.datadoghq.com`). Si usas este registro, asegúrate de que tu firewall permita el tráfico a `us-docker.pkg.dev/datadog-prod/public-images`, ya que el registro puede redirigir las solicitudes a esta URL. -Para Amazon Linux v2: +
Docker Hub está sujeto a límites de tasa de extracción de imágenes. Si no eres cliente de Docker Hub, Datadog recomienda que actualices tu configuración para extraer de otro registro. Para instrucciones, consulta Cambiando tu registro de contenedores.
-```shell -docker run -d --cgroupns host --pid host --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= gcr.io/datadoghq/agent:7 -``` -Para ECR-public: +### Variables de entorno {#environment-variables} -```shell -docker run -d --cgroupns host --pid host --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= public.ecr.aws/datadog/agent:7 -``` +En un entorno no contenedorizado, las opciones de configuración para el Agente de Datadog se establecen en [`datadog.yaml`][8]. Para el Agente de Docker de Datadog, puedes establecer `datadog.yaml` opciones de configuración a través de variables de entorno. -{{% /tab %}} -{{% tab "Windows" %}} +#### Opciones globales {#global-options} -El Datadog Agent es compatible con Windows Server 2019 (LTSC) y Windows Server 2022 (LTSC). +`DD_API_KEY` +: Tu clave de API de Datadog (**requerida**). -```shell -docker run -d --name dd-agent -e DD_SITE= -e DD_API_KEY= -v \\.\pipe\docker_engine:\\.\pipe\docker_engine gcr.io/datadoghq/agent -``` +`DD_ENV` +: Establece la etiqueta global `env` para todos los datos emitidos. -Para ECR-Public: +`DD_HOSTNAME` +: Nombre de servidor a utilizar para métricas (si la autodetección falla). -```shell -docker run -d --name dd-agent -e DD_SITE= -e DD_API_KEY= -v \\.\pipe\docker_engine:\\.\pipe\docker_engine public.ecr.aws/datadog/agent -``` +`DD_HOSTNAME_FILE` +: En algunos entornos, la autodetección del nombre de servidor no es adecuada, y no puedes establecer el valor mediante variables de entorno. En estos casos, puedes usar un archivo en el servidor para proporcionar un valor apropiado. Si `DD_HOSTNAME` se configura con un valor no vacío, esta opción se ignora. -{{% /tab %}} -{{% tab "Unprivileged" %}} +`DD_TAGS` +: Etiquetas de servidor separadas por espacios. Por ejemplo: `key1:value1 key2:value2`. -(Opcional) Para ejecutar una instalación no privilegiada, añade `--group-add=` al comando de instalación, por ejemplo: +`DD_SITE` +: Sitio de destino para tus métricas, trazas y registros. Establece tu sitio de Datadog en: `{{< region-param key="dd_site" >}}`. Defaults to `datadoghq.com`. -```shell -docker run -d --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= gcr.io/datadoghq/agent:7 --group-add= -``` -Para ECR-Public: +`DD_DD_URL` +: Configuración opcional para anular la URL para el envío de métricas. +`DD_URL` (6.36+/7.36+) +: Alias para `DD_DD_URL`. Ignorado si `DD_DD_URL` ya está configurado. -```shell -docker run -d --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_SITE= -e DD_API_KEY= public.ecr.aws/datadog/agent:7 --group-add= -``` +`DD_CHECK_RUNNERS` +: El Agente ejecuta todas las verificaciones de manera concurrente por defecto (valor predeterminado = `4` ejecutores). Para ejecutar las verificaciones secuencialmente, establece el valor en `1`. Si necesitas ejecutar un alto número de verificaciones (o verificaciones lentas), el componente `collector-queue` puede retrasarse y fallar la verificación de salud. Puedes aumentar el número de ejecutores para realizar verificaciones en paralelo. -{{% /tab %}} -{{< /tabs >}} +`DD_APM_ENABLED` +: Habilita la recolección de trazas. Por defecto es `true`. Para más información sobre las variables de entorno adicionales para la recolección de trazas, consulta [Trazado de aplicaciones Docker][9]. + +`DD_LOGS_CONFIG_EXPECTED_TAGS_DURATION` +: En algunos entornos, los registros iniciales de los servidores pueden no incluir las etiquetas correctas. Si te faltan etiquetas en nuevos servidores en tus registros, incluye esta variable de entorno y configúrala en `"10m"`. + +#### Configuraciones de proxy {#proxy-settings} + +A partir de la versión 6.4.0 del Agente (y la 6.5.0 para el Agente de Trazas), puedes anular las configuraciones de proxy del Agente con las siguientes variables de entorno: + +`DD_PROXY_HTTP` +: Una URL HTTP que se utilizará como proxy para las solicitudes de `http`. + +`DD_PROXY_HTTPS` +: Una URL HTTPS que se utilizará como proxy para las solicitudes de `https`. + +`DD_PROXY_NO_PROXY` +: Una lista de URLs separadas por espacios para las cuales no se debe utilizar proxy. + +Para más información sobre las configuraciones de proxy, consulta la [documentación del proxy del Agente v6][10]. + +#### Agentes de recolección opcionales {#optional-collection-agents} + +Los Agentes de recolección opcionales están deshabilitados por defecto por razones de seguridad o rendimiento. Utilice estas variables de entorno para habilitarlos: + +`DD_APM_NON_LOCAL_TRAFFIC` +: Permite tráfico no local al [recoger trazas de otros contenedores][11]. + +`DD_LOGS_ENABLED` +: Habilitar [recolección de registros][12] con el Agente de Registros. + +`DD_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED` +: Habilita [la colección de procesos en vivo][13] con el Agente de Procesos. La [visualización de contenedores en vivo][14] ya está habilitada por defecto si el socket de Docker está disponible. + +#### DogStatsD (métricas personalizadas) {#dogstatsd-custom-metrics} + +Enviar métricas personalizadas con [el protocolo StatsD][15]: + +`DD_DOGSTATSD_NON_LOCAL_TRAFFIC` +: Escuchar paquetes de DogStatsD de otros contenedores (requerido para enviar métricas personalizadas). + +`DD_HISTOGRAM_PERCENTILES` +: Los percentiles del histograma a calcular (separados por espacios). El valor predeterminado es `0.95`. -**Nota**: Para Docker Compose, consulta [Compose y el Datadog Agent][11]. +`DD_HISTOGRAM_AGGREGATES` +: Los agregados del histograma a calcular (separados por espacios). El valor predeterminado es `"max median avg count"`. -## Integraciones +`DD_DOGSTATSD_SOCKET` +: Ruta al socket unix para escuchar. Debe estar en un `rw` volumen montado. -Una vez que el Agent está funcionando, usa la [Función Autodiscovery de Datadog][12] para recopilar las métricas y los logs automáticamente de los contenedores de tu aplicación. +`DD_DOGSTATSD_ORIGIN_DETECTION` +: Habilita la detección y etiquetado de contenedores para métricas de socket UNIX. +`DD_DOGSTATSD_TAGS` +: Etiquetas adicionales para agregar a todas las métricas, eventos y verificaciones de servicio recibidos por este servidor DogStatsD. Por ejemplo: `"env:golden group:retrievers"`. -## Variables de entorno +`DD_USE_DOGSTATSD` +Habilita o deshabilita el envío de métricas personalizadas desde la biblioteca DogStatsD. +Aprende más sobre [DogStatsD sobre sockets de dominio Unix][16]. -El [archivo principal de configuración][13] del Agent es `datadog.yaml`. Para el Docker Agent, las opciones de configuración `datadog.yaml` se habilitan con variables de entorno. +#### Etiquetado {#tagging} -### Opciones globales +Como mejor práctica, Datadog recomienda usar [unified service tagging][17] al asignar etiquetas. -| Variable de Env | Descripción | -|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `DD_API_KEY` | Tu clave de Datadog API key (**obligatorio**). | -| `DD_ENV` | Configura la etiqueta (tag) global `env` para todos los datos emitidos. | -| `DD_HOSTNAME` | El nombre de host que hay que usar para las métricas (si falla la detección automática). | -| `DD_HOSTNAME_FILE` | En algunos entornos, la detección automática del nombre del host no es adecuada y no podrás configurar el valor con variables de entorno. En estos casos, se puede usar un archivo en el host para proporcionar un valor adecuado. Si `DD_HOSTNAME` está configurado como un valor no vacío, esta opción se ignora. | -| `DD_TAGS` | Etiquetas (tags) de host separadas por espacios. Por ejemplo: `key1:value1 key2:value2`. | -| `DD_SITE` | Lugar de destino para tus métricas, trazas y logs. Configura tu sitio Datadog como: `{{< region-param key="dd_site" >}}`. Esto cambia por defecto a `datadoghq.com`. | -| `DD_DD_URL` | Configuración opcional para sobreescribir la URL para enviar métricas. | -| `DD_URL` (6.36+/7.36+) | Alias para `DD_DD_URL`. Se ignora si `DD_DD_URL` ya está configurada. | -| `DD_CHECK_RUNNERS` | El Agent ejecuta todos los checks simultáneamente por defecto (valor por defecto = `4` ejecutores). Para ejecutar los checks en secuencia, cambia el valor a `1`. Si hace falta un alto número de checks (o checks lentos), se puede dejar atrás el componente `collector-queue` para que no pase el check de salud. Se puede incrementar el número de ejecutores para ejecutar checks en paralelo. | -| `DD_APM_ENABLED` | Activa la recogida de traza (trace). Por defecto es `true`. Para obtener más información sobre variables adicionales de entorno de la recogida de trazas, consulta [Aplicaciones de traza de Docker][14]. | -| `DD_LOGS_CONFIG_EXPECTED_TAGS_DURATION` | En algunos entornos, los logs iniciales de los hosts quizás no incluyan las etiquetas (tags) correctas. Si te faltan etiquetas (tags) en los nuevos hosts de tus logs, incluye esta variable de entorno y configúralo como `"10m"`.| +Datadog recopila automáticamente etiquetas comunes de Docker, Kubernetes, ECS, Swarm, Mesos, Nomad y Rancher. Para extraer aún más etiquetas, utiliza las siguientes opciones: -### Configuraciones de proxy +`DD_CONTAINER_LABELS_AS_TAGS` +: Extraer etiquetas de contenedor. Este entorno es equivalente a `DD_DOCKER_LABELS_AS_TAGS`. -A partir del Agent v6.4.0 (y v6.5.0 para el Trace Agent), se pueden sobreescribir los valores de configuración de proxy del Agent con las siguientes variables de entorno: +`DD_CONTAINER_ENV_AS_TAGS` +: Extraer variables de entorno de contenedor. Este entorno es equivalente a `DD_DOCKER_ENV_AS_TAGS`. -| Variable de Env | Descripción | -|---------------------|-------------------------------------------------------------------| -| `DD_PROXY_HTTP` | Una URL de HTTP para usar como proxy para solicitudes de `http`. | -| `DD_PROXY_HTTPS` | Una URL de HTTP para usar como proxy para solicitudes de `https`. | -| `DD_PROXY_NO_PROXY` | Una lista separada por espacios de URLs para las que no se debe utilizar ningún proxy. | +`DD_COLLECT_EC2_TAGS` +: Extraer etiquetas personalizadas de EC2 sin usar la integración de AWS. -Para más información sobre la configuración de una proxy, consulta la [Documentación del Agent v6 Proxy][15]. +Consulta la documentación de [Extracción de Etiquetas de Docker][18] para aprender más. -### Agents de recopilación opcionales +#### Usando archivos secretos {#using-secret-files} -Los Agents de recopilación opcionales se desactivan por defecto por razones de seguridad o rendimiento. Usa estas variables de entorno para activarlos: +Las credenciales de integración pueden almacenarse en secretos de Docker o Kubernetes y usarse en plantillas de Autodiscovery. Para más información, consulta la [documentación de Gestión de Secretos][19]. -| Variable de Env | Descripción | -|------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `DD_APM_NON_LOCAL_TRAFFIC` | Permite tráfico no local cuando se está [rastreando desde otros contendedores][16]. | -| `DD_LOGS_ENABLED` | Activa [recopilación de logs][17] con el Logs Agent. | -| `DD_PROCESS_CONFIG_PROCESS_COLLECTION_ENABLED` | Habilita la [recopilación de procesos activos][18] con el Process Agent. La [vista activa del contenedor][19] ya está habilitada por defecto si el socket de Docker está disponible. | +#### Ignorar contenedores {#ignore-containers} -### DogStatsD (métricas personalizadas) +Excluye los contenedores de la colección de registros, la colección de métricas y la Autodiscovery. Datadog excluye por defecto los contenedores de Kubernetes y OpenShift `pause`. Estas listas de permitidos y bloqueados se aplican solo a Autodiscovery; las trazas y DogStatsD no se ven afectados. El valor de estas variables de entorno admite expresiones regulares. -Envía las métricas con el [protocolo de StatsD][20]: +`DD_CONTAINER_INCLUDE` +: Lista de permitidos de contenedores a incluir (separados por espacios). Usa `.*` para incluir todos. Por ejemplo: `"image:image_name_1 image:image_name_2"`, `image:.*` Cuando uses ImageStreams dentro de entornos de OpenShift, usa el nombre del contenedor en lugar de la imagen. Por ejemplo: `"name:container_name_1 name:container_name_2"`, `name:.*` -| Variable de Env | Descripción | -|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `DD_DOGSTATSD_NON_LOCAL_TRAFFIC` | Escucha los paquetes de DogStatsD de otros contenedores (obligatorio para enviar métricas personalizadas). | -| `DD_HISTOGRAM_PERCENTILES` | Los percentiles de histogramas para calcular (separados por espacios). Por defecto es `0.95`. | -| `DD_HISTOGRAM_AGGREGATES` | Las agregaciones de histograma que hay que calcular (separadas por espacios). El valor por defecto es "max median avg count". | -| `DD_DOGSTATSD_SOCKET` | La ruta al socket Unix que hay que escuchar. Debe estar en un volumen montado `rw`. | -| `DD_DOGSTATSD_ORIGIN_DETECTION` | Activa detección de contenedores y etiquetado para métricas de socket Unix. | -| `DD_DOGSTATSD_TAGS` | Etiquetas adicionales para anexar a todas las métricas, los eventos y los checks de servicios recibidos por este servidor de DogStatsD, por ejemplo: `"env:golden group:retrievers"`. | -| `DD_USE_DOGSTATSD` | Activar o desactivar el envío de métricas personalizadas desde la librería de DogStatsD. | -Aprende más sobre [DogStatsD en Sockets de Dominio de Unix][21]. +`DD_CONTAINER_EXCLUDE` +: Lista de bloqueados de contenedores a excluir (separados por espacios). Usa `.*` para excluir todos. Por ejemplo: `"image:image_name_3 image:image_name_4"`, `image:.*` (**Nota**: Esta variable solo se respeta para la Autodiscovery.) -### Etiquetado +`DD_CONTAINER_INCLUDE_METRICS` +: Lista de permitidos de contenedores cuyas métricas deseas incluir. -Como buena práctica, Datadog recomienda usar el [etiquetado de servicios unificado][22] cuando se asignan etiquetas (tags). +`DD_CONTAINER_EXCLUDE_METRICS` +: Lista de bloqueados de contenedores cuyas métricas deseas excluir. -Datadog recopila etiquetas comunes automáticamente de Docker, Kubernetes, ECS, Swarm, Mesos, Nomad y Rancher. Usa las opciones a continuación para extraer más etiquetas (tags): +`DD_CONTAINER_INCLUDE_LOGS` +: Lista de permitidos de contenedores cuyos registros deseas incluir. -| Variable de Env | Descripción | -|-------------------------------|---------------------------------------------------------------------------------------------------------| -| `DD_CONTAINER_LABELS_AS_TAGS` | Extrae etiquetas (labels) del contenedor. Esta variable de entorno es equivalente a la antigua `DD_DOCKER_LABELS_AS_TAGS`. | -| `DD_CONTAINER_ENV_AS_TAGS` | Extrae variables de entorno del contenedor. Esta variable de entorno es equivalente a la antigua `DD_DOCKER_ENV_AS_TAGS`. | -| `DD_COLLECT_EC2_TAGS` | Extrae etiquetas (tags) EC2 sin usar la integración de AWS. | +`DD_CONTAINER_EXCLUDE_LOGS` +: Lista de bloqueados de contenedores cuyos registros deseas excluir. -Consulta la documentación de [Extracción de Docker Tag][23] para aprender más. +`DD_AC_INCLUDE` +: **Obsoleto**. Lista de contenedores a incluir (separados por espacios). Usa `.*` para incluir todos. Por ejemplo: `"image:image_name_1 image:image_name_2"`, `image:.*` -### Usar archivos secretos +`DD_AC_EXCLUDE` +: **Obsoleto**. Lista de contenedores a excluir (separados por espacios). Usa `.*` para excluir todos. Por ejemplo: `"image:image_name_3 image:image_name_4"`, `image:.*` (**Nota**: Esta variable solo se respeta para Autodiscovery.) -Las credenciales se pueden almacenar en secretos de Docker o Kubernetes y usar en las plantillas de Autodiscovery. Para más información, consulta la [Documentación de Gestión de Secretos][24]. +Ejemplos adicionales están disponibles en la página de [Gestión de Descubrimiento de Contenedores][20]. -### Ignora los contenedores +**Nota**: Las métricas `kubernetes.containers.running`, `kubernetes.pods.running`, `docker.containers.running`, `.stopped`, `.running.total` y `.stopped.total` no se ven afectadas por estas configuraciones. Todos los contenedores se contabilizan. Esto no afecta su facturación por contenedor. -Excluye los contenedores de la recopilación de logs, recopilación de métricas y Autodiscovery. Datadog excluye contenedores Kubernetes y OpenShift `pause` por defecto. Estas listas de autorización y bloqueo solo son aplicables a Autodiscovery; las trazas y DogStatsD no se ven afectados. El valor de estas variables de entorno es compatible con expresiones regulares. +**Nota**: Al usar containerd, es posible ignorar contenedores por espacio de nombres usando `DD_CONTAINERD_NAMESPACES` y `DD_CONTAINERD_EXCLUDE_NAMESPACES`. Ambos son una lista de espacios de nombres separados por espacios. Cuando se establece `DD_CONTAINERD_NAMESPACES`, el agente informa datos para los contenedores que pertenecen a un espacio de nombres presente en la lista. Cuando se establece `DD_CONTAINERD_EXCLUDE_NAMESPACES`, el agente informa datos para todos los contenedores excepto los que pertenecen a un espacio de nombres de la lista. -| Variable de Env | Descripción | -|--------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `DD_CONTAINER_INCLUDE` | Lista de autorización de contenedores para ser incluidos (separados por espacios). Usa `.*` para incluir todos. Por ejemplo: `"image:image_name_1 image:image_name_2"`, `image:.*` Cuando se usa ImageStreams dentro de entornos OpenShift, usa el nombre del contenedor en lugar de la imagen. Por ejemplo: "name:container_name_1 name:container_name_2", name:.* | -| `DD_CONTAINER_EXCLUDE` | Lista de bloqueos de contenedores para excluir (separados por espacios). Usa `.*` para excluir todos. Por ejemplo: `"image:image_name_3 image:image_name_4"` (**Nota**: Esta variable solo se respeta para Autodiscovery.), `image:.*` | -| `DD_CONTAINER_INCLUDE_METRICS` | Lista de autorizaciones cuyas métricas quieres incluir. | -| `DD_CONTAINER_EXCLUDE_METRICS` | Lista de bloqueos de contenedores cuyas métricas quieres excluir. | -| `DD_CONTAINER_INCLUDE_LOGS` | Lista de autorizaciones de contenedores cuyos logs quieres incluir. | -| `DD_CONTAINER_EXCLUDE_LOGS` | Lista de bloqueos de contenedores cuyos logs quieres excluir. | -| `DD_AC_INCLUDE` | **Obsoleto**. Lista de autorizaciones de contenedores a incluir (separados por espacios). Usa `.*` para incluir todos. Por ejemplo: `"image:image_name_1 image:image_name_2"`, `image:.*` | -| `DD_AC_EXCLUDE` | **Obsoleto**. Lista de bloqueos de contenedores a excluir (separados por espacios). Usa `.*` para excluir todos. Por ejemplo: `"image:image_name_3 image:image_name_4"` (**Nota**: Esta variable solo se respeta para Autodiscovery), `image:.*` | +#### Autodiscovery {#autodiscovery} -Hay ejemplos adicionales disponibles en la página de [Gestión de Container Discover][25]. +`DD_LISTENERS` +: Autodiscovery listeners para ejecutar. -**Nota**: Las métricas `kubernetes.containers.running`, `kubernetes.pods.running`, `docker.containers.running`, `.stopped`, `.running.total` y `.stopped.total` no se ven afectadas por estos valores de configuración. Todos los contenedores se cuentan. Esto no afecta tu facturación por contenedor. +`DD_EXTRA_LISTENERS` +: Autodiscovery listeners adicionales para ejecutar. Se añaden además de las variables definidas en la sección `listeners` del archivo de configuración `datadog.yaml`. -**Nota**: Cuando se está usando containerd, se pueden ignorar contenedores según el espacio de nombre mediante el uso de `DD_CONTAINERD_NAMESPACES` y `DD_CONTAINERD_EXCLUDE_NAMESPACES`. Ambos son una lista de espacios de nombres separados por espacios. Cuando la configuración es `DD_CONTAINERD_NAMESPACES`, el agent presenta datos de los contenedores que pertenecen a un espacio de nombre dentro de la lista. Cuando la configuración es `DD_CONTAINERD_EXCLUDE_NAMESPACES`, el agent presenta datos de todos los contenedores menos aquellos que pertenecen a un espacio de nombre de la lista. +`DD_CONFIG_PROVIDERS` +: Los proveedores que el Agente debe llamar para recopilar configuraciones de verificación. El proveedor predeterminado es `docker`. El proveedor de Docker maneja plantillas incrustadas en etiquetas de contenedor. -### Autodiscovery +`DD_EXTRA_CONFIG_PROVIDERS` +: Proveedores de configuración de Autodiscovery adicionales a utilizar. Se añaden además de las variables definidas en la sección `config_providers` del archivo de configuración `datadog.yaml`. -| Variable de Env | Descripción | -|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `DD_LISTENERS` | Oyentes de Autodiscovery para ejecutar. | -| `DD_EXTRA_LISTENERS` | Oyentes de Autodiscovery adicionales para ejecutar. Se añaden además de las variables definidas en la sección `listeners` del archivo de configuración `datadog.yaml`. | -| `DD_CONFIG_PROVIDERS` | Los proveedores a los que Agent debe llamar para recopilar configuraciones de checks. El proveedor por defecto es `docker`. El proveedor de Docker gestiona las plantillas incrustadas en las etiquetas de contenedor. | -| `DD_EXTRA_CONFIG_PROVIDERS` | Proveedores de configuración de Autodiscovery adicionales a utilizar. Se añaden además de las variables definidas en la sección `config_providers` del archivo de configuración `datadog.yaml`. | +#### Varios {#miscellaneous} -### Varios +`DD_PROCESS_AGENT_CONTAINER_SOURCE` +: Anula la autodetección de la fuente para forzar una única fuente. p. ej. `"docker"`, `"ecs_fargate"`, `"kubelet"`. Esto ya no es necesario desde la versión 7.35.0 del Agente. -| Variable de Env | Descripción | -|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `DD_PROCESS_AGENT_CONTAINER_SOURCE` | Sobreescribe la detección automática del origen del contenedor para forzar un único origen. Por ejemplo: `"docker"`, `"ecs_fargate"`, `"kubelet"`. Esto ya no es necesario a partir de Agent v7.35.0. | -| `DD_HEALTH_PORT` | Configura esto como `5555` para exponer el check de estado del Agent en el puerto `5555`. | +`DD_HEALTH_PORT` +: Establece `5555` para exponer la verificación de salud del Agente en el puerto `5555`. -## Comandos +## Comandos {#commands} -Consulta las [Guías de comandos del Agent][26] para descubrir todos los comandos del Docker Agent. +Consulta las [guías de comandos del agente][21] para descubrir todos los comandos del agente de Docker. -## Datos recopilados +## Datos recopilados {#data-collected} -### Métricas +### Métricas {#metrics} -Por defecto, el Docker Agent recopila las métricas con los siguientes checks básicos. Para recopilar métricas de otras tecnologías, consulta la sección [Integraciones](#integrations). +Por defecto, el agente de Docker recopila métricas con las siguientes verificaciones básicas. Para recopilar métricas de otras tecnologías, consulta la sección [Integraciones](#integrations). -| Check | Métricas | -|-------------|---------------| -| Contenedor | [Métricas][27] -| CPU | [Sistema][28] | -| Disco | [Disco][29] | -| Docker | [Docker][30] | -| Identificador de archivos | [Sistema][28] | -| E/S | [Sistema][28] | -| Carga | [Sistema][28] | -| Memoria | [Sistema][28] | -| Red | [Red][31] | -| NTP | [NTP][32] | -| Tiempo de actividad | [Sistema][28] | +| Verificación | Métricas | +| ----------- | ------------- | +| Contenedor | [Métricas][22] | +| CPU | [System][23] | +| Disco | [Disco][24] | +| Docker | [Docker][25] | +| Manejador de Archivos | [System][23] | +| IO | [System][23] | +| Carga | [System][23] | +| Memoria | [System][23] | +| Red | [Network][26] | +| NTP | [NTP][27] | +| Tiempo de actividad | [System][23] | -### Eventos +### Eventos {#events} -El Docker Agent envía eventos a Datadog cuando se inicia o reinicia un Agent. +El agente de Docker envía eventos a Datadog al iniciarse o reiniciarse. -### Checks de servicio +### Verificaciones de servicio {#service-checks} -**datadog.agent.up**:
-devuelve `CRITICAL` si el Agent no se puede conectar a Datadog; de lo contrario, devuelve `OK`. +**datadog.agent.up**
+Devuelve `CRITICAL` si el Agente no puede conectarse a Datadog, de lo contrario devuelve `OK`. -**datadog.agent.check_status**:
-devuelve `CRITICAL` si un check de Agent no puede enviar las métricas a Datadog; de lo contrario, devuelve `OK`. +**datadog.agent.check_status**
+Devuelve `CRITICAL` si una verificación del Agente no puede enviar métricas a Datadog, de lo contrario devuelve `OK`. -## Desinstalar la Instrumentación de un paso de APM +## Desinstalar Instrumentación APM de Un Solo Paso {#uninstall-single-step-apm-instrumentation} -Si has instalado Datadog Docker Agent con la Instrumentación de un paso de APM y deseas desinstalar el Agent, deberás [ejecutar comandos adicionales][33] para desinstalar la Instrumentación de APM. +Si instalaste el Agente de Docker de Datadog con Instrumentación APM de Un Solo Paso, y deseas desinstalar el Agente, necesitas [ejecutar comandos adicionales][28] para desinstalar la Instrumentación APM. -## Para leer más +## Lectura Adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} [1]: /es/agent/ -[2]: https://hub.docker.com/r/datadog/agent -[3]: https://console.cloud.google.com/gcr/images/datadoghq/GLOBAL/agent -[4]: https://gallery.ecr.aws/datadog/agent -[5]: https://hub.docker.com/r/datadog/docker-dd-agent -[6]: https://console.cloud.google.com/gcr/images/datadoghq/GLOBAL/docker-dd-agent?gcrImageListsize=30 -[7]: https://gallery.ecr.aws/datadog/docker-dd-agent -[8]: https://app.datadoghq.com/account/settings/agent/latest?platform=docker -[9]: /es/agent/supported_platforms/?tab=cloudandcontainers -[10]: https://app.datadoghq.com/organization-settings/api-keys -[11]: /es/agent/guide/compose-and-the-datadog-agent/ -[12]: /es/agent/docker/integrations/ -[13]: /es/agent/configuration/agent-configuration-files/#agent-main-configuration-file -[14]: /es/agent/docker/apm/ -[15]: /es/agent/configuration/proxy/#agent-v6 -[16]: /es/agent/docker/apm/#tracing-from-other-containers -[17]: /es/agent/docker/log/ -[18]: /es/infrastructure/process/ -[19]: /es/infrastructure/livecontainers/ -[20]: /es/developers/dogstatsd/ -[21]: /es/developers/dogstatsd/unix_socket/ -[22]: /es/getting_started/tagging/unified_service_tagging/ -[23]: /es/agent/docker/tag/ -[24]: /es/agent/configuration/secrets-management/?tab=linux -[25]: /es/agent/guide/autodiscovery-management/ -[26]: /es/agent/configuration/agent-commands/ -[27]: /es/integrations/container/ -[28]: /es/integrations/system/#metrics -[29]: /es/integrations/disk/#metrics -[30]: /es/agent/docker/data_collected/#metrics -[31]: /es/integrations/network/#metrics -[32]: /es/integrations/ntp/#metrics -[33]: /es/tracing/trace_collection/automatic_instrumentation/single-step-apm/?tab=docker#removing-apm-for-all-services-on-the-infrastructure +[2]: /es/agent/supported_platforms/?tab=cloudandcontainers +[3]: https://app.datadoghq.com/account/settings/agent/latest?platform=docker +[4]: /es/containers/guide/compose-and-the-datadog-agent/ +[5]: /es/containers/guide/podman-support-with-docker-integration/ +[6]: /es/containers/docker/integrations/ +[7]: /es/getting_started/containers/autodiscovery +[8]: /es/agent/configuration/agent-configuration-files/#agent-main-configuration-file +[9]: /es/containers/docker/apm/ +[10]: /es/agent/configuration/proxy/#agent-v6 +[11]: /es/containers/docker/apm/?tab=linux#tracing-from-other-containers +[12]: /es/containers/docker/log/ +[13]: /es/infrastructure/process/ +[14]: /es/infrastructure/livecontainers/ +[15]: /es/extend/dogstatsd/ +[16]: /es/extend/dogstatsd/unix_socket/ +[17]: /es/getting_started/tagging/unified_service_tagging/?tab=docker +[18]: /es/containers/docker/tag +[19]: /es/agent/configuration/secrets-management/?tab=linux +[20]: /es/containers/guide/container-discovery-management/?tab=containerizedagent +[21]: /es/agent/configuration/agent-commands/ +[22]: /es/integrations/container/ +[23]: /es/integrations/system/#metrics +[24]: /es/integrations/disk/#metrics +[25]: /es/containers/docker/data_collected/#metrics +[26]: /es/integrations/network/#metrics +[27]: /es/integrations/ntp/#metrics +[28]: /es/tracing/trace_collection/automatic_instrumentation/single-step-apm/docker/#remove-single-step-apm-instrumentation-from-your-agent \ No newline at end of file diff --git a/content/es/containers/kubernetes/installation.md b/content/es/containers/kubernetes/installation.md index d04354d54a6..b276712d6d0 100644 --- a/content/es/containers/kubernetes/installation.md +++ b/content/es/containers/kubernetes/installation.md @@ -3,70 +3,73 @@ aliases: - /es/agent/kubernetes/daemonset_setup - /es/agent/kubernetes/helm - /es/agent/kubernetes/installation -description: Instala y configura el Datadog Agent en Kubernetes utilizando el Datadog - OperatorHelm o kubectl +description: Instale y configure el Datadog Agent en Kubernetes utilizando Datadog + Operator, Helm o kubectl further_reading: - link: /agent/kubernetes/configuration tag: Documentación - text: Configurar mejor el Datadog Agent en Kubernetes + text: Configure aún más el Datadog Agent en Kubernetes - link: https://github.com/DataDog/helm-charts/blob/main/charts/datadog/README.md#all-configuration-options tag: Código fuente - text: 'Tabla de Datadog Helm: todas las opciones de configuración ' + text: Datadog Helm chart – Todas las opciones de configuración - link: https://github.com/DataDog/helm-charts/blob/main/charts/datadog/README.md#upgrading tag: Código fuente - text: Actualización de Datadog Helm -title: Instala el Datadog Agent en Kubernetes + text: Actualizando Datadog Helm +title: Instale el Datadog Agent en Kubernetes --- +## Resumen {#overview} -## Información general +Esta página proporciona instrucciones sobre cómo instalar el Agente de Datadog en un entorno de Kubernetes. -Esta página proporciona instrucciones para instalar el Datadog Agent en un entorno Kubernetes. +Para documentación y ejemplos dedicados para las principales distribuciones de Kubernetes, incluyendo AWS Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Red Hat OpenShift, Rancher y Oracle Container Engine para Kubernetes (OKE), consulte [distribuciones de Kubernetes][1]. -Para obtener documentación específica y ejemplos para las principales distribuciones de Kubernetes, incluido AWS Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), Red Hat OpenShift, Rancher y Oracle Container Engine para Kubernetes (OKE), consulta [distribuciones de Kubernetes][1]. +Para documentación y ejemplos dedicados para monitorear el plano de control de Kubernetes, consulte [monitoreo del plano de control de Kubernetes][2]. -Para obtener documentación específica y ejemplos de monitorización del plano de control de Kubernetes, consulta [Monitorización del plano de control de Kubernetes][2]. +### Versiones mínimas de Kubernetes y del Agente de Datadog {#minimum-kubernetes-and-datadog-agent-versions} -### Versiones mínimas de Kubernetes y Datadog Agent +Algunas características relacionadas con versiones posteriores de Kubernetes requieren una versión mínima del Agente de Datadog. -Algunas funciones relacionadas con versiones posteriores de Kubernetes requieren una versión mínima de Datadog Agent. +| Versión de Kubernetes | Versión del Datadog Agent | Versión del Cluster Agent | Razón | +| ------------------ | ------------- | --------------------- | ------------------------------------------------------------------------------ | +| 1.16.0+ | 7.19.0+ | 1.9.0+ | Deprecación de métricas de Kubelet | +| 1.21.0+ | 7.36.0+ | 1.20.0+ | Deprecación de recursos de Kubernetes | +| 1.22.0+ | 7.37.0+ | 7.37.0+ | Soporta tokens de cuenta de servicio dinámicos | +| 1.25.0+ | 7.40.0+ | 7.40.0+ | Soporta el grupo de API `v1` | +| 1.33.0+ | 7.67.0+ | 7.67.0+ | Corrige incompatibilidades con Kubernetes `AllocatedResources` en `/pods` salida | -| Versión de Kubernetes | Agent version | Motivo | -| ------------------ | ------------- | ------------------------------------- | -| 1.16.0+ | 7.19.0+ | Obsolescencia de las métricas de Kubelet | -| 1.21.0+ | 7.36.0+ | Eliminación de recursos de Kubernetes | -| 1.22.0+ | 7.37.0+ | Admite el token de cuenta de servicio dinámico | +Para una compatibilidad óptima, Datadog recomienda mantener sus Cluster Agent y Agent en versiones coincidentes. -Consulta también: [Versiones mínimas de Kubernetes y Cluster Agent][8]. +## Instalación {#installation} -## Instalación +Utilice la página de [Instalación en Kubernetes][16] en Datadog para guiarlo a través del proceso de instalación. -Utiliza la página [Instalación en Kubernetes][16] de Datadog como guía para el proceso de instalación. +1. **Seleccione el método de instalación** -1. **Selecciona el método de instalación** + Elija uno de los siguientes métodos de instalación: - Elige uno de los siguientes métodos de instalación: - - - [Datadog Operador][9] (recomendado): un [operador][10] de Kubernetes que puedes utilizar para desplegar el Datadog Agent en Kubernetes y OpenShift. Informa del estatus del despliegue, el estado y los errores en su estado de recurso personalizado, y limita el riesgo de configuración incorrecta gracias a las opciones de configuración más avanzadas. + - Datadog Operator (recomendado): un operator de Kubernetes que puede usar para implementar el Datadog Agent en Kubernetes y OpenShift. Informa sobre el estado de despliegue, la salud y los errores en su estado de Custom Resource, y limita el riesgo de mala configuración gracias a opciones de configuración de nivel superior. - [Helm][11] - - Instalación manual. Consulta [Instalación manual y configuración del Datadog Agent con un DaemonSet][12]. + - Instalación manual. Consulte [Instalar y configurar manualmente el Datadog Agent con un DaemonSet][12] + +
Si planea implementar APM con Instrumentación de Un Solo Paso (SSI) en su entorno de Kubernetes, instale el Datadog Agent en su propio espacio de nombres. SSI no instrumenta pods en el mismo espacio de nombres que el Datadog Agent.
{{< tabs >}} {{% tab "Datadog Operator" %}} -
Requiere Helm y la CLI kubectl.
+
Requiere Helm y el CLI de kubectl.
-2. **Instalar el Datadog Operator** +2. **Instale el Datadog Operator** - Para instalar el Operador Datadog en tu espacio de nombres actual, ejecuta: + Para instalar el Datadog Operator en su espacio de nombres actual, ejecute: ```shell helm repo add datadog https://helm.datadoghq.com helm install datadog-operator datadog/datadog-operator kubectl create secret generic datadog-secret --from-literal api-key= ``` - - Sustituye `` por tu [clave de API Datadog][1]. + - Reemplace `` con su [clave de API de Datadog][1]. -3. **Configurar `datadog-agent.yaml`** +3. **Configure `datadog-agent.yaml`** - Crea un archivo, `datadog-agent.yaml`, que contenga: + Cree un archivo, `datadog-agent.yaml`, que contenga: ```yaml apiVersion: datadoghq.com/v2alpha1 kind: DatadogAgent @@ -81,12 +84,12 @@ Utiliza la página [Instalación en Kubernetes][16] de Datadog como guía para e secretName: datadog-secret keyName: api-key ``` - - Sustituye `` por un nombre para tu clúster. - - Sustituye `` por tu [sitio de Datadog][2]. Tu sitio es {{< region-param key="dd_site" code="true" >}}. (Asegúrate de seleccionar el SITIO correcto a la derecha). + - Reemplace `` con un nombre para su clúster. + - Reemplace `` con su [sitio de Datadog][2]. Su sitio es {{< region-param key="dd_site" code="true" >}}. (Asegúrese de que el SITIO correcto esté seleccionado a la derecha). -4. **Despliega el Agent con el archivo de configuración anterior** +4. **Despliegue el Datadog Agent con el archivo de configuración anterior** - Ejecuta: + Ejecute: ```shell kubectl apply -f datadog-agent.yaml ``` @@ -95,42 +98,42 @@ Utiliza la página [Instalación en Kubernetes][16] de Datadog como guía para e [2]: /es/getting_started/site {{% /tab %}} {{% tab "Helm" %}} -
Requires Helm.
+
Requiere Helm.
-2. **Add the Datadog Helm repository** +2. **Agregue el repositorio de Helm de Datadog** - Run: + Ejecute: ```shell helm repo add datadog https://helm.datadoghq.com helm repo update kubectl create secret generic datadog-secret --from-literal api-key= ``` - - Replace `` with your [Datadog API key][1]. + - Reemplace `` con su [clave de API de Datadog][1]. 3. **Configure `datadog-values.yaml`** - Create a file, `datadog-values.yaml`, that contains: + Cree un archivo, `datadog-values.yaml`, que contenga: ```yaml datadog: apiKeyExistingSecret: datadog-secret clusterName: site: ``` + + - Reemplace `` con un nombre para su clúster. + - Reemplace `` con su [sitio de Datadog][2]. Su sitio es {{< region-param key="dd_site" code="true" >}}. (Asegúrese de que el SITIO correcto esté seleccionado a la derecha). - - Replace `` with a name for your cluster. - - Replace `` with your [Datadog site][2]. Your site is {{< region-param key="dd_site" code="true" >}}. (Ensure the correct SITE is selected on the right). - -4. **Deploy Agent with the above configuration file** +4. **Despliegue el Datadog Agent con el archivo de configuración anterior** - Run: + Ejecute: ```shell helm install datadog-agent -f datadog-values.yaml datadog/datadog ```
- For Windows, append --set targetSystem=windows to the helm install command. + Para Windows, agregue --set targetSystem=windows al helm install comando.
[1]: https://app.datadoghq.com/organization-settings/api-keys @@ -139,33 +142,33 @@ Utiliza la página [Instalación en Kubernetes][16] de Datadog como guía para e {{% /tab %}} {{< /tabs >}} -5. **Confirm Agent installation** +5. **Confirme la instalación del Datadog Agent** - Verify that Agent pods (tagged with `app.kubernetes.io/component:agent`) appear on the [Containers][13] page in Datadog. Agent pods are detected within a few minutes of deployment. + Verifique que los pods del Datadog Agent (etiquetados con `app.kubernetes.io/component:agent`) aparezcan en la página de [Containers][13] en Datadog. Los pods del Datadog Agent se detectan en pocos minutos después del despliegue.
-<CLUSTER_NAME> allows you to scope hosts and Cluster Checks. This unique name must be dot-separated tokens and abide by the following restrictions: +<CLUSTER_NAME> Le permite definir el contexto de los hosts y de Cluster Checks. Este nombre único debe estar compuesto por tokens separados por puntos y cumplir con las siguientes restricciones:
    -
  • Must only contain lowercase letters, numbers, and hyphens -
  • Must start with a letter -
  • Must end with a number or a letter -
  • Must be less than or equal to 80 characters +
  • Debe contener solo letras minúsculas, números y guiones +
  • Debe comenzar con una letra +
  • Debe terminar con un número o una letra +
  • Debe tener 80 caracteres o menos
-### Unprivileged installation +### Instalación no privilegiada {#unprivileged-installation} -To run an unprivileged installation, add the following `securityContext` to your configuration relative to your desired `` and ``: +Para ejecutar una instalación no privilegiada, agregue lo siguiente `securityContext` a su configuración en relación con su `` y `` deseados: -- Replace `` with the UID to run the Datadog Agent. Datadog recommends setting this value to `100` for the preexisting `dd-agent` user [for Datadog Agent v7.48+][26]. -- Replace `` with the group ID that owns the Docker or containerd socket. +- Reemplace `` con el UID para ejecutar el Datadog Agent. Datadog recomienda establecer este valor en `100` para el usuario `dd-agent` preexistente [para Datadog Agent v7.48+][26]. +- Reemplace `` con el ID de grupo que posee el socket de Docker o containerd. -This sets the `securityContext` at the pod level for the Agent. +Esto establece el `securityContext` a nivel de pod para el Datadog Agent. {{< tabs >}} {{% tab "Datadog Operator" %}} -To run an unprivileged installation, add the following to `datadog-agent.yaml`: +Para ejecutar una instalación no privilegiada, agregue lo siguiente a `datadog-agent.yaml`: {{< highlight yaml "hl_lines=14-19" >}} apiVersion: datadoghq.com/v2alpha1 @@ -189,7 +192,7 @@ spec: - {{< /highlight >}} -Then, deploy the Agent: +Luego, despliegue el Datadog Agent: ```shell kubectl apply -f datadog-agent.yaml @@ -197,7 +200,7 @@ kubectl apply -f datadog-agent.yaml {{% /tab %}} {{% tab "Helm" %}} -To run an unprivileged installation, add the following to your `datadog-values.yaml` file: +Para ejecutar una instalación no privilegiada, agregue lo siguiente a su archivo `datadog-values.yaml`: {{< highlight yaml "hl_lines=5-8" >}} datadog: @@ -210,7 +213,7 @@ datadog: - {{< /highlight >}} -Then, deploy the Agent: +Luego, despliegue el Datadog Agent: ```shell helm install datadog-agent -f datadog-values.yaml datadog/datadog @@ -219,26 +222,24 @@ helm install datadog-agent -f datadog-values.yaml datadog/datadog {{% /tab %}} {{< /tabs >}} -### Container registries - -Datadog publishes container images to Google Artifact Registry, Amazon ECR, Azure ACR, and Docker Hub: +### Registros de contenedores {#container-registries} -| Google Artifact Registry | Amazon ECR | Azure ACR | Docker Hub | -| ------------------------ | ---------------------- | -------------------- | ----------------- | -| gcr.io/datadoghq | public.ecr.aws/datadog | datadoghq.azurecr.io | docker.io/datadog | +Datadog publica imágenes de contenedor en el Datadog Container Registry, Google Artifact Registry (GAR), Amazon ECR, Azure ACR y Docker Hub: -By default, the Agent image is pulled from Google Artifact Registry (`gcr.io/datadoghq`). If Artifact Registry is not accessible in your deployment region, use another registry. +{{% container-images-table %}} -If you are deploying the Agent in an AWS environment, Datadog recommend that you use Amazon ECR. +Por defecto, el Datadog Agent Helm chart determina el registro de imágenes del Datadog Agent a partir de su sitio de Datadog, tipo de clúster y `registryMigrationMode`. Dependiendo de estos valores y exclusiones de entorno, las imágenes del Datadog Agent pueden ser extraídas del Datadog Container Registry (`registry.datadoghq.com`) o de un registro específico del sitio. El Datadog Operator chart se incluye como dependencia del Datadog Agent Helm chart por defecto. A partir de la versión 2.19.0 del Datadog Operator chart, cuando instale el Operator a través de esa dependencia, el `registryMigrationMode` del Datadog Agent Helm chart se aplica a las imágenes del Datadog Agent gestionadas por el Operator. El Datadog Operator chart en sí no define `registryMigrationMode`; la imagen del pod del Operator se controla por separado mediante el valor `image.repository` del Datadog Operator chart. -
Docker Hub is subject to image pull rate limits. If you are not a Docker Hub customer, Datadog recommends that you update your Datadog Agent and Cluster Agent configuration to pull from Google Artifact Registry or Amazon ECR. For instructions, see Changing your container registry.
+
Docker Hub está sujeto a límites de tasa de extracción de contenedor. Si no es cliente de Docker Hub, Datadog recomienda que actualice la configuración de su Datadog Agent y de Cluster Agent para extraer de otro registro. Para instrucciones, consulta Cambiar tu registro de contenedores.
{{< tabs >}} {{% tab "Datadog Operator" %}} -To use a different container registry, modify `global.registry` in `datadog-agent.yaml`. +A partir de la versión 2.19.0 del chart del Datadog Operator, cuando el Datadog Operator se instala a través de la dependencia del Helm chart del Datadog Agent, el `registryMigrationMode` del Helm chart del Datadog Agent puede usar `registry.datadoghq.com` para las imágenes del Datadog Agent gestionadas por el Datadog Operator. Las versiones anteriores extraían imágenes del Datadog Agent de registros específicos del sitio (`gcr.io/datadoghq`, `eu.gcr.io/datadoghq`, `asia.gcr.io/datadoghq` o `datadoghq.azurecr.io`). Para seguir utilizando los registros específicos del sitio anteriores para las imágenes del Datadog Agent en esta ruta de implementación, establece `registryMigrationMode: ""` en tu Helm chart del Datadog Agent `values.yaml`. Esta configuración no tiene efecto cuando se establece explícitamente un registro, y no es una configuración en el Helm chart independiente del Datadog Operator. Para usar un registro diferente para la imagen del pod del Datadog Operator, establece `image.repository` en tu Helm chart del Datadog Operator `values.yaml`. -For example, to use Amazon ECR: +Para usar un registro de contenedores diferente, modifica `global.registry` en `datadog-agent.yaml`. + +Por ejemplo, para usar Amazon ECR: {{< highlight yaml "hl_lines=8">}} apiVersion: datadoghq.com/v2alpha1 @@ -259,9 +260,9 @@ spec: {{% /tab %}} {{% tab "Helm" %}} -To use a different container registry, modify `registry` in `datadog-values.yaml`. +Para usar un registro de contenedores diferente, modifica `registry` en `datadog-values.yaml`. -For example, to use Amazon ECR: +Por ejemplo, para usar Amazon ECR: {{< highlight yaml "hl_lines=1">}} registry: public.ecr.aws/datadog @@ -273,46 +274,48 @@ datadog: {{% /tab %}} {{< /tabs >}} -For more information, see [Changing your container registry][17]. +Para más información, consulta [Cambiando tu registro de contenedores][17]. -### Uninstall +### Desinstalar {#uninstall} {{< tabs >}} {{% tab "Datadog Operator" %}} + ```shell kubectl delete datadogagent datadog helm delete datadog-operator ``` -This command deletes all Kubernetes resources created by installing Datadog Operator and deploying the Datadog Agent. +Este comando elimina todos los recursos de Kubernetes creados al instalar Datadog Operator y desplegar Datadog Agent. {{% /tab %}} {{% tab "Helm" %}} + ```shell helm uninstall datadog-agent ``` {{% /tab %}} {{< /tabs >}} -## Siguientes pasos +## Próximos pasos {#next-steps} -### Monitoriza tu infraestructura en Datadog -Utiliza la página [Contenedores][13] para obtener visibilidad de tu infraestructura de contenedor, con métricas de recurso y búsqueda por facetas. Para obtener más información sobre cómo utilizar la página de Contenedores, consulta [Vista de contenedores][14]. +### Monitorea tu infraestructura en Datadog {#monitor-your-infrastructure-in-datadog} +Utiliza la página de [Contenedores][13] para tener visibilidad de tu infraestructura de contenedores, con métricas de recursos y búsqueda por facetas. Para obtener información sobre cómo usar la página de [Containers], consulta [Containers View][14]. -Utiliza la página [Imágenes de contenedor][18] para obtener información sobre cada imagen utilizada en tu entorno. Esta página también muestra las vulnerabilidades encontradas en tus imágenes de contenedor desde [Cloud Security][19]. Para obtener información sobre cómo utilizar la página Imágenes de contenedor, consulta la [Vista de imágenes de contenedor][20]. +Utiliza la página de [Container Images][18] para obtener información sobre cada imagen utilizada en tu entorno. Esta página también muestra las vulnerabilidades encontradas en las imágenes de contenedor de [Cloud Security][19]. Para obtener información sobre cómo usar la página de [Container Images], consulta [Container Images View][20]. -La sección [Kubernetes][21] ofrece una visión general de todos tus recursos de Kubernetes. El [Orchestrator Explorer][22] te permite monitorizar el estado de los pods, despliegues y otros conceptos de Kubernetes en un espacio de nombres o zona de disponibilidad específica, ver especificaciones de recursos para pods fallidos dentro de un despliegue, correlacionar la actividad de nodos con logs relacionados, y mucho más. La página [Utilización de recursos][23] proporciona información sobre cómo las cargas de trabajo de Kubernetes utilizan los recursos informáticos en tu infraestructura. Para obtener información sobre cómo utilizar estas páginas, consulta [Orchestrator Explorer][24] y [Utilización de recursos de Kubernetes][25]. +La sección de [Kubernetes][21] presenta una visión general de todos tus recursos de Kubernetes. [Orchestrator Explorer][22] te permite monitorear el estado de los pods, despliegues y otros conceptos de Kubernetes en un espacio de nombres o zona de disponibilidad específica, ver las especificaciones de recursos para los pods fallidos dentro de un despliegue, correlacionar la actividad de los nodos con los registros relacionados, y más. La página de [Resource Utilization][23] proporciona información sobre cómo tus cargas de trabajo de Kubernetes utilizan tus recursos de cómputo en toda tu infraestructura. Para obtener información sobre cómo usar estas páginas, consulta [Orchestrator Explorer][24] y [Kubernetes Resource Utilization][25]. -### Activar funciones +### Habilitar funciones {#enable-features} {{< whatsnext >}} - {{< nextlink href="/containers/kubernetes/apm">}}APM para Kubernetes: Configura la recopilación de trazas (traces) para tu aplicación Kubernetes.{{< /nextlink >}} - {{< nextlink href="/agent/kubernetes/log">}}Recopilación de logs en Kubernetes: Configura la recopilación de logs en un entorno Kubernetes.{{< /nextlink >}} - {{< nextlink href="/agent/kubernetes/prometheus">}}Prometheus y OpenMetrics: Recopila tus métricas de Prometheus y OpenMetrics expuestas desde tu aplicación que se ejecuta en Kubernetes.{{< /nextlink >}} - {{< nextlink href="/agent/kubernetes/control_plane">}}Monitorización del plano de control: Monitoriza el servidor API, el gestor del controlador, el programador y etcd de Kubernetes.{{< /nextlink >}} - {{< nextlink href="/agent/kubernetes/configuration">}}Configuración adicional: Recopila eventos, sobrescribe parámetros de proxy, envía métricas personalizadas con DogStatsD, configura listas de autorizaciones y exclusiones de contenedores, y haz referencia a la lista completa de variables de entorno disponibles.{{< /nextlink >}} + {{< nextlink href="/containers/kubernetes/apm">}}APM para Kubernetes: Configura y ajusta la recolección de trazas para tu aplicación en Kubernetes.{{< /nextlink >}} + {{< nextlink href="/agent/kubernetes/log">}}Recolección de registros en Kubernetes: Configura la recolección de registros en un entorno de Kubernetes.{{< /nextlink >}} + {{< nextlink href="/agent/kubernetes/prometheus">}}Prometheus y OpenMetrics: Recoge tus métricas expuestas de Prometheus y OpenMetrics de tu aplicación que se ejecuta dentro de Kubernetes.{{< /nextlink >}} + {{< nextlink href="/agent/kubernetes/control_plane">}}Control plane monitoring: Monitorea el servidor API de Kubernetes, el controller manager, el scheduler y etcd.{{< /nextlink >}} + {{< nextlink href="/agent/kubernetes/configuration">}}Further Configuration: Recoge eventos, sobrescribe la configuración del proxy, envía métricas personalizadas con DogStatsD, configura las listas de permitidos y bloqueados de contenedores, y consulta la lista completa de variables de entorno disponibles.{{< /nextlink >}} {{< /whatsnext >}} -## Referencias adicionales +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} @@ -323,7 +326,6 @@ La sección [Kubernetes][21] ofrece una visión general de todos tus recursos de [5]: /es/agent/kubernetes/integrations/ [6]: /es/agent/kubernetes/apm/ [7]: /es/agent/kubernetes/log/ -[8]: /es/containers/cluster_agent/#minimum-agent-and-cluster-agent-versions [9]: /es/containers/datadog_operator [10]: https://kubernetes.io/docs/concepts/extend-kubernetes/operator/ [11]: https://helm.sh diff --git a/content/es/containers/kubernetes/integrations.md b/content/es/containers/kubernetes/integrations.md index bc26810ff02..b0fc699cdb0 100644 --- a/content/es/containers/kubernetes/integrations.md +++ b/content/es/containers/kubernetes/integrations.md @@ -4,59 +4,65 @@ aliases: - /es/guides/servicediscovery/ - /es/guides/autodiscovery/ - /es/agent/kubernetes/integrations -description: Configura la monitorización de integraciones para aplicaciones que se - ejecutan en Kubernetes utilizando plantillas de Autodiscovery +description: Configura integraciones de monitoreo para aplicaciones que se ejecutan + en Kubernetes utilizando plantillas de Autodiscovery further_reading: +- link: https://www.datadoghq.com/blog/monitor-karpenter-datadog + tag: Blog + text: Monitorea Karpenter con Datadog - link: /agent/kubernetes/log/ tag: Documentación - text: Recopilar logs de tus aplicaciones + text: Recopila los registros de tu aplicación - link: /agent/kubernetes/apm/ tag: Documentación - text: Recopilar trazas (traces) de tus aplicaciones + text: Recopila las trazas de tu aplicación - link: /agent/kubernetes/prometheus/ tag: Documentación - text: Recopilar métricas de Prometheus + text: Recopila tus métricas de Prometheus - link: /agent/guide/autodiscovery-management/ tag: Documentación - text: Limitar la recopilación de datos sólo a un subconjunto de contenedores + text: Limita la recopilación de datos a un subconjunto de contenedores solamente - link: /agent/kubernetes/tag/ tag: Documentación - text: Asignar etiquetas (tags) a todos los datos emitidos por un contenedor -title: Kubernetes e integraciones + text: Asigna etiquetas a todos los datos emitidos por un contenedor +- link: https://www.youtube.com/watch?v=nuxmVf9ByE0 + tag: Video + text: 'Consejos y trucos de Datadog: Cómo escribir anotaciones en Kubernetes con + JSON para Datadog Autodiscovery' +title: Kubernetes and Integrations --- +Esta página cubre cómo instalar y configurar integraciones para tu infraestructura de Kubernetes utilizando una función de Datadog conocida como _Autodiscovery_. Esto te permite usar [variables][16] como `%%host%%` para poblar dinámicamente la configuración. Para una explicación detallada de cómo funciona Autodiscovery, consulta [Introducción a los Containers: Autodiscovery][12]. Para opciones avanzadas de Autodiscovery, como excluir ciertos contenedores de Autodiscovery o tolerar pods no listos, consulta [Gestión del Descubrimiento de Containers][23]. -Esta página muestra cómo instalar y configurar integraciones para tu infraestructura Kubernetes utilizando una función de Datadog conocida como _Autodiscovery_. Esta opción te permite utilizar [variables][16] como `%%host%%` para rellenar dinámicamente tus parámetros de configuración. Para ver una explicación detallada de cómo funciona Autodiscovery, consulta [Empezando con contenedores: Autodiscovery][12]. Para ver opciones avanzadas de Autodiscovery, como la exclusión de ciertos contenedores de Autodiscovery o la tolerancia de pods no listos, consulta [Gestión de la detección de contenedores][23]. - -Si utilizas Docker o Amazon ECS, consulta [Docker e integraciones][1]. +Si estás utilizando Docker o Amazon ECS, consulta [Docker and Integrations][1].
-Algunas integraciones de Datadog no funcionan con Autodiscovery, ya que requieren datos del árbol de procesos o un acceso a los sistemas de archivos: Ceph, Varnish, Postfix, nodetools Cassandra y Gunicorn.

-Para monitorizar integraciones que no son compatibles con Autodiscovery, puedes utilizar un exportador Prometheus en el pod, para exponer un endpoint HTTP, y luego puedes utilizar la integración con OpenMetrics (compatible con Autodiscovery) para encontrar el pod y consultar el endpoint. +Algunas integraciones de Datadog no funcionan con Autodescubrimiento porque requieren datos del árbol de procesos o acceso al sistema de archivos: Ceph, Varnish, Postfix, Cassandra Nodetool, y Gunicorn.

+Para monitorear integraciones que no son compatibles con Autodiscovery, puedes usar un exportador de Prometheus en el pod para exponer un punto de conexión HTTP, y luego usar la integración OpenMetrics (que soporta Autodiscovery) para encontrar el pod y consultar el punto de conexión.
-## Configurar tu integración +## Configura tu integración {#set-up-your-integration} -Algunas integraciones requieren pasos de configuración, como la creación de un token de acceso o la concesión de permisos de lectura al Datadog Agent. Sigue las instrucciones de la sección **Configuración** de la documentación de integraciones. +Algunas integraciones requieren pasos de configuración, como crear un token de acceso o otorgar permiso de lectura al Datadog Agent. Sigue las instrucciones en la sección **Setup** de la documentación de tu integración. -### Integraciones de la comunidad -Para utilizar una integración que no está empaquetada con el Datadog Agent, debes crear una imagen personalizada que contenga la integración deseada. Consulta el [uso de integraciones comunitarias][13] para obtener instrucciones. +### Integraciones comunitarias {#community-integrations} +Para usar una integración que no está empaquetada con el Datadog Agent, debes construir una imagen personalizada que contenga la integración deseada. Consulta [Usar Integraciones Comunitarias][13] para obtener instrucciones. -## Configuración +## Configuration {#configuration} -Algunas integraciones de uso común vienen por defecto con una configuración para Autodiscovery. Consulta [Auto-configuración de Autodiscovery][20] para obtener más detalles, incluyendo una lista de integraciones auto-configuradas y sus correspondientes archivos de configuración por defecto. Si tu integración está en esta lista y la configuración por defecto es suficiente para tu caso de uso, no es necesario realizar ninguna acción adicional. +Algunas integraciones de uso común vienen con una configuración predeterminada para Autodiscovery. Consulta [Autodiscovery auto-configuration][20] para más detalles, incluyendo una lista de integraciones configuradas automáticamente y sus correspondientes archivos de configuración predeterminados. Si tu integración está en esta lista y la configuración predeterminada es suficiente para tu caso de uso, no se requiere ninguna acción adicional. -O: +De lo contrario: -1. Elige un método de configuración (anotaciones en pods de Kubernetes, un archivo local, un ConfigMap, una base de datos clave-valor, un manifiesto del Datadog Operator o un chart de Helm) que se adapte a tu caso de uso. -2. Consulta el formato de plantilla para el método elegido. Cada formato contiene parámetros, como ``. -3. [Proporciona valores](#placeholder-values) para estos parámetros. +1. Elige un método de configuración (anotaciones de pod de Kubernetes, un archivo local, un ConfigMap, un almacén de clave-valor, un manifiesto de Datadog Operator o un Helm chart) que se adapte a tu caso de uso. +2. Consulta el formato de plantilla para el método que elegiste. Cada formato contiene marcadores de posición, como ``. +3. [Proporciona valores](#placeholder-values) para estos marcadores de posición. {{< tabs >}} -{{% tab "Annotations" %}} +{{% tab "Anotaciones" %}} -Si defines tus pods de Kubernetes directamente con `kind: Pod`, añade las anotaciones de cada pod directamente bajo su sección `metadata`, como se muestra a continuación: +Si defines tus pods de Kubernetes directamente con `kind: Pod`, agrega las anotaciones de cada pod directamente bajo su sección `metadata`, como se muestra: -**Anotaciones de Autodiscovery v2** (para el Datadog Agent v7.36 o posterior) +**Anotaciones de Autodiscovery v2** (para Datadog Agent v7.36+) ```yaml apiVersion: v1 @@ -80,7 +86,7 @@ spec: # (...) ``` -**Anotaciones de Autodiscovery v1** +**Anotaciones de Autodiscovery v1** ```yaml apiVersion: v1 @@ -100,12 +106,12 @@ spec: # (...) ``` -Si defines pods indirectamente (con despliegues, ReplicaSets o ReplicationControllers), añade anotaciones de pod en `spec.template.metadata`. +Si defines pods de manera indirecta (con deployments, ReplicaSets o ReplicationControllers), agrega anotaciones de pod bajo `spec.template.metadata`. {{% /tab %}} -{{% tab "Local file" %}} +{{% tab "Archivo local" %}} -Puedes almacenar plantillas de Autodiscovery como archivos locales en el directorio montado `conf.d` (`/etc/datadog-agent/conf.d`). Debes reiniciar tus contenedores del Agent cada vez que cambias, añades o eliminas plantillas. +Puedes almacenar plantillas de Autodiscovery como archivos locales dentro del directorio montado `conf.d` (`/etc/datadog-agent/conf.d`). Debes reiniciar tus contenedores del Agent cada vez que cambies, agregues o elimines plantillas. 1. Crea un archivo `conf.d/.d/conf.yaml` en tu host: ```yaml @@ -122,7 +128,7 @@ Puedes almacenar plantillas de Autodiscovery como archivos locales en el directo ``` -2. Monta tu carpeta host `conf.d/` en la carpeta `conf.d` del Agent contenedorizado. +2. Monta la carpeta `conf.d/` de tu host en la carpeta `conf.d` del Agent en contenedor. Para Datadog Operator: ```yaml @@ -132,7 +138,7 @@ Puedes almacenar plantillas de Autodiscovery como archivos locales en el directo volumes: - hostPath: path: /conf.d - name: confd + name: confd ``` Para Helm: @@ -150,7 +156,7 @@ Puedes almacenar plantillas de Autodiscovery como archivos locales en el directo {{% /tab %}} {{% tab "ConfigMap" %}} -Puedes utilizar [ConfigMaps][1] para definir configuraciones externamente y montarlas posteriormente. +Puedes usar [ConfigMaps][1] para definir configuraciones externamente y posteriormente montarlas. ```yaml kind: ConfigMap @@ -173,13 +179,13 @@ data: [1]: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap {{% /tab %}} -{{% tab "Base de datos clave-valor" %}} +{{% tab "Almacenamiento de clave-valor" %}} -Puedes obtener plantillas de Autodiscovery desde [Consul][1], [etcd][2] o [ZooKeeper][3]. Puedes configurar tu base de datos clave-valor en el archivo de configuración `datadog.yaml` (y posteriormente montar este archivo en el contenedor del Agent) o como variables de entorno en el contenedor del Agent. +Puedes obtener plantillas de Autodiscovery de [Consul][1], [etcd][2] o [ZooKeeper][3]. Puedes configurar tu almacenamiento de clave-valor en el archivo de configuración `datadog.yaml` (y posteriormente montar este archivo dentro del contenedor del Agent), o como variables de entorno en el contenedor del Agent. -**Configurar en datadog.yaml**: +**Configura en datadog.yaml**: -En `datadog.yaml`, configura la dirección `` y el`` de tu base de datos clave-valor: +En `datadog.yaml`, establece la dirección `` y `` de tu almacenamiento de clave-valor: ```yaml config_providers: @@ -212,9 +218,9 @@ En `datadog.yaml`, configura la dirección `` y el` ``` -
Cuando varios CRDs del DatadogAgent desplegados utilizan configDataMap, cada CRD escribe en un ConfigMap compartido llamado nodeagent-extra-confd. Esto puede provocar que las configuraciones se anulen entre sí.
+
Cuando se despliegan múltiples DatadogAgent Los CRDs utilizan configDataMap, cada CRD escribe en un ConfigMap compartido llamado nodeagent-extra-confd. Esto puede causar que las configuraciones se anulen entre sí.
-Para monitorizar un [check de clústeres][1], añade una sobreescritura `extraConfd.configDataMap` al componente `clusterAgent`. También debes activar los checks de clústeres configurando `features.clusterChecks.enabled: true`. +Para monitorear un [Cluster Check][1], agrega una anulación `extraConfd.configDataMap` al componente `clusterAgent`. También debes habilitar los cluster checks configurando `features.clusterChecks.enabled: true`. ```yaml apiVersion: datadoghq.com/v2alpha1 @@ -295,14 +301,14 @@ spec: ``` -Consulta los [checks de clústeres][1] para más contexto. +Consulta [Cluster Checks][1] para más contexto. [1]: /es/agent/cluster_agent/clusterchecks {{% /tab %}} {{% tab "Helm" %}} -Tu archivo `datadog-values.yaml` contiene una sección `datadog.confd` donde puedes definir plantillas de Autodiscovery. Puedes encontrar ejemplos en línea en [values.yaml][1]. Cada clave se convierte en archivo en el directorio `conf.d` del Agent. +Tu archivo `datadog-values.yaml` contiene una sección `datadog.confd` donde puedes definir plantillas de Autodiscovery. Puedes encontrar ejemplos en línea en el archivo de muestra [values.yaml][1]. Cada clave se convierte en un archivo en el directorio `conf.d` del Agent. ```yaml datadog: @@ -318,7 +324,7 @@ datadog: ``` -Para monitorizar un [check de clústeres][3], define tu plantilla en `clusterAgent.confd`. Puedes encontrar ejemplos en línea en [values.yaml][2]. También debes habilitar el Cluster Agent, configurando `clusterAgent.enabled: true`, y habilitar los checks de clústeres, configurando `datadog.clusterChecks.enabled: true`. +Para monitorear un [Cluster Check][3], define tu plantilla bajo `clusterAgent.confd`. Puedes encontrar ejemplos en línea en el archivo de muestra [values.yaml][2]. También debes habilitar el Cluster Agent configurando `clusterAgent.enabled: true` y habilitar los cluster checks configurando `datadog.clusterChecks.enabled: true`. ```yaml datadog: @@ -339,7 +345,7 @@ clusterAgent: ``` -Consulta los [checks de clústeres][3] para más contexto. +Consulta [Cluster Checks][3] para más contexto. [1]: https://github.com/DataDog/helm-charts/blob/92fd908e3dd7b7149ce02de1fe859ae5ac717d03/charts/datadog/values.yaml#L315-L330 [2]: https://github.com/DataDog/helm-charts/blob/92fd908e3dd7b7149ce02de1fe859ae5ac717d03/charts/datadog/values.yaml#L680-L689 @@ -348,43 +354,105 @@ Consulta los [checks de clústeres][3] para más contexto. {{< /tabs >}} -### Valores de parámetros +### Valores de marcador de posición {#placeholder-values} -Proporciona los siguientes valores de parámetros: +Proporcione valores de marcador de posición de la siguiente manera: `` -: nombre de tu integración de Datadog, como `etcd` o `redisdb`. +: El nombre de su integración de Datadog, como `etcd` o `redisdb`. `` -: Un identificador para emparejar con los nombres (`spec.containers[i].name`, **no** `spec.containers[i].image`) de los contenedores que corresponden a tu integración. +: Un identificador para hacer coincidir con los nombres (`spec.containers[i].name`, **no** `spec.containers[i].image`) de los contenedores que corresponden a su integración. `` -: Un identificador para emparejar con la imagen de contenedor (`.spec.containers[i].image`).

-Por ejemplo: si proporcionas `redis` como identificador de contenedor, tu plantilla de Autodiscovery se aplica a todos los contenedores con nombres de imagen que coincidan con `redis`. Si tienes un contenedor que ejecuta `foo/redis:latest` y `bar/redis:v2`, tu plantilla de Autodiscovery se aplica a ambos contenedores.

-El parámetro `ad_identifiers` toma una lista, por lo que puedes proporcionar varios identificadores de contenedor. También puedes utilizar identificadores personalizados. Consulta los [identificadores personalizados de Autodiscovery][21]. +: Un identificador para hacer coincidir con la imagen del contenedor (`.spec.containers[i].image`).

+Por ejemplo: si proporcionas `redis` como un identificador de contenedor, tu plantilla de Autodiscovery se aplica a todos los contenedores con nombres de imagen que coincidan con `redis`. Si tienes un contenedor ejecutándose `foo/redis:latest` y `bar/redis:v2`, tu plantilla de Autodiscovery se aplica a ambos contenedores.

+El parámetro `ad_identifiers` acepta una lista, por lo que puedes proporcionar múltiples identificadores de contenedor. También puedes usar identificadores personalizados. Consulta [Identificadores de Autodiscovery Personalizados][21]. `` -: parámetros de configuración que figuran en `init_config`, en el archivo `.d/conf.yaml.example` de tu integración. La sección `init_config` suele estar vacía. +: Los parámetros de configuración que se enumeran bajo `init_config` en el archivo `.d/conf.yaml.example` de tu integración. La sección `init_config` suele estar vacía. `` -: parámetros de configuración que figuran en `instances`, en el archivo `.d/conf.yaml.example` de tu integración. +: Los parámetros de configuración que se enumeran bajo `instances` en el archivo `.d/conf.yaml.example` de tu integración. `` -: parámetros de configuración que figuran en `logs`, en el archivo `.d/conf.yaml.example` de tu integración. +: Los parámetros de configuración que se enumeran bajo `logs` en el archivo `.d/conf.yaml.example` de tu integración. + +### Parámetros avanzados de anotación {#advanced-annotation-parameters} + +Además de las anotaciones básicas de Autodiscovery para verificaciones, registros e instancias, puedes usar anotaciones adicionales para personalizar el comportamiento de las verificaciones: + +#### Cardinalidad de etiquetas {#tag-cardinality} + +Establece el nivel de cardinalidad de etiquetas para una verificación específica utilizando la anotación `check_tag_cardinality`. Esto anula la configuración global de cardinalidad de etiquetas del Agent para las métricas recopiladas por ese check. + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: '' + annotations: + ad.datadoghq.com/.checks: | + { + "": { + "init_config": , + "instances": [] + } + } + ad.datadoghq.com/.check_tag_cardinality: "" +spec: + containers: + - name: '' +``` + +
El check_tag_cardinality la anotación solo afecta a las métricas recopiladas por las verificaciones de integración. No afecta a las métricas enviadas a través de DogStatsD. Para configurar la cardinalidad de etiquetas de DogStatsD, utiliza el parámetro de configuración global dogstatsd_tag_cardinality o la variable de entorno. DD_DOGSTATSD_TAG_CARDINALITY variable de entorno.
+ +Para más información sobre la cardinalidad de etiquetas, consulta [Configuración de etiquetas por verificación][27]. + +### Auto-configuración{#auto-configuration} + +El Datadog Agent reconoce automáticamente y proporciona una configuración básica para algunas tecnologías comunes. Para una lista completa, consulta [Auto-configuración de Autodiscovery][20]. -### Auto-configuración +Las configuraciones establecidas con anotaciones de Kubernetes tienen prioridad sobre la auto-configuración, pero la auto-configuración tiene prioridad sobre las configuraciones establecidas con Datadog Operator o Helm. Para usar Datadog Operator o Helm para configurar una integración en la lista de [Auto-configuración de Autodiscovery][20], debes [deshabilitar la auto-configuración][22]. -El Datadog Agent reconoce y proporciona automáticamente una configuración básica para algunas tecnologías comunes. Para ver una lista completa, consulta [Auto-configuración de Autodiscovery][20]. +## Las integraciones a menudo necesitan leer archivos de configuración, certificados u otros recursos del sistema de archivos.{#integrations-security} -Las configuraciones establecidas con anotaciones de Kubernetes tienen prioridad sobre la auto-configuración, pero la auto-configuración tiene prioridad sobre las configuraciones establecidas con el Datadog Operator o con Helm. Para utilizar el Datadog Operator o Helm para configurar una integración en la lista de [auto-configuración de Autodiscovery][20], debes [desactivar la auto-configuración][22]. +Cuando las rutas de archivos provienen de proveedores de configuración no confiables (por ejemplo, anotaciones de pods o auto-descubrimiento de servicios externos), existe un riesgo de recorrido de ruta o acceso no autorizado a archivos. . -## Ejemplo: integración con Postgres +A partir de la versión 7.78.0 del Agente de Datadog, puede establecer los siguientes parámetros en el `datadog.yaml` del Agente para controlar el acceso al sistema de archivos según el nivel de confianza de un proveedor de configuración. -En este escenario de ejemplo, has desplegado Postgres en Kubernetes y quieres configurar la [integración Datadog-Postgres][26]. Todos tus contenedores de Postgres tienen nombres de contenedor que contienen la cadena `postgres`. +| Parámetro | Tipo | Predeterminado | Descripción | +|-----------|------|---------|-------------| +| `integration_ignore_untrusted_file_params` | bool | `false` | Cuando está habilitado, las integraciones ignoran los parámetros de configuración que se refieren a rutas de archivos si el proveedor de configuración no es de confianza. | +| `integration_file_paths_allowlist` | lista | `[]` | Lista de rutas de archivos a las que las integraciones tienen permitido acceder, incluso cuando son proporcionadas por un proveedor de configuración no confiable. Una lista vacía significa que se permiten todas las rutas de archivos. | +| `integration_trusted_providers` | lista | `["file", "remote-config"]` | Lista de proveedores de configuración considerados de confianza. Cualquier proveedor que no esté en esta lista se considera no confiable. Por defecto, los archivos de configuración locales (`file`) y Datadog Remote Configuration (`remote-config`) son de confianza. Para la lista completa de proveedores soportados, consulte [nombres de proveedores del Datadog Agent][28]. | +| `integration_security_excluded_checks` | lista | `[]` | Lista de nombres de integraciones que están excluidas de las restricciones de seguridad anteriores. | -En primer lugar, consulta la [documentación de integraciones de Postgres][26] para conocer los pasos de configuración adicionales. La integración de Postgres requiere la creación de un usuario de sólo lectura llamado `datadog` y el almacenamiento de la contraseña correspondiente como una variable de entorno llamada `PG_PASSWORD`. +Estas opciones son compatibles hacia atrás: los valores predeterminados preservan el comportamiento existente. Para optar por esta opción, habilite `integration_ignore_untrusted_file_params` y ajuste los parámetros restantes para que coincidan con su entorno. -Si tuvieras que configurar esta integración **en un host**, podrías hacer referencia a [`postgresql.d/conf.yaml.example`][15] para ver los parámetros y crear un archivo `postgresql.d/conf.yaml` que contenga lo siguiente: +Ejemplo `datadog.yaml`: + +```yaml +integration_ignore_untrusted_file_params: true +integration_file_paths_allowlist: + - /etc/datadog-agent/certs + - /var/run/secrets +integration_trusted_providers: + - file + - remote-config +integration_security_excluded_checks: + - +``` + +Con esta configuración, una integración configurada a través de anotaciones de pod (un proveedor no confiable) no puede hacer referencia a rutas de archivos fuera de `/etc/datadog-agent/certs` o `/var/run/secrets`, a menos que el nombre de la integración esté listado en `integration_security_excluded_checks`. + +## Ejemplo: integración de Postgres {#example-postgres-integration} + +En este escenario de ejemplo, implementaste Postgres en Kubernetes. Deseas configurar la [integración de Datadog-Postgres][26]. Todos tus contenedores de Postgres tienen nombres de contenedor que contienen la cadena `postgres`. + +Primero, consulta la [documentación de integración de Postgres][26] para cualquier paso adicional de configuración. La integración de Postgres requiere que crees un usuario de solo lectura llamado `datadog` y almacenes la contraseña correspondiente como una variable de entorno llamada `PG_PASSWORD`. + +Si configuraras esta integración **en un host**, podrías consultar [`postgresql.d/conf.yaml.example`][15] para los parámetros y crear un archivo `postgresql.d/conf.yaml` que contenga lo siguiente: ```yaml init_config: @@ -400,16 +468,16 @@ logs: service: pg_service ``` -Aquí, `` corresponde a la contraseña del usuario `datadog` que has creado. +Aquí, `` corresponde a la contraseña para el usuario `datadog` que creaste. Para aplicar esta configuración a tus contenedores de Postgres: {{< tabs >}} -{{% tab "Annotations" %}} +{{% tab "Anotaciones" %}} -En el manifiesto de tu pod: +En tu manifiesto de pod: -**Anotaciones de Autodiscovery v2** (para el Datadog Agent v7.36 o posterior) +**Anotaciones de Autodiscovery v2** (para Datadog Agent v7.36+) ```yaml apiVersion: v1 @@ -444,7 +512,7 @@ spec: - name: postgres ``` -**Anotaciones de Autodiscovery v1** +**Anotaciones de Autodiscovery v1** ```yaml apiVersion: v1 @@ -478,7 +546,7 @@ spec: ``` {{% /tab %}} -{{% tab "Local file" %}} +{{% tab "Archivo local" %}} 1. Crea un archivo `conf.d/postgresql.d/conf.yaml` en tu host: ```yaml @@ -497,7 +565,7 @@ spec: service: "pg_service" ``` -2. Monta tu carpeta host `conf.d/` en la carpeta `conf.d` del Agent contenedorizado. +2. Monta la carpeta `conf.d/` de tu host en la carpeta `conf.d` del Datadog Agent en contenedor. Para Datadog Operator: ```yaml @@ -507,7 +575,7 @@ spec: volumes: - hostPath: path: /conf.d - name: confd + name: confd ``` Para Helm: @@ -550,7 +618,7 @@ data: service: "pg_service" ``` -A continuación, define `volumeMounts` y `volumes` en tu manifiesto: +Luego, en tu manifiesto, define el `volumeMounts` y el `volumes`: ```yaml # [...] @@ -571,9 +639,9 @@ A continuación, define `volumeMounts` y `volumes` en tu manifiesto: ``` {{% /tab %}} -{{% tab "Base de datos clave-valor" %}} +{{% tab "Almacenamiento de clave-valor" %}} -Los siguientes comandos etcd crean una plantilla de integración con Postgres con un parámetro `password` personalizado: +Los siguientes comandos de etcd crean una plantilla de integración de Postgres con un parámetro `password` personalizado: ```conf etcdctl mkdir /datadog/check_configs/postgres @@ -582,10 +650,10 @@ etcdctl set /datadog/check_configs/postgres/init_configs '[{}]' etcdctl set /datadog/check_configs/postgres/instances '[{"host": "%%host%%","port":"5432","username":"datadog","password":"%%env_PG_PASSWORD%%"}]' ``` -Fíjate que cada uno de los tres valores es una lista. Autodiscovery agrupa los elementos de la lista en configuraciones de integraciones basadas en índices de lista compartidos. En este caso, define la primera (y única) configuración de checks a partir de `check_names[0]`, `init_configs[0]` y `instances[0]`. +Nota que cada uno de los tres valores es una lista. Autodiscovery ensambla los elementos de la lista en las configuraciones de integración basándose en índices de lista compartidos. En este caso, compone la primera (y única) configuración de verificación a partir de `check_names[0]`, `init_configs[0]` y `instances[0]`. {{% /tab %}} -{{% tab "Datadog Operator" %}} +{{% tab "Operador de Datadog" %}} En `datadog-agent.yaml`: @@ -613,7 +681,7 @@ spec: username: "datadog" password: "%%env_PG_PASSWORD%%" ``` -Como resultado, el Agent contiene un archivo `postgres.yaml` con la configuración anterior en el directorio `conf.d`. +Como resultado, el Datadog Agent contiene un archivo `postgres.yaml` con la configuración anterior en el directorio `conf.d`. {{% /tab %}} {{% tab "Helm" %}} @@ -633,18 +701,18 @@ datadog: username: "datadog" password: "%%env_PG_PASSWORD%%" ``` -Como resultado, el Agent contiene un archivo `postgres.yaml` con la configuración anterior en el directorio `conf.d`. +Como resultado, el Datadog Agent contiene un archivo `postgres.yaml` con la configuración anterior en el directorio `conf.d`. {{% /tab %}} {{< /tabs >}} Estas plantillas utilizan [variables de plantilla de Autodiscovery][16]: -- `%%host%%` se rellena dinámicamente con la dirección IP del contenedor. -- `%%env_PG_PASSWORD%%` hace referencia a una variable de entorno denominada `PG_PASSWORD`, que es como la ve el proceso del Agent. +- `%%host%%` se llena dinámicamente con la IP del contenedor. +- `%%env_PG_PASSWORD%%` hace referencia a una variable de entorno llamada `PG_PASSWORD` tal como la ve el proceso del Datadog Agent. -Para ver más ejemplos, incluyendo la configuración de múltiples checks para múltiples conjuntos de contenedores, consulta [Autodiscovery: escenarios y ejemplos][24]. +Para más ejemplos, incluyendo cómo configurar múltiples verificaciones para múltiples conjuntos de contenedores, consulte [Autodiscovery: Escenarios y Ejemplos][24]. -## Referencias adicionales +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} @@ -673,4 +741,6 @@ Para ver más ejemplos, incluyendo la configuración de múltiples checks para m [23]: /es/containers/guide/autodiscovery-management [24]: /es/containers/guide/autodiscovery-examples [25]: /es/integrations/istio/ -[26]: /es/integrations/postgres \ No newline at end of file +[26]: /es/integrations/postgres +[27]: /es/getting_started/integrations/#per-check-tag-configuration +[28]: https://github.com/DataDog/datadog-agent/blob/main/comp/core/autodiscovery/providers/names/provider_names.go#L10-L38 \ No newline at end of file diff --git a/content/es/database_monitoring/connect_dbm_and_apm.md b/content/es/database_monitoring/connect_dbm_and_apm.md index 4f4913deca6..9212fb6ead3 100644 --- a/content/es/database_monitoring/connect_dbm_and_apm.md +++ b/content/es/database_monitoring/connect_dbm_and_apm.md @@ -4,128 +4,148 @@ aliases: further_reading: - link: https://www.datadoghq.com/blog/link-dbm-and-apm/ tag: Blog - text: Correlacionar sin problemas los datos de telemetría de DBM y APM para comprender - el rendimiento de las consultas integrales -title: Correlacionar Database Monitoring y trazas (traces) + text: Correlaciona la telemetría de DBM y APM para entender el rendimiento de las + consultas de extremo a extremo +title: Correlaciona DBM y las trazas --- +Esta guía asume que has configurado DBM [1] y estás utilizando APM [2]. Conectar APM y DBM inyecta identificadores de trazas de APM en la recolección de datos de DBM, lo que permite la correlación de estas dos fuentes de datos. Esto habilita características del producto que muestran información de la base de datos en el producto APM, y datos de APM en el producto DBM. -En esta guía se considera que has configurado [Database Monitoring][1] y usas [APM][2]. La conexión de APM y DBM inyecta identificadores de trazas de APM en la recopilación de datos de DBM, lo que permite la correlación de estas dos fuentes de datos. Esto permite que las funciones del producto muestren información sobre la base de datos en el producto de APM, y datos de APM en el producto de DBM. +## Antes de comenzar {#before-you-begin} -## Antes de empezar - -Bases de datos compatibles +Bases de datos soportadas : Postgres, MySQL, SQL Server, Oracle, MongoDB -Versiones compatibles del Agent -: 7.46 o posterior - -Privacidad de los datos -: Al habilitar la propagación de comentarios de SQL, se almacenan datos potencialmente confidenciales (nombres de servicios) en las bases de datos, a los que luego pueden acceder terceros a los que se les ha otorgado acceso a la base de datos. - - -Las integraciones del rastreador de APM admiten un *Modo de propagación*, que controla la cantidad de información que pasa de las aplicaciones a la base de datos. - -- El modo `full` envía información completa sobre la traza a la base de datos, lo que te permite investigar trazas individuales en DBM. Esta es la solución recomendada para la mayoría de las integraciones. -- `service` envía el nombre del servicio, lo que permite saber qué servicios contribuyen a la carga de la base de datos. -- El modo `disabled` deshabilita la propagación y no envía información desde las aplicaciones. - -| DD_DBM_PROPAGATION_MODE | Postgres | MySQL | SQL Server | Oracle | MongoDB | -|:------------------------|:---------:|:-----------:|:----------:|:------------:|:----------:| -| `full` | {{< X >}} | {{< X >}} * | {{< X >}} | {{< X >}} ** | {{< X >}} | -| `service` | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | - -\* El modo de propagación completa en Aurora MySQL requiere la versión 3. - -\*\* El modo de propagación completa en Oracle solo es compatible con Java. - - -**Rastreadores y controladores de aplicaciones compatibles** - -| Lenguaje | Biblioteca o marco | Postgres | MySQL | SQL Server | Oracle | MongoDB | -|:-----------------------------------------|:-----------------------|:---------:|:---------:|:-------------------:|:-------------------:|:--------------------:| -| **Go:** [dd-trace-go][3] >= 1.44.0 | | | | | | | -| | [base de datos/sql][4] | {{< X >}} | {{< X >}} | solo el modo `service` | solo el modo `service` | | -| | [sqlx][5] | {{< X >}} | {{< X >}} | solo el modo `service` | solo el modo `service` | | -| **Java** [dd-trace-java][23] >= 1.11.0 | | | | | | | -| | [jdbc][22] | {{< X >}} | {{< X >}} | {{< X >}} ** | {{< X >}} *** | | -| **Ruby:** [dd-trace-rb][6] >= 1.8.0 | | | | | | | -| | [pg][8] | {{< X >}} | | | | | -| | [mysql2][7] | | {{< X >}} | | | | -| **Python:** [dd-trace-py][11] >= 1.9.0 | | | | | | | -| | [psycopg2][12] | {{< X >}} | | | | | -| | [psycopg][34] | {{< X >}} | | | | | -| [dd-trace-py][11] >= 2.9.0 | | | | | | | -| | [asyncpg][27] | {{< X >}} | | | | | -| | [aiomysql][28] | | {{< X >}} | | | | -| | [mysql-connector-python][29] | | {{< X >}} | | | | -| | [mysqlclient][30] | | {{< X >}} | | | | -| | [pymysql][31] | | {{< X >}} | | | | -| | [pymongo][35] | | | | | {{< X >}} ***** | -| **.NET** [dd-trace-dotnet][15] >= 2.35.0 | | | | | | | -| | [Npgsql][16] * | {{< X >}} | | | | | -| | [MySql.Data][17] * | | {{< X >}} | | | | -| | [MySqlConnector][18] * | | {{< X >}} | | | | -| | [System.Data.SqlClient][24] * | | | {{< X >}} ** | | | -| | [Microsoft.Data.SqlClient][32] * | | | {{< X >}} ** | | | -| **PHP** [dd-trace-php][19] >= 0.86.0 | | | | | | | -| | [pdo][20] | {{< X >}} | {{< X >}} | | | | -| | [MySQLi][21] | | {{< X >}} | | | | -| **Node.js:** [dd-trace-js][9] >= 3.17.0 | | | | | | | -| | [postgres][10] | {{< X >}} | | | | | -| | [mysql][13] | | {{< X >}} | | | | -| | [mysql2][14] | | {{< X >}} | | | | -| | [mongodb][33] | | | | | {{< X >}} **** | - -\* [CommandType.StoredProcedure][25] no compatible - -\*\* Modo completo de SQL Server para Java/.NET: - -
Si tu aplicación utiliza context_info para la instrumentación, el rastreador de APM lo sobrescribe.
- - - La instrumentación ejecuta un comando `SET context_info` cuando el cliente emite una consulta, lo que realiza un recorrido completo adicional a la base de datos. - - Requisitos previos: - - Versión 7.55.0 o posterior del Agent - - Versión 1.39.0 o posterior del rastreador de Java - - Versión del rastreador .NET 3.3 o posterior - -\*\*\* Oracle modo completo para Java: - - La instrumentación sobrescribe `V$SESSION.ACTION`. - - Requisito previo: rastreador de Java 1.45 o posterior - -\*\*\*\* Servicio/Modo completo MongoDB para Node.js: - - Requisito previo: - - Rastreador Node.js v5.37.0 o posterior - -\*\*\*\*\* Servicio/Modo completo MongoDB para Python: - - Requisito previo: - - Rastreador Python v3.5.0 o posterior - -## Configuración -Para obtener la mejor experiencia de usuario, asegúrate de que las siguientes variables de entorno se hayan configurado en tu aplicación: +Versiones de Agente soportadas +: 7.46+ -``` +Privacidad de datos +: Habilitar la propagación de comentarios SQL resulta en datos potencialmente confidenciales (nombres de servicios) que se almacenan en las bases de datos y que pueden ser accedidos por otros terceros que han sido autorizados para acceder a la base de datos. + + +Las integraciones del SDK de Datadog soportan un *Modo de Propagación*, que controla la cantidad de información que se pasa de las aplicaciones a la base de datos. + +| Modo de propagación | Descripción | +|:-----------------|:------------| +| `full` | Envía información completa de trazas a la base de datos, permitiéndote investigar trazas individuales dentro de DBM. Esta es la solución recomendada para la mayoría de las integraciones. | +| `service` | Envía el nombre del servicio, permitiéndote entender qué servicios contribuyen a la carga de la base de datos. | +| `disabled` | Desactiva la propagación y no envía ninguna información desde las aplicaciones. | + + +**Bases de datos soportadas** + +{{< tabs >}} +{{% tab "Postgres" %}} + +| Idioma | Versión mínima del rastreador | Biblioteca/Marco | Modo | +|:---------|:-------------------|:------------------|:-----| +| **Go** | [dd-trace-go v2](https://pkg.go.dev/github.com/DataDog/dd-trace-go/v2) | [database/sql](https://pkg.go.dev/database/sql)
[sqlx](https://pkg.go.dev/github.com/jmoiron/sqlx) | `full`
`service` | +| **Java** | [dd-trace-java](https://github.com/DataDog/dd-trace-java) >= 1.11.0 | [jdbc](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) | `full`
`service` | +| **.NET** | [dd-trace-dotnet](https://github.com/DataDog/dd-trace-dotnet) >= 2.35.0 | [Npgsql](https://www.nuget.org/packages/npgsql) | `full`
`service` | +| **Node.js** | [dd-trace-js](https://github.com/DataDog/dd-trace-js) >= 3.17.0 | [postgres](https://node-postgres.com/) | `full`
`service` | +| **PHP** | [dd-trace-php](https://github.com/DataDog/dd-trace-php) >= 0.86.0 | [pdo](https://www.php.net/manual/en/book.pdo.php) | `full`
`service` | +| **Python** | [dd-trace-py](https://github.com/DataDog/dd-trace-py) >= 1.9.0 | [psycopg2](https://www.psycopg.org/docs/index.html)
[psycopg](https://www.psycopg.org/psycopg3/) | `full`
`service` | +| **Python** | [dd-trace-py](https://github.com/DataDog/dd-trace-py) >= 2.9.0 | [asyncpg](https://pypi.org/project/asyncpg/) | `full`
`service` | +| **Ruby** | [dd-trace-rb](https://github.com/dataDog/dd-trace-rb) >= 1.8.0 | [pg](https://github.com/ged/ruby-pg) | `full`
`service` | + +**Nota**: [CommandType.StoredProcedure](https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtype?view=dotnet-plat-ext-7.0#remarks:~:text=[…]%20should%20set) no es compatible con el controlador .NET. + +{{% /tab %}} + +{{% tab "MySQL" %}} + +| Idioma | Versión mínima del rastreador | Biblioteca/Marco | Modo | +|:---------|:-------------------|:------------------|:-----| +| **Go** | [dd-trace-go v2](https://pkg.go.dev/github.com/DataDog/dd-trace-go/v2) | [database/sql](https://pkg.go.dev/database/sql)
[sqlx](https://pkg.go.dev/github.com/jmoiron/sqlx) | `full`
`service` | +| **Java** | [dd-trace-java](https://github.com/DataDog/dd-trace-java) >= 1.11.0 | [jdbc](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) | `full`
`service` | +| **.NET** | [dd-trace-dotnet](https://github.com/DataDog/dd-trace-dotnet) >= 2.35.0 | [MySql.Data](https://www.nuget.org/packages/MySql.Data)
[MySqlConnector](https://www.nuget.org/packages/MySqlConnector) | `full`
`service` | +| **Node.js** | [dd-trace-js](https://github.com/DataDog/dd-trace-js) >= 3.17.0 | [mysql](https://github.com/mysqljs/mysql)
[mysql2](https://github.com/sidorares/node-mysql2) | `full`
`service` | +| **PHP** | [dd-trace-php](https://github.com/DataDog/dd-trace-php) >= 0.86.0 | [pdo](https://www.php.net/manual/en/book.pdo.php)
[MySQLi](https://www.php.net/manual/en/book.mysqli.php) | `full`
`service` | +| **Python** | [dd-trace-py](https://github.com/DataDog/dd-trace-py) >= 2.9.0 | [aiomysql](https://pypi.org/project/aiomysql/)
[mysql-connector-python](https://pypi.org/project/mysql-connector-python/)
[mysqlclient](https://pypi.org/project/mysqlclient/)
[pymysql](https://github.com/PyMySQL/PyMySQL) | `full`
`service` | +| **Ruby** | [dd-trace-rb](https://github.com/dataDog/dd-trace-rb) >= 1.8.0 | [mysql2](https://github.com/brianmario/mysql2) | `full`
`service` | + +**Nota**: [CommandType.StoredProcedure](https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtype?view=dotnet-plat-ext-7.0#remarks:~:text=[…]%20should%20set) no es compatible con los controladores .NET. + +**Nota**: El modo de propagación completa en Aurora MySQL requiere la versión 3. + +{{% /tab %}} + +{{% tab "SQL Server" %}} + +| Idioma | Versión mínima del rastreador | Biblioteca/Marco | Modo | +|:---------|:-------------------|:------------------|:-----| +| **Go** | [dd-trace-go v2](https://pkg.go.dev/github.com/DataDog/dd-trace-go/v2) | [database/sql](https://pkg.go.dev/database/sql)
[sqlx](https://pkg.go.dev/github.com/jmoiron/sqlx) | `service` | +| **Java** | [dd-trace-java](https://github.com/DataDog/dd-trace-java) >= 1.11.0 | [jdbc](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) | `full`
`service` | +| **.NET** | [dd-trace-dotnet](https://github.com/DataDog/dd-trace-dotnet) >= 2.35.0 | [System.Data.SqlClient](https://learn.microsoft.com/sql/connect/ado-net/microsoft-ado-net-sql-server)
[Microsoft.Data.SqlClient](https://learn.microsoft.com/sql/connect/ado-net/introduction-microsoft-data-sqlclient-namespace) | `full`
`service` | + +**Nota**: [CommandType.StoredProcedure](https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtype?view=dotnet-plat-ext-7.0#remarks:~:text=[…]%20should%20set) no es compatible con los controladores .NET. + +Para `full` modo con Java y .NET: + +
Si su aplicación utiliza context_info para instrumentación, el SDK de Datadog lo sobrescribe.
+ +- La instrumentación ejecuta un `SET context_info` comando cuando el cliente emite una consulta, lo que provoca una ronda adicional de comunicación con la base de datos. +- Requisitos previos: + - Versión del agente 7.55.0 o superior + - Versión del rastreador de Java 1.39.0 o superior + - Versión del rastreador de .NET 3.3 o superior + +{{% /tab %}} + +{{% tab "Oracle" %}} + +| Idioma | Versión mínima del rastreador | Biblioteca/Marco | Modo | +|:---------|:-------------------|:------------------|:-----| +| **Go** | [dd-trace-go v2](https://pkg.go.dev/github.com/DataDog/dd-trace-go/v2) | [database/sql](https://pkg.go.dev/database/sql)
[sqlx](https://pkg.go.dev/github.com/jmoiron/sqlx) | `service` | +| **Java** | [dd-trace-java](https://github.com/DataDog/dd-trace-java) >= 1.11.0 | [jdbc](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) | `full`
`service` | + +Para `full` modo con Java: +- La instrumentación sobrescribe `V$SESSION.ACTION`. +- Requisito previo: rastreador de Java 1.45 o superior + +{{% /tab %}} + +{{% tab "MongoDB" %}} + +| Idioma | Versión mínima del rastreador | Biblioteca/Marco | Modo | +|:---------|:-------------------|:------------------|:-----| +| **Java** | [dd-trace-java](https://github.com/DataDog/dd-trace-java) >= 1.58.0 | [mongo-java-driver](https://www.mongodb.com/docs/drivers/java/sync/current/) v3.8+ | `full`
`service` | +| **Node.js** | [dd-trace-js](https://github.com/DataDog/dd-trace-js) >= 5.80.0 | [mongodb](https://github.com/mongodb/node-mongodb-native) | `full`
`service` | +| **Python** | [dd-trace-py](https://github.com/DataDog/dd-trace-py) >= 3.5.0 | [pymongo](https://pymongo.readthedocs.io/en/stable/) | `full`
`service` | + +{{% /tab %}} + +{{< /tabs >}} + +## Configuración {#setup} +Establezca las siguientes variables de entorno en su aplicación: + +```shell DD_SERVICE=(application name) DD_ENV=(application environment) DD_VERSION=(application version) ``` -Datadog recomienda establecer el modo de enmascaramiento en `obfuscate_and_normalize` para las versiones del Agent `7.63` y posteriores. Añade el siguiente parámetro en la sección `apm_config` de tu archivo de configuración del Agent de APM: +Estas etiquetas identifican su servicio en las vistas de correlación de APM y en el desglose de conexiones activas de DBM. -``` +Datadog recomienda establecer el modo de ofuscación en `obfuscate_and_normalize` para las versiones del Agente `7.63` y superiores. Agregue el siguiente parámetro en la sección `apm_config` de su archivo de configuración del Agente APM: + +```yaml sql_obfuscation_mode: "obfuscate_and_normalize" ``` -
Cambiar el modo de enmascaramiento puede alterar el texto SQL normalizado. Si tienes monitores basados en texto SQL en trazas de APM, puede que necesites actualizarlos.
+
Cambiar el modo de ofuscación puede alterar el texto SQL normalizado. Si tiene monitores basados en texto SQL en los trazos de APM, es posible que necesite actualizarlos.
{{< tabs >}} {{% tab "Go" %}} -Actualiza las dependencias de tu aplicación para incluir [dd-trace-go@v1.44.0][1] o posterior. {{% tracing-go-v2 %}} +Actualice las dependencias de su aplicación para incluir [dd-trace-go v2][1]. {{% tracing-go-v2 %}} + ```shell go get github.com/DataDog/dd-trace-go/v2 # 2.x ``` -Actualiza tu código para importar el paquete `contrib/database/sql`: +Actualice su código para importar el paquete `contrib/database/sql`: + ```go import ( "database/sql" @@ -134,75 +154,78 @@ import ( ) ``` -Habilita la función de propagación de la monitorización de base de datos mediante uno de los siguientes métodos: +Habilite la función de propagación de monitoreo de base de datos utilizando uno de los siguientes métodos: - Variable de entorno: `DD_DBM_PROPAGATION_MODE=full` -- Uso de código durante el registro del controlador: +- Usando código durante el registro del controlador: ```go sqltrace.Register("postgres", &pq.Driver{}, sqltrace.WithDBMPropagation(tracer.DBMPropagationModeFull), sqltrace.WithService("my-db-service")) ``` -- Uso de código en `sqltrace.Open`: +- Usando código en `sqltrace.Open`: ```go sqltrace.Register("postgres", &pq.Driver{}, sqltrace.WithService("my-db-service")) db, err := sqltrace.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=disable", sqltrace.WithDBMPropagation(tracer.DBMPropagationModeFull)) if err != nil { - log.Fatal(err) + log.Fatal(err) } ``` Ejemplo completo: + ```go import ( - "database/sql" - "github.com/DataDog/dd-trace-go/v2/ddtrace/tracer" + "database/sql" + "github.com/DataDog/dd-trace-go/v2/ddtrace/tracer" sqltrace "github.com/DataDog/dd-trace-go/contrib/database/sql/v2" ) func main() { - // The first step is to set the dbm propagation mode when registering the driver. Note that this can also - // be done on sqltrace.Open for more granular control over the feature. - sqltrace.Register("postgres", &pq.Driver{}, sqltrace.WithDBMPropagation(tracer.DBMPropagationModeFull)) - - // Followed by a call to Open. - db, err := sqltrace.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=disable") - if err != nil { - log.Fatal(err) - } - - // Then, we continue using the database/sql package as we normally would, with tracing. - rows, err := db.Query("SELECT name FROM users WHERE age=?", 27) - if err != nil { - log.Fatal(err) - } - defer rows.Close() + // The first step is to set the dbm propagation mode when registering the driver. Note that this can also + // be done on sqltrace.Open for more granular control over the feature. + sqltrace.Register("postgres", &pq.Driver{}, sqltrace.WithDBMPropagation(tracer.DBMPropagationModeFull)) + + // Followed by a call to Open. + db, err := sqltrace.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=disable") + if err != nil { + log.Fatal(err) + } + + // Then, we continue using the database/sql package as we normally would, with tracing. + rows, err := db.Query("SELECT name FROM users WHERE age=?", 27) + if err != nil { + log.Fatal(err) + } + defer rows.Close() } ``` -[1]: https://pkg.go.dev/gopkg.in/DataDog/dd-trace-go.v1 +[1]: https://pkg.go.dev/github.com/DataDog/dd-trace-go/v2 {{% /tab %}} {{% tab "Java" %}} -Sigue las instrucciones de instrumentación del [rastreo de Java][1] e instala la versión `1.11.0`, o una posterior, del Agent. +Siga las instrucciones de instrumentación de [Java tracing][1] e instale la versión `1.11.0` o superior del Agente. -También debes habilitar la [instrumentación][2] `jdbc-datasource`. +También debe habilitar la instrumentación `jdbc-datasource` [instrumentation][2]. -Habilita la función de propagación de la monitorización de base de datos mediante **uno** de los siguientes métodos: +Habilite la función de propagación de DBM utilizando **una** de los siguientes métodos: -- Establecer la propiedad del sistema `dd.dbm.propagation.mode=full` -- Establecer la variable de entorno `DD_DBM_PROPAGATION_MODE=full` +- Establezca la propiedad del sistema `dd.dbm.propagation.mode=full` +- Establezca la variable de entorno `DD_DBM_PROPAGATION_MODE=full` Ejemplo completo: -``` + +```shell # Start the Java Agent with the required system properties java -javaagent:/path/to/dd-java-agent.jar -Ddd.dbm.propagation.mode=full -Ddd.integration.jdbc-datasource.enabled=true -Ddd.service=my-app -Ddd.env=staging -Ddd.version=1.0 -jar path/to/your/app.jar ``` -Realiza un test de la función en tu aplicación: +Pruebe la función en su aplicación: + ```java public class Application { public static void main(String[] args) { @@ -221,17 +244,17 @@ public class Application { } ``` -**Versiones 1.44 y posteriores**: -Habilita el rastreo de sentencias preparadas para Postgres mediante **uno** de los siguientes métodos: +**Las versiones del Tracer 1.44 y superiores**: +Habilite la traza de declaraciones preparadas para Postgres usando **uno** de los siguientes métodos: - Establece la propiedad del sistema `dd.dbm.trace_prepared_statements=true` - Establece la variable de entorno `export DD_DBM_TRACE_PREPARED_STATEMENTS=true` -**Nota**: La instrumentación de sentencias preparadas sobrescribe la propiedad `Application` con el texto `_DD_overwritten_by_tracer`, y provocan un viaje de ida y vuelta adicional a la base de datos. Este viaje de ida y vuelta adicional normalmente tiene un impacto insignificante en el tiempo de ejecución de la sentencia SQL. +**Nota**: La instrumentación de declaraciones preparadas sobrescribe la propiedad `Application` con el texto `_DD_overwritten_by_tracer`, y causa un viaje adicional a la base de datos. Este viaje adicional tiene un impacto mínimo en el tiempo de ejecución de las declaraciones SQL. -
La activación del rastreo de sentencias preparadas puede provocar un aumento de la asignación de pines de conexión al utilizar Amazon RDS Proxy, lo que reduce la eficacia de la agrupación de conexión. Para obtener más información, consulta asignación de pines de conexión en RDS Proxy.
+
Habilitar el rastreo de declaraciones preparadas puede causar un aumento del pinning de conexiones cuando se utiliza Amazon RDS Proxy, lo que reduce la eficiencia del agrupamiento de conexiones. Para más información, consulta Pinning de conexiones en RDS Proxy.
-**Versiones del rastreador inferiores a 1.44**: -Las sentencias preparadas no son compatibles con el modo `full` para Postgres y MySQL, y todas las llamadas a la API de JDBC que utilizan sentencias preparadas se degradan automáticamente al modo `service`. Dado que la mayoría de las bibliotecas SQL de Java utilizan sentencias preparadas por defecto, esto significa que **la mayoría** de las aplicaciones Java solo pueden utilizar el modo `service`. +**Las versiones del Tracer anteriores a 1.44**: +Las declaraciones preparadas no son compatibles en `full` modo para Postgres y MySQL, y todas las llamadas a la API JDBC que utilizan declaraciones preparadas se degradan automáticamente a `service` modo. Dado que la mayoría de las bibliotecas SQL de Java utilizan declaraciones preparadas por defecto, esto significa que **la mayoría** de las aplicaciones Java solo pueden usar `service` modo. [1]: /es/tracing/trace_collection/dd_libraries/java/ [2]: /es/tracing/trace_collection/compatibility/java/#data-store-compatibility @@ -240,7 +263,7 @@ Las sentencias preparadas no son compatibles con el modo `full` para Postgres y {{% tab "Ruby" %}} -En tu archivo GEM, instala o actualiza [dd-trace-rb][1] a la versión `1.8.0` o una posterior: +En tu Gemfile, instala o actualiza [dd-trace-rb][1] a la versión `1.8.0` o superior: ```rb source 'https://rubygems.org' @@ -251,29 +274,30 @@ gem 'mysql2' gem 'pg' ``` -Habilita la función de propagación de la monitorización de base de datos mediante uno de los siguientes métodos: +Habilita la función de propagación de Database Monitoring utilizando uno de los siguientes métodos: 1. Variable de entorno: `DD_DBM_PROPAGATION_MODE=full` -2. La opción `comment_propagation` (de manera predeterminada: `ENV['DD_DBM_PROPAGATION_MODE']`), para [mysql2][2] o [pg][3]: +2. Opción `comment_propagation` (predeterminado: `ENV['DD_DBM_PROPAGATION_MODE']`), para [mysql2][2] o [pg][3]: ```rb - Datadog.configure do |c| - c.tracing.instrument :mysql2, comment_propagation: 'full' - c.tracing.instrument :pg, comment_propagation: 'full' - end + Datadog.configure do |c| + c.tracing.instrument :mysql2, comment_propagation: 'full' + c.tracing.instrument :pg, comment_propagation: 'full' + end ``` Ejemplo completo: + ```rb require 'mysql2' require 'ddtrace' Datadog.configure do |c| - c.service = 'billing-api' - c.env = 'production' - c.version = '1.3-alpha' + c.service = 'billing-api' + c.env = 'production' + c.version = '1.3-alpha' - c.tracing.instrument :mysql2, comment_propagation: ENV['DD_DBM_PROPAGATION_MODE'] + c.tracing.instrument :mysql2, comment_propagation: ENV['DD_DBM_PROPAGATION_MODE'] end client = Mysql2::Client.new(:host => "localhost", :username => "root") @@ -289,24 +313,30 @@ client.query("SELECT 1;") {{% tab "Python" %}} Actualiza las dependencias de tu aplicación para incluir [dd-trace-py>=1.9.0][1]: + ``` pip install "ddtrace>=1.9.0" ``` Para Postgres, instala [psycopg2][2]: + ``` pip install psycopg2 ``` -Para MongoDB (requiere dd-trace-py>=3.5.0), instala pymongo: +Para MongoDB, instala pymongo: + ``` pip install pymongo ``` -Habilita la función de propagación de la monitorización de base de datos al establecer la siguiente variable de entorno: +**Nota**: El soporte para MongoDB requiere `dd-trace-py` >= 3.5.0. Si necesitas actualizar: `pip install "ddtrace>=3.5.0"`. + +Habilita la función de propagación de Database Monitoring configurando la siguiente variable de entorno: - `DD_DBM_PROPAGATION_MODE=full` Ejemplo de Postgres: + ```python import psycopg2 @@ -327,6 +357,7 @@ cursor.executemany("select %s", (("foo",), ("bar",))) ``` Ejemplo de MongoDB: + ```python from pymongo import MongoClient @@ -352,16 +383,16 @@ for doc in results: {{% tab ".NET" %}}
-Esta función requiere que la instrumentación automática esté activada para tu servicio .NET. +Esta función requiere que la instrumentación automática esté habilitada para tu servicio .NET.
-Sigue las [instrucciones de rastreo de .NET Framework][1] o las [instrucciones de rastreo de .NET Core][2] a fin de instalar el paquete de instrumentación automática y habilitar el rastreo para tu servicio. +Sigue las [instrucciones de trazado de .NET Framework][1] o las [instrucciones de trazado de .NET Core][2] para instalar el paquete de instrumentación automática y habilitar el trazado para tu servicio. -Asegúrate de usar una biblioteca de cliente compatible. Por ejemplo, `Npgsql`. +Asegúrate de que estás utilizando una biblioteca de cliente compatible. Por ejemplo, `Npgsql`. -Habilita la función de propagación de la monitorización de base de datos al establecer la siguiente variable de entorno: +Habilita la función de propagación de Database Monitoring configurando la siguiente variable de entorno: - Para Postgres y MySQL: `DD_DBM_PROPAGATION_MODE=full` - - Para SQL Server: `DD_DBM_PROPAGATION_MODE=service` o `DD_DBM_PROPAGATION_MODE=full` con Java y rastreadores .NET + - Para SQL Server: `DD_DBM_PROPAGATION_MODE=service` o `DD_DBM_PROPAGATION_MODE=full` con rastreadores de Java y .NET - Para Oracle: `DD_DBM_PROPAGATION_MODE=service` [1]: /es/tracing/trace_collection/dd_libraries/dotnet-framework @@ -372,14 +403,14 @@ Habilita la función de propagación de la monitorización de base de datos al e {{% tab "PHP" %}}
-Esta función requiere que la extensión de rastreo esté habilitada para tu servicio PHP. +Esta función requiere que la extensión tracer esté habilitada para tu servicio de PHP.
-Sigue las [instrucciones de rastreo de PHP][1] a fin de instalar el paquete de instrumentación automática y habilitar el rastreo para tu servicio. +Siga las [instrucciones de traza de PHP][1] para instalar el paquete de instrumentación automática y habilitar la traza para su servicio. -Asegúrate de usar una biblioteca de cliente compatible. Por ejemplo, `PDO`. +Asegúrese de que está utilizando una biblioteca de cliente compatible. Por ejemplo, `PDO`. -Habilita la función de propagación de la monitorización de base de datos al establecer la siguiente variable de entorno: +Habilita la función de propagación de Database Monitoring configurando la siguiente variable de entorno: - `DD_DBM_PROPAGATION_MODE=full` [1]: https://docs.datadoghq.com/es/tracing/trace_collection/dd_libraries/php?tab=containers @@ -388,30 +419,31 @@ Habilita la función de propagación de la monitorización de base de datos al e {{% tab "Node.js" %}} -Instala o actualiza [dd-trace-js][1] a una versión posterior a la `3.17.0` (o `2.30.0` si usas la versión 12 de Node.js que está al final de su vida útil): +Instale o actualice [dd-trace-js][1] a una versión superior a `3.17.0` (o `2.30.0` si utiliza la versión 12 de Node.js que ha llegado al final de su vida útil): -``` +```shell npm install dd-trace@^3.17.0 ``` -Actualiza tu código para importar e inicializar el rastreador: +Actualiza tu código para importar e inicializar el tracer: + ```javascript // This line must come before importing any instrumented module. const tracer = require('dd-trace').init(); ``` -Habilita la función de propagación de la monitorización de base de datos mediante uno de los siguientes métodos: +Habilita la función de propagación de Database Monitoring utilizando uno de los siguientes métodos: * Establece la siguiente variable de entorno: ``` DD_DBM_PROPAGATION_MODE=full ``` -* Establece el rastreador para que use la opción `dbmPropagationMode` (de manera predeterminada: `ENV['DD_DBM_PROPAGATION_MODE']`): +* Establece el SDK para usar la opción `dbmPropagationMode` (predeterminado: `ENV['DD_DBM_PROPAGATION_MODE']`): ```javascript const tracer = require('dd-trace').init({ dbmPropagationMode: 'full' }) ``` -* Solo habilítalo en el nivel de integración: +* Habilita solo a nivel de integración: ```javascript const tracer = require('dd-trace').init(); tracer.use('pg', { @@ -421,23 +453,24 @@ Habilita la función de propagación de la monitorización de base de datos medi Ejemplo completo: + ```javascript const pg = require('pg') const tracer = require('dd-trace').init({ dbmPropagationMode: 'full' }) const client = new pg.Client({ - user: 'postgres', - password: 'postgres', - database: 'postgres' + user: 'postgres', + password: 'postgres', + database: 'postgres' }) client.connect(err => { - console.error(err); - process.exit(1); + console.error(err); + process.exit(1); }); client.query('SELECT $1::text as message', ['Hello world!'], (err, result) => { - // handle result + // handle result }) ``` @@ -447,47 +480,62 @@ client.query('SELECT $1::text as message', ['Hello world!'], (err, result) => { {{< /tabs >}} -## Explorar la conexión de APM en DBM +Para deshabilitar la propagación después de habilitarla, establece `DD_DBM_PROPAGATION_MODE=disabled`. + +## Verifica la integración {#verify-the-integration} + +Para confirmar que la integración está funcionando: +1. Ejecuta tu aplicación instrumentada y realiza una consulta a la base de datos. +1. En Datadog, ve a [**Database Monitoring > Muestras de consulta**][37]. +1. Confirma que la insignia de correlación **APM** aparece en la muestra de consulta. + +## Explore la Conexión APM en DBM {#explore-the-apm-connection-in-dbm} + +### Atribuya las conexiones de base de datos activas a los servicios APM que las llaman {#attribute-active-database-connections-to-the-calling-apm-services} -### Atribuir las conexiones de base de datos activas a los servicios de APM que realizan llamadas +{{< img src="database_monitoring/dbm_apm_active_connections_breakdown.png" alt="Vea las conexiones activas a una base de datos desglosadas por el servicio APM del que provienen.">}} -{{< img src="database_monitoring/dbm_apm_active_connections_breakdown.png" alt="Visualiza las conexiones activas a una base de datos desglosadas por el servicio de APM del que se originan.">}} +Desglose las conexiones activas para un servidor dado por los servicios APM ascendentes que realizan las solicitudes. Puede atribuir la carga en una base de datos a servicios individuales para entender cuáles son los servicios más activos en la base de datos. Dirígete a la página del servicio más activo en la parte superior para continuar la investigación. -Desglosa las conexiones activas de un host determinado por los servicios de APM ascendentes que realizan las solicitudes. Puedes atribuir la carga de una base de datos a servicios individuales para comprender qué servicios son los más activos en la base de datos. Dirígete a la página de servicios del servicio ascendente más activo para continuar la investigación. +### Filtra tus hosts de base de datos por los servicios APM que los llaman {#filter-your-database-hosts-by-the-apm-services-that-call-them} -### Filtrar los hosts de bases de datos por los servicios de APM que los llaman +{{< img src="database_monitoring/dbm_filter_by_calling_service.png" alt="Filtra tus hosts de base de datos por los servicios APM que los llaman.">}} -{{< img src="database_monitoring/dbm_filter_by_calling_service.png" alt="Filtra tus host de base de datos por los servicios de APM que los llaman.">}} +Filtra la lista de bases de datos para mostrar solo los hosts de base de datos de los que dependen tus servicios APM específicos. Identifica si alguna de tus dependencias aguas abajo tiene actividad bloqueante que pueda afectar el rendimiento del servicio. -Filtra con rapidez la lista de bases de datos para solo visualizar los hosts de bases de datos de los que dependen tus servicios de APM específicos. Identifica de manera sencilla si alguna de tus dependencias descendentes tiene actividad de bloqueo que pueda afectar el rendimiento del servicio. +### Ve la traza asociada para una muestra de consulta {#view-the-associated-trace-for-a-query-sample} -### Ver la traza asociada a una muestra de consulta +{{< img src="database_monitoring/dbm_query_sample_trace_preview.png" alt="Previsualiza la traza de APM muestreada de la que proviene la muestra de consulta que se está inspeccionando.">}} -{{< img src="database_monitoring/dbm_query_sample_trace_preview.png" alt="Obtén una vista previa de la traza de APM muestreada a partir del cual se generó la muestra de consulta que se está inspeccionando.">}} +Al ver una [Muestra de Consulta][37] en Database Monitoring, si la traza asociada ha sido muestreada por APM, puedes ver la Muestra de DBM en el contexto de la traza de APM. Esto te permite combinar la telemetría de DBM, que incluye el plan de ejecución y el rendimiento histórico de la consulta, junto con el seguimiento del tramo dentro de tu infraestructura, para determinar si un cambio en la base de datos es responsable del bajo rendimiento de la aplicación. -Al visualizar una muestra de consulta en Database Monitoring, si APM ha realizado un muestreo de la traza asociada, puedes ver la muestra de DBM en el contexto de la traza de APM. Esto te permite combinar la telemetría de DBM, incluido el plan de explicación y el rendimiento histórico de la consulta, junto con el linaje del tramo dentro de tu infraestructura para comprender si un cambio en la base de datos es responsable del bajo rendimiento de la aplicación. +## Explora la Conexión de DBM en APM {#explore-the-dbm-connection-in-apm} -## Explorar la conexión de DBM en APM +### Visualiza los servidores de base de datos aguas abajo de los servicios APM {#visualize-the-downstream-database-hosts-of-apm-services} -### Visualizar los hosts de bases de datos descendentes de los servicios de APM +En la página de APM para un servicio dado, visualiza las dependencias directas de base de datos aguas abajo del servicio según lo identificado por DBM, y determina si algún servidor tiene una carga desproporcionada que puede ser causada por vecinos ruidosos. Para ver las dependencias de base de datos de un servicio: +1. Selecciona el servicio en el [Catálogo de Software][26] para abrir un panel de detalles. +1. Selecciona {{< ui >}}Service Page{{< /ui >}} en el panel. +1. En la página del Servicio, selecciona la sección {{< ui >}}Databases{{< /ui >}}. +1. Dentro de la sección de Bases de Datos, selecciona la pestaña {{< ui >}}Databases{{< /ui >}}. -{{< img src="database_monitoring/dbm_apm_service_page_db_host_list.png" alt="Visualiza los hosts de bases de datos descendentes de los que dependen tus servicios de APM desde la Página de servicios.">}} +### Visualiza las duraciones de los tramos y ve los detalles de la consulta {#visualize-span-durations-and-view-query-details} -En la página de APM de un servicio determinado, visualiza las dependencias de bases de datos descendentes directas del servicio identificadas por Database Monitoring. Determina con rapidez si algún host tiene una carga desproporcionada que puede ser causada por hosts vecinos ruidosos. Para ver la página de un servicio, haz clic en el servicio en el [Catálogo de servicios][26] a fin de abrir un panel de detalles y, a continuación, haz clic en **View Service Page** (Ver página de servicios) en el panel. +Selecciona la pestaña {{< ui >}}Queries{{< /ui >}} de la sección {{< ui >}}Databases{{< /ui >}} en la página del servicio APM para ver los valores anómalos de latencia y una lista completa de consultas del intervalo de tiempo seleccionado. Selecciona una consulta en la tabla para ver el panel de consulta y acceder a diagnósticos, detalles de errores e información de traza. -### Identificar posibles optimizaciones mediante planes de explicación para consultas de bases de datos en trazas +### Identifica optimizaciones potenciales utilizando planes de explicación para consultas de base de datos en traza {#identify-potential-optimizations-using-explain-plans-for-database-queries-in-traces} -{{< img src="database_monitoring/explain_plans_in_traces_update.png" alt="Identifica ineficiencias mediante planes de explicación para consultas de bases de datos en trazas.">}} +{{< img src="database_monitoring/explain_plans_in_traces_update.png" alt="Identifica ineficiencias utilizando planes de explicación para consultas de base de datos en traza.">}} -Visualiza el rendimiento histórico de consultas similares a las que se ejecutan en tu traza, incluidos los eventos de espera muestreados, la latencia promedio y los planes de explicación capturados recientemente, para contextualizar cómo se espera que funcione una consulta. Determina si el comportamiento es anormal y continúa la investigación al pasar a Database Monitoring para obtener contexto adicional sobre los hosts de bases de datos subyacentes. +Ve el rendimiento histórico de consultas similares a las ejecutadas en tu traza, incluyendo eventos de espera muestreados, latencia promedio y planes de explicación capturados recientemente, para contextualizar cómo se espera que rinda una consulta. Determina si el comportamiento es anormal y continúa la investigación pivotando hacia [DBM][1] para obtener contexto adicional sobre los servidores de base de datos subyacentes. -## Referencias adicionales +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} [1]: /es/database_monitoring/#getting-started [2]: /es/tracing/ -[3]: https://pkg.go.dev/gopkg.in/DataDog/dd-trace-go.v1 +[3]: https://pkg.go.dev/github.com/DataDog/dd-trace-go/v2 [4]: https://pkg.go.dev/database/sql [5]: https://pkg.go.dev/github.com/jmoiron/sqlx [6]: https://github.com/dataDog/dd-trace-rb @@ -509,7 +557,7 @@ Visualiza el rendimiento histórico de consultas similares a las que se ejecutan [22]: https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/ [23]: https://github.com/DataDog/dd-trace-java [24]: https://learn.microsoft.com/sql/connect/ado-net/microsoft-ado-net-sql-server -[25]: https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtype?view=dotnet-plat-ext-7.0#remarks:~:text=[...]%20should%20set +[25]: https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtype?view=dotnet-plat-ext-7.0#remarks:~:text=[…]%20should%20set [26]: https://app.datadoghq.com/services [27]: https://pypi.org/project/asyncpg/ [28]: https://pypi.org/project/aiomysql/ @@ -519,4 +567,6 @@ Visualiza el rendimiento histórico de consultas similares a las que se ejecutan [32]: https://learn.microsoft.com/sql/connect/ado-net/introduction-microsoft-data-sqlclient-namespace [33]: https://github.com/mongodb/node-mongodb-native [34]: https://www.psycopg.org/psycopg3/ -[35]: https://pymongo.readthedocs.io/en/stable/ \ No newline at end of file +[35]: https://pymongo.readthedocs.io/en/stable/ +[36]: https://www.mongodb.com/docs/drivers/java/sync/current/ +[37]: /es/database_monitoring/query_samples/ \ No newline at end of file diff --git a/content/es/database_monitoring/setup_postgres/aurora.md b/content/es/database_monitoring/setup_postgres/aurora.md index 7ad668d1f3c..0f8cc082d11 100644 --- a/content/es/database_monitoring/setup_postgres/aurora.md +++ b/content/es/database_monitoring/setup_postgres/aurora.md @@ -1,77 +1,86 @@ --- -description: Instala y configura Database Monitoring para Postgres en Amazon Aurora. +description: Instale y configure Database Monitoring para Postgres en Amazon Aurora. further_reading: - link: /integrations/postgres/ tag: Documentación - text: Integración Postgres básica -title: Configuración de Database Monitoring para Postgres gestionado por Aurora + text: Integración básica de Postgres +- link: /database_monitoring/guide/parameterized_queries/ + tag: Documentación + text: Capturando valores de parámetros de consultas SQL +title: Configurando Database Monitoring para Postgres administrado por Aurora --- +Database Monitoring proporciona una visibilidad profunda de sus bases de datos Postgres al exponer métricas de consultas, muestras de consultas, planes de explicación, estados de bases de datos, conmutaciones por error y eventos. -Database Monitoring te proporciona una amplia visibilidad de tus bases de datos Postgres mediante la exposición de métricas de consultas, muestras de consultas, explain-plans, estados de bases de datos, conmutaciones por error y eventos. - -El Agent recopila telemetría directamente de la base de datos iniciando sesión como usuario de sólo lectura. Realiza la siguiente configuración para habilitar Database Monitoring con tu base de datos Postgres: +El Agent recopila telemetría directamente de la base de datos iniciando sesión como un usuario de solo lectura. Realice la siguiente configuración para habilitar Database Monitoring con su base de datos Postgres: -1. [Configura parámetros de bases de datos](#configure-postgres-settings). -1. [Concede al Agent acceso a la base de datos](#grant-the-agent-access). -1. [Instala y configura el Agent](#install-and-configure-the-agent). -1. [Instala la integración RDS](#install-the-rds-integration). +1. [Configure los parámetros de la base de datos](#configure-postgres-settings) +1. [Otorgue al Agent acceso a la base de datos](#grant-the-agent-access) +1. [Instale y configure el Agent](#install-and-configure-the-agent) +1. [Instale la integración de RDS](#install-the-rds-integration) -## Antes de empezar +## Antes de comenzar {#before-you-begin} -Versiones PostgreSQL compatibles +Versiones de PostgreSQL soportadas : 9.6, 10, 11, 12, 13, 14, 15, 16, 17 -Versiones del Agent compatibles -: v7.36.1 o posterior +Versiones de Agent soportadas +: 7.36.1+ Impacto en el rendimiento -: La configuración de Database Monitoring predeterminada del Agent es conservadora, pero puedes ajustar algunos parámetros como el intervalo de recopilación y la frecuencia de muestreo de consultas según tus necesidades. Para la mayoría de las cargas de trabajo, el Agent representa menos del uno por ciento del tiempo de ejecución de la consulta en la base de datos y menos del uno por ciento del uso de CPU.

-Database Monitoring se ejecuta como una integración sobre el Agent de base ([consulta las referencias][1]). +: La configuración predeterminada del Agent para Database Monitoring es conservadora, pero puede ajustar configuraciones como el intervalo de recolección y la tasa de muestreo de consultas para adaptarse mejor a sus necesidades. Para la mayoría de las cargas de trabajo, el Agent representa menos del uno por ciento del tiempo de ejecución de consultas en la base de datos y menos del uno por ciento de la CPU.

+Database Monitoring se ejecuta como una integración sobre el Agent base ([ver benchmarks][1]). Proxies, balanceadores de carga y agrupadores de conexiones -: El Datadog Agent debe conectarse directamente al host que se está monitorizando. Para las bases de datos autoalojadas, se prefiere `127.0.0.1` o el socket. El Agent no debe conectarse a la base de datos a través de un proxy, balanceador de carga o agrupador de conexiones como `pgbouncer` o del **endpoint del clúster de Aurora**. Si el Agent se conecta al endpoint del clúster, recopila datos de una réplica aleatoria y sólo proporciona una visibilidad de esa réplica. Si el Agent se conecta a diferentes hosts mientras se ejecuta (como en el caso de la conmutación por error, el balanceo de carga, etc.), calcula la diferencia en las estadísticas entre dos hosts, lo que produce inexactitudes en las métricas. +: El Datadog Agent debe conectarse directamente al servidor que se está monitoreando. Para bases de datos autoalojadas, use `127.0.0.1` o el socket. El Agent no debe conectarse a la base de datos a través de un proxy, balanceador de carga, agrupador de conexiones como `pgbouncer`, o el **punto de conexión del clúster de Aurora**. Si se conecta al punto de conexión del clúster, el Agent recopila datos de una réplica aleatoria y solo proporciona visibilidad en esa réplica. Si el Agent se conecta a diferentes hosts mientras está en funcionamiento (como en el caso de conmutación por error, balanceo de carga, etc.), el Agent calcula la diferencia en estadísticas entre dos hosts, produciendo métricas inexactas. + +Consideraciones de seguridad de datos +: Consulte [Información sensible][2] para obtener información sobre qué datos recopila el Agent de sus bases de datos y cómo asegurarse de que estén seguros. + +## Configure los ajustes de Postgres {#configure-postgres-settings} -Consideraciones sobre la seguridad de los datos -: Para saber qué datos recopila el Agent de tus bases de datos y cómo garantizar su seguridad, consulta [Información confidencial][2]. +Configure los siguientes [parámetros][3] en el [grupo de parámetros de DB][4] y luego **reinicie el servidor** para que la configuración surta efecto. Para obtener más información sobre estos parámetros, consulte la [documentación de Postgres][5]. -## Configuración de parámetros de Postgres +**Parámetros requeridos** + +| Parámetro | Valor | Descripción | +| --- | --- | --- | +| `shared_preload_libraries` | `pg_stat_statements` | Requerido para `postgresql.queries.*` métricas. Habilita la recopilación de métricas de consulta utilizando la extensión [pg_stat_statements][5]. Activado por defecto en Aurora. | +| `track_activity_query_size` | `4096` | Requerido para la recolección de consultas más grandes. Aumenta el tamaño del texto SQL en `pg_stat_activity`. Si se deja en el valor predeterminado, las consultas más largas que `1024` caracteres no serán recolectadas. | -Configura los siguientes [parámetros][3] en el [grupo de parámetros de bases de datos][4] y luego **reinicia el servidor** para que la configuración surta efecto. Para obtener más información sobre estos parámetros, consulta la [documentación de Postgres][5]. +**Parámetros opcionales** | Parámetro | Valor | Descripción | | --- | --- | --- | -| `shared_preload_libraries` | `pg_stat_statements` | Necesario para métricas `postgresql.queries.*`. Habilita la recopilación de métricas de consultas utilizando la extensión [pg_stat_statements][5] Esto sólo funciona así por defecto en Aurora. | -| `track_activity_query_size` | `4096` | Necesario para recopilar consultas de mayor tamaño. Aumenta el tamaño del texto SQL en `pg_stat_activity`. Si se deja con el valor predeterminado, las consultas de más de `1024` caracteres no se recopilan. | -| `pg_stat_statements.track` | `ALL` | Opcional. Habilita el seguimiento de sentencias dentro de procedimientos almacenados y funciones. | -| `pg_stat_statements.max` | `10000` | Opcional. Aumenta el número de consultas normalizadas rastreadas en `pg_stat_statements`. Este parámetro se recomienda para bases de datos de gran volumen que reciben muchos tipos diferentes de consultas de muchos clientes distintos. | -| `pg_stat_statements.track_utility` | `off` | Opcional. Deshabilita comandos de utilidad como PREPARE y EXPLAIN. Configurar este valor en `off` significa que sólo se rastrearán consultas como SELECT, UPDATE y DELETE. | -| `track_io_timing` | `on` | Opcional. Habilita la recopilación de los tiempos de lectura y escritura de bloques para las consultas. | +| `pg_stat_statements.track` | `ALL` | Habilita el seguimiento de declaraciones dentro de procedimientos almacenados y funciones. | +| `pg_stat_statements.max` | `10000` | Aumenta el número de consultas normalizadas rastreadas en `pg_stat_statements`. Recomendado para bases de datos de alto volumen que reciben muchos tipos diferentes de consultas de muchos clientes diferentes. | +| `pg_stat_statements.track_utility` | `off` | Desactiva comandos de utilidad como PREPARE y EXPLAIN. Establecer este valor en `off` significa que solo se rastrean consultas como SELECT, UPDATE y DELETE. | +| `track_io_timing` | `on` | Habilita la recolección de tiempos de lectura y escritura de bloques para consultas. | -## Concesión de acceso al Agent +## Otorgue al Agent acceso {#grant-the-agent-access} -El Datadog Agent requiere acceso de sólo lectura al servidor de la base de datos para recopilar estadísticas y consultas. +El Datadog Agent requiere acceso de solo lectura al servidor de base de datos para recolectar estadísticas y consultas. -Los siguientes comandos SQL deben ejecutarse en el servidor de base de datos **primario** (el escritor) en el clúster, si Postgres está replicado. Elige una base de datos PostgreSQL en el servidor de base de datos para que el Agent se conecte a ella. El Agent puede recopilar telemetría de todas las bases de datos del servidor de bases de datos independientemente de a cuál se conecte, por lo que una buena opción es utilizar la base de datos predeterminada `postgres`. Elige una base de datos diferente sólo si necesitas que el Agent ejecute [consultas personalizadas con datos exclusivos de esa base de datos][6]. +Ejecuta los siguientes comandos SQL en el servidor de base de datos **primario** (el escritor) en el clúster si Postgres está replicado. El Agent puede recopilar telemetría de todas las bases de datos en el servidor, independientemente de a qué base de datos se conecte. Utilice la base de datos `postgres` por defecto, a menos que necesite que el Agent ejecute [consultas personalizadas contra datos únicos de otra base de datos][6]. -Conéctate a la base de datos elegida como superusuario (u otro usuario con permisos suficientes). Por ejemplo, si la base de datos elegida es `postgres`, conéctate como el usuario `postgres` a través de [psql][7] ejecutando: +Conéctese a la base de datos elegida como superusuario (o otro usuario con permisos suficientes). Por ejemplo, para conectarse a la base de datos `postgres` usando [psql][7]: ```bash psql -h mydb.example.com -d postgres -U postgres ``` -Crea el usuario `datadog`: +Cree el usuario `datadog`: ```SQL CREATE USER datadog WITH password ''; ``` -**Nota:** La autenticación IAM también es compatible. Para saber cómo configurarla en tu instancia de Aurora, consulta [la guía][13]. +**Nota:** La autenticación IAM también es compatible. Consulte [la guía][14] sobre cómo configurar esto para su instancia de Aurora. {{< tabs >}} -{{% tab "Postgres v10 o posterior" %}} +{{% tab "Postgres ≥ 10" %}} -Crea el siguiente esquema **en cada base de datos**: +Cree el siguiente esquema **en cada base de datos**: ```SQL CREATE SCHEMA datadog; @@ -82,9 +91,9 @@ CREATE EXTENSION IF NOT EXISTS pg_stat_statements; ``` {{% /tab %}} -{{% tab "Postgres v9.6" %}} +{{% tab "Postgres 9.6" %}} -Crea el siguiente esquema **en cada base de datos**: +Cree el siguiente esquema **en cada base de datos**: ```SQL CREATE SCHEMA datadog; @@ -94,7 +103,7 @@ GRANT SELECT ON pg_stat_database TO datadog; CREATE EXTENSION IF NOT EXISTS pg_stat_statements; ``` -Crea funciones **en cada base de datos** para que el Agent pueda leer el contenido completo de `pg_stat_activity` y `pg_stat_statements`: +Cree funciones **en cada base de datos** para permitir que el Agent lea el contenido completo de `pg_stat_activity` y `pg_stat_statements`: ```SQL CREATE OR REPLACE FUNCTION datadog.pg_stat_activity() RETURNS SETOF pg_stat_activity AS @@ -110,9 +119,11 @@ SECURITY DEFINER; {{% /tab %}} {{< /tabs >}} -
Para la recopilación de datos o métricas personalizadas que requieren consultar tablas adicionales, es posible que tengas que conceder el permiso SELECT en esas tablas al usuario Datadog. Ejemplo: grant SELECT on <TABLE_NAME> to datadog;. Para obtener más información, consulta Recopilación de métricas personalizadas de PostgreSQL.
+
Para la recopilación de datos o métricas personalizadas que requieran consultar tablas adicionales, es posible que deba otorgar la SELECT permiso en esas tablas para el datadog usuario. Ejemplo: grant SELECT on <TABLE_NAME> to datadog;. Consulte la recopilación de métricas personalizadas de PostgreSQL para más información.
-Crea la función **en cada base de datos** para permitir al Agent recopilar explain-plans. +### Cree la función de plan de explicación {#create-the-explain-plan-function} + +Cree la siguiente función **en cada base de datos** para permitir que el Agent recopile planes de explicación: ```SQL CREATE OR REPLACE FUNCTION datadog.explain_statement( @@ -126,6 +137,8 @@ curs REFCURSOR; plan JSON; BEGIN + SET TRANSACTION READ ONLY; + OPEN curs FOR EXECUTE pg_catalog.concat('EXPLAIN (FORMAT JSON) ', l_query); FETCH curs INTO plan; CLOSE curs; @@ -137,15 +150,15 @@ RETURNS NULL ON NULL INPUT SECURITY DEFINER; ``` -### Guardar tu contraseña de forma segura +### Almacene su contraseña de forma segura {#securely-store-your-password} {{% dbm-secret %}} -### Verificación +### Verifique los permisos de la base de datos {#verify-database-permissions} -Para verificar que los permisos son correctos, ejecuta los siguientes comandos para confirmar que el usuario del Agent puede conectarse a la base de datos y leer las tablas principales: +Para verificar que los permisos son correctos, ejecute los siguientes comandos para confirmar que el usuario del Agent puede conectarse a la base de datos y leer las tablas principales: {{< tabs >}} -{{% tab "Postgres v10 o posterior" %}} +{{% tab "Postgres ≥ 10" %}} ```shell psql -h localhost -U datadog postgres -A \ @@ -162,7 +175,7 @@ psql -h localhost -U datadog postgres -A \ || echo -e "\e[0;31mCannot read from pg_stat_statements\e[0m" ``` {{% /tab %}} -{{% tab "Postgres v9.6" %}} +{{% tab "Postgres 9.6" %}} ```shell psql -h localhost -U datadog postgres -A \ @@ -170,11 +183,11 @@ psql -h localhost -U datadog postgres -A \ && echo -e "\e[0;32mPostgres connection - OK\e[0m" \ || echo -e "\e[0;31mCannot connect to Postgres\e[0m" psql -h localhost -U datadog postgres -A \ - -c "select * from pg_stat_activity limit 1;" \ + -c "select * from datadog.pg_stat_activity() limit 1;" \ && echo -e "\e[0;32mPostgres pg_stat_activity read OK\e[0m" \ || echo -e "\e[0;31mCannot read from pg_stat_activity\e[0m" psql -h localhost -U datadog postgres -A \ - -c "select * from pg_stat_statements limit 1;" \ + -c "select * from datadog.pg_stat_statements() limit 1;" \ && echo -e "\e[0;32mPostgres pg_stat_statements read OK\e[0m" \ || echo -e "\e[0;31mCannot read from pg_stat_statements\e[0m" ``` @@ -182,25 +195,25 @@ psql -h localhost -U datadog postgres -A \ {{% /tab %}} {{< /tabs >}} -Cuando se te pida una contraseña, utiliza la que introdujiste al crear el usuario `datadog`. +Cuando se le pida una contraseña, use la contraseña que ingresó al crear el usuario `datadog`. -## Instalación y configuración del Agent +## Instale y configure el Agent {#install-and-configure-the-agent} -Para monitorizar hosts de Aurora, instala el Datadog Agent en tu infraestructura y configúralo para conectarse a cada endpoint de instancia de forma remota. El Agent no necesita ejecutarse en la base de datos, sólo necesita conectarse a ella. Para conocer otros métodos de instalación del Agent no mencionados aquí, consulta las [instrucciones de instalación del Agent][8]. +Para monitorear hosts de Aurora, instale el Datadog Agent en su infraestructura y configúrelo para conectarse a cada punto de conexión de instancia de forma remota. El Agent no necesita ejecutarse en la base de datos, solo necesita conectarse a ella. Para métodos adicionales de instalación del Agent no mencionados aquí, consulte las [instrucciones de instalación del Agent][8]. -### Configuración de Autodiscovery (recomendada) +### Autodiscovery setup (recommended) {#autodiscovery-setup-recommended} -El Datadog Agent admite Autodiscovery para todos los endpoints Aurora de un clúster. +El Datadog Agent admite Autodiscovery para todos los puntos de conexión de Aurora dentro de un clúster. -Si necesitas configuraciones diferentes para instancias específicas o si prefieres especificar manualmente los endpoints de Aurora, sigue la sección de configuración manual a continuación. -De lo contrario, Datadog recomienda utilizar las [instrucciones de configuración de Autodiscovery para clústeres de bases de dato de Aurora][9]. +Si requiere configuraciones diferentes para instancias específicas, o prefiere especificar manualmente los puntos de conexión de Aurora, siga la sección de configuración manual a continuación. +De lo contrario, Datadog recomienda usar las [instrucciones de configuración de Autodiscovery para clústeres de DB de Aurora][9]. {{< tabs >}} {{% tab "Host" %}} -Para configurar la recopilación de métricas de Database Monitoring para un Agent que se ejecuta en un host, por ejemplo cuando se aprovisiona una pequeña instancia de EC2 para que el Agent recopile desde una base de datos Aurora: +Para configurar la recolección de métricas de Database Monitoring para un Agent que se ejecuta en un host, por ejemplo, cuando provisiona una pequeña instancia de EC2 para que el Agent recolecte de una base de datos de Aurora: -1. Edita el archivo `postgres.d/conf.yaml` para que apunte a tu `host` / `port` y configura los principales para la monitorización. Para conocer todas las opciones de configuración disponibles, consulta la [muestra postgres.d/conf.yaml][1]. +1. Edite el archivo `postgres.d/conf.yaml` para apuntar a su `host` / `port` y establecer los maestros a monitorear. Consulte el [ejemplo postgres.d/conf.yaml][1] para todas las opciones de configuración disponibles. ```yaml init_config: @@ -218,24 +231,24 @@ Para configurar la recopilación de métricas de Database Monitoring para un Age # dbname: '' ``` -
Utiliza el endpoint de la instancia Aurora aquí, y no el endpoint del clúster.
+
Utilice el punto de conexión de la instancia de Aurora aquí, no el punto de conexión del clúster.
-2. [Reinicia el Agent][2]. +2. [Reiniciar el Agent][2]. [1]: https://github.com/DataDog/integrations-core/blob/master/postgres/datadog_checks/postgres/data/conf.yaml.example [2]: /es/agent/configuration/agent-commands/#start-stop-and-restart-the-agent {{% /tab %}} {{% tab "Docker" %}} -Para configurar una integración para un Agent que se ejecuta en un contenedor Docker, como en ECS o Fargate, hay algunos métodos disponibles que se cubren en detalle en la [documentación de configuración de Docker][1]. +Para configurar una integración para un Agent que se ejecuta en un contenedor Docker, como en ECS o Fargate, tienes un par de métodos disponibles, todos los cuales se cubren en detalle en la [Documentación de Configuración de Docker][1]. -Los siguientes ejemplos muestran cómo utilizar [etiquetas (labels) de Docker][2] y [plantillas de Autodiscovery][3] para configurar la integración de Postgres. +Los ejemplos a continuación muestran cómo usar [Etiquetas de Docker][2] y [Plantillas de Autodescubrimiento][3] para configurar la integración de Postgres. -**Nota**: El Agent debe tener permiso de lectura en el socket Docker para que las etiquetas de Autodiscovery funcionen. +**Nota**: El Agent debe tener permiso de lectura en el socket de Docker para que Autodiscovery de etiquetas funcione. -### Línea de comandos +### Línea de comandos {#command-line} -Ejecuta el siguiente comando desde tu [línea de comandos][4] para iniciar el Agent. Sustituye los valores de los marcadores de posición por los de tu cuenta y entorno. +Ejecuta el siguiente comando desde tu [línea de comandos][4] para iniciar el Agent. Reemplaza los valores de marcador de posición con los de tu cuenta y entorno. ```bash export DD_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx @@ -258,36 +271,36 @@ docker run -e "DD_API_KEY=${DD_API_KEY}" \ "tags": ["dbinstanceidentifier:"] }] }}' \ - gcr.io/datadoghq/agent:${DD_AGENT_VERSION} + registry.datadoghq.com/agent:${DD_AGENT_VERSION} ``` -Para Postgres v9.6, añade los siguientes parámetros a la configuración de la instancia donde se especifican el host y el puerto: +Para Postgres 9.6, agrega la siguiente configuración a la configuración de la instancia donde se especifican el host y el puerto: ```yaml "pg_stat_statements_view": "datadog.pg_stat_statements()", "pg_stat_activity_view": "datadog.pg_stat_activity()" ``` -### Archivo de Docker +### Dockerfile {#dockerfile} -También puedes especificar etiquetas (labels) en `Dockerfile`, lo que te permite crear y desplegar un Agent personalizado sin modificar la configuración de tu infraestructura: +También puedes especificar etiquetas en un `Dockerfile`, lo que te permite construir y desplegar un Agente personalizado sin modificar la configuración de tu infraestructura: ```Dockerfile -FROM gcr.io/datadoghq/agent: +FROM registry.datadoghq.com/agent: LABEL "com.datadoghq.ad.check_names"='["postgres"]' LABEL "com.datadoghq.ad.init_configs"='[{}]' LABEL "com.datadoghq.ad.instances"='[{"dbm": true, "host": "", "port": 5432,"username": "datadog","password": "ENC[datadog_user_database_password]","aws": {"instance_endpoint": "", "region": ""}, "tags": ["dbinstanceidentifier:"]}]' ``` -Para Postgres v9.6, añade los siguientes parámetros a la configuración de la instancia donde se especifican el host y el puerto: +Para Postgres 9.6, agrega la siguiente configuración a la configuración de la instancia donde se especifican el host y el puerto: ```yaml "pg_stat_statements_view": "datadog.pg_stat_statements()", "pg_stat_activity_view": "datadog.pg_stat_activity()" ``` -Para evitar exponer la contraseña del usuario `Datadog` en texto plano, utiliza el [paquete de gestión de secretos][5] del Agent y declara la contraseña utilizando la sintaxis `ENC[]`. Alternativamente, consulta la [documentación de variables de plantilla de Autodiscovery][6] para proporcionar la contraseña como una variable de entorno. +Para evitar exponer la contraseña del `datadog` usuario en texto plano, utiliza el [paquete de gestión de secretos][5] del Agente y declara la contraseña utilizando la sintaxis `ENC[]`. Alternativamente, consulta la [documentación de variables de plantilla de Autodiscovery][6] para proporcionar la contraseña como una variable de entorno. [1]: /es/containers/docker/integrations/?tab=labels#configuration [2]: https://docs.docker.com/engine/manage-resources/labels/ @@ -298,15 +311,15 @@ Para evitar exponer la contraseña del usuario `Datadog` en texto plano, utiliza {{% /tab %}} {{% tab "Kubernetes" %}} -Si estás ejecutando un clúster de Kubernetes, usa el [Datadog Cluster Agent][1] para activar Database Monitoring. +Si estás ejecutando un clúster de Kubernetes, utiliza el [Datadog Cluster Agent][1] para habilitar Database Monitoring. -**Nota**: Asegúrate de que los [checks de clúster][2] estén activados para tu Datadog Cluster Agent antes de continuar. +**Nota**: Asegúrate de que las [verificaciones de clúster][2] estén habilitadas para tu Datadog Cluster Agent antes de continuar. -A continuación encontrarás instrucciones paso a paso para configurar la integración de Postgres utilizando diferentes métodos de despliegue del Datadog Cluster Agent. +A continuación se presentan instrucciones paso a paso para configurar la integración de Postgres utilizando diferentes métodos de despliegue del Datadog Cluster Agent. -### Operación +### Datadog Operator {#operator} -Tomando como referencia las [Instrucciones para operadores en Kubernetes e integraciones][3], sigue los pasos que se indican a continuación para configurar la integración de Postgres: +Usando las [instrucciones del Datadog Operator en Kubernetes e Integrations][3] como referencia, sigue los pasos a continuación para configurar la integración de Postgres: 1. Crea o actualiza el archivo `datadog-agent.yaml` con la siguiente configuración: @@ -353,24 +366,24 @@ Tomando como referencia las [Instrucciones para operadores en Kubernetes e integ - "dbinstanceidentifier:" ``` - **Nota**: Para Postgres v9.6, añade las siguientes líneas a la configuración de la instancia donde se especifican el host y el puerto: + **Note**: For Postgres 9.6, add the following lines to the instance config where host and port are specified: ```yaml pg_stat_statements_view: datadog.pg_stat_statements() pg_stat_activity_view: datadog.pg_stat_activity() ``` -2. Aplica los cambios al Datadog Operator utilizando el siguiente comando: +2. Aplica los cambios al Datadog Operator usando el siguiente comando: ```shell kubectl apply -f datadog-agent.yaml ``` -### Helm +### Helm {#helm} -Tomando como referencia las [instrucciones de Helm en Kubernetes e integraciones][4], sigue los pasos que se indican a continuación para configurar la integración de Postgres: +Usando las [instrucciones de Helm en Kubernetes e Integraciones][4] como referencia, sigue los pasos a continuación para configurar la integración de Postgres: -1. Actualiza tu archivo `Datadog-values.yaml` (utilizado en las instrucciones de instalación del Cluster Agent) con la siguiente configuración: +1. Actualiza tu archivo `datadog-values.yaml` (utilizado en las instrucciones de instalación del Datadog Cluster Agent) con la siguiente configuración: ```yaml datadog: @@ -399,26 +412,26 @@ Tomando como referencia las [instrucciones de Helm en Kubernetes e integraciones - "dbinstanceidentifier:" ``` - **Nota**: Para Postgres v9.6, añade las siguientes líneas a la configuración de la instancia donde se especifican el host y el puerto: + **Note**: For Postgres 9.6, add the following lines to the instance config where host and port are specified: ```yaml pg_stat_statements_view: datadog.pg_stat_statements() pg_stat_activity_view: datadog.pg_stat_activity() ``` -2. Despliega el Agent con el archivo de configuración anterior utilizando el siguiente comando: +2. Despliega el Agent con el archivo de configuración anterior usando el siguiente comando: ```shell helm install datadog-agent -f datadog-values.yaml datadog/datadog ```
-For Windows, append --set targetSystem=windows to the helm install command. +Para Windows, agrega --set targetSystem=windows al helm install comando.
-### Configuración con archivos integrados +### Configura con archivos montados {#configure-with-mounted-files} -Para configurar un check de clúster con un archivo de configuración montado, monta el archivo de configuración en el contenedor del Cluster Agent en la ruta: `/conf.d/postgres.yaml`: +Para configurar una verificación de clúster con un archivo de configuración montado, monta el archivo de configuración en el contenedor del Datadog Cluster Agent en la ruta: `/conf.d/postgres.yaml`: ```yaml cluster_check: true # Make sure to include this flag @@ -437,11 +450,11 @@ instances: ``` -### Configuración con anotaciones de servicios de Kubernetes +### Configura con anotaciones de servicio de Kubernetes {#configure-with-kubernetes-service-annotations} -En lugar de montar un archivo, puedes declarar la configuración de la instancia como servicio Kubernetes. Para configurar este check para un Agent que se ejecuta en Kubernetes, crea un servicio con la siguiente sintaxis: +En lugar de montar un archivo, puedes declarar la configuración de la instancia como un servicio de Kubernetes. Para configurar esta verificación para un Agente que se ejecuta en Kubernetes, crea un servicio usando la siguiente sintaxis: -#### Anotaciones de Autodiscovery v2 +#### Anotaciones de Autodiscovery v2 {#autodiscovery-annotations-v2} ```yaml apiVersion: v1 @@ -482,18 +495,18 @@ spec: name: postgres ``` -Para obtener más información, consulta [Anotaciones de Autodiscovery][5]. +Para más información, consulta [Anotaciones de Autodiscovery][5]. -Si utilizas Postgres v9.6, añade lo siguiente a la configuración de la instancia: +Si estás usando Postgres 9.6, agrega lo siguiente a la configuración de la instancia: ```json "pg_stat_statements_view": "datadog.pg_stat_statements()", "pg_stat_activity_view": "datadog.pg_stat_activity()" ``` -El Cluster Agent registra automáticamente esta configuración y comienza a ejecutar el check de Postgres. +El Datadog Cluster Agent registra automáticamente esta configuración y comienza a ejecutar la verificación de Postgres. -Para evitar exponer la contraseña del usuario `datadog` en texto simple, utiliza el [paquete de gestión de secretos][6] del Agent y declara la contraseña utilizando la sintaxis `ENC[]`. +Para evitar exponer la contraseña del `datadog` usuario en texto plano, utiliza el [paquete de gestión de secretos del Agente][6] y declara la contraseña utilizando la sintaxis `ENC[]`. [1]: /es/containers/cluster_agent/setup/ [2]: /es/containers/cluster_agent/clusterchecks/ @@ -504,20 +517,22 @@ Para evitar exponer la contraseña del usuario `datadog` en texto simple, utiliz {{% /tab %}} {{< /tabs >}} -### Validación +### Verificar la configuración del Agente {#verify-agent-setup} + +[Ejecuta el subcomando de estado del Agente][10] y busca `postgres` en la sección de Verificaciones. ¡O visita la página de [Bases de datos][11] para comenzar! -[Ejecuta el subcomando de estado del Agent][10] y busca `postgres` en la sección Checks o visita la página [Bases de datos][11] para empezar. -## Configuraciones del Agent de ejemplo +## Ejemplos de configuraciones del Agente {#example-agent-configurations} {{% dbm-postgres-agent-config-examples %}} -## Instalar la integración de RDS -Para ver métricas de infraestructura de AWS, como la CPU, junto con la telemetría de la base de datos en DBM, instala la [integración RDS][12] (opcional). +## Instalar la Integración RDS {#install-the-rds-integration} + +Para ver métricas de infraestructura de AWS, como CPU, junto con la telemetría de la base de datos directamente en DBM, instala la [integración RDS][12] (opcional). -## Solucionar problemas +## Solución de problemas {#troubleshooting} -Si ya instalaste y configuraste las integraciones y el Agent como se describe, pero no funcionan como se esperaba, consulta [Solucionar problemas][13]. +Si has instalado y configurado las integraciones y el Agente como se describe y no está funcionando como se esperaba, consulta [Solución de problemas][13]. -## Referencias adicionales +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/es/database_monitoring/setup_postgres/selfhosted.md b/content/es/database_monitoring/setup_postgres/selfhosted.md index 3160f37a457..12380a921a6 100644 --- a/content/es/database_monitoring/setup_postgres/selfhosted.md +++ b/content/es/database_monitoring/setup_postgres/selfhosted.md @@ -1,70 +1,80 @@ --- -description: Instala y configura Database Monitoring para Postgres autoalojado. +description: Instala y configura Database Monitoring para Postgres autohospedado. further_reading: - link: /integrations/postgres/ tag: Documentación - text: Integración Postgres básica + text: Integración básica de Postgres - link: /database_monitoring/guide/parameterized_queries/ tag: Documentación - text: Captura de valores de parámetros de consulta SQL -title: Configuración de Database Monitoring para Postgres autoalojado + text: Capturando valores de parámetros de consultas SQL +- link: https://www.datadoghq.com/blog/database-monitoring-explain-analyze + tag: Blog + text: Depura la latencia de consultas de PostgreSQL más rápido con EXPLAIN ANALYZE + en Database Monitoring de Datadog. +title: Configurando Database Monitoring para Postgres autohospedado --- +Database Monitoring proporciona una visibilidad profunda de tus bases de datos Postgres al exponer métricas de consultas, muestras de consultas, planes de explicación, estados de bases de datos, conmutaciones por error y eventos. -Database Monitoring te proporciona una amplia visibilidad de tus bases de datos Postgres mediante la exposición de métricas de consultas, muestras de consultas, explain-plans, estados de bases de datos, conmutaciones por error y eventos. +El Agente recopila telemetría directamente de la base de datos al iniciar sesión como un usuario de solo lectura. Realiza la siguiente configuración para habilitar Database Monitoring con tu base de datos Postgres: -El Agent recopila telemetría directamente de la base de datos iniciando sesión como usuario de sólo lectura. Realiza la siguiente configuración para habilitar Database Monitoring con tu base de datos Postgres: +1. [Configura los parámetros de la base de datos](#configure-postgres-settings) +1. [Otorga al Agente acceso a la base de datos](#grant-the-agent-access) +1. [Instala el Agente](#install-the-agent) -1. [Configura parámetros de bases de datos](#configure-postgres-settings). -1. [Concede al Agent acceso a la base de datos](#grant-the-agent-access). -1. [Instala el Agent](#install-the-agent). +## Antes de comenzar {#before-you-begin} -## Antes de empezar - -Versiones PostgreSQL soportadas -: 9.6, 10, 11, 12, 13, 14, 15, 16, 17 +Versiones de PostgreSQL soportadas +: 9.6, 10, 11, 12, 13, 14, 15, 16, 17, 18 Requisitos previos -: Los módulos de Postgres adicionales proporcionados deben estar instalados. En la mayoría de las instalaciones, esto se incluye por defecto, pero las instalaciones menos convencionales pueden requerir una instalación adicional de tu versión del [paquete `postgresql-contrib`][1]. +: Los módulos adicionales suministrados de Postgres deben estar instalados. Para la mayoría de las instalaciones, esto se incluye por defecto, pero las instalaciones menos convencionales pueden requerir una instalación adicional de tu versión del [paquete `postgresql-contrib`][1]. -Versiones del Agent compatibles -: 7.36.1 o posteriores +Versiones de Agente soportadas +: 7.36.1+ Impacto en el rendimiento -: La configuración de Database Monitoring predeterminada del Agent es conservadora, pero puedes ajustar algunos parámetros como el intervalo de recopilación y la frecuencia de muestreo de consultas según tus necesidades. Para la mayoría de las cargas de trabajo, el Agent representa menos del uno por ciento del tiempo de ejecución de la consulta en la base de datos y menos del uno por ciento del uso de CPU.

-Database Monitoring se ejecuta como una integración sobre el Agent de base ([consulta las referencias][2]). +La configuración predeterminada del Agente para Database Monitoring es conservadora, pero puedes ajustar parámetros como el intervalo de recolección y la tasa de muestreo de consultas para adaptarlas mejor a tus necesidades. Para la mayoría de las cargas de trabajo, el Agente representa menos del uno por ciento del tiempo de ejecución de consultas en la base de datos y menos del uno por ciento de la CPU.

+Database Monitoring se ejecuta como una integración sobre el Agente base ([ver benchmarks][2]). Proxies, balanceadores de carga y agrupadores de conexiones -: El Datadog Agent debe conectarse directamente al host que se está monitorizando. Para las bases de datos autoalojadas, se prefiere `127.0.0.1` o el socket. El Agent no debe conectarse a la base de datos a través de un proxy, balanceador de carga o agrupador de conexiones como `pgbouncer`. Si el Agent se conecta a diferentes hosts mientras se ejecuta (como en el caso de la conmutación por error, el balanceo de carga, etc.), el Agent calcula la diferencia en las estadísticas entre dos hosts, lo que produce inexactitudes en las métricas. +: El Agente de Datadog debe conectarse directamente al host que se está monitoreando. Para bases de datos autohospedadas, utiliza `127.0.0.1` o el socket. El Agente no debe conectarse a la base de datos a través de un proxy, balanceador de carga o agrupador de conexiones como `pgbouncer`. Si el Agente se conecta a diferentes hosts mientras está en funcionamiento (como en el caso de conmutación por error, balanceo de carga, etc.), el Agente calcula la diferencia en estadísticas entre dos hosts, produciendo métricas inexactas. + +Consideraciones de seguridad de datos +: Consulta [Información sensible][3] para obtener información sobre qué datos recopila el Agente de tus bases de datos y cómo asegurarte de que estén seguros. + +## Configura los ajustes de Postgres {#configure-postgres-settings} -Consideraciones sobre la seguridad de los datos -: Para saber qué datos recopila el Agent de tus bases de datos y cómo garantizar su seguridad, consulta [Información confidencial][3]. +Configura los siguientes [parámetros][4] en el archivo `postgresql.conf` y luego **reinicia el servidor** para que los ajustes surtan efecto. Para más información sobre estos parámetros, consulta la [documentación de Postgres][5]. -## Configuración de parámetros de Postgres +**Parámetros requeridos** + +| Parámetro | Valor | Descripción | +| --- | --- | --- | +| `shared_preload_libraries` | `pg_stat_statements` | Requerido para métricas de `postgresql.queries.*`. Habilita la recopilación de métricas de consulta utilizando la extensión [pg_stat_statements][5]. | +| `track_activity_query_size` | `4096` | Requerido para la recopilación de consultas más grandes. Aumenta el tamaño del texto SQL en `pg_stat_activity`. Si se deja en el valor predeterminado, las consultas que superen los `1024` caracteres no serán recopiladas. | -Configura los siguientes [parámetros][4] en el archivo `postgresql.conf` y luego **reinicia el servidor** para que la configuración surta efecto. Para obtener más información sobre estos parámetros, consulta la [documentación de Postgres][5]. +**Parámetros opcionales** | Parámetro | Valor | Descripción | | --- | --- | --- | -| `shared_preload_libraries` | `pg_stat_statements` | Necesario para métricas `postgresql.queries.*`. Habilita la recopilación de métricas de consultas utilizando la extensión [pg_stat_statements][5]. | -| `track_activity_query_size` | `4096` | Necesario para recopilar consultas de mayor tamaño. Aumenta el tamaño del texto SQL en `pg_stat_activity`. Si se deja con el valor predeterminado, las consultas de más de `1024` caracteres no se recopilan. | -| `pg_stat_statements.track` | `ALL` | Opcional. Habilita el seguimiento de sentencias dentro de procedimientos almacenados y funciones. | -| `pg_stat_statements.max` | `10000` | Opcional. Aumenta el número de consultas normalizadas rastreadas en `pg_stat_statements`. Este parámetro se recomienda para bases de datos de gran volumen que reciben muchos tipos diferentes de consultas de muchos clientes distintos. | -| `pg_stat_statements.track_utility` | `off` | Opcional. Deshabilita comandos de utilidad como PREPARE y EXPLAIN. Configurar este valor en `off` significa que sólo se rastrearán consultas como SELECT, UPDATE y DELETE. | -| `track_io_timing` | `on` | Opcional. Habilita la recopilación de los tiempos de lectura y escritura de bloques para las consultas. | +| `pg_stat_statements.track` | `ALL` | Habilita el seguimiento de declaraciones dentro de procedimientos almacenados y funciones. | +| `pg_stat_statements.max` | `10000` | Aumenta el número de consultas normalizadas rastreadas en `pg_stat_statements`. Recomendado para bases de datos de alto volumen que reciben muchos tipos diferentes de consultas de muchos clientes diferentes. | +| `pg_stat_statements.track_utility` | `off` | Desactiva comandos de utilidad como PREPARE y EXPLAIN. Establecer este valor en `off` significa que solo se rastrean consultas como SELECT, UPDATE y DELETE. | +| `track_io_timing` | `on` | Habilita la recopilación de tiempos de lectura y escritura de bloques para consultas. | -## Conceder acceso al Agent +## Otorga al Agente de Datadog acceso {#grant-the-agent-access} -El Datadog Agent requiere acceso de sólo lectura al servidor de la base de datos para recopilar estadísticas y consultas. +El Agente de Datadog requiere acceso de solo lectura al servidor de base de datos para recopilar estadísticas y consultas. -Los siguientes comandos SQL deben ejecutarse en el servidor de base de datos **primario** (el escritor) en el clúster, si Postgres está replicado. Elige una base de datos PostgreSQL en el servidor de base de datos para que el Agent se conecte a ella. El Agent puede recopilar telemetría de todas las bases de datos del servidor de bases de datos independientemente de a cuál se conecte, por lo que una buena opción es utilizar la base de datos predeterminada `postgres`. Elige una base de datos diferente sólo si necesitas que el Agent ejecute [consultas personalizadas con datos exclusivos de esa base de datos][6]. +Ejecute los siguientes comandos SQL en el servidor de base de datos **primario** (el escritor) en el clúster si Postgres está replicado. El Agente de Datadog puede recopilar telemetría de todas las bases de datos en el servidor, independientemente de a cuál base de datos se conecte. Utilice la base de datos `postgres` predeterminada a menos que necesite que el Agente de Datadog ejecute [consultas personalizadas contra datos únicos de otra base de datos][6]. -Conéctate a la base de datos elegida como superusuario (u otro usuario con permisos suficientes). Por ejemplo, si la base de datos elegida es `postgres`, conéctate como el usuario `postgres` a través de [psql][7] ejecutando: +Conéctese a la base de datos elegida como superusuario (o otro usuario con permisos suficientes). Por ejemplo, para conectarse a la base de datos `postgres` usando [psql][7]: ```bash psql -h mydb.example.com -d postgres -U postgres ``` -Crea el usuario `datadog`: +Cree el usuario `datadog`: ```SQL CREATE USER datadog WITH password ''; @@ -72,15 +82,15 @@ CREATE USER datadog WITH password ''; {{< tabs >}} -{{% tab "Postgres v15 o posterior" %}} +{{% tab "Postgres ≥ 15" %}} -Proporciona al usuario `datadog` permiso en las tablas pertinentes: +Otorgue al usuario `datadog` permiso sobre las tablas relevantes: ```SQL ALTER ROLE datadog INHERIT; ``` -Crea el siguiente esquema **en cada base de datos**: +Cree el siguiente esquema **en cada base de datos**: ```SQL CREATE SCHEMA datadog; @@ -92,9 +102,9 @@ CREATE EXTENSION IF NOT EXISTS pg_stat_statements; {{% /tab %}} -{{% tab "Postgres v10 o posterior" %}} +{{% tab "Postgres ≥ 10" %}} -Crea el siguiente esquema **en cada base de datos**: +Cree el siguiente esquema **en cada base de datos**: ```SQL CREATE SCHEMA datadog; @@ -105,9 +115,9 @@ CREATE EXTENSION IF NOT EXISTS pg_stat_statements; ``` {{% /tab %}} -{{% tab "Postgres v9.6" %}} +{{% tab "Postgres 9.6" %}} -Crea el siguiente esquema **en cada base de datos**: +Cree el siguiente esquema **en cada base de datos**: ```SQL CREATE SCHEMA datadog; @@ -117,7 +127,7 @@ GRANT SELECT ON pg_stat_database TO datadog; CREATE EXTENSION IF NOT EXISTS pg_stat_statements; ``` -Crea funciones **en cada base de datos** para que el Agent pueda leer el contenido completo de `pg_stat_activity` y `pg_stat_statements`: +Cree funciones **en cada base de datos** para permitir que el Agente de Datadog lea el contenido completo de `pg_stat_activity` y `pg_stat_statements`: ```SQL CREATE OR REPLACE FUNCTION datadog.pg_stat_activity() RETURNS SETOF pg_stat_activity AS @@ -133,9 +143,11 @@ SECURITY DEFINER; {{% /tab %}} {{< /tabs >}} -
Para la recopilación de datos o métricas personalizadas que requieren consultar tablas adicionales, es posible que tengas que conceder el permiso SELECT en esas tablas al usuario Datadog. Ejemplo: grant SELECT on <TABLE_NAME> to datadog;. Para obtener más información, consulta Recopilación de métricas personalizadas de PostgreSQL.
+
Para la recopilación de datos o métricas personalizadas que requieran consultar tablas adicionales, es posible que deba otorgar el SELECT permiso sobre esas tablas para el datadog usuario. Ejemplo: grant SELECT on <TABLE_NAME> to datadog;. Consulte la recopilación de métricas personalizadas de PostgreSQL para más información.
-Crea la función **en cada base de datos** para permitir al Agent recopilar planes de explicación. +### Cree la función del plan de explicación {#create-the-explain-plan-function} + +Crea la siguiente función **en cada base de datos** para permitir que el Agente de Datadog recopile planes de explicación: ```SQL CREATE OR REPLACE FUNCTION datadog.explain_statement( @@ -162,15 +174,15 @@ RETURNS NULL ON NULL INPUT SECURITY DEFINER; ``` -### Guarda tu contraseña de forma segura +### Almacena tu contraseña de manera segura {#securely-store-your-password} {{% dbm-secret %}} -### Verificación +### Verifica los permisos de la base de datos {#verify-database-permissions} -Para verificar que los permisos son correctos, ejecuta los siguientes comandos para confirmar que el usuario del Agent puede conectarse a la base de datos y leer las tablas principales: +Para verificar que los permisos son correctos, ejecuta los siguientes comandos para confirmar que el usuario del Agente de Datadog puede conectarse a la base de datos y leer las tablas principales: {{< tabs >}} -{{% tab "Postgres v10 o posterior" %}} +{{% tab "Postgres ≥ 10" %}} ```shell psql -h localhost -U datadog postgres -A \ @@ -188,7 +200,7 @@ psql -h localhost -U datadog postgres -A \ ``` {{% /tab %}} -{{% tab "Postgres v9.6" %}} +{{% tab "Postgres 9.6" %}} ```shell psql -h localhost -U datadog postgres -A \ @@ -196,11 +208,11 @@ psql -h localhost -U datadog postgres -A \ && echo -e "\e[0;32mPostgres connection - OK\e[0m" \ || echo -e "\e[0;31mCannot connect to Postgres\e[0m" psql -h localhost -U datadog postgres -A \ - -c "select * from pg_stat_activity limit 1;" \ + -c "select * from datadog.pg_stat_activity() limit 1;" \ && echo -e "\e[0;32mPostgres pg_stat_activity read OK\e[0m" \ || echo -e "\e[0;31mCannot read from pg_stat_activity\e[0m" psql -h localhost -U datadog postgres -A \ - -c "select * from pg_stat_statements limit 1;" \ + -c "select * from datadog.pg_stat_statements() limit 1;" \ && echo -e "\e[0;32mPostgres pg_stat_statements read OK\e[0m" \ || echo -e "\e[0;31mCannot read from pg_stat_statements\e[0m" ``` @@ -208,14 +220,14 @@ psql -h localhost -U datadog postgres -A \ {{% /tab %}} {{< /tabs >}} -Cuando se te pida una contraseña, utiliza la que introdujiste al crear el usuario `datadog`. +Cuando se te pida una contraseña, utiliza la contraseña que ingresaste al crear el Agente de Datadog `datadog`. -## Instalar el Agent +## Instala el Agente de Datadog {#install-the-agent} -Al instalar el Datadog Agent también se instala el check Postgres, necesario para Database Monitoring en Postgres. -Si aún no has instalado el Agent, consulta las [instrucciones de instalación del Agent][8], y luego regresa aquí para continuar con las instrucciones de tu método de instalación. +Instalar el Agente de Datadog también instala la verificación de Postgres, que es necesaria para el Monitoreo de Bases de Datos en Postgres. +Si no has instalado el Agente, consulta las [instrucciones de instalación del Agente][8]. Luego, continúa con las instrucciones para tu método de instalación. -Edita el archivo `conf.d/postgres.d/conf.yaml` del Agent para apuntar a la instancia Postgres que quieres monitorizar. Para ver una lista completa de las opciones de configuración, consulta el [ejemplo postgres.d/conf.yaml][9]. +Edita el archivo `conf.d/postgres.d/conf.yaml` del Agente de Datadog para apuntar a la instancia de Postgres que deseas monitorear. Para una lista completa de opciones de configuración, consulta el [ejemplo postgres.d/conf.yaml][9]. ```yaml init_config: @@ -230,15 +242,15 @@ instances: # dbname: '' ``` -**Nota**: Si su contraseña incluye caracteres especiales, enciérrala entre comillas simples. +**Nota**: Si tu contraseña incluye caracteres especiales, envuélvela en comillas simples. -[Reinicia el Agent][16] para aplicar los cambios. +[Reinicia el Agente de Datadog][10] para aplicar los cambios. -### Recopilación de logs (opcional) +### Recolección de registros (opcional) {#collecting-logs-optional} -La generación de logs por defecto de PostgreSQL es en `stderr`. Estos logs no incluyen información detallada. Se recomienda hacerlo en un archivo con detalles adicionales especificados en el prefijo de la línea de logs. Para obtener más detalles, consulta la [documentación][11] de PostgreSQL sobre este tema. +El registro predeterminado de PostgreSQL es a `stderr`, y los registros no incluyen información detallada. Registra en un archivo con detalles adicionales especificados en el prefijo de la línea de registro. Consulta la [documentación de PostgreSQL][11] para más detalles. -1. La generación de logs está configurada en el archivo `/etc/postgresql//main/postgresql.conf`. Para obtener resultados regulares de logs, incluidos los resultados de sentencias, configura los siguientes parámetros en la sección de logs: +1. La configuración de registro se realiza dentro del archivo `/etc/postgresql//main/postgresql.conf`. Para resultados de registro regulares, incluyendo salidas de declaraciones, establece los siguientes parámetros en la sección de registro: ```conf logging_collector = on log_line_prefix = '%m [%p] %d %a %u %h %c ' # this pattern is required to correlate metrics in the Datadog product @@ -247,9 +259,10 @@ La generación de logs por defecto de PostgreSQL es en `stderr`. Estos logs no i ## For Windows #log_destination = 'eventlog' ``` -2. Para recopilar métricas de duración detalladas y permitir su búsqueda en la interfaz de Datadog, estas métricas deben configurarse en línea con la propia sentencia. A continuación, consulta las diferencias de configuración recomendadas con respecto a las anteriores y ten en cuenta que las opciones `log_statement` y `log_duration` están comentadas. Consulta la discusión sobre este tema [aquí][12]. +2. Para recopilar métricas de duración detalladas y hacerlas buscables en la interfaz de Datadog, configúralas en línea con la declaración. La configuración recomendada a continuación registra todas las declaraciones y sus duraciones. Para reducir la salida a declaraciones que superen una cierta duración, establece `log_min_duration_statement` en el mínimo deseado en milisegundos. Verifica que registrar la declaración SQL completa cumpla con los requisitos de privacidad de tu organización. + + **Nota**: Ambas opciones `log_statement` y `log_duration` están comentadas. Consulta la discusión sobre este tema [aquí][12]. - Esta configuración registra todas las sentencias, pero para reducir el resultado a aquellas que tienen una duración determinada, configura el valor `log_min_duration_statement` con la duración mínima deseada en milisegundos (comprueba que el registro de la sentencia SQL completa cumple con los requisitos de privacidad de tu organización): ```conf log_min_duration_statement = 0 # -1 is disabled, 0 logs all statements # and their durations, > 0 logs only @@ -258,11 +271,11 @@ La generación de logs por defecto de PostgreSQL es en `stderr`. Estos logs no i #log_statement = 'all' #log_duration = on ``` -3. La recopilación de logs está desactivada por omisión en el Datadog Agent, actívala en tu archivo `datadog.yaml`: +3. La recopilación de registros está desactivada por defecto en el Agente de Datadog. Actívalo en tu archivo `datadog.yaml`: ```yaml logs_enabled: true ``` -4. Añade y edita este bloque de configuración en tu archivo `conf.d/postgres.d/conf.yaml` para empezar a recopilar tus logs PostgreSQL: +4. Agrega y edita este bloque de configuración en tu archivo `conf.d/postgres.d/conf.yaml` para comenzar a recopilar tus registros de PostgreSQL: ```yaml logs: - type: file @@ -275,21 +288,56 @@ La generación de logs por defecto de PostgreSQL es en `stderr`. Estos logs no i # pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01]) # name: new_log_start_with_date ``` - Cambia los valores de los parámetros `service` y `path` a fin de configurarlos para tu entorno. Para ver todas las opciones de configuración disponibles, consulta la [muestra postgres.d/conf.yaml][9]. -5. [Reinicia el Agent][10]. + Cambie los valores de los parámetros `service` y `path` para configurarlos para su entorno. Consulta el [ejemplo postgres.d/conf.yaml][9] para todas las opciones de configuración disponibles. +5. [Reinicie el Agent][10]. + +### Recopilando planes con `auto_explain` (opcional) {#collecting-plans-with-auto-explain-optional} + +Por defecto, el agente solo recopila [`EXPLAIN`][17] planes para una muestra de consultas en ejecución. Estos planes son de naturaleza más general, especialmente cuando el código de la aplicación utiliza declaraciones preparadas. + +Para recopilar planes completos de `EXPLAIN ANALYZE` tomados de todas las consultas, necesitas usar [`auto_explain`][18], una extensión propia incluida con PostgreSQL disponible en todos los proveedores principales. _La recopilación de registros es un requisito previo para la recopilación de `auto_explain`_, así que actívalo antes de continuar. + +
+ Importante: auto_explain produce líneas de registro que pueden contener información sensible de su aplicación, similar a los valores en bruto que aparecen en SQL no ofuscado. Puede usar el dbm_parameterized_queries_readel permiso para controlar quién puede ver los planes resultantes, pero las líneas de registro son visibles para todos los usuarios dentro de su organización de Datadog. Usar RBAC para Logs ayuda a asegurar que estos registros solo sean visibles para los usuarios adecuados. +
+ +Después de habilitar la recolección de registros: + +1. Agregue `auto_explain` a su lista de `shared_preload_libraries` en `postgresql.conf`. Por ejemplo, si `shared_preload_libraries` está configurado en `pg_stat_statements`, cámbielo a `pg_stat_statements,auto_explain` + +2. Cambie el `log_line_prefix` para habilitar una correlación de eventos más rica. Este patrón es necesario para ingerir planes de auto_explain. + ```conf + log_line_prefix = '%m:%r:%u@%d:[%p]:%l:%e:%s:%v:%x:%c:%q%a:' + ``` + +3. Configure los ajustes de `auto_explain`. El formato de registro _debe_ ser `json`, pero otras configuraciones pueden variar dependiendo de su aplicación. Este ejemplo registra un `EXPLAIN ANALYZE` plan para todas las consultas que superan un segundo, incluyendo información de búfer pero omitiendo el tiempo (que puede tener sobrecarga). + + ```conf + auto_explain.log_format: "json" + auto_explain.log_min_duration: "1000" + auto_explain.log_analyze: "on" + auto_explain.log_buffers: "on" + auto_explain.log_timing: "off" + auto_explain.log_triggers: "on" + auto_explain.log_verbose: "on" + auto_explain.log_nested_statements: "on" + auto_explain.sample_rate: "1" + ``` + +4. [Reinicie el Agent][10]. -### Validación +### Verifique la configuración del Agent {#verify-agent-setup} -[Ejecuta el subcomando de estado del Agent][13] y busca `postgres` en la sección Checks o visita la página [Bases de datos][14] para empezar. +[Ejecute el subcomando de estado del Agent][13] y busque `postgres` en la sección de Checks. O visite la página de [Databases][14] para comenzar! -## Configuraciones del Agent de ejemplo +## Ejemplos de Configuraciones del Agent {#example-agent-configurations} {{% dbm-postgres-agent-config-examples %}} -## Solucionar problemas +## Solución de problemas {#troubleshooting} -Si has instalado y configurado las integraciones y el Agent como se describe, pero no funcionan como se esperaba, consulta [Solucionar problemas][15]. +Si has instalado y configurado las integraciones y el Agent como se describe y no está funcionando como se esperaba, consulta [Solución de problemas][15]. -## Referencias adicionales +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} @@ -308,4 +356,5 @@ Si has instalado y configurado las integraciones y el Agent como se describe, pe [13]: /es/agent/configuration/agent-commands/#agent-status-and-information [14]: https://app.datadoghq.com/databases [15]: /es/database_monitoring/troubleshooting/?tab=postgres -[16]: /es/agent/configuration/agent-commands/#restart-the-agent \ No newline at end of file +[17]: https://www.postgresql.org/docs/current/sql-explain.html +[18]: https://www.postgresql.org/docs/current/auto-explain.html \ No newline at end of file diff --git a/content/es/ddsql_reference/_index.md b/content/es/ddsql_reference/_index.md index 2a29c507b76..f3c118f593a 100644 --- a/content/es/ddsql_reference/_index.md +++ b/content/es/ddsql_reference/_index.md @@ -2,54 +2,60 @@ aliases: - /es/logs/workspaces/sql_reference - /es/ddsql_reference/ddsql_default -description: Referencia completa de sintaxis, tipos de datos, funciones, operadores - y sentencias DDSQL para consultar datos de Datadog con SQL. +description: Referencia completa para la sintaxis de DDSQL, tipos de datos, funciones, + operadores y declaraciones para consultar datos de Datadog con SQL. further_reading: +- link: bits_ai/mcp_server + tag: Documentación + text: Servidor MCP de Datadog - link: /ddsql_editor/ tag: Documentación - text: Más información sobre DDSQL Editor + text: Editor de DDSQL products: - icon: ddsql - name: Editor DDSQL + name: Editor de DDSQL url: /ddsql_editor/ - icon: notebook name: Notebooks url: /notebooks/ -title: Referencia DDSQL +title: Referencia de DDSQL --- - {{< product-availability >}} -## Información general +## Descripción general {#overview} -DDSQL es SQL para datos de Datadog. Implementa varias operaciones SQL estándar, como `SELECT`, y permite realizar consultas de datos no estructurados. Puedes realizar acciones, como obtener exactamente los datos que buscas, escribiendo tu propia sentencia `SELECT`, o consultar etiquetas (tags) como si fueran columnas de tablas estándar. +DDSQL es SQL para datos de Datadog. Implementa varias operaciones estándar de SQL, como `SELECT`, y permite consultas sobre datos no estructurados. Puedes realizar acciones como obtener exactamente los datos que deseas escribiendo tu propia sentencia `SELECT`, o consultando etiquetas como si fueran columnas de tabla estándar. -Esta documentación cubre el soporte SQL disponible e incluye: +Puedes ejecutar consultas de DDSQL desde agentes de IA utilizando el conjunto de herramientas [Servidor MCP de Datadog][10] `ddsql` (Vista previa). + +Esta documentación cubre el soporte de SQL disponible e incluye: - [Sintaxis compatible con PostgreSQL](#syntax) - [Tipos de datos](#data-types) -- [Tipos literales](#type-literals) -- [Funciones de SQL](#functions) +- [Literales de tipo](#type-literals) +- [Arreglos](#arrays) +- [Funciones SQL](#functions) - [Expresiones regulares](#regular-expressions) - [Funciones de ventana](#window-functions) - [Funciones JSON](#json-functions-and-operators) +- [Funciones de dirección de red](#network-address-functions-and-operators) - [Funciones de tabla](#table-functions) - [Etiquetas](#tags) -{{< img src="/logs/workspace/sql_reference/sql_syntax_analysis_cell.png" alt="Celda de Workspace de ejemplo con sintaxis de SQL" style="width:100%;" >}} +{{< img src="/logs/workspace/sql_reference/sql_syntax_analysis_cell.png" alt="Ejemplo de celda de espacio de trabajo con sintaxis SQL" style="width:100%;" >}} -## Sintaxis +## Sintaxis {#syntax} -Se admite la siguiente sintaxis de SQL: +La siguiente sintaxis SQL es compatible: `SELECT (DISTINCT)` (DISTINCT: Opcional) -: Recupera filas de una base de datos, con `DISTINCT` filtrando los registros duplicados. +: Recupera filas de una base de datos, con `DISTINCT` filtrando registros duplicados. {{< code-block lang="sql" >}}SELECT DISTINCT customer_id FROM orders {{< /code-block >}} `JOIN` -: Combina filas de dos o más tablas basándose en una columna relacionada entre ellas. Admite FULL JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN. +: Combina filas de dos o más tablas basadas en una columna relacionada entre ellas. Soporta FULL JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN. {{< code-block lang="sql" >}}SELECT orders.order_id, customers.customer_name FROM orders @@ -57,27 +63,27 @@ JOIN customers ON orders.customer_id = customers.customer_id {{< /code-block >}} `GROUP BY` -: Agrupa las filas que tienen los mismos valores en las columnas especificadas en filas de resumen. +: Agrupa filas que tienen los mismos valores en columnas especificadas en filas de resumen. {{< code-block lang="sql" >}}SELECT product_id, SUM(quantity) FROM sales GROUP BY product_id {{< /code-block >}} `||` (concat) -: Concatena dos o más cadenas. +: Concatena dos o más cadenas juntas. {{< code-block lang="sql" >}}SELECT first_name || ' ' || last_name AS full_name FROM employees {{< /code-block >}} -`WHERE` (Incluye compatibilidad con los filtros `LIKE`, `IN`, `ON`, `OR`) -: Filtra los registros que cumplen una condición especificada. +`WHERE` (Incluye soporte para `LIKE`, `IN`, `ON`, `OR` filtros) +: Filtra registros que cumplen una condición especificada. {{< code-block lang="sql" >}}SELECT * FROM employees WHERE department = 'Sales' AND name LIKE 'J%' {{< /code-block >}} `CASE` -: Proporciona una lógica condicional para devolver diferentes valores basados en condiciones especificadas. +: Proporciona lógica condicional para devolver diferentes valores según condiciones especificadas. {{< code-block lang="sql" >}}SELECT order_id, CASE @@ -87,7 +93,7 @@ WHERE department = 'Sales' AND name LIKE 'J%' {{< /code-block >}} FROM orders {{< /code-block >}} `WINDOW` -: Realiza un cálculo a través de un conjunto de filas de tabla relacionadas con la fila actual. +: Realiza un cálculo a través de un conjunto de filas de tabla que están relacionadas con la fila actual. {{< code-block lang="sql" >}}SELECT timestamp, @@ -97,8 +103,8 @@ FROM orders {{< /code-block >}} FROM cpu_usage_data {{< /code-block >}} -`IS NULL`/`IS NOT NULL` -: Comprueba si un valor es nulo o no. +`IS NULL` / `IS NOT NULL` +: Verifica si un valor es nulo o no nulo. {{< code-block lang="sql" >}}SELECT * FROM orders @@ -112,21 +118,21 @@ FROM customers LIMIT 10 {{< /code-block >}} `OFFSET` -: Omite un número especificado de registros antes de empezar a devolver registros de la consulta. +: Salta un número especificado de registros antes de comenzar a devolver registros de la consulta. {{< code-block lang="sql" >}}SELECT * FROM employees OFFSET 20 {{< /code-block >}} `ORDER BY` -: Ordena el conjunto de resultados de una consulta por una o varias columnas. Incluye ASC, DESC para el orden de clasificación. +: Ordena el conjunto de resultados de una consulta por una o más columnas. Incluye ASC, DESC para el orden de clasificación. {{< code-block lang="sql" >}}SELECT * FROM sales ORDER BY sale_date DESC {{< /code-block >}} `HAVING` -: Filtra los registros que cumplen una condición especificada después de la agrupación. +: Filtra registros que cumplen una condición especificada después de agrupar. {{< code-block lang="sql" >}}SELECT product_id, SUM(quantity) FROM sales @@ -134,14 +140,14 @@ GROUP BY product_id HAVING SUM(quantity) > 10 {{< /code-block >}} `IN`, `ON`, `OR` -: Se utilizan para especificar condiciones en las consultas. Disponible en las cláusulas `WHERE`, `JOIN`. +: Utilizado para condiciones especificadas en consultas. Disponible en las cláusulas `WHERE`, `JOIN`. {{< code-block lang="sql" >}}SELECT * FROM orders WHERE order_status IN ('Shipped', 'Pending') {{< /code-block >}} `USING` -: Esta cláusula es una abreviatura para uniones en las que las columnas unidas tienen el mismo nombre en ambas tablas. Toma una lista separada por comas de esas columnas y crea una condición de igualdad independiente para cada par coincidente. Por ejemplo, unir `T1` y `T2` con `USING (a, b)` equivale a `ON T1.a = T2.a AND T1.b = T2.b`. +: Esta cláusula es una abreviatura para uniones donde las columnas de unión tienen el mismo nombre en ambas tablas. Toma una lista separada por comas de esas columnas y crea una condición de igualdad separada para cada par coincidente. Por ejemplo, unir `T1` y `T2` con `USING (a, b)` es equivalente a `ON T1.a = T2.a AND T1.b = T2.b`. {{< code-block lang="sql" >}}SELECT orders.order_id, customers.customer_name FROM orders @@ -154,142 +160,236 @@ USING (customer_id) {{< /code-block >}} {{< code-block lang="sql" >}}SELECT first_name AS name FROM employees {{< /code-block >}} -Operaciones aritméticas +Operaciones Aritméticas : Realiza cálculos básicos utilizando operadores como `+`, `-`, `*`, `/`. {{< code-block lang="sql" >}}SELECT price, tax, (price * tax) AS total_cost FROM products {{< /code-block >}} `INTERVAL value unit` -: Intervalo que representa una duración de tiempo especificada en una unidad determinada. -Unidades admitidas:
- `milliseconds`/`millisecond`
- `seconds`/`second`
- `minutes`/`minute`
- `hours`/`hour`
- `days`/`day` +: Intervalo que representa una duración de tiempo especificada en una unidad dada. +Unidades soportadas:
- `milliseconds` / `millisecond`
- `seconds` / `second`
- `minutes` / `minute`
- `hours` / `hour`
- `days` / `day` -## Tipos de datos +## Tipos de datos {#data-types} -DDSQL admite los siguientes tipos de datos: +DDSQL soporta los siguientes tipos de datos: -| Tipo de datos | Descripción | +| Tipo de Dato | Descripción | |-----------|-------------| | `BIGINT` | Enteros con signo de 64 bits. | -| `BOOLEAN` | Valores `true` o `false`. | -| `DOUBLE` | Números de coma flotante de doble precisión. | -| `INTERVAL` | Valores de duración. | +| `BOOLEAN` | `true` o `false` valores. | +| `DECIMAL` | Números de punto flotante. | +| `INET` | Valores de dirección de red (IPv4 e IPv6, con longitud de prefijo CIDR opcional). | +| `INTERVAL` | Valores de duración de tiempo. | | `JSON` | Datos JSON. | | `TIMESTAMP` | Valores de fecha y hora. | | `VARCHAR` | Cadenas de caracteres de longitud variable. | -### Tipos de matrices +### Tipos de arreglo {#array-types} -Todos los tipos de datos admiten tipos de matrices. Las matrices pueden contener varios valores del mismo tipo de datos. +Todos los tipos de datos soportan tipos de arreglo. Vea [Arreglos](#arrays) para literales de arreglo, acceso a elementos y funciones de arreglo. -## Tipos literales +## Literales de tipo {#type-literals} -DDSQL admite tipos literales explícitos utilizando la sintaxis `[TYPE] [value]`. +DDSQL admite literales de tipo explícitos utilizando la sintaxis `[TYPE] [value]`. | Tipo | Sintaxis | Ejemplo | |------|--------|---------| -| `BIGINT` | `BIGINT value` | `BIGINT 1234567` | -| `BOOLEAN` | `BOOLEAN value` | `BOOLEAN true` | -| `DOUBLE` | `DOUBLE value` | `DOUBLE 3.14159` | +| `BIGINT` | `BIGINT 'value'` | `BIGINT '1234567'` | +| `BOOLEAN` | `BOOLEAN 'value'` | `BOOLEAN 'true'` | +| `DECIMAL` | `DECIMAL 'value'` | `DECIMAL '3.14159'` | +| `INET` | `INET 'value'` | `INET '192.168.1.5/24'` | | `INTERVAL` | `INTERVAL 'value unit'` | `INTERVAL '30 minutes'` | | `JSON` | `JSON 'value'` | `JSON '{"key": "value", "count": 42}'` | | `TIMESTAMP` | `TIMESTAMP 'value'` | `TIMESTAMP '2023-12-25 10:30:00'` | | `VARCHAR` | `VARCHAR 'value'` | `VARCHAR 'hello world'` | -El prefijo del tipo puede omitirse y el tipo se deduce automáticamente del valor. Por ejemplo, `'hello world'` se deduce como `VARCHAR`, `123` como `BIGINT` y `true` como `BOOLEAN`. Utiliza prefijos de tipo explícitos cuando los valores puedan ser ambiguos. Por ejemplo,`TIMESTAMP '2025-01-01'` se deduciría como `VARCHAR` sin el prefijo. - -### Matrices literales - -Las matrices literales utilizan la sintaxis `ARRAY[value1, value2, ...]`. El tipo de matriz se deduce automáticamente de los valores. - -{{< code-block lang="sql" >}} -SELECT ARRAY['apple', 'banana', 'cherry'] AS fruits; -- Inferred as VARCHAR array -SELECT ARRAY[1, 2, 3] AS numbers; -- Inferred as BIGINT array -SELECT ARRAY[true, false, true] AS flags; -- Inferred as BOOLEAN array -SELECT ARRAY[1.1, 2.2, 3.3] AS decimals; -- Inferred as DOUBLE array -{{< /code-block >}} +El prefijo de tipo se puede omitir y el tipo se infiere automáticamente del valor. Por ejemplo, `'hello world'` se infiere como `VARCHAR`, `123` como `BIGINT`, y `true` como `BOOLEAN`. Utilice prefijos de tipo explícitos cuando los valores puedan ser ambiguos; por ejemplo, `TIMESTAMP '2025-01-01'` se inferiría como `VARCHAR` sin el prefijo. -### Ejemplo +### Ejemplo {#example} {{< code-block lang="sql" >}} -- Using type literals in queries SELECT VARCHAR 'Product Name: ' || name AS labeled_name, - price * DOUBLE 1.08 AS price_with_tax, + price * DECIMAL '1.08' AS price_with_tax, created_at + INTERVAL '7 days' AS expiry_date FROM products WHERE created_at > TIMESTAMP '2025-01-01'; {{< /code-block >}} -## Funciones +## Arreglos {#arrays} + +Los arreglos son colecciones ordenadas de valores que comparten el mismo tipo de dato. Cada tipo base de DDSQL tiene un tipo de arreglo correspondiente. + +### Literales de arreglo {#array-literals} + +Utilice la sintaxis `ARRAY[value1, value2, ...]` para construir un literal de arreglo. El tipo de arreglo se infiere automáticamente de los valores. + +{{< code-block lang="sql" >}} +SELECT ARRAY['apple', 'banana', 'cherry'] AS fruits; -- VARCHAR array +SELECT ARRAY[1, 2, 3] AS numbers; -- BIGINT array +SELECT ARRAY[true, false, true] AS flags; -- BOOLEAN array +SELECT ARRAY[1.1, 2.2, 3.3] AS decimals; -- DECIMAL array +{{< /code-block >}} + +### Acceso a elementos {#element-access} + +Accede a elementos individuales de un arreglo con un subíndice basado en 1. Acceder a un índice que está fuera de límites devuelve `NULL`. + +{{< code-block lang="sql" >}} +SELECT ARRAY['a', 'b', 'c'][1]; -- Returns 'a' +SELECT ARRAY['a', 'b', 'c'][2]; -- Returns 'b' +SELECT ARRAY['a', 'b', 'c'][10]; -- Returns NULL (out of bounds) +{{< /code-block >}} + +Para acceder a los elementos de una columna de arreglo, utiliza la misma sintaxis de subíndice: + +{{< code-block lang="sql" >}} +SELECT recipients[1] AS first_recipient +FROM emails +{{< /code-block >}} + +### Funciones de arreglo {#array-functions} + +Las siguientes funciones operan sobre arreglos: + +| Función | Tipo de retorno | Descripción | +|----------|-------------|-------------| +| `CARDINALITY(array a)` | `BIGINT` | Devuelve el número de elementos en el arreglo. | +| `ARRAY_POSITION(array a, typeof_array value)` | `BIGINT` | Devuelve el índice basado en 1 de la primera ocurrencia de `value` en el arreglo, o `NULL` si no se encuentra. | +| `STRING_TO_ARRAY(string s, string delimiter)` | `VARCHAR[]` | Divide una cadena en un arreglo de cadenas usando el delimitador dado. | +| `ARRAY_TO_STRING(array a, string delimiter)` | `VARCHAR` | Une los elementos del arreglo en una cadena con el delimitador dado. | +| `ARRAY_AGG(expression e)` | arreglo de tipo de entrada | Agrupa valores de múltiples filas en un arreglo. | +| `UNNEST(array a [, array b...])` | filas de un [, b...] | Expande uno o más arreglos en un conjunto de filas. Solo válido en una cláusula `FROM`. | + +{{% collapse-content title="Ejemplos" level="h3" %}} + +### `CARDINALITY` {#cardinality} +{{< code-block lang="sql" >}} +SELECT + CARDINALITY(recipients) AS recipient_count +FROM + emails +{{< /code-block >}} + +### `ARRAY_POSITION` {#array-position} +{{< code-block lang="sql" >}} +SELECT + ARRAY_POSITION(recipients, 'hello@example.com') AS position +FROM + emails +{{< /code-block >}} + +### `STRING_TO_ARRAY` {#string-to-array} +{{< code-block lang="sql" >}} +SELECT + STRING_TO_ARRAY('a,b,c,d,e,f', ',') AS parts +{{< /code-block >}} + +### `ARRAY_TO_STRING` {#array-to-string} +{{< code-block lang="sql" >}} +SELECT + ARRAY_TO_STRING(ARRAY['a', 'b', 'c'], ',') AS joined_string +{{< /code-block >}} + +### `ARRAY_AGG` {#array-agg} +{{< code-block lang="sql" >}} +SELECT + sender, + ARRAY_AGG(subject) AS subjects, + ARRAY_AGG(DISTINCT subject) AS distinct_subjects +FROM + emails +GROUP BY + sender +{{< /code-block >}} + +### `UNNEST` {#unnest} +{{< code-block lang="sql" >}} +SELECT + sender, + recipient +FROM + emails, + UNNEST(recipients) AS recipient +{{< /code-block >}} + +{{% /collapse-content %}} + +## Funciones {#functions} -Se admiten las siguientes funciones de SQL. Para la función de ventana, consulta la sección [función de ventana](#window-functions) de esta documentación. +Las siguientes funciones SQL son compatibles. Para la función de ventana, consulte la sección separada [Función de ventana](#window-functions) en esta documentación. | Función | Tipo de retorno | Descripción | |--------------------------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `MIN(variable v)` | Variable typeof | Devuelve el valor más pequeño de un conjunto de datos. | -| `MAX(variable v)` | Variable typeof | Devuelve el valor máximo de todos los valores de entrada. | +| `MIN(variable v)` | typeof v | Devuelve el valor más pequeño en un conjunto de datos. | +| `MAX(variable v)` | typeof v | Devuelve el valor máximo entre todos los valores de entrada. | | `COUNT(any a)` | numérico | Devuelve el número de valores de entrada que no son nulos. | | `SUM(numeric n)` | numérico | Devuelve la suma de todos los valores de entrada. | -| `AVG(numeric n)` | numérico | Devuelve el valor medio (media aritmética) de todos los valores de entrada. | +| `AVG(numeric n)` | numérico | Devuelve el valor promedio (media aritmética) de todos los valores de entrada. | | `BOOL_AND(boolean b)` | booleano | Devuelve si todos los valores de entrada no nulos son verdaderos. | -| `BOOL_OR(boolean b)` | booleano | Devuelve si cualquier valor de entrada no nulo es verdadero. | -| `CEIL(numeric n)` | numérico | Devuelve el valor redondeado al entero más próximo. | -| `FLOOR(numeric n)` | numérico | Devuelve el valor redondeado al entero más próximo. | -| `ROUND(numeric n)` | numérico | Devuelve el valor redondeado al entero más próximo. | +| `BOOL_OR(boolean b)` | booleano | Devuelve si algún valor de entrada no nulo es verdadero. | +| `CEIL(numeric n)` / `CEILING(numeric n)` | numérico | Devuelve el valor redondeado hacia arriba al entero más cercano. Tanto `CEIL` como `CEILING` son compatibles como alias. | +| `FLOOR(numeric n)` | numérico | Devuelve el valor redondeado hacia abajo al entero más cercano. | +| `ROUND(numeric n)` | numérico | Devuelve el valor redondeado al entero más cercano. | | `POWER(numeric base, numeric exponent)` | numérico | Devuelve el valor de la base elevado a la potencia del exponente. | | `LOWER(string s)` | cadena | Devuelve la cadena en minúsculas. | | `UPPER(string s)` | cadena | Devuelve la cadena en mayúsculas. | | `ABS(numeric n)` | numérico | Devuelve el valor absoluto. | -| `COALESCE(args a)` | typeof first non-null a OR null | Devuelve el primer valor no nulo o nulo si todos son nulos. | -| `CAST(value AS type)` | tipo | Convierte el valor dado al tipo de datos especificado. | -| `LENGTH(string s)` | entero | Devuelve el número de caracteres de la cadena. | -| `TRIM(string s)` | cadena | Elimina los espacios en blanco iniciales y finales de la cadena. | -| `REPLACE(string s, string from, string to)` | cadena | Sustituye las apariciones de una subcadena dentro de una cadena por otra subcadena. | -| `SUBSTRING(string s, int start, int length)` | cadena | Extrae una subcadena de una cadena, comenzando en una posición dada y para una longitud especificada. | -| `STRPOS(string s, string substring)` | entero | Devuelve la primera posición del índice de la subcadena en una cadena dada, o 0 si no hay coincidencia. | +| `COALESCE(args a)` | typeof primer a no nulo O nulo | Devuelve el primer valor no nulo o nulo si todos son nulos. | +| `CAST(value AS type)` | tipo | Convierte el valor dado al tipo de dato especificado. | +| `LENGTH(string s)` | entero | Devuelve el número de caracteres en la cadena. | +| `TRIM(string s)` | cadena | Elimina los espacios en blanco al inicio y al final de la cadena. | +| `REPLACE(string s, string from, string to)` | cadena | Reemplaza las ocurrencias de una subcadena dentro de una cadena con otra subcadena. | +| `SUBSTRING(string s, int start, int length)` | cadena | Extrae una subcadena de una cadena, comenzando en una posición dada y por una longitud especificada. | +| `REVERSE(string s)` | cadena | Devuelve la cadena con los caracteres en orden inverso. | +| `STRPOS(string s, string substring)` | entero | Devuelve la primera posición en la que se encuentra la subcadena en una cadena dada, o 0 si no hay coincidencia. | | `SPLIT_PART(string s, string delimiter, integer index)` | cadena | Divide la cadena en el delimitador dado y devuelve la cadena en la posición dada contando desde uno. | -| `EXTRACT(unit from timestamp/interval)` | numérico | Extrae una parte de un campo de fecha u hora (como el año o el mes) de una marca temporal o intervalo. | -| `TO_TIMESTAMP(string timestamp, string format)` | marca de tiempo | Convierte una cadena en una marca de tiempo según el formato dado. | -| `TO_CHAR(timestamp t, string format)` | cadena | Convierte una marca de tiempo en una cadena según el formato dado. | -| `DATE_BIN(interval stride, timestamp source, timestamp origin)` | marca de tiempo | Alinea una marca de tiempo (fuente) en buckets de longitud par (stride). Devuelve el inicio del bucket que contiene la fuente, calculado como la mayor marca de tiempo que es menor o igual que la fuente y es un múltiplo de longitudes de stride desde el origen. | -| `DATE_TRUNC(string unit, timestamp t)` | marca de tiempo | Trunca una marca de tiempo a una precisión especificada basada en la unidad proporcionada. | -| `CURRENT_SETTING(string setting_name)` | cadena | Devuelve el valor actual del parámetro especificado. Admite los parámetros `dd.time_frame_start` y `dd.time_frame_end`, que devuelven el inicio y el final del marco temporal global, respectivamente. | -| `NOW()` | marca de tiempo | Devuelve la marca de tiempo actual al inicio de la consulta actual. | -| `CARDINALITY(array a)` | entero | Devuelve el número de elementos de la matriz. | -| `ARRAY_POSITION(array a, typeof_array value)` | entero | Devuelve el índice de la primera aparición del valor encontrado en la matriz, o null (nulo) si no se encuentra el valor. | -| `STRING_TO_ARRAY(string s, string delimiter)` | matriz de cadenas | Divide la cadena dada en una matriz de cadenas utilizando el delimitador dado. | -| `ARRAY_AGG(expression e)` | matriz de tipo de entrada | Crea una matriz al recopilar todos los valores de entrada. | -| `UNNEST(array a [, array b...])` | filas de a [, b...] | Expande matrices en un conjunto de filas. Esta forma sólo se permite en una cláusula FROM. | +| `EXTRACT(unit from timestamp/interval)` | numérico | Extrae una parte de un campo de fecha u hora (como el año o el mes) de un timestamp o intervalo. | +| `TO_TIMESTAMP(string timestamp, string format)` | timestamp | Convierte una cadena a un timestamp de acuerdo con el formato dado. | +| `TO_TIMESTAMP(numeric epoch)` | timestamp | Convierte un timestamp de época UNIX (en segundos) a un timestamp. | +| `TO_CHAR(timestamp t, string format)` | cadena | Convierte un timestamp a una cadena de acuerdo con el formato dado. | +| `DATE_BIN(interval stride, timestamp source, timestamp origin)` | timestamp | Alinea un timestamp (fuente) a intervalos de longitud uniforme. Devuelve el inicio del bucket que contiene la fuente, calculado como el mayor timestamp que es menor o igual a la fuente y que es un múltiplo de la longitud del stride a partir del origen. | +| `DATE_TRUNC(string unit, timestamp t)` | timestamp | Trunca un timestamp a una precisión especificada basada en la unidad proporcionada. | +| `CURRENT_SETTING(string setting_name)` | cadena | Devuelve el valor actual de la configuración especificada. Soporta los parámetros `dd.time_frame_start` y `dd.time_frame_end`, que devuelven el inicio y el final del marco temporal global, respectivamente. | +| `NOW()` | timestamp | Devuelve el timestamp UTC actual al inicio de la consulta actual. | +| `CARDINALITY(array a)` | entero | Devuelve el número de elementos en el arreglo. | +| `ARRAY_POSITION(array a, typeof_array value)` | entero | Devuelve el índice de la primera ocurrencia del valor encontrado en el arreglo, o nulo si el valor no se encuentra. | +| `STRING_TO_ARRAY(string s, string delimiter)` | arreglo de cadenas | Divide la cadena dada en un arreglo de cadenas utilizando el delimitador proporcionado. | +| `ARRAY_TO_STRING(array a, string delimiter)` | cadena | Convierte un arreglo en una cadena concatenando los elementos con el delimitador dado. | +| `ARRAY_AGG(expression e)` | arreglo de tipo de entrada | Crea un arreglo recolectando todos los valores de entrada. | +| `APPROX_PERCENTILE(double percentile) WITHIN GROUP (ORDER BY expression e)` | expresión typeof | Calcula un valor percentil aproximado. El percentil debe estar entre 0.0 y 1.0 (inclusive). Requiere la sintaxis `WITHIN GROUP (ORDER BY ...)`. | +| `UNNEST(array a [, array b...])` | filas de a [, b...] | Expande arreglos en un conjunto de filas. Esta forma solo se permite en una cláusula FROM. | {{% collapse-content title="Ejemplos" level="h3" %}} -### `MIN` +### `MIN` {#min} {{< code-block lang="sql" >}} SELECT MIN(response_time) AS min_response_time FROM logs WHERE status_code = 200 {{< /code-block >}} -### `MAX` +### `MAX` {#max} {{< code-block lang="sql" >}} SELECT MAX(response_time) AS max_response_time FROM logs WHERE status_code = 200 {{< /code-block >}} -### `COUNT` +### `COUNT` {#count} {{< code-block lang="sql" >}}SELECT COUNT(request_id) AS total_requests FROM logs WHERE status_code = 200 {{< /code-block >}} -### `SUM` +### `SUM` {#sum} {{< code-block lang="sql" >}}SELECT SUM(bytes_transferred) AS total_bytes FROM logs GROUP BY service_name {{< /code-block >}} -### `AVG` +### `AVG` {#avg} {{< code-block lang="sql" >}}SELECT AVG(response_time) AS avg_response_time FROM logs @@ -297,69 +397,72 @@ WHERE status_code = 200 GROUP BY service_name {{< /code-block >}} -### `BOOL_AND` +### `BOOL_AND` {#bool-and} {{< code-block lang="sql" >}}SELECT BOOL_AND(status_code = 200) AS all_success FROM logs {{< /code-block >}} -### `BOOL_OR` +### `BOOL_OR` {#bool-or} {{< code-block lang="sql" >}}SELECT BOOL_OR(status_code = 200) AS some_success FROM logs {{< /code-block >}} -### `CEIL` +### `CEIL` {#ceil} {{< code-block lang="sql" >}} SELECT CEIL(price) AS rounded_price FROM products {{< /code-block >}} -### `FLOOR` +### `FLOOR` {#floor} {{< code-block lang="sql" >}} SELECT FLOOR(price) AS floored_price FROM products {{< /code-block >}} -### `ROUND` +### `ROUND` {#round} {{< code-block lang="sql" >}} SELECT ROUND(price) AS rounded_price FROM products {{< /code-block >}} -### `POWER` +### `POWER` {#power} {{< code-block lang="sql" >}} SELECT POWER(response_time, 2) AS squared_response_time FROM logs {{< /code-block >}} -### `LOWER` +### `LOWER` {#lower} {{< code-block lang="sql" >}} SELECT LOWER(customer_name) AS lowercase_name FROM customers {{< /code-block >}} -### `UPPER` +### `UPPER` {#upper} {{< code-block lang="sql" >}} SELECT UPPER(customer_name) AS uppercase_name FROM customers {{< /code-block >}} -### `ABS` +### `ABS` {#abs} {{< code-block lang="sql" >}} SELECT ABS(balance) AS absolute_balance FROM accounts {{< /code-block >}} -### `COALESCE` +### `COALESCE` {#coalesce} {{< code-block lang="sql" >}} SELECT COALESCE(phone_number, email) AS contact_info FROM users {{< /code-block >}} -### `CAST` +### `CAST` {#cast} -Tipos de objetivos de cast admitidos: +Supported cast target types: + +Traducción corregida: "Tipos de destino de cast soportados:" - `BIGINT` - `DECIMAL` +- `INET` - `TIMESTAMP` - `VARCHAR` @@ -371,7 +474,7 @@ FROM orders {{< /code-block >}} -### `LENGTH` +### `LENGTH` {#length} {{< code-block lang="sql" >}} SELECT customer_name, @@ -380,14 +483,14 @@ FROM customers {{< /code-block >}} -### `INTERVAL` +### `INTERVAL` {#interval} {{< code-block lang="sql" >}} SELECT TIMESTAMP '2023-10-01 10:00:00' + INTERVAL '30 days' AS future_date, INTERVAL '1 MILLISECOND 2 SECONDS 3 MINUTES 4 HOURS 5 DAYS' {{< /code-block >}} -### `TRIM` +### `TRIM` {#trim} {{< code-block lang="sql" >}} SELECT TRIM(name) AS trimmed_name @@ -395,7 +498,7 @@ FROM users {{< /code-block >}} -### `REPLACE` +### `REPLACE` {#replace} {{< code-block lang="sql" >}} SELECT REPLACE(description, 'old', 'new') AS updated_description @@ -403,7 +506,7 @@ FROM products {{< /code-block >}} -### `SUBSTRING` +### `SUBSTRING` {#substring} {{< code-block lang="sql" >}} SELECT SUBSTRING(title, 1, 10) AS short_title @@ -411,26 +514,36 @@ FROM books {{< /code-block >}} -### `STRPOS` +### `REVERSE` {#reverse} +{{< code-block lang="sql" >}} +SELECT + REVERSE(username) AS reversed_username +FROM + users +LIMIT 5 +{{< /code-block >}} + +### `STRPOS` {#strpos} {{< code-block lang="sql" >}} SELECT STRPOS('foobar', 'bar') {{< /code-block >}} -### `SPLIT_PART` +### `SPLIT_PART` {#split-part} {{< code-block lang="sql" >}} SELECT SPLIT_PART('aaa-bbb-ccc', '-', 2) {{< /code-block >}} -### `EXTRACT` +### `EXTRACT` {#extract} -Unidades de extracción compatibles: +Unidades de extracción soportadas: | Literal | Tipo de entrada | Descripción | | ------------------| ------------------------ | -------------------------------------------- | | `day` | `timestamp` / `interval` | día del mes | | `dow` | `timestamp` | día de la semana `1` (lunes) a `7` (domingo) | | `doy` | `timestamp` | día del año (`1` - `366`) | +| `epoch` | `timestamp` / `interval` | segundos desde 1970-01-01 00:00:00 UTC (para marcas de tiempo), o número total de segundos (para intervalos) | | `hour` | `timestamp` / `interval` | hora del día (`0` - `23`) | | `minute` | `timestamp` / `interval` | minuto de la hora (`0` - `59`) | | `second` | `timestamp` / `interval` | segundo del minuto (`0` - `59`) | @@ -438,8 +551,8 @@ Unidades de extracción compatibles: | `month` | `timestamp` | mes del año (`1` - `12`) | | `quarter` | `timestamp` | trimestre del año (`1` - `4`) | | `year` | `timestamp` | año | -| `timezone_hour` | `timestamp` | hora del inicio del huso horario | -| `timezone_minute` | `timestamp` | minuto del inicio del huso horario | +| `timezone_hour` | `timestamp` | hora del desfase horario | +| `timezone_minute` | `timestamp` | minuto del desfase horario | {{< code-block lang="sql" >}} SELECT @@ -448,50 +561,82 @@ FROM sales {{< /code-block >}} -### `TO_TIMESTAMP` +{{< code-block lang="sql" >}} +-- Get the Unix epoch of a timestamp +SELECT EXTRACT(epoch FROM TIMESTAMP '2021-01-01 00:00:00+00') +-- Returns: 1609459200 +{{< /code-block >}} + +{{< code-block lang="sql" >}} +-- Get the total seconds in an interval +SELECT EXTRACT(epoch FROM INTERVAL '1 day 2 hours') +-- Returns: 93600 +{{< /code-block >}} -Patrones compatibles para el formato fecha/hora: +{{< code-block lang="sql" >}} +-- Calculate how many seconds ago each event occurred +SELECT + event_time, + EXTRACT(epoch FROM now()) - EXTRACT(epoch FROM event_time) AS seconds_ago +FROM + events +{{< /code-block >}} + +### `TO_TIMESTAMP` {#to-timestamp} + +`TO_TIMESTAMP` tiene dos formas: + +**Forma 1: Convertir cadena a marca de tiempo con formato** + +Patrones soportados para el formato de fecha/hora: | Patrón | Descripción | | ----------- | ------------------------------------ | | `YYYY` | año (4 dígitos) | | `YY` | año (2 dígitos) | | `MM` | número de mes (01 - 12) | -| `DD` | día del mes (01 - 31) | +| `DD` | día del mes (01 - 31) | | `HH24` | hora del día (00 - 23) | | `HH12` | hora del día (01 - 12) | | `HH` | hora del día (01 - 12) | | `MI` | minuto (00 - 59) | | `SS` | segundo (00 - 59) | | `MS` | milisegundo (000 - 999) | -| `TZ` | abreviatura del huso horario | -| `OF` | inicio del huso horario desde UTC | -| `AM` / `am` | indicador del meridiano (sin puntos) | -| `PM` / `pm` | indicador del meridiano (sin puntos) | +| `TZ` | abreviatura de zona horaria | +| `OF` | desplazamiento de zona horaria desde UTC| +| `AM` / `am` | indicador de meridiano (sin puntos) | +| `PM` / `pm` | indicador de meridiano (sin puntos) | {{< code-block lang="sql" >}} SELECT TO_TIMESTAMP('25/12/2025 04:23 pm', 'DD/MM/YYYY HH:MI am') AS ts {{< /code-block >}} -### `TO_CHAR` +**Forma 2: Convertir marca de tiempo de época UNIX a marca de tiempo** -Patrones compatibles para el formato fecha/hora: +{{< code-block lang="sql" >}} +SELECT + TO_TIMESTAMP(1735142580) AS ts_from_epoch +{{< /code-block >}} + +### `TO_CHAR` {#to-char} + +Patrones soportados para el formato de fecha/hora: | Patrón | Descripción | | ----------- | ------------------------------------ | | `YYYY` | año (4 dígitos) | | `YY` | año (2 dígitos) | | `MM` | número de mes (01 - 12) | -| `DD` | día del mes (01 - 31) | +| `DD` | día del mes (01 - 31) | | `HH24` | hora del día (00 - 23) | | `HH12` | hora del día (01 - 12) | | `HH` | hora del día (01 - 12) | | `MI` | minuto (00 - 59) | | `SS` | segundo (00 - 59) | | `MS` | milisegundo (000 - 999) | -| `TZ` | abreviatura del huso horario | -| `OF` | inicio del huso horario desde UTC | -| `AM` / `am` | indicador del meridiano (sin puntos) | -| `PM` / `pm` | indicador del meridiano (sin puntos) | +| `TZ` | abreviatura de zona horaria | +| `OF` | desplazamiento de zona horaria desde UTC | +| `AM` / `am` | indicador de meridiano (sin puntos) | +| `PM` / `pm` | indicador de meridiano (sin puntos) | {{< code-block lang="sql" >}} SELECT @@ -500,7 +645,7 @@ FROM orders {{< /code-block >}} -### `DATE_BIN` +### `DATE_BIN` {#date-bin} {{< code-block lang="sql" >}} SELECT DATE_BIN('15 minutes', TIMESTAMP '2025-09-15 12:34:56', TIMESTAMP '2025-01-01') -- Returns 2025-09-15 12:30:00 @@ -509,9 +654,9 @@ SELECT DATE_BIN('1 day', TIMESTAMP '2025-09-15 12:34:56', TIMESTAMP '2025-01-01' -- Returns 2025-09-15 00:00:00 {{< /code-block >}} -### `DATE_TRUNC` +### `DATE_TRUNC` {#date-trunc} -Truncamientos admitidos: +Truncamientos soportados: - `milliseconds` - `seconds` / `second` - `minutes` / `minute` @@ -529,11 +674,11 @@ FROM events {{< /code-block >}} -### `CURRENT_SETTING` +### `CURRENT_SETTING` {#current-setting} -Parámetros de configuración admitidos: -- `dd.time_frame_start`: Devuelve el inicio de la marca de tiempo seleccionada en formato RFC 3339 (`YYYY-MM-DD HH:mm:ss.sss±HH:mm`). -- `dd.time_frame_end`: Devuelve el final de la marca de tiempo seleccionada en formato RFC 3339 (`YYYY-MM-DD HH:mm:ss.sss±HH:mm`). +Parámetros de configuración soportados: +- `dd.time_frame_start`: Devuelve el inicio del marco de tiempo seleccionado en formato RFC 3339 (`YYYY-MM-DD HH:mm:ss.sss±HH:mm`). +- `dd.time_frame_end`: Devuelve el final del marco de tiempo seleccionado en formato RFC 3339 (`YYYY-MM-DD HH:mm:ss.sss±HH:mm`). {{< code-block lang="sql" >}} -- Define the current analysis window @@ -550,7 +695,7 @@ WITH bounds AS ( SELECT * FROM bounds, previous_bounds {{< /code-block >}} -### `NOW` +### `NOW` {#now} {{< code-block lang="sql" >}} SELECT * @@ -560,77 +705,51 @@ WHERE purchase_date > NOW() - INTERVAL '1 hour' {{< /code-block >}} -### `CARDINALITY` +### `APPROX_PERCENTILE` {#approx-percentile} {{< code-block lang="sql" >}} +-- Calculate the median (50th percentile) response time SELECT - CARDINALITY(recipients) + APPROX_PERCENTILE(0.5) WITHIN GROUP (ORDER BY response_time) AS median_response_time FROM - emails -{{< /code-block >}} - -### `ARRAY_POSITION` -{{< code-block lang="sql" >}} -SELECT - ARRAY_POSITION(recipients, 'hello@example.com') -FROM - emails -{{< /code-block >}} - -### `STRING_TO_ARRAY` -{{< code-block lang="sql" >}} -SELECT - STRING_TO_ARRAY('a,b,c,d,e,f', ',') -{{< /code-block >}} + logs -### `ARRAY_AGG` -{{< code-block lang="sql" >}} +-- Calculate 95th and 99th response time percentiles by service SELECT - sender, - ARRAY_AGG(subject) subjects, - ARRAY_AGG(ALL subject) all_subjects, - ARRAY_AGG(DISTINCT subject) distinct_subjects + service_name, + APPROX_PERCENTILE(0.95) WITHIN GROUP (ORDER BY response_time) AS p95_response_time, + APPROX_PERCENTILE(0.99) WITHIN GROUP (ORDER BY response_time) AS p99_response_time FROM - emails + logs GROUP BY - sender -{{< /code-block >}} - -### `UNNEST` -{{< code-block lang="sql" >}} -SELECT - sender, - recipient -FROM - emails, - UNNEST(recipients) AS recipient + service_name {{< /code-block >}} {{% /collapse-content %}} -## Expresiones regulares +## Expresiones regulares {#regular-expressions} -### Sabor +### Sabor {#flavor} -Todas las funciones de expresión regular (regex) utilizan el formato ICU (International Components for Unicode): +Todas las funciones de expresiones regulares (regex) utilizan el sabor de Componentes Internacionales para Unicode (ICU): - [Metacaracteres][5] - [Operadores][6] -- [Expresiones de conjuntos (clases de caracteres)][7] -- [Opciones de marcadores para marcadores en patrones][8]. Consulta la [sección sobre marcadores a continuación](#function-level-flags) para conocer los marcadores a nivel de función. -- [Buscar y reemplazar (utilizando grupos de captura)][9] +- [Expresiones de Conjunto (Clases de Caracteres)][7] +- [Opciones de Bandera para banderas en patrón][8]. Consulte la sección de [banderas a continuación](#function-level-flags) para banderas a nivel de función. +- [Buscar y Reemplazar (usando grupos de captura)][9] -### Funciones +### Funciones {#functions-1} -| Función | Tipo de retorno | Descripción | +| Función | Tipo de Retorno | Descripción | |------------------------------------------------------------------------------------------------------------------|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `REGEXP_LIKE(string input, string pattern)` | Booleano | Evalúa si una cadena coincide con un patrón de expresión regular. | -| `REGEXP_MATCH(string input, string pattern [, string flags ])` | matriz de cadenas | Devuelve las subcadenas de la primera coincidencia de patrón en la cadena.

Esta función busca en la cadena de entrada utilizando el patrón dado y devuelve las subcadenas capturadas (grupos de captura) de la primera coincidencia. Si no hay grupos de captura, devuelve la coincidencia completa. | -| `REGEXP_REPLACE(string input, string pattern, string replacement [, string flags ])` | cadena | Sustituye la subcadena que es la primera coincidencia con el patrón, o todas las coincidencias si utilizas el [marcador opcional `g` ](#function-level-flags). | -| `REGEXP_REPLACE (string input, string pattern, string replacement, integer start, integer N [, string flags ] )` | cadena | Sustituye la subcadena que es la enésima coincidencia con el patrón, o todas las coincidencias si `N` es cero, empezando por `start`. | +| `REGEXP_MATCH(string input, string pattern [, string flags ])` | arreglo de cadenas | Devuelve las subcadenas de la primera coincidencia del patrón en la cadena.

Esta función busca en la cadena de entrada utilizando el patrón dado y devuelve las subcadenas capturadas (grupos de captura) de la primera coincidencia. Si no hay grupos de captura presentes, devuelve la coincidencia completa. | +| `REGEXP_REPLACE(string input, string pattern, string replacement [, string flags ])` | cadena | Reemplaza la subcadena que es la primera coincidencia con el patrón, o todas las coincidencias si usas la [opcional `g` bandera](#function-level-flags). | +| `REGEXP_REPLACE (string input, string pattern, string replacement, integer start, integer N [, string flags ] )` | cadena | Reemplaza la subcadena que es la N-ésima coincidencia con el patrón, o todas las coincidencias si `N` es cero, comenzando desde `start`. | {{% collapse-content title="Ejemplos" level="h3" %}} -### `REGEXP_LIKE` +### `REGEXP_LIKE` {#regexp-like} {{< code-block lang="sql" >}} SELECT * @@ -640,7 +759,7 @@ WHERE REGEXP_LIKE(email_address, '@example\.com$') {{< /code-block >}} -### `REGEXP_MATCH` +### `REGEXP_MATCH` {#regexp-match} {{< code-block lang="sql" >}} SELECT regexp_match('foobarbequebaz', '(bar)(beque)'); -- {bar,beque} @@ -652,7 +771,7 @@ SELECT regexp_match('abc123xyz', '([a-z]+)(\d+)(x(.)z)'); -- {abc,123,xyz,y} {{< /code-block >}} -### `REGEXP_REPLACE` +### `REGEXP_REPLACE` {#regexp-replace} {{< code-block lang="sql" >}} SELECT regexp_replace('Auth success token=abc123XYZ789', 'token=\w+', 'token=***'); -- Auth success token=*** @@ -666,22 +785,22 @@ SELECT regexp_replace('INFO INFO INFO', 'INFO', 'DEBUG', 1, 2); {{% /collapse-content %}} -### Marcadores de función +### Banderas a nivel de función {#function-level-flags} -Puedes utilizar los siguientes marcadores con [funciones de expresión regular](#regular-expressions): +Puedes usar las siguientes banderas con [funciones de expresiones regulares](#regular-expressions): `i` -: Coincidencia que no distingue mayúsculas y minúsculas +: Coincidencia sin distinción de mayúsculas y minúsculas `n` o `m` -: Coincidencia que reconoce nuevas líneas +: Coincidencia sensible a saltos de línea `g` -: Global; sustiyuye _todas_ las subcadenas coincidentes en lugar de solo la primera +: Global; reemplaza _todas_ las subcadenas coincidentes en lugar de solo la primera {{% collapse-content title="Ejemplos" level="h3" %}} -### Marcador `i` +### `i` bandera {#i-flag} {{< code-block lang="sql" >}} SELECT regexp_match('INFO', 'info') @@ -691,7 +810,7 @@ SELECT regexp_match('INFO', 'info', 'i') -- ['INFO'] {{< /code-block >}} -### Marcador `n` +### `n` bandera {#n-flag} {{< code-block lang="sql" >}} SELECT regexp_match('a @@ -703,7 +822,7 @@ b', '^b', 'n'); -- ['b'] {{< /code-block >}} -### Marcador `g` +### `g` bandera {#g-flag} {{< code-block lang="sql" >}} SELECT icu_regexp_replace('Request id=12345 completed, id=67890 pending', 'id=\d+', 'id=XXX'); @@ -715,39 +834,133 @@ SELECT regexp_replace('Request id=12345 completed, id=67890 pending', 'id=\d+', {{% /collapse-content %}} -## Funciones de ventana +## Funciones de ventana {#window-functions} -Esta tabla proporciona información general de las funciones de ventana admitidas. Para ver más detalles y ejemplos, consulte la [documentación de PostgreSQL][2]. +Esta tabla proporciona una visión general de las funciones de ventana soportadas. Para detalles y ejemplos completos, consulta la [documentación de PostgreSQL][2]. | Función | Tipo de retorno | Descripción | |-------------------------|-------------------|------------------------------------------------------------------------| -| `OVER` | N/A | Define una ventana para un conjunto de filas sobre las que pueden operar otras funciones de ventana. | +| `OVER` | N/A | Define una ventana para un conjunto de filas sobre las que operar otras funciones de ventana. | | `PARTITION BY` | N/A | Divide el conjunto de resultados en particiones, específicamente para aplicar funciones de ventana. | -| `RANK()` | entero | Asigna un rango a cada fila dentro de una partición, con espacios para los empates. | +| `RANK()` | entero | Asigna un rango a cada fila dentro de una partición, con huecos para empates. | | `ROW_NUMBER()` | entero | Asigna un número secuencial único a cada fila dentro de una partición. | -| `LEAD(column n)` | columna typeof | Devuelve el valor de la siguiente fila de la partición. | -| `LAG(column n)` | columna typeof | Devuelve el valor de la fila anterior de la partición. | -| `FIRST_VALUE(column n)` | columna typeof | Devuelve el primer valor de un conjunto ordenado de valores. | -| `LAST_VALUE(column n)` | columna typeof | Devuelve el último valor de un conjunto ordenado de valores. | -| `NTH_VALUE(column n, offset)`| columna typeof | Devuelve el valor en el desplazamiento especificado en un conjunto ordenado de valores. | +| `LEAD(column n)` | tipo de dato de la columna | Devuelve el valor de la siguiente fila en la partición. | +| `LAG(column n)` | tipo de dato de la columna | Devuelve el valor de la fila anterior en la partición. | +| `FIRST_VALUE(column n)` | tipo de dato de la columna | Devuelve el primer valor en un conjunto ordenado de valores. | +| `LAST_VALUE(column n)` | tipo de dato de la columna | Devuelve el último valor en un conjunto ordenado de valores. | +| `NTH_VALUE(column n, offset)`| tipo de dato de la columna | Devuelve el valor en el desplazamiento especificado en un conjunto ordenado de valores. | -## Funciones y operadores JSON +## Funciones y operadores JSON {#json-functions-and-operators} -| Nombre | Tipo de devolución | Descripción | +| Nombre | Tipo de retorno | Descripción | |-----------------------------------------------|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| json_extract_path_text(text json, text path...) | texto | Extrae un subobjeto JSON como texto, definido por la ruta. Su comportamiento es equivalente a la [función Postgres del mismo nombre][3]. Por ejemplo, `json_extract_path_text(col, ‘forest')` devuelve el valor de la clave `forest` para cada objeto JSON en `col`. Consulta el ejemplo siguiente para ver la sintaxis de una matriz JSON. | -| json_extract_path(text json, text path...) | JSON | Misma funcionalidad que `json_extract_path_text`, pero devuelve una columna de tipo JSON en lugar de tipo texto. | -| json_array_elements(text json) | filas de JSON | Expande una matriz JSON en un conjunto de filas. Esta forma solo se permite en una cláusula FROM. | -| json_array_elements_text(text json) | filas de texto | Expande una matriz JSON en un conjunto de filas. Esta forma solo se permite en una cláusula FROM. | +| json_extract_path_text(text json, text path…) | text | Extrae un subobjeto JSON como texto, definido por la ruta. Su comportamiento es equivalente a la [función de Postgres con el mismo nombre][3]. Por ejemplo, `json_extract_path_text(col, ‘forest')` devuelve el valor de la clave `forest` para cada objeto JSON en `col`. Vea el ejemplo a continuación para la sintaxis de un arreglo JSON. | +| json_extract_path(text json, text path…) | JSON | Misma funcionalidad que `json_extract_path_text`, pero devuelve una columna de tipo JSON en lugar de tipo texto. | +| json_array_elements(text json) | filas de JSON | Expande un arreglo JSON en un conjunto de filas. Esta forma solo se permite en una cláusula FROM. | +| json_array_elements_text(text json) | filas de texto | Expande un arreglo JSON en un conjunto de filas. Esta forma solo se permite en una cláusula FROM. | + +## Funciones y operadores de dirección de red {#network-address-functions-and-operators} -## Funciones de tabla +El tipo `inet` representa direcciones de red IPv4 e IPv6 con una longitud de prefijo CIDR opcional (por ejemplo, `192.168.1.5/24` o `::1`). Crea valores `inet` con la sintaxis literal de tipo `INET 'value'` o convirtiendo una cadena con `CAST(column AS inet)`. -{{< callout url="https://www.datadoghq.com/product-preview/logs-metrics-support-in-ddsql-editor/" >}} -La consulta de logs y métricas mediante DDSQL está en vista previa. Utiliza este formulario para solicitar accesso. -{{< /callout >}} +### Funciones {#functions-2} -Las funciones de tabla se utilizan para consultar logs y métricas. +| Función | Tipo de retorno | Descripción | +|----------|-------------|-------------| +| `host(inet addr)` | `VARCHAR` | Devuelve la dirección IP como texto, sin la longitud del prefijo. | +| `network(inet addr)` | `INET` | Devuelve la parte de red de la dirección, con los bits de host en cero. | +| `netmask(inet addr)` | `INET` | Devuelve la máscara de red para la dirección. | +| `masklen(inet addr)` | `BIGINT` | Devuelve la longitud del prefijo de la máscara de red. | +| `broadcast(inet addr)` | `INET` | Devuelve la dirección de difusión de la red. | +| `family(inet addr)` | `BIGINT` | Devuelve la familia de direcciones: `4` para IPv4, `6` para IPv6. | + +### Operadores {#operators} + +| Operador | Tipo de retorno | Descripción | +|----------|-------------|-------------| +| `inet a << inet b` | `BOOLEAN` | Devuelve `true` si `a` está estrictamente contenido dentro de `b`. | +| `inet a <<= inet b` | `BOOLEAN` | Devuelve `true` si `a` está contenido dentro de o es igual a `b`. | +| `inet a >> inet b` | `BOOLEAN` | Devuelve `true` si `a` contiene estrictamente `b`. | +| `inet a >>= inet b` | `BOOLEAN` | Devuelve `true` si `a` contiene o es igual a `b`. | +| `inet a && inet b` | `BOOLEAN` | Devuelve `true` si las subredes de `a` y `b` se superponen. | + +{{% collapse-content title="Ejemplos" level="h3" %}} + +### `host` {#host} +{{< code-block lang="sql" >}} +SELECT host(INET '192.168.1.5/24') +-- Returns: 192.168.1.5 +{{< /code-block >}} + +### `network` {#network} +{{< code-block lang="sql" >}} +SELECT network(INET '192.168.1.5/24') +-- Returns: 192.168.1.0/24 +{{< /code-block >}} + +### `netmask` {#netmask} +{{< code-block lang="sql" >}} +SELECT netmask(INET '192.168.1.5/24') +-- Returns: 255.255.255.0 +{{< /code-block >}} + +### `masklen` {#masklen} +{{< code-block lang="sql" >}} +SELECT masklen(INET '192.168.1.5/24') +-- Returns: 24 +{{< /code-block >}} + +### `broadcast` {#broadcast} +{{< code-block lang="sql" >}} +SELECT broadcast(INET '192.168.1.5/24') +-- Returns: 192.168.1.255/24 +{{< /code-block >}} + +### `family` {#family} +{{< code-block lang="sql" >}} +SELECT family(INET '::1') +-- Returns: 6 + +SELECT family(INET '192.168.1.5') +-- Returns: 4 +{{< /code-block >}} + +### Operadores de contención {#containment-operators} +{{< code-block lang="sql" >}} +-- Check if an IP is within a subnet +SELECT INET '192.168.1.5' << INET '192.168.1.0/24' +-- Returns: true + +-- Check containment or equality +SELECT INET '192.168.1.0/24' <<= INET '192.168.1.0/24' +-- Returns: true + +-- Check if a subnet contains an IP +SELECT INET '10.0.0.0/8' >> INET '10.1.2.3' +-- Returns: true + +-- Check if two subnets overlap +SELECT INET '192.168.1.0/24' && INET '192.168.1.128/25' +-- Returns: true +{{< /code-block >}} + +### Uso combinado {#combined-usage} +{{< code-block lang="sql" >}} +-- Find all IPs in a private subnet and extract network info +SELECT + host(CAST(src_ip AS inet)) AS ip, + masklen(CAST(src_ip AS inet)) AS prefix_len, + network(CAST(src_ip AS inet)) AS network +FROM connections +WHERE CAST(src_ip AS inet) << INET '10.0.0.0/8' + AND family(CAST(src_ip AS inet)) = 4 +{{< /code-block >}} + +{{% /collapse-content %}} + +## Funciones de tabla {#table-functions} +Las funciones de tabla se utilizan para consultar registros, métricas, costos en la nube y otras fuentes de datos. @@ -762,41 +975,43 @@ Las funciones de tabla se utilizan para consultar logs y métricas. - + - + + + + + + + + + + + + + + + +
 dd.logs(
-    filter => varchar,
-    columns => array < varchar >,
-    indexes => array < varchar >,
-    from_timestamp => timestamp,
-    to_timestamp => timestamp
+    columnas => array < varchar >,
+    filtro ? => varchar,
+    índices ? => array < varchar >,
+    storage ? => varchar,
+    from_timestamp ? => timestamp,
+    to_timestamp ? => timestamp
 ) AS (column_name type [, ...])
Devuelve los datos de logs en forma de tabla. El parámetro de columna especifica qué campos de log extraer, y la cláusula AS define el esquema de la tabla devuelta. Opcional: Filtrado por índice o rango temporal. Si no se especifica la hora, se utilizará por defecto la última hora de los datos.Devuelve datos de registro como una tabla. El parámetro de columnas especifica qué campos de registro extraer. Los campos anidados se acceden utilizando notación de punto, y los campos no centrales deben ser precedidos por @. La cláusula AS define el esquema de la tabla devuelta. Opcional: filtrado por índice o rango de tiempo. Cuando no se especifica el tiempo, DDSQL utiliza la configuración de tiempo global, que en DDSQL Editor está configurada para la última hora. Opcional: especificar el almacenamiento a utilizar (por ejemplo, hot, flex_tier). Cuando no se especifica, el valor predeterminado es almacenamiento caliente. {{< code-block lang="sql" >}} -SELECT timestamp, host, service, message +SELECT timestamp, host, service, message, asset_id FROM dd.logs( - filter => 'source (fuente):java', - columns => ARRAY['timestamp','host', 'service','message'] + filter => 'source:java', + columns => ARRAY['timestamp','host','service','message','@asset.id'] ) AS ( timestamp TIMESTAMP, - host VARCHAR, - service VARCHAR, - message VARCHAR + host VARCHAR, + service VARCHAR, + message VARCHAR, + asset_id VARCHAR ){{< /code-block >}}
-dd.metric_scalar(
-    query varchar
+dd.metrics_scalar(
+    consulta varchar,
     reducer varchar [, from_timestamp timestamp, to_timestamp timestamp]
 )
Devuelve datos de métricas como un valor escalar. La función acepta una consulta de métricas (con agrupación opcional), un reductor para determinar cómo se agregan los valores (medio, máx, etc.) y parámetros opcionales de fecha y hora (por defecto 1 hora) para definir el intervalo de tiempo.Devuelve datos métricos como un valor escalar. La función acepta una consulta de métricas (con agrupamiento opcional), un reducer para determinar cómo se agregan los valores (avg, max, etc.), y parámetros de marca de tiempo opcionales (por defecto 1 hora) para definir el rango de tiempo. {{< code-block lang="sql" >}} SELECT * -FROM dd.metric_scalar( +FROM dd.metrics_scalar( 'avg:system.cpu.user{*} by {service}', 'avg', TIMESTAMP '2025-07-10 00:00:00.000-04:00', @@ -805,16 +1020,146 @@ FROM dd.metric_scalar( ORDER BY value DESC;{{< /code-block >}}
+
+dd.metrics_timeseries(
+    query varchar [, from_timestamp timestamp, to_timestamp timestamp]
+)
+
Devuelve los datos de métricas como series temporales. La función acepta una consulta de métricas (con agrupamiento opcional) y parámetros de marca de tiempo opcionales (por defecto 1 hora) para definir el rango de tiempo. Devuelve puntos de datos a lo largo del tiempo en lugar de un solo valor agregado. + {{< code-block lang="sql" >}} +SELECT * +FROM dd.metrics_timeseries( + 'avg:system.cpu.user{*} by {service}', + TIMESTAMP '2025-07-10 00:00:00.000-04:00', + TIMESTAMP '2025-07-17 00:00:00.000-04:00' +) +ORDER BY timestamp, service;{{< /code-block >}} +
+
+dd.cloud_cost_scalar(
+    query varchar,
+    reducer varchar
+    [, from_timestamp timestamp,
+    to_timestamp timestamp]
+)
+
Devuelve datos de Cloud Cost Management como un valor escalar. La función acepta una consulta de Cloud Cost (con agrupamiento opcional), un reductor de agregación (usa sum para datos de costos; otros reductores como avg, min, y max son aceptados pero rara vez aplicables a consultas de costos), y parámetros de marca de tiempo opcionales (por defecto 1 hora) para definir el rango de tiempo. Nota: Los datos de Cloud Cost suelen tener un retraso de 24 a 48 horas, por lo que las marcas de tiempo recientes pueden no devolver resultados. + {{< code-block lang="sql" >}} +SELECT * +FROM dd.cloud_cost_scalar( + 'sum:all.cost{*} by {service}', + 'sum', + TIMESTAMP '2025-07-10 00:00:00.000-04:00', + TIMESTAMP '2025-07-17 00:00:00.000-04:00' +) +ORDER BY value DESC;{{< /code-block >}} +
+
+dd.cloud_cost_timeseries(
+    query varchar
+    [, from_timestamp timestamp,
+    to_timestamp timestamp]
+)
+
Devuelve datos de Cloud Cost Management como series temporales. La función acepta una consulta de Cloud Cost (con agrupamiento opcional) y parámetros de marca de tiempo opcionales (por defecto 1 hora) para definir el rango de tiempo. Devuelve puntos de datos de costos a lo largo del tiempo en lugar de un solo valor agregado. Nota: Los datos de costos en la nube suelen tener un retraso de 24 a 48 horas, por lo que las marcas de tiempo recientes pueden no devolver resultados. + {{< code-block lang="sql" >}} +SELECT * +FROM dd.cloud_cost_timeseries( + 'sum:all.cost{*} by {service}', + TIMESTAMP '2025-07-10 00:00:00.000-04:00', + TIMESTAMP '2025-07-17 00:00:00.000-04:00' +) +ORDER BY timestamp, service;{{< /code-block >}} +
+{{% collapse-content title="Ejemplos" level="h3" %}} +### Marcas de tiempo absolutas {#absolute-timestamps} +{{< code-block lang="sql" >}} +SELECT * +FROM dd.logs( + columns => ARRAY['timestamp','host','service','message'], + from_timestamp => TIMESTAMP '2025-07-10 00:00:00.000-04:00', + to_timestamp => TIMESTAMP '2025-07-17 00:00:00.000-04:00' +) AS ( + timestamp TIMESTAMP, + host VARCHAR, + service VARCHAR, + message VARCHAR +) +{{< /code-block >}} +### Marcas de tiempo relativas {#relative-timestamps} -## Etiquetas +{{< code-block lang="sql" >}} +SELECT * +FROM dd.logs( + columns => ARRAY['timestamp','host','service','message'], + from_timestamp => now() - INTERVAL '7 days', + to_timestamp => now() +) AS ( + timestamp TIMESTAMP, + host VARCHAR, + service VARCHAR, + message VARCHAR +) +{{< /code-block >}} + +### Parámetros opcionales {#optional-parameters} + +{{< code-block lang="sql" >}} +SELECT * +FROM dd.logs( + columns => ARRAY['timestamp','host','service','message'], + filter => 'source:java', + indexes => ARRAY['trino'], + storage => 'hot' +) AS ( + timestamp TIMESTAMP, + host VARCHAR, + service VARCHAR, + message VARCHAR +) +{{< /code-block >}} + +### Acceso a campos anidados {#nested-field-access} + +Los alias de columna no pueden contener puntos; reemplázalos con guiones bajos o cualquier otro carácter válido al definir el alias. + +{{< code-block lang="sql" >}} +SELECT timestamp, host, asset_id, view_url, data_resource_type +FROM dd.logs( + filter => 'service:mcp', + columns => ARRAY['timestamp','host','@asset.id','@view.url','@data.resource.type'] +) AS ( + timestamp TIMESTAMP, + host VARCHAR, + asset_id VARCHAR, + view_url VARCHAR, + data_resource_type VARCHAR +) +{{< /code-block >}} + +{{% /collapse-content %}} + +## Etiquetas {#tags} -DDSQL expone etiquetas como un tipo `hstore`, inspirado en PostgreSQL. Puedes acceder a los valores de determinadas claves de etiqueta utilizando el operador de flecha de PostgreSQL. Por ejemplo: +DDSQL expone etiquetas como un `hstore` tipo, que está inspirado en PostgreSQL. Puede acceder a los valores de claves de etiquetas específicas utilizando el operador de flecha de PostgreSQL. Por ejemplo: ```sql SELECT instance_type, count(instance_type) @@ -823,7 +1168,7 @@ WHERE tags->'region' = 'us-east-1' -- region is a tag, not a column GROUP BY instance_type ``` -Las etiquetas son pares clave-valor en los que cada clave puede tener cero, uno o varios valores de etiqueta correspondientes. Cuando se accede al valor de la etiqueta, se devuelve una única cadena que contiene _todos_ los valores correspondientes. Cuando los datos tienen varios valores de etiqueta para la misma clave de etiqueta, se representan como una cadena ordenada y separada por comas. Por ejemplo: +Las etiquetas son pares clave-valor donde cada clave puede tener cero, uno o múltiples valores de etiqueta correspondientes a ella. Cuando se accede, el valor de la etiqueta devuelve una única cadena, que contiene _todos_ los valores correspondientes. Cuando los datos tienen múltiples valores de etiqueta para la misma clave de etiqueta, se representan como una cadena ordenada y separada por comas. Por ejemplo: ```sql SELECT tags->'team', instance_type, architecture, COUNT(*) as instance_count @@ -833,7 +1178,7 @@ GROUP BY tags->'team', instance_type, architecture ORDER BY instance_count DESC ``` -También puedes comparar valores de etiquetas como cadenas o conjuntos completos de etiquetas: +También puede comparar los valores de las etiquetas como cadenas o conjuntos de etiquetas completos: ```sql SELECT * @@ -841,7 +1186,22 @@ FROM k8s.daemonsets da INNER JOIN k8s.deployments de ON da.tags = de.tags -- for a specific tag: da.tags->'app' = de.tags->'app' ``` -## Referencias adicionales +Además, puede extraer las claves y valores de las etiquetas en arreglos individuales de texto: + +```sql +SELECT akeys(tags), avals(tags) +FROM aws.ec2_instance +``` + +### Funciones y operadores de HSTORE {#hstore-functions-and-operators} + +| Nombre | Tipo de retorno | Descripción | +|-----------------------------------------------|---------------|--------------------------------------------------------------------------------------------------- +| tags -> 'text' | Texto | Obtiene el valor para una clave dada. Devuelve `null` si la clave de etiqueta no está presente. | +| akeys(hstore tags) | Arreglo de texto | Obtiene las claves de un HSTORE como un arreglo | +| avals(hstore tags) | Arreglo de texto | Obtiene los valores de un HSTORE como un arreglo | + +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} @@ -853,4 +1213,5 @@ ON da.tags = de.tags -- for a specific tag: da.tags->'app' = de.tags->'app' [6]: https://unicode-org.github.io/icu/userguide/strings/regexp.html#regular-expression-operators [7]: https://unicode-org.github.io/icu/userguide/strings/regexp.html#set-expressions-character-classes [8]: https://unicode-org.github.io/icu/userguide/strings/regexp.html#flag-options -[9]: https://unicode-org.github.io/icu/userguide/strings/regexp.html#find-and-replace \ No newline at end of file +[9]: https://unicode-org.github.io/icu/userguide/strings/regexp.html#find-and-replace +[10]: /es/bits_ai/mcp_server/ \ No newline at end of file diff --git a/content/es/getting_started/site/_index.md b/content/es/getting_started/site/_index.md index 73d2714f480..7a077ec6d1e 100644 --- a/content/es/getting_started/site/_index.md +++ b/content/es/getting_started/site/_index.md @@ -1,74 +1,85 @@ --- algolia: tags: - - sitio - - sitio de Datadog -description: Infórmate sobre los distintos sitios Datadog de tu región y los requisitos - de seguridad, incluidas las opciones que cumplen las normas gubernamentales. + - site + - datadog site +description: Aprende sobre los diferentes sitios de Datadog para tu región y requisitos + de seguridad, incluyendo opciones que cumplen con las normativas gubernamentales. further_reading: - link: https://learn.datadoghq.com/courses/dashboards-slos - tag: Centro de aprendizaje - text: Crea perspectivas críticas para la empresa utilizando dashboards y SLOs + tag: Centro de Aprendizaje + text: Cree Perspectivas Críticas para el Negocio Usando Tableros y SLOs - link: /agent/configuration/dual-shipping/ tag: Guía - text: Envío dual -title: Empezando con los sitios de Datadog + text: Envío Dual +title: Comenzando con los Sitios de Datadog --- +## Resumen {#overview} -## Información general +Datadog ofrece diferentes sitios en todo el mundo. Cada sitio es completamente independiente y no se pueden compartir datos entre ellos. Cada sitio le brinda beneficios (por ejemplo, regulaciones de seguridad gubernamentales) o le permite almacenar sus datos en ubicaciones específicas alrededor del mundo. -Datadog ofrece distintos sitios en todo el mundo. Cada uno es totalmente independiente del resto, y no puedes compartir datos entre ellos. Todos los sitios presentan ventajas (por ejemplo, normativas de seguridad del gobierno) o te permiten almacenar tus datos en localizaciones concretas de todo el mundo. +## Responsabilidad compartida {#shared-responsibility} -## Responsabilidad compartida - -La responsabilidad de mantener seguros los datos de los usuarios es compartida entre Datadog y los desarrolladores que utilizan los productos de Datadog. +La responsabilidad de mantener los datos de los usuarios seguros se comparte entre Datadog y los desarrolladores que utilizan los productos de Datadog. Datadog es responsable de: -- Proporcionar un producto fiable que gestione los datos de forma segura cuando se transmiten a la plataforma Datadog y se almacenan en ella. -- Garantizar que los problemas de seguridad se identifiquen de acuerdo con las políticas internas. +- Proporcionar un producto confiable que maneje los datos de manera segura cuando se transmiten y almacenan en la plataforma de Datadog. +- Asegurar que los problemas de seguridad se identifiquen de acuerdo con las políticas internas. Los desarrolladores son responsables de: -- Aprovechar los valores de configuración y las opciones de privacidad de los datos que ofrece Datadog. -- Garantizar la integridad del código en sus entornos. - -## Acceder al sitio de Datadog - -Puedes identificar en qué sitio te encuentras consultando la URL de tu sitio web de Datadog en la siguiente tabla. +- Aprovechar los valores de configuración y las opciones de privacidad de datos proporcionadas por Datadog. +- Asegurar la integridad del código dentro de sus entornos. -{{< img src="getting_started/site/site.png" alt="La URL del sitio en tu pestaña del navegador" style="width:40%" >}} +## Acceda al sitio de Datadog {#access-the-datadog-site} -| Sitio | URL del sitio | Parámetro del sitio | Localización | +| Sitio | URL del Sitio | Parámetro del Sitio | Ubicación | |---------|-----------------------------|---------------------|----------| -| US1 | `https://app.datadoghq.com` | `datadoghq.com` | EE. UU. | -| US3 | `https://us3.datadoghq.com` | `us3.datadoghq.com` | EE. UU. | -| US5 | `https://us5.datadoghq.com` | `us5.datadoghq.com` | EE. UU. | -| UE1 | `https://app.datadoghq.eu` | `datadoghq.eu` | UE (Alemania) | -| US1-FED | `https://app.ddog-gov.com` | `ddog-gov.com` | EE. UU. | +| US1 | `https://app.datadoghq.com` | `datadoghq.com` | US | +| US3 | `https://us3.datadoghq.com` | `us3.datadoghq.com` | US | +| US5 | `https://us5.datadoghq.com` | `us5.datadoghq.com` | US | +| EU1 | `https://app.datadoghq.eu` | `datadoghq.eu` | EU (Alemania) | +| US1-FED | `https://app.ddog-gov.com` | `ddog-gov.com` | US | +| US2-FED | `https://us2.ddog-gov.com` | `us2.ddog-gov.com` | US | | AP1 | `https://ap1.datadoghq.com` | `ap1.datadoghq.com` | Japón | | AP2 | `https://ap2.datadoghq.com` | `ap2.datadoghq.com` | Australia | -Para enviar datos a más de un destino a través de varios endpoints, consulta la guía [Envío doble][2]. +Si tienes un dominio personalizado, como `demo.datadoghq.com`, puedes encontrar tu sitio listado en la parte superior de la página **Mis Preferencias**. + +{{< img src="getting_started/site/site-in-preferences.png" alt="La parte superior de la página Mis Preferencias en Datadog, mostrando el nombre de la organización y la URL del sitio" style="width:80%" >}} + +Para navegar a **Mis Preferencias**, haz clic en tu avatar de perfil en la esquina inferior izquierda, luego selecciona **Mis Preferencias** del menú. + +{{< img src="getting_started/site/my-preferences-menu.png" alt="El menú de cuenta de Datadog, accesible haciendo clic en tu avatar de perfil en la navegación inferior izquierda, mostrando la opción Mis Preferencias bajo Configuraciones Personales" style="width:80%" >}} + +Para enviar datos a más de un destino a través de múltiples puntos de conexión, consulta la guía de [Envío Dual][2]. + +## Dominios SDK {#sdk-domains} + +Consulta [Puntos de conexión soportados para dominios SDK][3]. + +## Navega la documentación de Datadog por sitio {#navigate-the-datadog-documentation-by-site} -## Dominios SDK +Diferentes sitios de Datadog pueden soportar diferentes funcionalidades dependiendo de los requisitos de seguridad de la instancia. Por lo tanto, la documentación puede variar entre sitios. Puedes usar el menú desplegable de selección de sitio en el lado derecho de cualquier página en la documentación de Datadog para seleccionar el sitio de Datadog sobre el que deseas ver información. -Consulta [Endpoints compatibles con dominios de SDK][3]. +{{< img src="getting_started/site/site-selector-gs-with-tags.png" alt="El menú desplegable del selector de sitios en el lado derecho del sitio de Documentación" style="width:100%" >}} -## Navega por la documentación de Datadog por sitio. +Por ejemplo, para ver la documentación de los sitios de Datadog para el Gobierno, selecciona **US1-FED** o **US2-FED**. -Distintos sitios de Datadog admiten distintas funcionalidades según los requisitos de seguridad de la instancia. Por tanto, la documentación puede variar de un sitio a otro. Utiliza el menú desplegable del selector de sitios en el lateral derecho de cualquier página de la documentación de Datadog para seleccionar el sitio de Datadog sobre el que quieres obtener información. +## Accede a los sitios de Datadog para el Gobierno {#access-the-datadog-for-government-sites} -{{< img src="getting_started/site/site-selector-gs-with-tags.png" alt="El menú desplegable del selector de sitio a la derecha del sitio de Documentación" style="width:100%" >}} +### US1-FED {#us1-fed} -Por ejemplo, para ver la documentación del sitio Datadog for Government, selecciona **US1-FED**. +El sitio de Datadog para el Gobierno (US1-FED) es el sitio autorizado de FedRAMP Moderate de Datadog. US1-FED está destinado a permitir que las agencias y socios del gobierno de EE. UU. monitoreen sus aplicaciones e infraestructura. Para obtener información sobre los controles y marcos de seguridad y cumplimiento de US1-FED, así como sobre cómo apoya a FedRAMP, consulta la [página de Seguridad][1]. -## Acceder al sitio Datadog for Government +### US2-FED {#us2-fed} -El sitio Datadog for Government (US1-FED) es el sitio FedRAMP Moderate Authorized de Datadog. US1-FED está pensado para permitir que las agencias gubernamentales y socios de EE.UU. monitoricen sus aplicaciones e infraestructuras. Para obtener información sobre los controles y frameworks de seguridad y conformidad de US1-FED, así como sobre su compatibilidad con FedRAMP, consulta la [page (página) Seguridad][1]. +El sitio de Datadog para el Gobierno (US2-FED) está en proceso de autorización IL5. US2-FED está destinado a permitir que las agencias y socios del gobierno de EE. UU. monitoreen sus aplicaciones e infraestructura. Para más información, envía un correo electrónico a [fedramp@datadoghq.com][4]. -## Referencias adicionales +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} [1]: https://www.datadoghq.com/security/ [2]: /es/agent/configuration/dual-shipping/ -[3]: /es/real_user_monitoring/#supported-endpoints-for-sdk-domains \ No newline at end of file +[3]: /es/real_user_monitoring/#supported-endpoints-for-sdk-domains +[4]: mailto:fedramp@datadoghq.com \ No newline at end of file diff --git a/content/es/getting_started/tagging/assigning_tags.md b/content/es/getting_started/tagging/assigning_tags.md index 34b57c54494..0ca6d2740f7 100644 --- a/content/es/getting_started/tagging/assigning_tags.md +++ b/content/es/getting_started/tagging/assigning_tags.md @@ -2,39 +2,38 @@ aliases: - /es/agent/tagging - /es/tagging/assigning_tags/ -description: Descubre cómo asignar etiquetas (tags) en Datadog. +description: Aprende a asignar tags en Datadog. further_reading: - link: /getting_started/tagging/ tag: Documentación - text: Empezando con las etiquetas (tags) + text: Introducción a los tags - link: /getting_started/tagging/using_tags/ tag: Documentación - text: Descubre cómo utilizar etiquetas (tags) en Datadog. -title: Asignar etiquetas (tags) + text: Aprende a usar tags en Datadog +title: Asignación de tags --- +## Descripción general {#overview} -## Información general +El etiquetado se utiliza en todo Datadog para consultar las máquinas y métricas que monitoreas. Sin la capacidad de asignar y filtrar según tags, encontrar problemas en tu entorno y reducirlos lo suficiente para descubrir las verdaderas causas podría ser difícil. Aprende a [definir tags][1] en Datadog antes de continuar. -En Datadog, el etiquetado (tag) sirve para realizar consultas sobre las máquinas y métricas monitorizadas. Si no existiese la posibilidad de asignar y filtrar elementos mediante etiquetas (tags), resultaría difícil buscar los problemas que afectan al entorno y acotar los resultados lo suficiente como para descubrir sus causas reales. Antes de continuar, obtén más información sobre cómo [definir las etiquetas][1] en Datadog. +Los tags se pueden configurar de varias maneras diferentes: -Las etiquetas (tags) se pueden configurar de varias formas diferentes: - -- En el [archivo de configuración](#configuration-file) del Datadog Agent o en el de cualquier integración particular +- En el archivo de configuración del Agente de Datadog [o en cada archivo de configuración de integración individual](#configuration-file) - A través de la [interfaz de usuario](#ui) de Datadog - Con la [API](#api) de Datadog -- Con el [DogStatsD](#dogstatsd) +- Con [DogStatsD](#dogstatsd) {{< tabs >}} -{{% tab "Entornos no contenedorizados" %}} -En los entornos no contenedorizados, el Agent asigna automáticamente la [etiqueta (tag) del host](#host-tags) y hereda las etiquetas de las integraciones. Estas etiquetas, así como las etiquetas adicionales que puedes añadir manualmente, se configuran en el [archivo de configuración del Datadog Agent](#configuration-file). +{{% tab "Entornos no contenerizados" %}} +En entornos no contenerizados, el Agent asigna automáticamente el tag de [host](#host-tags) y hereda tags de las integraciones. Estas tags, junto con tags adicionales que puedes agregar manualmente, se configuran en el [archivo de configuración del Agent de Datadog](#configuration-file). {{% /tab %}} -{{% tab "Entornos contenedorizados" %}} -En los entornos contenedorizados, Datadog recomienda utilizar [Autodiscovery][1], puesto que permite emplear el [etiquetado (tag) de servicios unificado][2], que es el método recomendado para definir un único punto de configuración en toda la telemetría de Datadog. +{{% tab "Entornos contenerizados" %}} +En entornos contenerizados, Datadog recomienda usar [Autodiscovery][1] ya que permite [unified service tagging][2], la forma recomendada de lograr un único punto de configuración en toda tu telemetría de Datadog. -El objetivo de Autodiscovery consiste en aplicar la configuración de una integración de Datadog al efectuar un check del Agent en un contenedor determinado. Cuando se utiliza Autodiscovery, el Datadog Agent identifica automáticamente los servicios que se ejecutan en el nuevo contenedor, busca la configuración más adecuada para la monitorización e inicia la recopilación de métricas. A continuación, las etiquetas (tags) se pueden configurar desde la [plantilla de configuración][3] de Autodiscovery. +El objetivo de Autodiscovery es aplicar una configuración de integración de Datadog al ejecutar una verificación del Agent contra un contenedor dado. Al utilizar Autodiscovery, el Agent de Datadog identifica automáticamente qué servicios se están ejecutando en este nuevo contenedor, busca la configuración de seguimiento correspondiente y comienza a recopilar métricas. Los tags pueden ser configurados desde dentro de la plantilla de configuración de Autodiscovery. -Si no se utiliza Autodiscovery, el Agent asigna automáticamente la [etiqueta (tag) del host](#host-tags) y hereda las etiquetas de las integraciones, al igual que ocurre en los entornos no contenedorizados. Estas etiquetas, así como las etiquetas que se hayan añadido manualmente, se configuran en el [archivo de configuración del Datadog Agent](#configuration-file). +Si Autodiscovery no está en uso, el Agent asigna automáticamente el tag de [host](#host-tags) y hereda tags de integraciones de la misma manera que en entornos no contenerizados. Estos tags, junto con los tags añadidos manualmente, se configuran en el [archivo de configuración del Agent de Datadog](#configuration-file). [1]: /es/getting_started/agent/autodiscovery/ @@ -43,22 +42,22 @@ Si no se utiliza Autodiscovery, el Agent asigna automáticamente la [etiqueta (t {{% /tab %}} {{< /tabs >}} -## Métodos para asignar etiquetas (tags) +## Métodos para asignar tags {#methods-to-assign-tags} -### Archivo de configuración +### Archivo de configuración {#configuration-file} {{< tabs >}} -{{% tab "Agent v6 y v7" %}} +{{% tab "Agent v6 & v7" %}} -#### Localización de los archivos +#### Ubicación del archivo {#file-location} -El archivo de configuración del Agent (`datadog.yaml`) se utiliza para configurar las etiquetas (tags) de host que se aplican a todas las métricas, trazas (traces) y logs reenviados por el Datadog Agent. +El archivo de configuración del Agent (`datadog.yaml`) se utiliza para establecer tags de host que se aplican a todas las métricas, trazas y registros enviados por el Agent de Datadog. -Las etiquetas (tags) de las [integraciones][1] instaladas con el Agent se configuran con archivos YAML localizados en el directorio **conf.d** de la instalación del Agent. Para localizar los archivos de configuración, consulta la sección [Archivos de configuración del Agent][2]. +Los tags para las [integraciones][1] instaladas con el Agent se configuran con archivos YAML ubicados en el directorio **conf.d** de la instalación del Agent. Para localizar los archivos de configuración, consulte [Agent configuration files][2]. -#### Formato YAML +#### Formato YAML {#yaml-format} -En los archivos YAML, utiliza una de las listas de cadenas de la clave `tags` para asignar una lista de etiquetas (tags). En YAML, las listas se definen de dos formas diferentes, aunque funcionalmente equivalentes: +En los archivos YAML, use una lista de cadenas bajo la clave `tags` para asignar una lista de tags. En YAML, las listas se definen con dos formas diferentes pero funcionalmente equivalentes: ```yaml tags: [":", ":", ":"] @@ -73,11 +72,11 @@ tags: - ":" ``` -Aunque se recomienda asignar las etiquetas (tags) en pares de `:`, también se aceptan las etiquetas que sólo constan de claves (``). Para obtener más información, consulta [cómo se definen las etiquetas][3]. +Se recomienda asignar tags como pares `:`, pero también se aceptan tags que consisten únicamente en claves (``). Consulte [defining tags][3] para más detalles. -#### Etiquetas (tags) de host +#### Tags de host {#host-tags} -El nombre de host (clave de etiqueta (tag) `host`) lo [asigna automáticamente][4] el Datadog Agent. Para personalizarlo, utiliza el archivo de configuración del Agent `datadog.yaml`: +El nombre de host (clave de etiqueta `host`) es [asignado automáticamente][4] por el Agent de Datadog. Para personalizar el nombre de host, utiliza el archivo de configuración del Agent, `datadog.yaml`: ```yaml # Set the hostname (default: auto-detected) @@ -86,11 +85,11 @@ El nombre de host (clave de etiqueta (tag) `host`) lo [asigna automáticamente][ hostname: mymachine.mydomain ``` -##### Cambiar el nombre de host +##### Cambiando el nombre de host {#changing-the-hostname} -* El nombre de host anterior permanecerá en la interfaz de usuario durante dos horas, pero no reflejará las nuevas métricas. -* Con la API, se podrá consultar cualquier dato procedente de hosts que tengan el nombre de host anterior. -* Para representar las métricas en un gráfico con los nombres de host nuevo y antiguo, utiliza [cálculos aritméticos entre dos métricas][5]. +* El antiguo nombre de host permanece en la interfaz de usuario durante dos horas, pero no muestra nuevas métricas. +* Cualquier dato de hosts con el antiguo nombre de host puede ser consultado con la API. +* Para graficar métricas con el antiguo y nuevo nombre de host en un solo gráfico, utiliza [aritmética entre dos métricas][5]. [1]: /es/getting_started/integrations/ @@ -101,25 +100,25 @@ hostname: mymachine.mydomain {{% /tab %}} {{% tab "Agent v5" %}} -#### Localización de los archivos +#### Ubicación del archivo {#file-location-1} -El archivo de configuración del Agent (`datadog.conf`) se utiliza para configurar las etiquetas (tags) de host que se aplican a todas las métricas, trazas y logs reenviados por el Datadog Agent. +El archivo de configuración del Agent (`datadog.conf`) se utiliza para establecer tags de host que se aplican a todas las métricas, trazas y registros enviados por el Agent de Datadog. -Las etiquetas (tags) de las [integraciones][1] instaladas con el Agent se configuran con archivos YAML localizados en el directorio **conf.d** de la instalación del Agent. Para localizar los archivos de configuración, consulta la sección [Archivos de configuración del Agent][2]. +Los tags para las [integraciones][1] instaladas con el Agent se configuran con archivos YAML ubicados en el directorio **conf.d** de la instalación del Agent. Para localizar los archivos de configuración, consulte [Agent configuration files][2]. -#### Formato YAML +#### Formato YAML {#yaml-format-1} -En los archivos YAML, utiliza una de las listas de cadenas de la clave `tags` para asignar una lista de etiquetas (tags). En YAML, las listas se definen de dos formas diferentes, aunque funcionalmente equivalentes: +En los archivos YAML, use una lista de cadenas bajo la clave `tags` para asignar una lista de tags. En YAML, las listas se definen con dos formas diferentes pero funcionalmente equivalentes: ```yaml tags: :, :, : ``` -Aunque se recomienda asignar las etiquetas (tags) en pares de `:`, también se aceptan las etiquetas que sólo constan de claves (``). Para obtener más información, consulta [cómo se definen las etiquetas][3]. +Se recomienda asignar tags como pares `:`, pero también se aceptan tags que consisten únicamente en claves (``). Consulte [defining tags][3] para más detalles. -#### Etiquetas (tags) de host +#### Tags de host {#host-tags-1} -El nombre de host (clave de etiqueta (tag) `host`) lo [asigna automáticamente][4] el Datadog Agent. Para personalizarlo, utiliza el archivo de configuración del Agent `datadog.conf`: +El nombre de host (clave de etiqueta `host`) es [asignado automáticamente][4] por el Agent de Datadog. Para personalizar el nombre de host, utiliza el archivo de configuración del Agent, `datadog.conf`: ```yaml # Set the hostname (default: auto-detected) @@ -128,11 +127,11 @@ El nombre de host (clave de etiqueta (tag) `host`) lo [asigna automáticamente][ hostname: mymachine.mydomain ``` -##### Cambiar el nombre de host +##### Cambiando el nombre de host {#changing-the-hostname-1} -* El nombre de host anterior permanecerá en la interfaz de usuario durante dos horas, pero no reflejará las nuevas métricas. -* Con la API, se podrá consultar cualquier dato procedente de hosts que tengan el nombre de host anterior. -* Para representar las métricas en un gráfico con los nombres de host nuevo y antiguo, utiliza [cálculos aritméticos entre dos métricas][5]. +* El antiguo nombre de host permanece en la interfaz de usuario durante 2 horas, pero no muestra nuevas métricas. +* Cualquier dato de hosts con el antiguo nombre de host puede ser consultado con la API. +* Para graficar métricas con el antiguo y nuevo nombre de host en un solo gráfico, utiliza [aritmética entre dos métricas][5]. [1]: /es/getting_started/integrations/ @@ -143,33 +142,35 @@ hostname: mymachine.mydomain {{% /tab %}} {{< /tabs >}} -#### Herencia de integraciones +#### Herencia de integración {#integration-inheritance} + +El método más eficiente para asignar tags es confiar en la herencia de integración. Los tags que asignes a tus AWS instances, recetas de Chef y otras integraciones son heredados automáticamente por los hosts y métricas que envías a Datadog. -El método más eficaz para asignar etiquetas (tags) consiste en basarse en la herencia de integraciones. Las etiquetas que asignes a instancias de AWS, recetas de Chef y otras integraciones las heredan automáticamente los hosts y las métricas que envías a Datadog. +Para entornos contenedorizados, se recomienda seguir la documentación de [unified service tagging][2] para lograr un único punto de configuración en toda tu telemetría de Datadog. -En los entornos contenedorizados, se recomienda seguir la documentación del [etiquetado (tag) de servicios unificado][2] para definir un único punto de configuración en toda la telemetría de Datadog. +##### Integraciones en la nube {#cloud-integrations} -##### Integraciones en la nube +[Las integraciones en la nube][3] se basan en autenticación. Datadog recomienda utilizar el mosaico principal de integración en la nube (AWS, Azure, Google Cloud, etc.) y [instalar el Agente][4] donde sea posible. **Nota**: Si decides usar solo el Agent, algunos tags de integración no están disponibles. -Las [integraciones en la nube][3] se basan en la autenticación. Datadog recomienda utilizar el cuadro de las principales integraciones en la nube (AWS, Azure, Google Cloud, etc.) e [instalar el Agent][4] siempre que sea posible. **Nota**: Si decides utilizar sólo el Agent, algunas etiquetas (tags) de integracones no estarán disponibles. +##### Web integrations {#web-integrations} -##### Integraciones web +[Web integrations][5] se basan en autenticación. Las métricas se recopilan mediante llamadas a la API. **Nota**: los `CamelCase` tags se convierten en guiones bajos por Datadog, por ejemplo `TestTag` --> `test_tag`. -Las [integraciones web][5] se basan en la autenticación. Las métricas se recopilan con llamadas de la API. **Nota**: Datadog convierte las etiquetas (tags) `CamelCase` en guiones bajos; por ejemplo, `TestTag` --> `test_tag`. +#### Variables de entorno {#environment-variables} -#### Variables de entorno +Después de instalar el Datadog Agent en entornos contenerizados, puedes establecer tus tags de host utilizando la variable de entorno `DD_TAGS` en el archivo de configuración principal de tu Agent. Si especificas múltiples tags, sepáralos con un espacio. -Después de instalar el Datadog Agent contenedorizado, puedes configurar tus etiquetas de host utilizando la variable de entorno `DD_TAGS` en tu archivo de configuración principal del Agent. Si especificas varias etiquetas, separa cada una de ellas con un espacio. +**Nota**: La variable de entorno `DD_TAGS` utiliza espacios en blanco para separar tags. Por ejemplo, `DD_TAGS="key1:val1 key2:val2"` establece dos tags. Un valor como `DD_TAGS="test:this is a test"` produce cuatro tags separados (`test:this`, `is`, `a`, `test`) porque cada token separado por espacios se trata como su propio tag. Para incluir espacios en los valores de los tags, establece los tags a través de la configuración YAML o mediante anotaciones de integración, en su lugar. Esos métodos convierten los espacios en blanco en guiones bajos (por ejemplo, `test:this is a test` se convierte en `test:this_is_a_test`). -Datadog recopila automáticamente las etiquetas (tags) habituales de [Docker, Kubernetes, ECS, Swarm, Mesos, Nomad y Rancher][6]. Para extraer aún más etiquetas, utiliza las siguientes opciones: +Datadog recopila automáticamente tags comunes de [Docker, Kubernetes, ECS, Swarm, Mesos, Nomad y Rancher][6]. Para extraer aún más tags, utiliza las siguientes opciones: | Variable de entorno | Descripción | |------------------------------------|---------------------------------------------------------------------------------------------------------| -| `DD_CONTAINER_LABELS_AS_TAGS` | Extrae etiquetas (labels) del contenedor. Este entorno es equivalente al antiguo entorno `DD_DOCKER_LABELS_AS_TAGS`. | -| `DD_CONTAINER_ENV_AS_TAGS` | Extrae variables de entorno del contenedor. Este entorno es equivalente al antiguo entorno `DD_DOCKER_ENV_AS_TAGS`. | -| `DD_KUBERNETES_POD_LABELS_AS_TAGS` | Extracción de etiquetas (labels) del pod | -| `DD_CHECKS_TAG_CARDINALITY` | Añadir etiquetas (tags) a las métricas de los checks (bajas, orquestador, altas) | -| `DD_DOGSTATSD_TAG_CARDINALITY` | Añadir etiquetas (tags) a las métricas personalizadas (bajas, orquestador, altas) | +| `DD_CONTAINER_LABELS_AS_TAGS` | Extraer etiquetas de contenedor. Este env es equivalente al antiguo `DD_DOCKER_LABELS_AS_TAGS` env. | +| `DD_CONTAINER_ENV_AS_TAGS` | Extraer variables de entorno del contenedor. Este env es equivalente al antiguo `DD_DOCKER_ENV_AS_TAGS` env. | +| `DD_KUBERNETES_POD_LABELS_AS_TAGS` | Extraer etiquetas de pod. | +| `DD_CHECKS_TAG_CARDINALITY` | Agregar etiquetas a métricas de verificación (bajo, orquestador, alto). | +| `DD_DOGSTATSD_TAG_CARDINALITY` | Agregar etiquetas a métricas personalizadas (bajo, orquestador, alto). | **Ejemplos:** @@ -178,33 +179,33 @@ DD_KUBERNETES_POD_LABELS_AS_TAGS='{"app":"kube_app","release":"helm_release"}' DD_CONTAINER_LABELS_AS_TAGS='{"com.docker.compose.service":"service_name"}' ``` -Con `DD_KUBERNETES_POD_LABELS_AS_TAGS`, puedes utilizar comodines con este formato: +Al usar `DD_KUBERNETES_POD_LABELS_AS_TAGS`, puedes usar comodines en el formato: ```text {"foo": "bar_%%label%%"} ``` -Por ejemplo: `{"app*": "kube_%%label%%"}` cambia el nombre de la etiqueta (tag) a `kube_application` en el caso de la etiqueta (label) `application`. Asimismo, `{"*": "kube_%%label%%"}` añade todas las etiquetas (labels) del pod como si fuesen etiquetas (tags) con el prefijo `kube_`. +Por ejemplo, `{"app*": "kube_%%label%%"}` se resuelve al nombre de etiqueta `kube_application` para la etiqueta `application`. Además, `{"*": "kube_%%label%%"}` agrega todas las etiquetas de pod como etiquetas con el prefijo `kube_`. -Cuando utilices la variable `DD_CONTAINER_LABELS_AS_TAGS` en un archivo `docker-compose.yaml` de Docker Swarm, elimina los apóstrofes. Por ejemplo: +Al usar la variable `DD_CONTAINER_LABELS_AS_TAGS` dentro de un archivo de Docker Swarm `docker-compose.yaml`, elimina los apóstrofes, por ejemplo: ```yaml - DD_CONTAINER_LABELS_AS_TAGS={"com.docker.compose.service":"service_name"} ``` -Al añadir etiquetas (labels) a contenedores Docker, es importante tener en cuenta la posición de la palabra clave `labels:` dentro del archivo `docker-compose.yaml`. Para evitar problemas, sigue la documentación del [etiquetado (tag) de servicios unificado de Docker][2]. +Al agregar etiquetas a los contenedores de Docker, la colocación de la palabra clave `labels:` dentro del archivo `docker-compose.yaml` es importante. Para evitar problemas, sigue la documentación de [Docker unified service tagging][2]. -Si es necesario aplicar etiquetas (labels) al contenedor fuera de esta configuración, coloca la palabra clave `labels:` **dentro** de la sección `services:` y **no** dentro de `deploy:`. Coloca la palabra clave `labels:` dentro de la sección `deploy:` sólo en caso de que sea necesario etiquetar el servicio. De no hacerlo, el Datadog Agent no tendrá ninguna etiqueta que extraer de los contenedores. +Si el contenedor necesita ser etiquetado fuera de esta configuración, coloca la palabra clave `labels:` **dentro** de la sección `services:`, **no** dentro de la sección `deploy:`. Coloca la palabra clave `labels:` dentro de la sección `deploy:` solo cuando el servicio necesita ser etiquetado. El Agente de Datadog no tiene etiquetas para extraer de los contenedores sin esta colocación. -A continuación podrás ver un archivo `docker-compose.yaml` funcional de muestra. En el ejemplo, las etiquetas (labels) de la sección `myapplication:`, `my.custom.label.project` y `my.custom.label.version`, presentan valores únicos. Al utilizar la variable de entorno `DD_CONTAINER_LABELS_AS_TAGS` de la sección `datadog:`, se extraen las etiquetas (labels) y se generan esas etiquetas (tags) para el contenedor `myapplication`: +A continuación se muestra un archivo de muestra `docker-compose.yaml` que muestra esta colocación de etiquetas. En el ejemplo a continuación, las etiquetas en la sección `myapplication:`, `my.custom.label.project` y `my.custom.label.version` tienen valores únicos. Usar la variable de entorno `DD_CONTAINER_LABELS_AS_TAGS` en la sección `datadog:` extrae las etiquetas y produce estas etiquetas para el contenedor `myapplication`: -Dentro del contenedor `myapplication` se encuentran las etiquetas (labels)`my.custom.label.project` y `my.custom.label.version` +Dentro del contenedor `myapplication` las etiquetas son: `my.custom.label.project` y `my.custom.label.version` -Cuando el Agent extrae las etiquetas (labels) del contenedor, las etiquetas (tags) son: +Después de que el Agente extrae las etiquetas del contenedor, las etiquetas son: `projecttag:projectA` `versiontag:1` -**docker-compose.yaml de muestra:** +**Ejemplo de docker-compose.yaml:** ```yaml services: @@ -217,7 +218,7 @@ services: - DD_API_KEY= "" - DD_CONTAINER_LABELS_AS_TAGS={"my.custom.label.project":"projecttag","my.custom.label.version":"versiontag"} - DD_TAGS="key1:value1 key2:value2 key3:value3" - image: 'gcr.io/datadoghq/agent:latest' + image: 'registry.datadoghq.com/agent:latest' deploy: restart_policy: condition: on-failure @@ -235,114 +236,116 @@ services: replicas: 1 ``` -Puedes definir las variables en tu `datadog.yaml` personalizado o configurarlas como mapas JSON en estas variables de entorno. La clave de los mapas es el nombre de la fuente (`label/envvar`), mientras que el valor de los mapas es el nombre de la etiqueta (tag) de Datadog. +Define las variables en tu `datadog.yaml` personalizado, o configúralas como mapas JSON en estas variables de entorno. La clave del mapa es el nombre de la fuente (`label/envvar`), y el valor del mapa es el nombre de la etiqueta de Datadog. -##### Cardinalidad de las etiquetas (tags) +##### Cardinalidad de etiquetas {#tags-cardinality} -Hay dos variables de entorno que establecen la cardinalidad de etiqueta: `DD_CHECKS_TAG_CARDINALITY` y `DD_DOGSTATSD_TAG_CARDINALITY`. Dado que DogStatsD tiene un precio diferente, el ajuste de cardinalidad de la etiqueta DogStatsD se separa para dar la oportunidad de una configuración más detallada. Por lo demás, estas variables funcionan de la misma manera: pueden tener los valores `low`, `orchestrator` o `high`. Ambas tienen por defecto `low`, que extrae etiquetas de nivel de clúster de Kubernetes. +Hay dos variables de entorno que establecen la cardinalidad de etiquetas: `DD_CHECKS_TAG_CARDINALITY` y `DD_DOGSTATSD_TAG_CARDINALITY`. Debido a que DogStatsD tiene un precio diferente, la configuración de cardinalidad de etiquetas de DogStatsD se separa para proporcionar la oportunidad de una configuración más detallada. De lo contrario, estas variables funcionan de la misma manera: pueden tener valores `low`, `orchestrator` o `high`. Ambas tienen como valor predeterminado `low`, que incluye etiquetas a nivel de clúster de Kubernetes. -Los diferentes ajustes de cardinalidad objetivo: -* `low`: etiquetas de nivel de clúster de Kubernetes, como `kube_namespace`. -* `orchestrator`: etiquetas de nivel de pod, como `pod_name`. -* `high`: etiquetas de nivel de contenedor, como `container_id`. +Las diferentes configuraciones de cardinalidad apuntan a: +* `low`: etiquetas a nivel de clúster de Kubernetes, como `kube_namespace`. +* `orchestrator`: etiquetas a nivel de pod, como `pod_name`. +* `high`: etiquetas a nivel de contenedor, como `container_id`. -Dependiendo de la cardinalidad, existe un conjunto diferente de etiquetas (tags) predefinidas para [Kubernetes y OpenShift][7], y para [Docker, Rancher, y Mesos][8]. En el caso de ECS y Fargate, al definir la variable como `orchestrator`, se añade la etiqueta `task_arn`. +Dependiendo de la cardinalidad, hay un conjunto diferente de etiquetas listas para usar para [Kubernetes y OpenShift][7], y para [Docker, Rancher y Mesos][8]. Para ECS y Fargate, establecer la variable en `orchestrator` agrega la etiqueta `task_arn`. **Notas**: -- El envío de etiquetas de contenedor para las métricas de DogStatsD puede crear más métricas (una por contenedor en lugar de una por host). Esto puede afectar a la facturación de tus métricas personalizadas. -- En las métricas, las marcas de tiempo se redondean al segundo más próximo. Si algún punto tiene la misma marca de tiempo, el último punto sobrescribe a los anteriores. Una cardinalidad mayor puede ayudar a evitar este problema. +- Enviar etiquetas de contenedor para métricas de DogStatsD puede crear más métricas (una por contenedor en lugar de una por host). Esto puede afectar la facturación de sus métricas personalizadas. +- En métricas, las marcas de tiempo se redondean al segundo más cercano. Si hay puntos con la misma marca de tiempo, el punto más reciente sobrescribe los anteriores. Establecer una mayor cardinalidad puede ayudar a prevenir este problema. -#### Trazas +#### Trazas {#traces} -El rastreador de Datadog se puede configurar con variables de entorno, propiedades del sistema o mediante la configuración en código. La documentación de la [configuración del rastreo en Datadog][9] contiene información sobre las opciones de etiquetado (tag) y la configuración de cada rastreador. También puedes seguir la documentación del [etiquetado de servicios unificado][2] en caso de que desees configurar tu rastreador con esta función. +El SDK de Datadog se puede configurar con variables de entorno, propiedades del sistema o a través de la configuración en el código. La documentación de [configuración de trazado de Datadog][9] tiene información sobre opciones de etiquetado y configuración para cada SDK. También puede seguir la documentación de [etiquetado de servicio unificado][2] para configurar su SDK para el etiquetado de servicio unificado. -Independientemente del rastreador que se utilice, los metadatos del tramo (span) deben seguir una estructura en árbol de tipos. Cada nodo del árbol está dividido por un `.` y es de tipo único. +Independientemente del SDK utilizado, los metadatos de span deben respetar una estructura de árbol tipada. Cada nodo del árbol se divide por un `.` y es de un solo tipo. + +Por ejemplo, un nodo no puede ser tanto un objeto (con sub-nodos) como una cadena: -Por ejemplo, un nodo no puede ser un objeto (con subnodos) y una cadena: ```json { "key": "value", "key.subkey": "value_2" } ``` -Los metadatos del tramo anterior no son válidos, ya que el valor de `key` no puede hacer referencia a una cadena (`"value"`) y también a un subárbol (`{"subkey": "value_2"}`). -### Interfaz de usuario +Los metadatos de span anteriores son inválidos ya que el valor de `key` no puede referirse a una cadena (`"value"`) y también a un subárbol (`{"subkey": "value_2"}`). + +### INTERFAZ DE USUARIO {#ui} {{< tabs >}} -{{% tab "Mapa de host" %}} +{{% tab "Mapa de servidores" %}} -Asigna etiquetas (tags) de host en la interfaz de usuario utilizando la [página del mapa de host][1]. Haz clic en cualquier hexágono (host) para mostrar la superposición de hosts en la parte inferior de la página. A continuación, en la sección *Usuario*, haz clic en el botón **Add Tags** (Añadir etiquetas). Introduce las etiquetas en forma de lista separada por comas y haz clic en **Save Tags** (Guardar etiquetas). Los cambios realizados en las etiquetas de host en la interfaz de usuario pueden tardar hasta cinco minutos en surtir efecto. +Asigne etiquetas de servidor en la interfaz de usuario utilizando la página [Mapa de servidores][1]. Haga clic en cualquier hexágono (servidor) para mostrar la superposición del servidor en la parte inferior de la página. Luego, en la sección *Usuario*, haga clic en el botón **Agregar etiquetas**. Ingrese las etiquetas como una lista separada por comas, luego haga clic en **Guardar etiquetas**. Los cambios realizados en las etiquetas de servidor en la interfaz de usuario pueden tardar hasta cinco minutos en aplicarse. -{{< img src="tagging/assigning_tags/host_add_tags.png" alt="Mapa de host con la información del host abierta, donde se resalta el botón Añadir etiquetas (tags)" style="width:80%;">}} +{{< img src="tagging/assigning_tags/host_add_tags.png" alt="Mapa de servidores con detalles de un servidor abierto resaltando el botón Agregar Etiquetas" style="width:80%;">}} [1]: /es/infrastructure/hostmap/ {{% /tab %}} -{{% tab "Lista de infraestructuras" %}} +{{% tab "Lista de infraestructura" %}} -Asigna etiquetas (tags) de host en la interfaz de usuario utilizando la [página de la lista de infraestructuras][1]. Haz clic en un host cualquiera para mostrar la superposición de hosts en el lado derecho de la página. A continuación, en la sección *Usuario*, haz clic en el botón **Edit Tags** (Editar etiquetas). Introduce una lista de etiquetas separadas por comas entre sí y, luego, haz clic en **Save Tags** (Guardar etiquetas). Los cambios realizados en las etiquetas de host de la interfaz de usuario pueden tardar hasta cinco minutos en surtir efecto. Una vez que hayas añadido las etiquetas, asegúrate de que sean visibles en la interfaz de usuario antes de intentar añadir más. +Asigne etiquetas de servidor en la interfaz de usuario utilizando la [página de Lista de infraestructura][1]. Haga clic en cualquier servidor para mostrar la superposición del servidor a la derecha de la página. Luego, en la sección *Usuario*, haga clic en el botón **Agregar etiquetas**. Ingrese las etiquetas como una lista separada por comas, luego haga clic en **Guardar etiquetas**. Los cambios realizados en las etiquetas de host en la interfaz de usuario pueden tardar hasta cinco minutos en aplicarse. Después de agregar etiquetas, asegúrese de que sean visibles en la interfaz de usuario antes de intentar agregar más etiquetas. -{{< img src="tagging/assigning_tags/infrastructure_add_tags.png" alt="Lista de infraestructuras con un panel de información de las infraestructuras abierto, donde se resalta el botón Añadir etiquetas (tags)" style="width:80%;">}} +{{< img src="tagging/assigning_tags/infrastructure_add_tags.png" alt="Lista de infraestructura con un panel de detalles de infraestructura abierto resaltando el botón Agregar Etiquetas" style="width:80%;">}} [1]: /es/infrastructure/ {{% /tab %}} {{% tab "Monitores" %}} -En la página [Gestionar monitores][1], selecciona la casilla de verificación junto a cada monitor para añadir etiquetas (tags) (selecciona uno o varios monitores). Haz clic en el botón **Edit Tags** (Editar etiquetas). Introduce una etiqueta o selecciona una utilizada anteriormente. A continuación, haz clic en **Add Tag `tag:name`** (Añadir etiqueta [nombre]) o en **Apply Changes** (Aplicar cambios). Si ya se han añadido etiquetas, se pueden asignar varias a la vez utilizando sus casillas de verificación correspondientes. Para obtener más información, consulta la [documentación de gestión de monitores][2]. +Desde la página de [Administrar Monitores][1], seleccione la casilla de verificación junto a cada monitor para agregar etiquetas (seleccione uno o varios monitores). Haga clic en el botón **Editar Etiquetas**. Ingrese una etiqueta o seleccione una utilizada anteriormente. Luego haga clic en **Agregar Etiqueta `tag:name`** o **Aplicar Cambios**. Si se agregaron etiquetas anteriormente, se pueden asignar múltiples etiquetas a la vez utilizando las casillas de verificación de etiquetas. Para más información, consulte la [documentación de Administrar Monitores][2]. -Al crear un monitor, asigna etiquetas (tags) de monitor en el paso 4, *Cuéntanos qué ocurre* o *Notifica a tu equipo*: +Al crear un monitor, asigne etiquetas de monitor en el paso 4 *Diga lo que está sucediendo* o *Notifique a su Equipo*: -{{< img src="monitors/notificaciones/notifications_add_required_tags.png" alt="Vista de la configuración de una etiqueta (tag) de política. Debajo de 'Etiquetas de política', hay tres ejemplos de etiquetas: cost_center, product_id y env, junto al menú desplegable 'Seleccionar valor'." style="width:80%;" >}} +{{< img src="monitors/notifications/notifications_add_required_tags.png" alt="Vista de la configuración de etiquetas de política. Debajo de 'Etiquetas de política' hay tres etiquetas de ejemplo, cost_center, product_id y env, junto a un menú desplegable 'Seleccionar valor'." style="width:80%;" >}} [1]: https://app.datadoghq.com/monitors/manage [2]: /es/monitors/manage/ {{% /tab %}} {{% tab "Métricas de distribución" %}} -En [Métricas de distribución][1], crea agregaciones de percentiles aplicando una lista de permisos de hasta diez etiquetas (tags) a una métrica. De este modo, crearás una cronología por cada combinación de valores de etiquetas potencialmente consultable. Para obtener más información sobre cómo hacer un recuento de métricas personalizadas y cronologías emitidas a partir de métricas de distribución, consulta [Métricas personalizadas][2]. +Cree agregaciones percentiles dentro de [Métricas de Distribución][1] aplicando una lista permitida de hasta diez etiquetas a una métrica. Esto crea una serie temporal para cada combinación potencialmente consultable de valores de etiquetas. Para más información sobre cómo contar métricas personalizadas y series temporales emitidas desde métricas de distribución, consulte [Métricas personalizadas][2]. -**Aplica hasta diez etiquetas (tags). No se aceptan etiquetas restrictivas**: +**Aplique hasta diez etiquetas. No se aceptan etiquetas excluyentes**: -{{< img src="tagging/assigning_tags/global_metrics_selection.png" alt="Crear etiquetas (tags) de monitor" style="width:80%;">}} +{{< img src="tagging/assigning_tags/global_metrics_selection.png" alt="Crear Etiquetas de Monitor" style="width:80%;">}} [1]: /es/metrics/distributions/ [2]: /es/metrics/custom_metrics/ {{% /tab %}} {{% tab "Integraciones" %}} -El cuadro de integración de [AWS][1] te permite asignar etiquetas adicionales a todas las métricas a nivel de cuenta, así como a los logs enviados a través de [activadores automáticos de suscripción][2]. Utiliza una lista de etiquetas separadas por comas de la forma `:`. +El mosaico de integración de [AWS][1] le permite asignar etiquetas adicionales a todas las métricas a nivel de cuenta, así como a los registros enviados a través de [disparadores de suscripción automática][2]. Utilice una lista de etiquetas separadas por comas en la forma `:`. -{{< img src="tagging/assigning_tags/integrationtags.png" alt="Etiquetas (tags) AWS" style="width:80%;">}} +{{< img src="tagging/assigning_tags/integrationtags.png" alt="Etiquetas de AWS" style="width:80%;">}} [1]: /es/integrations/amazon_web_services/ [2]: /es/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/#automatically-set-up-triggers {{% /tab %}} -{{% tab "Objetivos de nivel de servicio (SLOs)" %}} +{{% tab "Objetivos de Nivel de Servicio" %}} -Cuando crees un SLO, asigna las etiquetas (tags) en el paso 3, *Añadir nombre y etiquetas*: +Al crear un SLO, asigne etiquetas en el paso 3, **Agregar nombre y etiquetas**: -{{< img src="tagging/assigning_tags/slo_individual_tags.png" alt="Crear etiquetas (tags) de SLOs" style="width:80%;">}} +{{< img src="tagging/assigning_tags/slo_individual_tags.png" alt="Crear Etiquetas de SLO" style="width:80%;">}} {{% /tab %}} {{< /tabs >}} -### API +### API {#api} {{< tabs >}} {{% tab "Asignación" %}} -Las etiquetas (tags) pueden asignarse de diferentes formas con la [API de Datadog][1]. Consulta la siguiente lista para encontrar los enlaces a esas secciones: +Las etiquetas se pueden asignar de varias maneras con la [API de Datadog][1]. Consulte la lista a continuación para enlaces a esas secciones: -* [Publicar la ejecución de un check][1] +* [Publicar una ejecución de verificación][1] * [Publicar un evento][2] * [Integración de AWS][3] -* [Publicar un punto en una cronología][4] -* [Crear][5] o [editar][6] un monitor -* [Añadir][7] o [actualizar][8] etiquetas (tags) de host +* [Publicar punto de serie temporal][4] +* [Crear][5] o [Editar][6] un monitor +* [Agregar][7] o [Actualizar][8] etiquetas de servidor * [Enviar trazas][9] -* [Crear][10] o [actualizar][11] un objetivo de nivel de servicio (SLO) +* [Crear][10] o [Actualizar][11] un Objetivo de Nivel de Servicio [1]: /es/api/v1/service-checks/#submit-a-service-check [2]: /es/api/v1/events/#post-an-event @@ -358,27 +361,27 @@ Las etiquetas (tags) pueden asignarse de diferentes formas con la [API de Datado {{% /tab %}} {{% tab "Ejemplo" %}} -El etiquetado (tag) de Datadog constituye una manera muy eficaz de agrupar tus métricas. Por poner un ejemplo rápido, imagínate que quieres obtener la suma de las siguientes métricas procedentes de tu sitio web (example.com): +Etiquetar dentro de Datadog es una forma poderosa de reunir tus métricas. Para un ejemplo rápido, quizás estés buscando una suma de las siguientes métricas provenientes de tu sitio web (example.com): ```text Web server 1: api.metric('page.views', [(1317652676, 100), ...], host="example_prod_1") Web server 2: api.metric('page.views', [(1317652676, 500), ...], host="example_prod_2") ``` -Datadog recomienda añadir la etiqueta (tag) `domain:example.com` en vez del nombre de host (la API de Datadog determina el nombre de host automáticamente): +Datadog recomienda agregar la etiqueta `domain:example.com` y omitir el servidor (la API de Datadog determina el servidor automáticamente): ```text Web server 1: api.metric('page.views', [(1317652676, 100), ...], tags=['domain:example.com']) Web server 2: api.metric('page.views', [(1317652676, 500), ...], tags=['domain:example.com']) ``` -Con la etiqueta (tag) `domain:example.com`, las visitas de la página se pueden sumar en todos los hosts: +Con la etiqueta `domain:example.com`, las vistas de página pueden sumarse entre servidores: ```text sum:page.views{domain:example.com} ``` -Para obtener un desglose por host, utiliza lo siguiente: +Para obtener un desglose por servidor, usa: ```text sum:page.views{domain:example.com} by {host} @@ -387,26 +390,26 @@ sum:page.views{domain:example.com} by {host} {{% /tab %}} {{< /tabs >}} -### DogStatsD +### DogStatsD {#dogstatsd} -Añade etiquetas (tags) a cualquier métrica, evento o check de servicio que envíes a [DogStatsD][10]. Por ejemplo, puedes comparar el rendimiento de dos algoritmos etiquetando una métrica de temporizador con la versión del algoritmo: +Agrega etiquetas a cualquier métrica, evento o verificación de servicio que envíes a [DogStatsD][10]. Por ejemplo, compara el rendimiento de dos algoritmos etiquetando una métrica de temporizador con la versión del algoritmo: ```python @statsd.timed('algorithm.run_time', tags=['algorithm:one']) def algorithm_one(): - # Haz algo elaborado aquí ... + # Do fancy things here ... @statsd.timed('algorithm.run_time', tags=['algorithm:two']) def algorithm_two(): - # Haz algo elaborado (tal vez más rápido) aquí ... + # Do fancy things (maybe faster?) here ... ``` -**Nota**: El etiquetado es una [extensión específica de Datadog][11] en StatsD. +**Nota**: Etiquetar es una [extensión específica de Datadog][11] a StatsD. -Es necesario prestar especial atención cuando se asigna la etiqueta `host` a las métricas de DogStatsD. Para obtener más información sobre la clave de la etiqueta de host, consulta la documentación [Envío de métricas: DogStatsD][12]. +Se requiere una consideración especial al asignar la etiqueta `host` a las métricas de DogStatsD. Para más información sobre la clave de etiqueta del servidor, consulta la documentación de [Envío de Métricas: DogStatsD][12]. -## Referencias adicionales +## Lectura Adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} @@ -419,6 +422,6 @@ Es necesario prestar especial atención cuando se asigna la etiqueta `host` a la [7]: /es/agent/kubernetes/tag/?tab=containerizedagent#out-of-the-box-tags [8]: /es/agent/docker/tag/?tab=containerizedagent#out-of-the-box-tagging [9]: /es/tracing/setup/ -[10]: /es/developers/dogstatsd/ -[11]: /es/developers/community/libraries/ +[10]: /es/extend/dogstatsd/ +[11]: /es/extend/community/libraries/ [12]: /es/metrics/dogstatsd_metrics_submission/#host-tag \ No newline at end of file diff --git a/content/es/ide_plugins/vscode/_index.md b/content/es/ide_plugins/vscode/_index.md new file mode 100644 index 00000000000..17f38149bed --- /dev/null +++ b/content/es/ide_plugins/vscode/_index.md @@ -0,0 +1,220 @@ +--- +aliases: +- /es/developers/ide_integrations/vscode/ +- /es/developers/ide_plugins/vscode/ +description: Integra la telemetría y perspectivas de Datadog en tu código fuente en + VS Code y otros editores de código. +further_reading: +- link: /continuous_testing/ + tag: Documentación + text: Aprende sobre Continuous Testing +- link: /integrations/guide/source-code-integration/ + tag: Documentación + text: Aprende sobre la Integración de Código Fuente +- link: /bits_ai/mcp_server/ + tag: Documentación + text: Aprende sobre el Servidor del Datadog Model Context Protocol (MCP) +- link: https://www.datadoghq.com/blog/datadog-ide-plugins/ + tag: Blog + text: Reduce el cambio de contexto mientras solucionas problemas con los complementos + de IDE de Datadog +- link: https://www.datadoghq.com/blog/exception-replay-datadog/ + tag: Blog + text: Simplifica la depuración en producción con Repetición de Excepciones de Datadog +- link: https://www.datadoghq.com/blog/datadog-cursor-extension/ + tag: Blog + text: Depura problemas de producción en vivo con la extensión Cursor de Datadog +is_beta: true +title: Extensión de Datadog para VS Code y Cursor +--- + + +{{% site-region region="gov,gov2" %}} +
+ La extensión de Datadog para Visual Studio Code no es compatible con tu sitio de Datadog seleccionado ({{< region-param key="dd_site_name" >}}). +
+{{% /site-region %}} + +## Resumen {#overview} + +La extensión de Datadog para VS Code y Cursor lleva Datadog a tu editor de código para acelerar tu desarrollo. + +{{< img src="/ide_plugins/vscode/datadog-vscode-3.png" alt="Extensión de Datadog para VS Code y Cursor" style="width:100%;" >}} + +La extensión incluye estas características: + +- [**Servidor del Model Context Protocol (MCP)**](?tab=cursor#installation): Conecta el agente de IA del editor a la telemetría de producción, herramientas y contexto de Datadog. + +- [**Registros**](#logs): Mide los volúmenes de registro y busca registros desde tu código. + +- [**Perspectivas de Código**](#code-insights): Mantente informado sobre errores en tiempo de ejecución, vulnerabilidades y pruebas inestables sin salir del código. + +- [**Ver en IDE**](#view-in-ide): Salta directamente desde las referencias de código en Datadog a tus archivos fuente. + +- [**Code Security**](#code-security): Detecta y corrige problemas de seguridad antes de que realices el commit, y escribe reglas personalizadas. + +- [**Repetición de Excepciones**](#exception-replay): Depura tu código de producción. + +- [**Depurador en Vivo**](#live-debugger): Agrega puntos de registro no intrusivos a los servicios en ejecución para capturar datos en tiempo de ejecución sin necesidad de redeplegar. + +- [**Fix in Chat**](?tab=cursor#fix-in-chat): Corrige errores de código, vulnerabilidades y pruebas inestables con sugerencias y explicaciones impulsadas por IA. + +
A menos que se indique lo contrario, todas las características de la extensión están disponibles tanto para VS Code como para cualquier otro IDE basado en forks de VS Code, como Cursor.
+ +## Requisitos {#requirements} + +- **Cuenta de Datadog**: La mayoría de las características requieren una cuenta de Datadog. + + - ¿Nuevo en Datadog? [Aprende más][3] sobre las herramientas de monitoreo y seguridad de Datadog y regístrate para una prueba gratuita. + - Si tu organización utiliza un [subdominio personalizado][18] como `myorg.datadoghq.com`, debes indicarlo utilizando la configuración `datadog.connection.oauth.setup.domain` en el IDE. + +- **Git**: La extensión funciona mejor cuando Git está habilitado en el IDE. Asegúrate de que esto esté habilitado verificando la configuración `git.enabled`. + +## Instalación {#installation} + +Los pasos de instalación pueden variar para otros editores basados en VS Code. + +{{< tabs >}} +{{% tab "VS Code" %}} +Instala la extensión directamente en el IDE o desde la web: + +- **En VS Code**: Abre la vista de Extensiones (`Shift` + `Cmd/Ctrl` + `X`), busca `datadog` y selecciona la extensión oficial de Datadog. + +- **Desde la web**: Instala desde la página de la extensión en [Visual Studio Marketplace][1]. + +### Configuración del Servidor MCP{#mcp-server-setup} + +La extensión incluye acceso al [Servidor del Model Context Protocol (MCP)][3]. Asegúrate de que el Servidor del Model Context Protocol (MCP) esté habilitado para mejorar las capacidades de IA del editor con tu entorno específico de Datadog: + +1. Abre el panel de chat, selecciona el modo agente y haz clic en el botón **Configurar Herramientas**. + {{< img src="bits_ai/mcp_server/vscode_configure_tools_button.png" alt="Botón Configurar Herramientas en VS Code" style="width:60%;" >}} + +1. Encuentra el servidor y las herramientas de Datadog en la lista y marca las casillas para habilitarlas (expande o actualiza si es necesario). + +[1]: https://marketplace.visualstudio.com/items?itemName=Datadog.datadog-vscode +[3]: /es/bits_ai/mcp_server/ + +{{% /tab %}} + +{{% tab "Cursor" %}} +Instala la extensión directamente en el IDE o desde la web: + +- **En Cursor**: Abre la vista de Extensiones (`Shift` + `Cmd/Ctrl` + `X`), busca `datadog` y selecciona la extensión oficial de Datadog. + +- **Desde la web**: Descarga el archivo VSIX desde el [Registro de Open VSX][2] e instálalo con `Extensions: Install from VSIX` en la paleta de comandos (`Shift` + `Cmd/Ctrl` + `P`). + +### Configuración del Servidor del Model Context Protocol (MCP) de Datadog {#datadog-mcp-server-setup} + +Instala el Plugin de Datadog para habilitar el [Servidor del Model Context Protocol (MCP)][3]. Puedes instalar el plugin desde el [Mercado de Cursor][4] o en **Configuración de Cursor** > **Plugins**. + +[2]: https://open-vsx.org/extension/datadog/datadog-vscode +[3]: /es/bits_ai/mcp_server/setup/?tab=cursor +[4]: https://cursor.com/marketplace/datadog + +{{% /tab %}} +{{< /tabs >}} + +## Características principales {#core-features} + +### Registros {#logs} + +Usa **Registros** para MIDE el volumen de registros generados por una línea de registro en tu código. La extensión añade anotaciones sobre tu código para resaltar los patrones de registro que coinciden con los registros en Datadog. + +{{< img src="/ide_plugins/vscode/logs_navigation.mp4" alt="Vista previa de la navegación de registros" style="width:100%" video=true >}} + +Descubre más en la sub-sección de [Registros][20]. + +### Perspectivas de Código {#code-insights} + +**Code insights** te mantienen informado con información generada por Datadog, relevante para tu base de código, incluyendo errores en tiempo de ejecución, vulnerabilidades y pruebas inestables. + +{{< img src="/ide_plugins/vscode/code-insights-2.png" alt="La vista de perspectivas de código." style="width:100%;" >}} + +Descubre más en la sub-sección de [Perspectivas de Código][21]. + +### Code Security {#code-security} + +Las características de [**Code Security**][19] analizan tu código localmente contra reglas predefinidas para detectar y corregir problemas de seguridad y vulnerabilidades antes de que realices cambios. + +{{< img src="/ide_plugins/vscode/static_analysis.mp4" alt="Vista previa del Análisis Estático" style="width:100%" video=true >}} + +Descubre más en la sub-sección de [Code Security][19]. + +### Repetición de Excepciones {#exception-replay} + +**La Repetición de Excepciones** te permite inspeccionar los marcos de la traza de pila de cualquier insight de Error Tracking y obtener información sobre los valores de las variables del código que se ejecuta en producción. + +{{< img src="/ide_plugins/vscode/exception_replay.mp4" alt="Vista previa de la Repetición de Excepciones" style="width:100%" video=true >}} + +Descubre más en la sub-sección de [Repetición de Excepciones][22]. + +### Depurador en Vivo {#live-debugger} + +El **Depurador en Vivo** te permite agregar puntos de registro—puntos de interrupción no rompientes y de expiración automática— a tus servicios en ejecución para capturar datos en tiempo de ejecución para depuración sin necesidad de volver a desplegar tu código. + +{{< img src="/ide_plugins/vscode/live_debugger_overview.mp4" alt="Resumen de la actividad del Depurador en Vivo de Datadog" style="width:100%" video=true >}} + +Descubre más en la sub-sección de [Live Debugger][23]. + +## Otras características {#other-features} + +### Ver en IDE {#view-in-ide} + +
Esta función solo está disponible para VS Code y Cursor. Otros forks de VS Code no son compatibles.
+ +La característica **Ver en VS Code** o **Ver en Cursor** proporciona un enlace desde Datadog directamente a tus archivos fuente. Busca el botón junto a los marcos en las trazas de pila que se muestran en la interfaz de usuario (por ejemplo, en [Error Tracking][5]): + +{{< img src="/ide_plugins/vscode/view-in-vscode-2.png" alt="Una traza de pila en Datadog que muestra el botón Ver en VS Code" style="width:100%;" >}} + +También puedes usar esta función para abrir tus archivos fuente desde un insight (como un error de Error Tracking): + +{{< img src="/ide_plugins/vscode/view-in-vscode-error.png" alt="Un problema de Error Tracking en Datadog que muestra el botón Ver en VS Code" style="width:100%;" >}} + +
Para usar esta función, primero configura la integración del código fuente para tu servicio.
+ +### Fix in Chat {#fix-in-chat} + +El botón **Fix in Chat** aparece en varios contextos cuando la extensión identifica errores o problemas. Haz clic en el botón para generar un aviso de chat de IA que resume el problema, incluye detalles y contexto relevantes, y proporciona instrucciones específicas para el agente. + +{{< img src="/ide_plugins/vscode/cursor_fix_in_chat.mp4" alt="Usando Fix in Chat para solucionar un error de código en línea" style="width:100%" video=true >}} + +## Datos y telemetría {#data-and-telemetry} + +Datadog recopila cierta información sobre tu uso de este IDE, incluyendo cómo interactúas con él, si se producen errores mientras lo usas, qué causó esos errores y los identificadores de usuario, de acuerdo con la [Datadog Privacy Policy][13] y el [VS Code extension EULA de Datadog][12]. Estos datos se utilizan para ayudar a mejorar el rendimiento y las características de la extensión, incluyendo transiciones hacia y desde la extensión y la página de inicio de sesión de Datadog aplicable para acceder a los Servicios. + +Si no deseas enviar estos datos a [Datadog][3], puedes desactivarlo en cualquier momento en la configuración de la extensión: `Datadog > Telemetry > Setup > Enable Telemetry` y seleccionar `disabled`. + +
La extensión de Datadog también respeta la configuración de telemetría de VS Code.
+ +## Ayuda y comentarios {#help-and-feedback} + +Para compartir tus comentarios, envía un correo electrónico a [team-ide-integration@datadoghq.com][14] o crea un issue en el [repositorio público][15] de la extensión. + +Revisa la sección de [issues][16] para descubrir problemas conocidos. + +¿Usas [Cursor][17] o algún otro fork de VS Code? Encuentra la extensión en el [Open VSX Registry][2]. + +## Licencia {#license} + +Lee cuidadosamente el [Acuerdo de Licencia de Usuario Final][12] antes de descargar o usar esta extensión. + +## Lectura adicional {#further-reading} + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://marketplace.visualstudio.com/items?itemName=Datadog.datadog-vscode +[2]: https://open-vsx.org/extension/datadog/datadog-vscode +[3]: https://www.datadoghq.com/ +[5]: /es/tracing/error_tracking/ +[12]: https://www.datadoghq.com/legal/eula/ +[13]: https://www.datadoghq.com/legal/privacy/ +[14]: mailto:team-ide-integration@datadoghq.com +[15]: https://github.com/DataDog/datadog-for-vscode +[16]: https://github.com/DataDog/datadog-for-vscode/issues?q=is%3Aissue+label%3A%22known+issue%22 +[17]: https://www.cursor.com/ +[18]: /es/account_management/multi_organization/#custom-sub-domains +[19]: /es/ide_plugins/vscode/code_security/ +[20]: /es/ide_plugins/vscode/logs/ +[21]: /es/ide_plugins/vscode/code_insights/ +[22]: /es/ide_plugins/vscode/exception_replay/ +[23]: /es/ide_plugins/vscode/live_debugger/ \ No newline at end of file diff --git a/content/es/infrastructure/process/_index.md b/content/es/infrastructure/process/_index.md index 38700f9428f..0f1d97ef0c0 100644 --- a/content/es/infrastructure/process/_index.md +++ b/content/es/infrastructure/process/_index.md @@ -5,53 +5,51 @@ aliases: further_reading: - link: https://www.datadoghq.com/blog/live-process-monitoring/ tag: Blog - text: Monitorizar los procesos con Datadog + text: Monitorea tus procesos con Datadog - link: /infrastructure/process/generate_process_metrics/ tag: Documentación - text: Aumentar la retención de datos de procesos con métricas + text: Aumenta la retención de datos de procesos con métricas - link: /infrastructure/livecontainers tag: Documentación - text: Obtener visibilidad en tiempo real de todos los contenedores de tu entorno + text: Obtén visibilidad en tiempo real de todos los contenedores en tu entorno - link: https://www.datadoghq.com/blog/monitor-third-party-software-with-live-processes/ tag: Blog - text: Correlacionar el rendimiento del software y el consumo de recursos con las - vistas guardadas + text: Correlaciona el rendimiento del software y el consumo de recursos con vistas + guardadas - link: https://www.datadoghq.com/blog/process-level-data/ tag: Blog - text: Solucionar problemas con mayor rapidez con datos de red y aplicación a nivel - de proceso + text: Resuelve problemas más rápido con datos de aplicaciones y redes a nivel de + proceso - link: https://www.datadoghq.com/blog/watchdog-live-processes/ tag: Blog - text: Solucionar problemas de anomalías en el rendimiento de la carga de trabajo - con Watchdog Insights para Live Processes + text: Soluciona anomalías en el rendimiento de la carga de trabajo con Watchdog + Insights for Live Processes. title: Live Processes --- - -
-Live Processes se encuentra incluido en el plan Enterprise. Para todos los demás planes, ponte en contacto con la persona encargada de tu cuenta o escribe a success@datadoghq.com a fin de solicitar esta función. +Live Processes and Live Process Monitoring están incluidos en el plan Enterprise. Para todos los demás planes, contacta a tu representante de cuenta o success@datadoghq.com para solicitar esta función.
-## Introducción +## Introducción {#introduction} -Live Processes de Datadog te brinda visibilidad en tiempo real de los procesos que se ejecutan en tu infraestructura. Utiliza Live Processes para: +Live Processes de Datadog te brindan visibilidad en tiempo real de los procesos que se ejecutan en tu infraestructura. Utiliza Live Processes para: * Ver todos tus procesos en ejecución en un solo lugar -* Desglosar el consumo de recursos en tus hosts y contenedores a nivel de proceso -* Consultar procesos que se ejecutan en un host específico, en una zona específica o que ejecutan una carga de trabajo específica -* Monitorizar el rendimiento del software interno y de terceros que ejecutas con métricas del sistema con una granularidad de dos segundos -* Añadir contexto a tus dashboards y notebooks +* Desglosa el consumo de recursos en tus servidores y contenedores a nivel de proceso. +* Consulta los procesos que se ejecutan en un servidor específico, en una zona específica, o que ejecutan una carga de trabajo específica. +* Monitorea el rendimiento del software interno y de terceros que utilizas mediante métricas del sistema con una granularidad de dos segundos +* Agrega contexto a tus tableros y notebooks -{{< img src="infrastructure/process/live_processes_main.png" alt="Información general sobre Live Processes" >}} +{{< img src="infrastructure/process/live_processes_main.png" alt="Resumen de Procesos en Vivo" >}} -## Instalación +## Instalación {#installation} -Si utilizas el Agent 5, sigue este [proceso de instalación específico][1]. Si utilizas el Agent 6 o 7, [consulta las instrucciones a continuación][2]. +Si estás utilizando Agent 5, sigue este [proceso de instalación específico][1]. Si estás utilizando Agent 6 o 7, [consulta las instrucciones a continuación][2]. {{< tabs >}} {{% tab "Linux/Windows" %}} -Una vez instalado el Datadog Agent, habilita la recopilación de Live Processes al editar el [archivo de configuración principal del Agent][1] al establecer el siguiente parámetro en `true`: +Una vez que se haya instalado el Datadog Agent, habilita la recopilación de Live Processes editando el [Agent main configuration file][1] y estableciendo el siguiente parámetro en `true`: ```yaml process_config: @@ -59,11 +57,11 @@ process_config: enabled: true ``` -Además, algunas opciones de configuración se pueden establecer como variables de entorno. +Además, algunas opciones de configuración pueden establecerse como variables de entorno. -**Nota**: Las opciones establecidas como variables de entorno anulan las configuraciones definidas en el archivo de configuración. +**Nota**: Las opciones establecidas como variables de entorno anulan los ajustes definidos en el archivo de configuración. -Una vez que se haya completado la configuración, [reinicia el Agent][2]. +Después de completar la configuración, [reinicia el Agent][2]. [1]: /es/agent/configuration/agent-configuration-files/ @@ -71,7 +69,7 @@ Una vez que se haya completado la configuración, [reinicia el Agent][2]. {{% /tab %}} {{% tab "Docker" %}} -Sigue las instrucciones para el [Docker Agent][1], al introducir los siguientes atributos, además de cualquier otro ajuste personalizado que resulte apropiado: +Sigue las instrucciones para el [Docker Agent][1], pasando los siguientes atributos, además de cualquier otra configuración personalizada según sea apropiado: ```text -v /etc/passwd:/etc/passwd:ro @@ -80,8 +78,8 @@ Sigue las instrucciones para el [Docker Agent][1], al introducir los siguientes **Nota**: -- Para recopilar información sobre el contenedor en la instalación estándar, el usuario `dd-agent` debe tener permisos a fin de acceder a `docker.sock`. -- La ejecución del Agent como contenedor aún te permite recopilar procesos del host. +- Para recopilar información del contenedor en la instalación estándar, el usuario `dd-agent` debe tener permisos para acceder a `docker.sock`. +- Ejecutar el Agent como un contenedor aún te permite recopilar procesos del servidor. [1]: /es/agent/docker/#run-the-docker-agent @@ -98,13 +96,13 @@ datadog: processCollection: true ``` -Luego, actualiza tu Helm chart: +Luego, actualiza tu gráfico de Helm: ```shell helm upgrade -f datadog-values.yaml datadog/datadog ``` -**Nota**: La ejecución del Agent como contenedor aún te permite recopilar procesos del host. +Ejecutar el Agent como un contenedor aún permite recopilar procesos del servidor. [1]: https://github.com/DataDog/helm-charts/blob/master/charts/datadog/values.yaml {{% /tab %}} @@ -129,12 +127,12 @@ spec: {{% k8s-operator-redeploy %}} -**Nota**: La ejecución del Agent como contenedor aún te permite recopilar procesos del host. +Ejecutar el Agent como un contenedor aún permite recopilar procesos del servidor. {{% /tab %}} {{% tab "Kubernetes (Manual)" %}} -En el manifiesto `datadog-agent.yaml` utilizado para crear el DaemonSet, añade las siguientes variables de entorno, montaje de volumen y volumen: +En el manifiesto `datadog-agent.yaml` utilizado para crear el DaemonSet, agrega las siguientes variables ambientales, montaje de volumen y volumen: ```yaml env: @@ -150,20 +148,20 @@ En el manifiesto `datadog-agent.yaml` utilizado para crear el DaemonSet, añade name: passwd ``` -Consulta las páginas de información de la [Instalación de DaemonSet][1] estándar y el [Docker Agent][2] para obtener documentación adicional. +Consulta la instalación estándar del [DaemonSet][1] y las páginas de información del [Docker Agent][2] para más documentación. -**Nota**: La ejecución del Agent como contenedor aún te permite recopilar procesos del host. +Ejecutar el Agent como un contenedor aún permite recopilar procesos del servidor. [1]: /es/containers/guide/kubernetes_daemonset [2]: /es/agent/docker/#run-the-docker-agent {{% /tab %}} {{% tab "AWS ECS Fargate" %}} -
Puedes ver tus procesos de ECS Fargate en Datadog. Para ver su relación con los contenedores de ECS Fargate, utiliza la versión del Datadog Agent 7.50.0 o una posterior.
+
Puedes ver tus procesos de ECS Fargate en Datadog. Para ver su relación con los contenedores de ECS Fargate, utiliza el Datadog Agent v7.50.0 o posterior.
-Para recopilar procesos, el Datadog Agent se debe ejecutar como un contenedor en la tarea. +Para recopilar procesos, el Datadog Agent debe estar ejecutándose como un contenedor dentro de la tarea. -Para habilitar la monitorización de procesos en ECS Fargate, establece la variable de entorno `DD_PROCESS_AGENT_PROCESS_COLLECTION_ENABLED` en `true` en la definición de contenedor del Datadog Agent en la definición de tarea. +Para habilitar la monitorización de procesos en ECS Fargate, establece la variable de entorno `DD_PROCESS_AGENT_PROCESS_COLLECTION_ENABLED` en `true` en la definición del contenedor del Datadog Agent dentro de la definición de la tarea. Por ejemplo: @@ -189,17 +187,17 @@ Por ejemplo: } ``` -Para comenzar a recopilar información sobre el proceso en ECS Fargate, añade el [parámetro `PidMode`][3] a la definición de tarea y establécela en `task` de la siguiente manera: +Para comenzar a recopilar información de procesos en ECS Fargate, agrega el [`pidMode` parámetro][3] a la Definición de Tarea y configúralo en `task` de la siguiente manera: ```text "pidMode": "task" ``` -Una vez que se haya habilitado, utiliza la faceta de contenedores de `AWS Fargate` en la [página de Live Processes][1] para filtrar procesos por ECS, o ingresa `fargate:ecs` en la consulta de búsqueda. +Una vez habilitado, utiliza la faceta `AWS Fargate` Containers en la [Live Processes page][1] para filtrar los procesos que se ejecutan en ECS, o ingresa `fargate:ecs` en la consulta de búsqueda. {{< img src="infrastructure/process/fargate_ecs.png" alt="Procesos en AWS Fargate" >}} -Para obtener más información sobre la instalación del Datadog Agent con AWS ECS Fargate, consulta la [documentación de la integración de ECS Fargate][2]. +Para más información sobre la instalación del Datadog Agent con AWS ECS Fargate, consulta la [documentación de integración de ECS Fargate][2]. [1]: https://app.datadoghq.com/process [2]: /es/integrations/ecs_fargate/#installation @@ -208,17 +206,17 @@ Para obtener más información sobre la instalación del Datadog Agent con AWS E {{% /tab %}} {{< /tabs >}} -### Estadísticas de E/S +### Estadísticas de I/O {#io-stats} -El sondeo del sistema de Datadog, que se ejecuta con privilegios elevados, puede recopilar estadísticas de E/S y archivos abiertos. Para habilitar el módulo de proceso del sondeo del sistema, utiliza la siguiente configuración: +Las estadísticas de I/O y archivos abiertos pueden ser recopiladas por el sistema de sondeo de Datadog, que se ejecuta con privilegios elevados. Para recopilar estas estadísticas, habilita el módulo de procesos del sondeo del sistema: -1. Copia la configuración de ejemplo del sondeo del sistema: +1. Copia la configuración de ejemplo del sistema-probe: ```shell sudo -u dd-agent install -m 0640 /etc/datadog-agent/system-probe.yaml.example /etc/datadog-agent/system-probe.yaml ``` -2. Edita `/etc/datadog-agent/system-probe.yaml` para habilitar el módulo de proceso: +2. Edita `/etc/datadog-agent/system-probe.yaml` para habilitar el módulo de procesos: ```yaml system_probe_config: @@ -226,29 +224,72 @@ El sondeo del sistema de Datadog, que se ejecuta con privilegios elevados, puede enabled: true ``` -5. [Reinicia el Agent][12]: +5. [Reiniciar el Agente][12]: ```shell sudo systemctl restart datadog-agent ``` - **Nota**: Si el comando `systemctl` no se encuentra disponible en tu sistema, ejecuta el siguiente comando en su lugar: `sudo service datadog-agent restart` + **Nota**: Si el comando `systemctl` no está disponible en tu sistema, ejecuta el siguiente comando en su lugar: `sudo service datadog-agent restart` + + +### Huella optimizada para la recopilación de procesos {#optimized-process-collection-footprint} +En Linux, la huella general del Datadog Agent se reduce al ejecutar la recopilación de contenedores y procesos en el Datadog Agent principal (en lugar del Process Agent separado). En la versión v7.65.0+ del Datadog Agent, esto está habilitado por defecto. **Nota**: el Process Agent sigue siendo necesario para [Cloud Network Monitoring][14]. + +El estado del Agent para esta función se lista en la sección `Process Component`, por ejemplo: + +```text +================= +Process Component +================= + + + Enabled Checks: [process rtprocess] + System Probe Process Module Status: Not running + Process Language Detection Enabled: False + + ================= + Process Endpoints + ================= + https://process.datadoghq.com. - API Key ending with: + - ***** + + ========= + Collector + ========= + Last collection time: 2026-01-14 10:04:49 + Docker socket: /var/run/docker.sock + Number of processes: 48 + Number of containers: 0 + Process Queue length: 0 + RTProcess Queue length: 0 + Connections Queue length: 0 + Event Queue length: 0 + Pod Queue length: 0 + Process Bytes enqueued: 0 + RTProcess Bytes enqueued: 0 + Connections Bytes enqueued: 0 + Event Bytes enqueued: 0 + Pod Bytes enqueued: 0 + Drop Check Payloads: [] + Number of submission errors: 0 +``` -### Limpieza de argumentos de proceso +### Limpieza de argumentos de proceso {#process-arguments-scrubbing} -Para ocultar datos confidenciales en la página de Live Processes, el Agent limpia los argumentos confidenciales de la línea de comandos del proceso. Esta función se encuentra habilitada de manera predeterminada y cualquier argumento de proceso que coincida con una de las siguientes palabras tiene su valor oculto. +Para ocultar datos sensibles en la página de Live Processes, el Agent elimina argumentos sensibles de la línea de comandos del proceso. Esta función está habilitada por defecto y cualquier argumento de proceso que coincida con una de las siguientes palabras tiene su valor oculto. ```text "password", "passwd", "mysql_pwd", "access_token", "auth_token", "api_key", "apikey", "secret", "credentials", "stripetoken" ``` -**Nota**: La coincidencia **no distingue entre mayúsculas y minúsculas**. +**Nota**: La coincidencia es **insensible a mayúsculas**. {{< tabs >}} {{% tab "Linux/Windows" %}} -Define tu propia lista para fusionarla con la predeterminada, con el campo `custom_sensitive_words` en el archivo `datadog.yaml` en la sección `process_config`. Utiliza comodines (`*`) para definir tu propio contexto coincidente. Sin embargo, no se admite un comodín único (`'*'`) como una palabra confidencial. +Define tu propia lista para ser fusionada con la predeterminada, utilizando el campo `custom_sensitive_words` en el archivo `datadog.yaml` bajo la sección `process_config`. Usa comodines (`*`) para definir tu propio alcance de coincidencia. Sin embargo, un solo comodín (`'*'`) no es compatible como una palabra sensible. ```yaml process_config: @@ -256,15 +297,15 @@ process_config: custom_sensitive_words: ['personal_key', '*token', 'sql*', '*pass*d*'] ``` -**Nota**: Las palabras en `custom_sensitive_words` solo deben tener caracteres alfanuméricos, guiones bajos o comodines (`'*'`). No se admiten palabras confidenciales que solo contengan comodines. +**Nota**: Las palabras en `custom_sensitive_words` deben contener solo caracteres alfanuméricos, guiones bajos o comodines (`'*'`). Una palabra sensible que contenga solo comodines no es compatible. -En la siguiente imagen se muestra un proceso en la página de Live Processes cuyos argumentos se han ocultado con la configuración anterior. +La siguiente imagen muestra un proceso en la página de Live Processes cuyos argumentos han sido ocultados utilizando la configuración anterior. {{< img src="infrastructure/process/process_arg_scrubbing.png" alt="Limpieza de argumentos de proceso" style="width:100%;">}} -Establece `scrub_args` en `false` para deshabilitar por completo la limpieza de argumentos de proceso. +Establezca `scrub_args` en `false` para deshabilitar completamente la limpieza de argumentos del proceso. -También puedes limpiar **todos** los argumentos de los procesos al habilitar la marca `strip_proc_arguments` en tu archivo de configuración `datadog.yaml`: +También puede limpiar **todos** los argumentos de los procesos habilitando la `strip_proc_arguments` bandera en su `datadog.yaml` archivo de configuración: ```yaml process_config: @@ -275,7 +316,7 @@ process_config: {{% tab "Helm" %}} -Puedes utilizar el Helm chart para definir tu propia lista, que se fusiona con la predeterminada. Añade las variables de entorno `DD_SCRUB_ARGS` y `DD_CUSTOM_SENSITIVE_WORDS` a tu archivo `datadog-values.yaml` y actualiza tu Datadog Helm chart: +Puede usar el Helm chart para definir su propia lista, que se fusiona con la predeterminada. Agregue las variables de entorno `DD_SCRUB_ARGS` y `DD_CUSTOM_SENSITIVE_WORDS` a su `datadog-values.yaml` archivo, y actualice su Datadog Helm chart: ```yaml datadog: @@ -294,11 +335,11 @@ datadog: ``` -Utiliza comodines (`*`) para definir tu propio contexto coincidente. Sin embargo, no se admite un solo comodín (`'*'`) como palabra confidencial. +Utilice comodines (`*`) para definir su propio alcance de coincidencia. Sin embargo, un solo comodín (`'*'`) no es compatible como una palabra sensible. -Establece `DD_SCRUB_ARGS` en `false` para deshabilitar por completo la limpieza de argumentos de proceso. +Establezca `DD_SCRUB_ARGS` en `false` para deshabilitar completamente la limpieza de argumentos del proceso. -De manera alternativa, puedes eliminar **todos** los argumentos de los procesos al habilitar la variable `DD_STRIP_PROCESS_ARGS` en tu archivo `datadog-values.yaml`: +Alternativamente, puede limpiar **todos** los argumentos de los procesos habilitando la `DD_STRIP_PROCESS_ARGS` variable en su `datadog-values.yaml` archivo: ```yaml datadog: @@ -318,153 +359,164 @@ agents: {{< /tabs >}} -## Consultas +## Consultas {#queries} -### Procesos de contexto +### Definir el alcance de procesos {#scoping-processes} -Los procesos son, por naturaleza, objetos de cardinalidad extremadamente alta. Para refinar tu contexto y ver procesos relevantes, puedes utilizar filtros de texto y etiquetas. +Los procesos son, por naturaleza, objetos de cardinalidad extremadamente alta. Para refinar tu alcance y ver procesos relevantes, puedes usar filtros de texto y etiquetas. -#### Filtros de texto +#### Filtros de texto {#text-filters} -Cuando ingresas una cadena de texto en la barra de búsqueda, la búsqueda de cadenas difusas se utiliza para consultar procesos que contienen esa cadena de texto en sus líneas de comando o rutas. Ingresa una cadena de dos o más caracteres para ver los resultados. A continuación se muestra el entorno de demostración de Datadog, filtrado con la cadena `postgres /9.`. +Cuando ingresa una cadena de texto en la barra de búsqueda, se utiliza la búsqueda de cadenas difusas para consultar procesos que contengan esa cadena de texto en sus líneas de comando o rutas. Ingrese una cadena de dos o más caracteres para ver resultados. A continuación se muestra el entorno de demostración de Datadog, filtrado con la cadena `postgres /9.`. -**Nota**: `/9.` ha coincidido en la ruta del comando, y `postgres` coincide con el propio comando. +**Nota**: `/9.` ha coincidido en la ruta del comando, y `postgres` coincide con el comando en sí. {{< img src="infrastructure/process/postgres.png" alt="Postgres" style="width:80%;">}} -Para combinar varias búsquedas de cadenas en una consulta compleja, utiliza cualquiera de los siguientes operadores booleanos: +Para combinar múltiples búsquedas de cadenas en una consulta compleja, use cualquiera de los siguientes operadores booleanos: `AND` -: **Intersección**: ambos términos están en los eventos seleccionados (si no se añade nada, se toma AND de manera predeterminada)
**Ejemplo**: `java AND elasticsearch` +: **Intersección**: ambos términos están en los eventos seleccionados (si no se agrega nada, se toma AND por defecto)
**Ejemplo**: `java AND elasticsearch` `OR` -: **Unión**: cualquiera de los términos se encuentra en los eventos seleccionados
**Ejemplo**: `java OR python` +: **Unión**: cualquiera de los términos está contenido en los eventos seleccionados
**Ejemplo**: `java OR python` `NOT` / `!` -: **Exclusión**: el siguiente término NO está en el evento. Puedes utilizar la palabra `NOT` o el carácter `!` para realizar la misma operación
**Ejemplo**: `java NOT elasticsearch` o `java !elasticsearch` +: **Exclusión**: el siguiente término NO está en el evento. Puede usar la palabra `NOT` o el carácter `!` para realizar la misma operación
**Ejemplo**: `java NOT elasticsearch` o `java !elasticsearch` -Utiliza paréntesis para agrupar operadores. Por ejemplo, `(NOT (elasticsearch OR kafka) java) OR python`. +Utilice paréntesis para agrupar operadores juntos. Por ejemplo, `(NOT (elasticsearch OR kafka) java) OR python` . -#### Filtros de etiquetas +#### Filtros de etiquetas {#tag-filters} -También puedes filtrar los procesos mediante las [etiquetas][3] de Datadog, como `host`, `pod`, `user` y `service`. Ingresa filtros de etiquetas directamente en la barra de búsqueda o selecciónalos en el panel de facetas en la izquierda de la página. +También puede filtrar sus procesos utilizando etiquetas de Datadog [tags][3], como `host`, `pod`, `user` y `service`. Introduzca filtros de etiquetas directamente en la barra de búsqueda, o selecciónelos en el panel de facetas a la izquierda de la página. -Datadog genera de manera automática una etiqueta `command`, para que puedas filtrar por: +Datadog genera automáticamente una etiqueta `command`, para que pueda filtrar por: - Software de terceros, por ejemplo: `command:mongod`, `command:nginx` -- Software de gestión de contenedores, por ejemplo: `command:docker`, `command:kubelet`) -- Cargas de trabajo habituales, por ejemplo: `command:ssh`, `command:CRON`) +- Software de gestión de contenedores, por ejemplo: `command:docker`, `command:kubelet` +- Cargas de trabajo comunes, por ejemplo: `command:ssh`, `command:CRON` -### Agregación de procesos +#### Etiquetas de entorno en contenedores {#containerized-environment-tags} -El [etiquetado][3] mejora la navegación. Además de todas las etiquetas existentes a nivel de host, los procesos se encuentran etiquetados por `user`. - -Asimismo, los procesos en contenedores de ECS también se encuentran etiquetados por: +Además, los procesos en contenedores ECS también están etiquetados por: - `task_name` - `task_version` - `ecs_cluster` -Los procesos en los contenedores de Kubernetes se encuentran etiquetados por: +Los procesos en contenedores de Kubernetes están etiquetados por: - `pod_name` -- `kube_pod_ip` - `kube_service` - `kube_namespace` - `kube_replica_set` - `kube_daemon_set` - `kube_job` - `kube_deployment` -- `Kube_cluster` +- `kube_cluster_name` + +Si tienes la configuración para [unified service tagging][4] en su lugar, `env`, `service` y `version` se recogen automáticamente. +Tener estas etiquetas disponibles le permite vincular APM, registros, métricas y datos de procesos. +**Nota**: Esta configuración se aplica solo a entornos en contenedores. + +#### Reglas para crear etiquetas personalizadas {#rules-to-create-custom-tags} +
+Requiere el Process Tags Read y Process Tag Write permisos de rol de Datadog
+
+ +Puede crear definiciones de reglas para agregar etiquetas manuales a los procesos basadas en la línea de comandos. + +1. En la pestaña **Administrar Etiquetas de Proceso**, selecciona el botón _Nueva Regla de Etiqueta de Proceso_ +2. Selecciona un proceso para usar como referencia +3. Define los criterios de parseo y coincidencia para tu etiqueta. +4. Si la validación pasa, crea una nueva regla -Si se ha configurado el [etiquetado de servicios unificado][4], `env`, `service` y `version` se seleccionan de manera automática. -Contar con estas etiquetas te permite vincular APM, logs, métricas y datos de proceso. -**Nota**: Esta configuración solo se aplica a entornos contenedorizados. +Después de que se crea una regla, las etiquetas están disponibles para todos los valores de la línea de comandos del proceso que coinciden con los criterios de la regla. Estas etiquetas están disponibles en la búsqueda y se pueden usar en la definición de [Live Process Monitors][6] y [Custom Metrics][13]. -## Diagrama de dispersión +## Gráfico de dispersión {#scatter-plot} -Utiliza la analítica del diagrama de dispersión para comparar dos métricas entre sí a fin de comprender mejor el rendimiento de tus contenedores. +Utiliza el análisis de gráfico de dispersión para comparar dos métricas entre sí con el fin de comprender mejor el rendimiento de tus contenedores. -Para acceder a la analítica del diagrama de dispersión [en la página de Procesos][5], haz clic en el botón _Show Summary graph_ (Mostrar gráfica de resumen) y selecciona la pestaña «Scatter Plot» (Diagrama de dispersión): +Para acceder al análisis de gráfico de dispersión [en la página de Procesos][5], haz clic en el botón _Mostrar gráfico de resumen_ y luego selecciona la pestaña "Gráfico de Dispersión": -{{< img src="infrastructure/process/scatterplot_selection.png" alt="Selección de diagrama de dispersión" style="width:60%;">}} +{{< img src="infrastructure/process/scatterplot_selection.png" alt="Selección de gráfico de dispersión" style="width:60%;">}} -De manera predeterminada, la gráfica se agrupa por la clave de etiqueta `command`. El tamaño de cada punto representa la cantidad de procesos en ese grupo y al hacer clic en un punto se muestran los pids y contenedores individuales que contribuyen al grupo. +Por defecto, el gráfico agrupa por la clave de etiqueta `command`. El tamaño de cada punto representa el número de procesos en ese grupo, y al hacer clic en un punto se muestran los procesos y contenedores individuales que contribuyen al grupo. -La consulta en la parte superior de la analítica del diagrama de dispersión te permite controlar la analítica del diagrama de dispersión: +Las opciones en la parte superior del gráfico te permiten controlar tu análisis de gráfico de dispersión: -- Selección de métricas para mostrar. +- Selección de métricas a mostrar. - Selección del método de agregación para ambas métricas. -- Selección de la escala de los ejes X e Y (_Lineal_/_Log_). +- Selección de la escala de ambos ejes X e Y (_Lineal_/_Log_). -{{< img src="infrastructure/process/scatterplot.png" alt="Inspección del contenedor" style="width:80%;">}} +{{< img src="infrastructure/process/scatterplot.png" alt="Inspección de contenedor" style="width:80%;">}} -## Monitores de proceso +## Monitores de procesos {#process-monitors} -Utiliza el [Monitor de Live Process][6] para generar alertas basadas en el recuento de cualquier grupo de procesos en hosts o etiquetas. Puedes configurar alertas de proceso en la [página de Monitores][7]. Para obtener más información, consulta la [documentación del Monitor de Live Process][6]. +Utiliza el [Live Process Monitor][6] para generar alertas basadas en el conteo de cualquier grupo de procesos a través de hosts o etiquetas. Puedes configurar alertas de procesos en la [página de Monitores][7]. Para aprender más, consulta la [documentación del Live Process Monitor][6]. -{{< img src="infrastructure/process/process_monitor.png" alt="Monitor de proceso" style="width:80%;">}} +{{< img src="infrastructure/process/process_monitor.png" alt="Monitor de Proceso" style="width:80%;">}} -## Procesos en dashboards y notebooks +## Procesos en tableros y notebooks {#processes-in-dashboards-and-notebooks} -Puedes graficar las métricas de proceso en dashboards y notebooks mediante el [widget de series temporales][8]. Para configurar: -1. Selecciona Processes (Procesos) como fuente de datos -2. Filtra por cadenas de texto en la barra de búsqueda +Puedes graficar métricas de procesos en tableros y notebooks utilizando el [Timeseries widget][8]. Para configurar: +1. Selecciona Procesos como fuente de datos +2. Filtra usando cadenas de texto en la barra de búsqueda 3. Selecciona una métrica de proceso para graficar 4. Filtra usando etiquetas en el campo `From` -{{< img src="infrastructure/process/process_widget.png" alt="Widget de procesos" style="width:80%;">}} +{{< img src="infrastructure/process/process_widget.png" alt="Widget de Procesos" style="width:80%;">}} -## Monitorización de software de terceros +## Monitoreo de software de terceros {#monitoring-third-party-software} -### Integraciones detectadas de manera automática +### Integraciones autodetectadas {#autodetected-integrations} -Datadog utiliza la recopilación de procesos para detectar de manera automática las tecnologías que se ejecutan en tus hosts. Esto identifica las integraciones de Datadog que pueden ayudarte a monitorizar dichas tecnologías. Estas integraciones detectadas de manera automática se muestran en la [búsqueda de integraciones][1]: +Datadog utiliza la recolección de procesos para autodetectar las tecnologías que se ejecutan en tus hosts. Esto identifica las integraciones de Datadog que pueden ayudarte a monitorear estas tecnologías. Estas integraciones autodetectadas se muestran en la búsqueda de [Integrations][1]: -{{< img src="getting_started/integrations/ad_integrations.png" alt="Integraciones detectadas de manera automática" >}} +{{< img src="getting_started/integrations/ad_integrations.png" alt="Integraciones autodetectadas" >}} -Cada integración puede adoptar uno de estos estados: +Cada integración tiene uno de dos tipos de estado: -- **+ Detected** (Detectada): esta integración no se ha habilitado en ninguno de los hosts que la ejecutan. -- **✓ Partial Visibility** (Visibilidad parcial): esta integración se ha habilitado en algunos hosts, pero no todos la ejecutan. +- **+ Detectado**: Esta integración no está habilitada en ningún host que la ejecute. +- **✓ Visibilidad Parcial**: Esta integración está habilitada en algunos, pero no en todos los hosts relevantes que la ejecutan. -Puedes encontrar los hosts que ejecutan la integración, pero en los que no se encuentra habilitada, en la pestaña **Hosts** del cuadro de integraciones. +Los hosts que están ejecutando la integración, pero donde la integración no está habilitada, se pueden encontrar en la pestaña **Hosts** del mosaico de integraciones. -### Vistas de integración +### Vistas de integración {#integration-views} -{{< img src="infrastructure/process/integration_views.png" alt="Vistas de integración" >}} +{{< img src="infrastructure/process/integration_views.png" alt="Vistas de Integración" >}} -Una vez que se ha detectado un software de terceros, Live Processes ayuda a analizar el rendimiento de ese software. -1. Para comenzar, haz clic en *Views* (Vistas) en la parte superior derecha de la página a fin de abrir una lista de opciones preestablecidas, incluidas Nginx, Redis y Kafka. -2. Selecciona una vista para que la página solo abarque los procesos que ejecutan ese software. -3. Al inspeccionar un proceso pesado, cambia a la pestaña *Integration Metrics* (Métricas de integración) para analizar el estado del software en el host subyacente. Si ya has habilitado la integración de Datadog relevante, puedes ver todas las métricas de rendimiento recopiladas de la integración para distinguir entre un problema a nivel de host y software. Por ejemplo, ver picos correlacionados en la CPU del proceso y la latencia de las consultas MySQL puede indicar que una operación intensiva, como un escaneo completo de la tabla, esté retrasando la ejecución de otras consultas MySQL que dependen de los mismos recursos subyacentes. +Después de que se ha detectado un software de terceros, Live Processes ayuda a analizar el rendimiento de ese software. +1. Para comenzar, haz clic en *Views* en la parte superior derecha de la página para abrir una lista de opciones preestablecidas, incluyendo Nginx, Redis y Kafka. +2. Haz clic en una visualización para limitar la página únicamente a los procesos que ejecutan ese software. +3. Al inspeccionar un proceso pesado, cambia a la pestaña *Métricas de Integración* para analizar la salud del software en el host subyacente. Si ya ha habilitado la integración relevante de Datadog, puede ver todas las métricas de rendimiento recopiladas de la integración para distinguir entre un problema a nivel de host y un problema a nivel de software. Por ejemplo, ver picos correlacionados en el CPU del proceso y la latencia de las consultas de MySQL puede indicar que una operación intensiva, como un escaneo completo de la tabla, está retrasando la ejecución de otras consultas de MySQL que dependen de los mismos recursos subyacentes. -Puedes personalizar las vistas de integración (por ejemplo, al agregar una consulta para procesos de Nginx por host) y otras consultas personalizadas al hacer clic en el botón *+Save* (Guardar) en la parte superior de la página. Esto guarda tu consulta, selecciones de columnas de la tabla y configuraciones de visualización. Crea vistas guardadas para acceder con rapidez a los procesos que te interesen sin configuración adicional y compartir datos de procesos con tus compañeros de equipo. +Puede personalizar las vistas de integración (por ejemplo, al agregar una consulta para procesos de Nginx por host) y otras consultas personalizadas haciendo clic en el botón *+Guardar* en la parte superior de la página. Esto guarda su consulta, las selecciones de columnas de tabla y configuraciones de visualización. Crea visualizaciones guardadas para acceder rápidamente a los procesos que te interesan sin configuración adicional y para compartir datos de procesos con tus compañeros de equipo. -## Procesos en toda la plataforma +## Procesos en toda la plataforma {#processes-across-the-platform} -### Live Containers +### Contenedores en Vivo {#live-containers} -Live Processes añade visibilidad adicional a los despliegues de tus contenedores al monitorizar los procesos que se ejecutan en cada uno de los contenedores. Haz clic en un contenedor en la página de [Live Containers][9] para ver su árbol de procesos, incluidos los comandos que está ejecutando y su consumo de recursos. Utiliza estos datos junto con otras métricas de contenedores para determinar la causa raíz de los contenedores o despliegues fallidos. +Los Procesos en Vivo añaden visibilidad adicional a sus implementaciones de contenedores al monitorear los procesos que se ejecutan en cada uno de sus contenedores. Haga clic en un contenedor en la página [Contenedores en Vivo][9] para ver su árbol de procesos, incluidos los comandos que está ejecutando y su consumo de recursos. Utilice estos datos junto con otras métricas de contenedores para determinar la causa raíz de los contenedores o implementaciones que fallan. -### APM +### APM {#apm} -En las [trazas (traces) de APM][10], puedes hacer clic en el tramo (span) de un servicio para ver los procesos que se ejecutan en tu infraestructura subyacente. Los procesos de tramo de un servicio se correlacionan con los hosts o pods en los que se ejecuta el servicio en el momento de la solicitud. Analiza métricas de proceso como CPU y memoria RSS junto con errores a nivel de código para distinguir entre problemas de infraestructura específicos de la aplicación y más amplios. Al hacer clic en un proceso, accederás a la página de Live Processes. Los procesos relacionados no son compatibles con trazas de navegador y serverless. +En [Trazas de APM][10], puede hacer clic en el span de un servicio para ver los procesos que se ejecutan en su infraestructura subyacente. Los procesos del span de un servicio están correlacionados con los hosts o pods en los que se ejecuta el servicio en el momento de la solicitud. Analice métricas de procesos como CPU y memoria RSS junto con errores a nivel de código para distinguir entre problemas específicos de la aplicación y problemas más amplios de infraestructura. Hacer clic en un proceso lo lleva a la página de Procesos en Vivo. Los procesos relacionados no son compatibles con trazas sin servidor y de navegador. -### Network Performance Monitoring +### Cloud Network Monitoring {#cloud-network-monitoring} -Cuando inspeccionas una dependencia en la página de [Network Analytics][11], puedes ver los procesos que se ejecutan en la infraestructura subyacente de los endpoints, como los servicios que se comunican entre sí. Utiliza los metadatos del proceso para determinar si una conectividad de red deficiente (indicada por una gran cantidad de retransmisiones de TCP) o una latencia de llamada de red alta (indicada por un tiempo de ida y vuelta de TCP alto) podría deberse a cargas de trabajo pesadas que consumen los recursos de esos endpoints y, por lo tanto, afectan al estado y eficiencia de su comunicación. +Cuando inspecciona una dependencia en la página [Network Analytics][11], puede ver procesos que se ejecutan en la infraestructura subyacente de los puntos de conexión, como servicios que se comunican entre sí. Utilice los metadatos del proceso para determinar si la mala conectividad de red (indicada por un alto número de retransmisiones TCP) o la alta latencia de llamadas de red (indicada por un alto tiempo de ida y vuelta TCP) podrían deberse a cargas de trabajo pesadas que consumen los recursos de esos puntos de conexión, afectando así la salud y eficiencia de su comunicación. -## Monitorización en tiempo real +## Monitoreo en tiempo real {#real-time-monitoring} -Mientras se trabaja de manera activa con Live Processes, las métricas se recopilan con una resolución de 2 segundos. Esto es importante para métricas volátiles como la CPU. En segundo plano, para el contexto histórico, las métricas se recopilan con una resolución de 10 segundos. +Los procesos se recopilan normalmente con una resolución de 10 segundos. Mientras se trabaja activamente en la página de Live Processes, las métricas se recopilan con una resolución de 2 segundos y se muestran en tiempo real, lo cual es importante para métricas volátiles como la CPU. Sin embargo, para contexto histórico, las métricas se ingieren a la resolución predeterminada de 10 segundos. -## Información adicional +## Información adicional {#additional-information} -- La recopilación de datos en tiempo real (2 segundos) se desactiva después de 30 minutos. Para reanudar la recopilación en tiempo real, actualiza la página. -- En los despliegues de contenedores, el archivo `/etc/passwd` montado en el `docker-dd-agent` es necesario a fin de recopilar nombres de usuario para cada proceso. Este es un archivo público y el Process Agent no utiliza ningún campo excepto el nombre de usuario. Todas las funciones, excepto el campo de metadatos `user`, funcionan sin acceso a este archivo. **Nota**: Live Processes solo utiliza el archivo `passwd` del host y no realiza la resolución de nombres de usuario para los usuarios creados dentro de contenedores. +- La recopilación de datos en tiempo real (2s) se desactiva después de 30 minutos. Para reanudar la recopilación en tiempo real, actualice la página. +- En implementaciones de contenedores, el archivo `/etc/passwd` montado en el `docker-dd-agent` es necesario para recopilar el nombre de usuario para cada proceso. Este es un archivo público y el Process Agent no utiliza ningún campo excepto el nombre de usuario. Si el Agent se está ejecutando sin privilegios, el montaje no ocurre. Incluso sin acceso al archivo `/etc/passwd`, todas las funciones excepto el campo de metadatos `user` siguen funcionando. **Nota**: Live Processes solo utiliza el archivo `passwd` del servidor y no realiza resolución de nombres de usuario para los usuarios creados dentro de contenedores. -## Lectura adicional +## Lectura adicional {#further-reading} {{< partial name="whats-next/whats-next.html" >}} @@ -474,9 +526,11 @@ Mientras se trabaja de manera activa con Live Processes, las métricas se recopi [4]: /es/getting_started/tagging/unified_service_tagging [5]: https://app.datadoghq.com/process [6]: /es/monitors/types/process/ -[7]: https://app.datadoghq.com/monitors#create/live_process +[7]: https://app.datadoghq.com/monitors/create/live_process [8]: /es/dashboards/widgets/timeseries/#pagetitle [9]: /es/infrastructure/livecontainers/ [10]: /es/tracing/ -[11]: /es/network_monitoring/performance/network_analytics +[11]: /es/network_monitoring/cloud_network_monitoring/network_analytics [12]: /es/agent/configuration/agent-commands/#restart-the-agent +[13]: /es/metrics/custom_metrics/ +[14]: /es/network_monitoring/cloud_network_monitoring/ \ No newline at end of file diff --git a/content/es/llm_observability/instrumentation/sdk.md b/content/es/llm_observability/instrumentation/sdk.md index a77ee981e45..4bb89e7b498 100644 --- a/content/es/llm_observability/instrumentation/sdk.md +++ b/content/es/llm_observability/instrumentation/sdk.md @@ -14,16 +14,16 @@ aliases: further_reading: - link: https://www.datadoghq.com/blog/llm-prompt-tracking tag: Blog - text: Rastrea, compara y optimiza tus prompts de LLM con Datadog LLM Observability + text: Rastrea, compara y optimiza tus prompts LLM con Datadog LLM Observability title: Referencia del SDK de LLM Observability --- -## Resumen +## Descripción general {#overview} -Los SDK de Datadog LLM Observability proporcionan instrumentación automática, así como APIs de instrumentación manual, para ofrecer observabilidad y perspectivas en tus aplicaciones LLM. +Los SDK de LLM Observability de Datadog proveen instrumentación automática, así como APIs de instrumentación manual, para ofrecer observabilidad e información sobre tus aplicaciones LLM. -## Configuración +## Configuración {#setup} -### Requisitos +### Requisitos {#requirements} - Una [clave de API de Datadog][1]. @@ -31,14 +31,14 @@ Los SDK de Datadog LLM Observability proporcionan instrumentación automática, {{< tabs >}} {{% tab "Python" %}} -- El último paquete `ddtrace` está instalado (se requiere Python 3.7+): +- El último `ddtrace` paquete está instalado (se requiere Python 3.7+): ```shell pip install ddtrace ``` {{% /tab %}} {{% tab "Node.js" %}} -- El último paquete `dd-trace` está instalado (se requiere Node.js 16+): +- El último `dd-trace` paquete está instalado (se requiere Node.js 16+): ```shell npm install dd-trace ``` @@ -46,13 +46,13 @@ Los SDK de Datadog LLM Observability proporcionan instrumentación automática, {{% /tab %}} {{% tab "Java" %}} -- Has descargado el último [`dd-trace-java` JAR][1]. El SDK de Datadog LLM Observability es compatible con `dd-trace-java` v1.51.0+ (se requiere Java 8+). +- Has descargado el último [`dd-trace-java` JAR][1]. El SDK de LLM Observability es compatible con `dd-trace-java` v1.51.0+ (se requiere Java 8+). [1]: https://github.com/DataDog/dd-trace-java {{% /tab %}} {{< /tabs >}} -{{% collapse-content title="Configuración desde la línea de comandos" level="h3" expanded=false id="command-line-setup" %}} +{{% collapse-content title="Configuración de línea de comandos" level="h3" expanded=false id="command-line-setup" %}} {{< tabs >}} {{% tab "Python" %}} @@ -65,34 +65,34 @@ DD_SITE= DD_API_KEY= DD_LLMOBS_ENABLED=1 \ DD_LLMOBS_ML_APP= ddtrace-run {{< /code-block >}} -#### Variables de entorno para la configuración de línea de comandos +#### Variables de entorno para la configuración de línea de comandos {#environment-variables-for-command-line-setup} `DD_SITE` : requerido - _cadena_ -
Sitio de Datadog de destino para el envío de datos LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. +
Sitio de Datadog destino para el envío de datos LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. `DD_LLMOBS_ENABLED` : requerido - _entero o cadena_ -
Alternar para habilitar el envío de datos a LLM Observability. Debería estar configurado en `1` o `true`. +
Alterna para habilitar el envío de datos a LLM Observability. Debería estar configurado en `1` o `true`. `DD_LLMOBS_ML_APP` : opcional - _cadena_ -
El nombre de su aplicación, servicio o proyecto LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulte [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para un tramo raíz dado, consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada en el valor de [`DD_SERVICE`][1], o el valor de un `DD_LLMOBS_ML_APP` propagado desde un servicio ascendente. +
El nombre de tu aplicación, servicio o proyecto de LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulte [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para un span raíz dado, consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada en el valor de [`DD_SERVICE`][1], o el valor de un `DD_LLMOBS_ML_APP` propagado desde un servicio ascendente.
**Nota**: Antes de la versión `ddtrace==3.14.0`, este es un **campo requerido**. `DD_LLMOBS_AGENTLESS_ENABLED` : opcional - _entero o cadena_ - **predeterminado**: `false` -
Solo es necesario si no está utilizando el Agente de Datadog, en cuyo caso esto debe configurarse en `1` o `true`. +
Solo es requerido si no estás utilizando el Agente de Datadog, en cuyo caso esto debería configurarse en `1` o `true`. `DD_API_KEY` : opcional - _cadena_ -
Su clave de API de Datadog. Solo es necesario si no está utilizando el Agente de Datadog. +
Tu clave de API de Datadog. Solo es necesario si no estás utilizando el Agente de Datadog. [1]: /es/getting_started/tagging/unified_service_tagging?tab=kubernetes#non-containerized-environment {{% /tab %}} {{% tab "Node.js" %}} -Habilite LLM Observability ejecutando su aplicación con `NODE_OPTIONS="--import dd-trace/initialize.mjs"` y especificando las variables de entorno requeridas. +Habilita LLM Observability ejecutando tu aplicación con `NODE_OPTIONS="--import dd-trace/initialize.mjs"` y especificando las variables de entorno requeridas. **Nota**: `dd-trace/initialize.mjs` activa automáticamente todas las integraciones de APM. @@ -101,34 +101,34 @@ DD_SITE= DD_API_KEY= DD_LLMOBS_ENABLED=1 \ DD_LLMOBS_ML_APP= NODE_OPTIONS="--import dd-trace/initialize.mjs" node ``` -#### Variables de entorno para la configuración de línea de comandos +#### Variables de entorno para la configuración de línea de comandos {#environment-variables-for-command-line-setup-1} `DD_SITE` : requerido - _cadena_ -
El sitio de Datadog para enviar sus datos LLM. Su sitio es {{< region-param key="dd_site" code="true" >}}. +
El sitio de Datadog para enviar tus datos LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. `DD_LLMOBS_ENABLED` : requerido - _entero o cadena_ -
Alternar para habilitar el envío de datos a LLM Observability. Debería estar configurado en `1` o `true`. +
Alterna para habilitar el envío de datos a LLM Observability. Debería estar configurado en `1` o `true`. `DD_LLMOBS_ML_APP` : opcional - _cadena_ -
El nombre de su aplicación, servicio o proyecto LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulte [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para un tramo raíz dado, consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada en el valor de [`DD_SERVICE`][1], o el valor de un `DD_LLMOBS_ML_APP` propagado desde un servicio ascendente. +
El nombre de tu aplicación, servicio o proyecto LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulta [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para un tramo raíz dado, consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada en el valor de [`DD_SERVICE`][1], o el valor de un `DD_LLMOBS_ML_APP` propagado desde un servicio ascendente.
**Nota**: Antes de la versión `dd-trace@5.66.0`, este es un **campo requerido**. `DD_LLMOBS_AGENTLESS_ENABLED` : opcional - _entero o cadena_ - **predeterminado**: `false` -
Solo es necesario si no está utilizando el Agente de Datadog, en cuyo caso esto debe configurarse en `1` o `true`. +
Solo es requerido si no estás utilizando el Agente de Datadog, en cuyo caso esto debería configurarse en `1` o `true`. `DD_API_KEY` : opcional - _cadena_ -
Su clave de API de Datadog. Solo es necesario si no está utilizando el Agente de Datadog. +
Tu clave de API de Datadog. Solo es necesario si no estás utilizando el Agente de Datadog. [1]: /es/getting_started/tagging/unified_service_tagging?tab=kubernetes#non-containerized-environment {{% /tab %}} {{% tab "Java" %}} -Habilite LLM Observability ejecutando su aplicación con `dd-trace-java` y especificando los parámetros requeridos como variables de entorno o propiedades del sistema. +Habilita LLM Observability ejecutando tu aplicación con `dd-trace-java` y especificando los parámetros requeridos como variables de entorno o propiedades del sistema. ```shell DD_SITE= DD_API_KEY= \ @@ -136,30 +136,30 @@ java -javaagent:path/to/your/dd-trace-java-jar/dd-java-agent-SNAPSHOT.jar \ -Ddd.service=my-app -Ddd.llmobs.enabled=true -Ddd.llmobs.ml.app=my-ml-app -jar path/to/your/app.jar ``` -#### Variables de entorno y propiedades del sistema +#### Variables de entorno y propiedades del sistema {#environment-variables-and-system-properties} -Puede proporcionar los siguientes parámetros como variables de entorno (por ejemplo, `DD_LLMOBS_ENABLED`) o como propiedades del sistema Java (por ejemplo, `dd.llmobs_enabled`). +Puedes proporcionar los siguientes parámetros como variables de entorno (por ejemplo, `DD_LLMOBS_ENABLED`) o como propiedades del sistema Java (por ejemplo, `dd.llmobs_enabled`). `DD_SITE` o `dd.site` : requerido - _cadena_ -
Sitio de Datadog de destino para la presentación de datos LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. +
Sitio de Datadog destino para el envío de datos LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. `DD_LLMOBS_ENABLED` o `dd.llmobs.enabled` : requerido - _entero o cadena_ -
Alternar para habilitar el envío de datos a la Observabilidad LLM. Debería configurarse en `1` o `true`. +
Alternar para habilitar el envío de datos a LLM Observability. Debería estar configurado en `1` o `true`. `DD_LLMOBS_ML_APP` o `dd.llmobs.ml.app` : opcional - _cadena_ -
El nombre de su aplicación, servicio o proyecto LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulte [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para los caracteres permitidos y otras restricciones. Para anular este valor para un tramo raíz dado, consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada al valor de [`DD_SERVICE`][1], o al valor de un `DD_LLMOBS_ML_APP` propagado desde un servicio ascendente. +
El nombre de tu aplicación, servicio o proyecto LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulta [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para un tramo raíz dado, consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada al valor de [`DD_SERVICE`][1], o al valor de un `DD_LLMOBS_ML_APP` propagado desde un servicio ascendente.
**Nota**: Antes de la versión 1.54.0 de `dd-trace-java`, este es un **campo requerido**. `DD_LLMOBS_AGENTLESS_ENABLED` o `dd.llmobs.agentless.enabled` : opcional - _entero o cadena_ - **predeterminado**: `false` -
Solo es necesario si no está utilizando el Agente de Datadog, en cuyo caso esto debe establecerse en `1` o `true`. +
Solo es requerido si no estás utilizando el Agente de Datadog, en cuyo caso esto debe establecerse en `1` o `true`. `DD_API_KEY` o `dd.api.key` : opcional - _cadena_ -
Su clave de API de Datadog. Solo es necesario si no está utilizando el Agente de Datadog. +
Tu clave de API de Datadog. Solo es necesario si no estás utilizando el Agente de Datadog. [1]: /es/getting_started/tagging/unified_service_tagging?tab=kubernetes#non-containerized-environment {{% /tab %}} @@ -169,15 +169,15 @@ Puede proporcionar los siguientes parámetros como variables de entorno (por eje {{% collapse-content title="Configuración en código" level="h3" expanded=false id="in-code-setup" %}} -En lugar de usar [configuración de línea de comandos](#command-line-setup), también puede habilitar LLM Observability programáticamente. +En lugar de usar [configuración de línea de comandos](#command-line-setup), también puedes habilitar LLM Observability programáticamente. {{< tabs >}} {{% tab "Python" %}} -Utilice la función `LLMObs.enable()` para habilitar LLM Observability. +Utiliza la función `LLMObs.enable()` para habilitar LLM Observability.
-No utilice este método de configuración con el comando ddtrace-run. +No uses este método de configuración con el ddtrace-run comando.
{{< code-block lang="python" >}} @@ -190,35 +190,35 @@ LLMObs.enable( ) {{< /code-block >}} -##### Parámetros +##### Parámetros {#parameters} `ml_app` : opcional - _cadena_ -
El nombre de su aplicación, servicio o proyecto LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulte [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para una traza dada, consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, este valor predeterminado es el de `DD_LLMOBS_ML_APP`. +
El nombre de tu aplicación, servicio o proyecto LLM, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulta [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para una traza dada, consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_LLMOBS_ML_APP`. `integrations_enabled` - **predeterminado**: `true` : opcional - _booleano_ -
Una bandera para habilitar el rastreo automático de llamadas LLM para las integraciones de LLM soportadas por Datadog [integraciones de LLM][1]. Si no se proporciona, todas las integraciones de LLM soportadas están habilitadas por defecto. Para evitar el uso de las integraciones de LLM, establezca este valor en `false`. +
Una bandera para habilitar automáticamente el rastreo de llamadas LLM para las integraciones de LLM soportadas por Datadog. Si no se proporciona, todas las integraciones de LLM soportadas están habilitadas por defecto. Para evitar el uso de las integraciones de LLM, establece este valor en `false`. `agentless_enabled` : opcional - _booleano_ - **predeterminado**: `false` -
Solo es necesario si no está utilizando el Agente de Datadog, en cuyo caso este debe establecerse en `True`. Esto configura la biblioteca `ddtrace` para no enviar ningún dato que requiera el Agente de Datadog. Si no se proporciona, este valor predeterminado es el de `DD_LLMOBS_AGENTLESS_ENABLED`. +
Solo es necesario si no estás utilizando el Agente de Datadog, en cuyo caso esto debería establecerse en `True`. Esto configura la biblioteca `ddtrace` para no enviar ningún dato que requiera el Agente de Datadog. Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_LLMOBS_AGENTLESS_ENABLED`. `site` : opcional - _cadena_ -
El sitio de Datadog para enviar sus datos LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_SITE`. +
El sitio de Datadog para enviar los datos de tu LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. Si no se proporciona, esto se establece en el valor de `DD_SITE`. `api_key` : opcional - _cadena_ -
Tu clave de API de Datadog. Solo es necesario si no está utilizando el Datadog Agent. Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_API_KEY`. +
Tu clave de API de Datadog. Solo es necesario si no estás utilizando el Agente de Datadog. Si no se proporciona, esto se establece en el valor de `DD_API_KEY`. `env` : opcional - _cadena_ -
El nombre del entorno de tu aplicación (ejemplos: `prod`, `pre-prod`, `staging`). Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_ENV`. +
El nombre del entorno de tu aplicación (ejemplos: `prod`, `pre-prod`, `staging`). Si no se proporciona, esto se establece en el valor de `DD_ENV`. `service` : opcional - _cadena_ -
El nombre del servicio utilizado para tu aplicación. Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_SERVICE`. +
El nombre del servicio utilizado para tu aplicación. Si no se proporciona, esto se establece en el valor de `DD_SERVICE`. [1]: /es/llm_observability/instrumentation/auto_instrumentation/ {{% /tab %}} @@ -226,10 +226,10 @@ LLMObs.enable( {{% tab "Node.js" %}}
-No utilices este método de configuración con el comando dd-trace/initialize.mjs. +No utilice este método de configuración con el dd-trace/initialize.mjs comando.
-Utilice la `init()` función para habilitar LLM Observability. +Utilice la `init()` función para habilitar la Observabilidad LLM. {{< code-block lang="javascript" >}} const tracer = require('dd-trace').init({ @@ -244,37 +244,37 @@ const tracer = require('dd-trace').init({ const llmobs = tracer.llmobs; {{< /code-block >}} -**Opciones para la `llmobs`configuración** +**Opciones para la configuración de `llmobs`** `mlApp` : opcional - _cadena_ -
El nombre de tu aplicación LLM, servicio o proyecto, bajo el cual se agrupan todas las trazas y tramos. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulta [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para una traza dada, consulta [Trazando múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_LLMOBS_ML_APP`. +
El nombre de tu aplicación LLM, servicio o proyecto, bajo el cual se agrupan todos los rastros y spans. Esto ayuda a distinguir entre diferentes aplicaciones o experimentos. Consulta [Directrices de nomenclatura de aplicaciones](#application-naming-guidelines) para caracteres permitidos y otras restricciones. Para anular este valor para un rastreo dado, consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications). Si no se proporciona, esto se establece en el valor de `DD_LLMOBS_ML_APP`. `agentlessEnabled` : opcional - _booleano_ - **predeterminado**: `false` -
Solo es necesario si no estás utilizando el Datadog Agent, en cuyo caso esto debe establecerse en `true`. Esto configura la `dd-trace` biblioteca para no enviar ningún dato que requiera el Datadog Agent. Si no se proporciona, esto se establece en el valor de `DD_LLMOBS_AGENTLESS_ENABLED`. +
Solo es necesario si no estás utilizando el Agente de Datadog, en cuyo caso esto debe configurarse en `true`. Esto configura la biblioteca `dd-trace` para no enviar ningún dato que requiera el Agente de Datadog. Si no se proporciona, esto se establece por defecto en el valor de `DD_LLMOBS_AGENTLESS_ENABLED`. **Opciones para la configuración general del rastreador**: `site` : opcional - _cadena_ -
El sitio de Datadog para enviar tus datos de LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_SITE`. +
El sitio de Datadog para enviar los datos de tu LLM. Tu sitio es {{< region-param key="dd_site" code="true" >}}. Si no se proporciona, esto se establece en el valor de `DD_SITE`. `env` : opcional - _cadena_ -
El nombre del entorno de tu aplicación (ejemplos: `prod`, `pre-prod`, `staging`). Si no se proporciona, esto se establece en el valor de `DD_ENV`. +
El nombre del entorno de tu aplicación (ejemplos: `prod`, `pre-prod`, `staging`). Si no se proporciona, esto se establece por defecto en el valor de `DD_ENV`. `service` : opcional - _cadena_ -
El nombre del servicio utilizado para tu aplicación. Si no se proporciona, esto se establece de forma predeterminada al valor de `DD_SERVICE`. +
El nombre del servicio utilizado para tu aplicación. Si no se proporciona, esto se establece en el valor de `DD_SERVICE`. -##### Variables de entorno +##### Variables de entorno {#environment-variables} Establece los siguientes valores como variables de entorno. No se pueden configurar programáticamente. `DD_API_KEY` : opcional - _cadena_ -
Tu clave de API de Datadog. Solo es necesario si no está utilizando el Datadog Agent. +
Tu clave de API de Datadog. Solo es necesario si no estás utilizando el Agente de Datadog. {{% /tab %}} {{< /tabs >}} @@ -283,26 +283,26 @@ Establece los siguientes valores como variables de entorno. No se pueden configu {{% collapse-content title="Configuración de AWS Lambda" level="h3" expanded=false id="aws-lambda-setup" %}} -Para instrumentar una función existente de AWS Lambda con LLM Observability, puedes usar la Datadog Extension y las respectivas capas de lenguaje. +Para instrumentar una función existente de AWS Lambda con LLM Observability, puedes utilizar la Extensión de Datadog y las respectivas capas de lenguaje. 1. Abre un Cloudshell en la consola de AWS. -2. Instala el cliente de la CLI de Datadog +2. Instala el cliente de Datadog CLI. ```shell npm install -g @datadog/datadog-ci ``` -3. Establece la clave de API de Datadog y el sitio +3. Configura la clave API de Datadog y el sitio. ```shell export DD_API_KEY= export DD_SITE= ``` -Si ya tienes o prefieres usar un secreto en el Administrador de Secretos, puedes establecer la clave de API utilizando el ARN del secreto: +Si ya tienes o prefieres usar un secreto en Secrets Manager, puedes establecer la clave API utilizando el ARN del secreto: ```shell export DATADOG_API_KEY_SECRET_ARN= ``` -4. Instala tu función Lambda con LLM Observability (esto requiere al menos la versión 77 de la Datadog Extension layer) +4. Instala tu función Lambda con LLM Observability (esto requiere al menos la versión 77 de la capa de extensión de Datadog). {{< tabs >}} {{% tab "Python" %}} @@ -328,7 +328,7 @@ datadog-ci lambda instrument -f -r -v { 4. Invoca tu función Lambda y verifica que las trazas de LLM Observability sean visibles en la interfaz de usuario de Datadog. -Limpia manualmente las trazas de LLM Observability utilizando el método `flush` antes de que la función Lambda regrese. +Limpia manualmente las trazas de LLM Observability utilizando el método `flush` antes de que la función Lambda retorne. {{< tabs >}} {{% tab "Python" %}} @@ -358,9 +358,9 @@ export const handler = async (event) => { {{% /collapse-content %}} -Después de instalar el SDK y ejecutar tu aplicación, deberías esperar ver algunos datos en LLM Observability provenientes de la instrumentación automática. La instrumentación manual puede ser utilizada para capturar marcos personalizados o operaciones de bibliotecas que aún no están soportadas. +Después de instalar el SDK y ejecutar tu aplicación, deberías esperar ver algunos datos en LLM Observability provenientes de la auto-instrumentación. La instrumentación manual puede ser utilizada para capturar marcos personalizados o operaciones de bibliotecas que aún no son compatibles. -## Instrumentación manual +## Instrumentación manual {#manual-instrumentation} {{< tabs >}} {{% tab "Python" %}} @@ -375,7 +375,7 @@ def handle_user_request(): ... {{< /code-block >}} -o un enfoque basado en un administrador de contexto para capturar operaciones granulares: +o un enfoque basado en un administrador de contexto para capturar operaciones de grano fino: {{< code-block lang="python" >}} from ddtrace.llmobs import LLMObs @@ -398,17 +398,17 @@ Para una lista de tipos de tramos disponibles, consulta la [documentación de Ti {{% tab "Node.js" %}} -Para trazar un tramo, utiliza `llmobs.wrap(options, function)` como envoltorio de función para la función que deseas trazar. Para una lista de tipos de tramos disponibles, consulta la [documentación de Tipos de tramos][1]. Para un trazado más granular de operaciones dentro de funciones, consulta [Trazado de tramos utilizando métodos en línea](#tracing-spans-using-inline-methods). +Para trazar un tramo, utiliza `llmobs.wrap(options, function)` como un envoltorio de función para la función que deseas trazar. Para una lista de tipos de tramos disponibles, consulta la [documentación de Tipos de tramos][1]. Para un trazado más granular de operaciones dentro de funciones, consulta [Trazado de tramos utilizando métodos en línea](#tracing-spans-using-inline-methods). -### Tipos de tramos +### Tipos de tramos {#span-kinds} -Los tipos de tramos son requeridos y se especifican en el objeto `options` pasado a las funciones de trazado `llmobs` (`trace`, `wrap` y `decorate`). Consulta la [documentación de Tipos de tramos][1] para una lista de tipos de tramos soportados. +Los tipos de tramo son requeridos y se especifican en el objeto `options` que se pasa a las funciones de trazado `llmobs` (`trace`, `wrap` y `decorate`). Consulta la [documentación de Tipos de tramos][1] para una lista de tramos soportados. **Nota:** Los tramos con un tipo de tramo inválido no se envían a LLM Observability. -### Captura automática de argumentos/salida/nombre de función +### Captura automática de argumentos/salida/nombre de función {#automatic-function-argumentoutputname-capturing} -`llmobs.wrap` (junto con [`llmobs.decorate`](#function-decorators-in-typescript) para TypeScript) intenta capturar automáticamente las entradas, salidas y el nombre de la función que se está rastreando. Si necesitas anotar manualmente un tramo, consulta [Enriqueciendo tramos](#enriching-spans). Las entradas y salidas que anotes anularán la captura automática. Además, para anular el nombre de la función, pasa la propiedad `name` en el objeto de opciones a la función `llmobs.wrap`: +`llmobs.wrap` (junto con [`llmobs.decorate`](#function-decorators-in-typescript) para TypeScript) intenta capturar automáticamente las entradas, salidas y el nombre de la función que se está rastreando. Si necesita anotar manualmente un tramo, consulte [Enriqueciendo tramos](#enriching-spans). Las entradas y salidas que anotes anularán la captura automática. Además, para anular el nombre de la función, pasa la `name` propiedad en el objeto de opciones a la función `llmobs.wrap`: {{< code-block lang="javascript" >}} function processMessage () { @@ -418,7 +418,7 @@ function processMessage () { processMessage = llmobs.wrap({ kind: 'workflow', name: 'differentFunctionName' }, processMessage) {{< /code-block >}} -### Condiciones para finalizar un tramo para una función envuelta +### Condiciones para finalizar un tramo para una función envuelta {#conditions-for-finishing-a-span-for-a-wrapped-function} `llmobs.wrap` extiende el comportamiento subyacente de [`tracer.wrap`][2]. El tramo subyacente creado cuando se llama a la función se finaliza bajo las siguientes condiciones: @@ -428,7 +428,7 @@ processMessage = llmobs.wrap({ kind: 'workflow', name: 'differentFunctionName' } El siguiente ejemplo demuestra la segunda condición, donde el último argumento es un callback: -#### Ejemplo +#### Ejemplo {#example} {{< code-block lang="javascript" >}} const express = require('express') @@ -445,7 +445,7 @@ app.use(myAgentMiddleware) {{< /code-block >}} -Si la aplicación no utiliza la función de callback, se recomienda usar un bloque trazado en línea en su lugar. Consulta [Trazando tramos usando métodos en línea](#tracing-spans-using-inline-methods) para más información. +Si la aplicación no utiliza la función de callback, se recomienda usar un bloque rastreado en línea en su lugar. consulta [Rastreando tramos utilizando métodos en línea](#tracing-spans-using-inline-methods) para más información. {{< code-block lang="javascript" >}} const express = require('express') @@ -467,19 +467,19 @@ app.use(myAgentMiddleware) {{% /tab %}} {{% tab "Java" %}} -### Iniciando un tramo +### Iniciando un tramo {#starting-a-span} -Existen múltiples métodos para iniciar un tramo, según el tipo de tramo que estés iniciando. Consulta la [documentación de Tipos de tramos][1] para una lista de tipos de tramos soportados. +Existen múltiples métodos para iniciar un tramo, según el tipo de tramo que estés iniciando. Consulta la [documentación de Tipos de tramos][1] para una lista de tramos soportados. -Todos los tramos se inician como una instancia de objeto de `LLMObsSpan`. Cada tramo tiene métodos que puedes usar para interactuar con el tramo y registrar datos. +Todos los tramos se inician como una instancia de objeto de `LLMObsSpan`. Cada tramo tiene métodos que puedes usar para interactuar con él y registrar datos. -### Finalizando un tramo +### Finalizando un tramo {#finishing-a-span} -Los tramos deben ser finalizados para que la traza sea enviada y visible en la aplicación de Datadog. +Los tramos deben completarse para que la traza se envíe y sea visible en la aplicación de Datadog. -Para finalizar un tramo, llama a `finish()` en una instancia del objeto tramo. Si es posible, envuelve el tramo en un bloque de `try/finally` para asegurar que el tramo se envíe incluso si ocurre una excepción. +Para finalizar un tramo, llama a `finish()` en una instancia del objeto tramo. Si es posible, envuelve el tramo en un bloque `try/finally` para asegurar que se envíe, incluso si ocurre una excepción. -#### Ejemplo +#### Ejemplo {#example-1} ```java try { @@ -495,13 +495,15 @@ Para finalizar un tramo, llama a `finish()` en una instancia del objeto tramo. S {{% /tab %}} {{< /tabs >}} -### llamadas a LLM +### Las llamadas a LLM {#llm-calls} + +
Si estás utilizando algún proveedor o marco de LLM que sea compatible con las integraciones de LLM de Datadog, no necesitas iniciar manualmente un tramo de LLM para rastrear estas operaciones.
-
Si estás utilizando algún proveedor o marco de LLM que sea compatible con las integraciones de LLM de Datadog, no necesitas iniciar manualmente un tramo de LLM para trazar estas operaciones.
+
Si estás instrumentando manualmente un tramo de LLM, debes registrar los conteos de tokens (como input_tokens, output_tokens, y total_tokens) tú mismo anotando el tramo. Consulta Enriqueciendo tramos para más información.
{{< tabs >}} {{% tab "Python" %}} -Para trazar una llamada a LLM, utiliza el decorador de función `ddtrace.llmobs.decorators.llm()`. +Para rastrear una llamada a LLM, utiliza el decorador de función `ddtrace.llmobs.decorators.llm()`. {{% collapse-content title="Argumentos" level="h4" expanded=false id="llm-span-arguments" %}} @@ -511,12 +513,12 @@ Para trazar una llamada a LLM, utiliza el decorador de función `ddtrace.llmobs. `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se predetermina al nombre de la función trazada. +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `model_provider` : opcional - _cadena_ - **predeterminado**: `"custom"`
El nombre del proveedor del modelo. -
**Nota**: Para mostrar el costo estimado en dólares estadounidenses, establece `model_provider` en uno de los siguientes valores: `openai`, `azure_openai` o `anthropic`. +
**Nota**: Para mostrar el costo estimado en dólares estadounidenses, establezca `model_provider` en uno de los siguientes valores: `openai`, `azure_openai` o `anthropic`. `session_id` : opcional - _cadena_ @@ -528,14 +530,20 @@ Para trazar una llamada a LLM, utiliza el decorador de función `ddtrace.llmobs. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-2} {{< code-block lang="python" >}} +from ddtrace.llmobs import LLMObs from ddtrace.llmobs.decorators import llm @llm(model_name="claude", name="invoke_llm", model_provider="anthropic") -def llm_call(): +def llm_call(prompt): completion = ... # user application logic to invoke LLM + LLMObs.annotate( + input_data=[{"role": "user", "content": prompt}], + output_data=[{"role": "assistant", "content": completion}], + metrics={"input_tokens": 4, "output_tokens": 6, "total_tokens": 10}, + ) return completion {{< /code-block >}} {{% /tab %}} @@ -564,15 +572,20 @@ Para rastrear una llamada de LLM, especifique el tipo de tramo como `llm`, y opc `mlApp` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Trazado de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-3} {{< code-block lang="javascript" >}} -function llmCall () { +function llmCall (prompt) { const completion = ... // user application logic to invoke LLM + llmobs.annotate({ + inputData: [{ role: "user", content: prompt }], + outputData: [{ role: "assistant", content: completion }], + metrics: { input_tokens: 4, output_tokens: 6, total_tokens: 10 } + }) return completion } llmCall = llmobs.wrap({ kind: 'llm', name: 'invokeLLM', modelName: 'claude', modelProvider: 'anthropic' }, llmCall) @@ -590,15 +603,15 @@ LLMObs.startLLMSpan(spanName, modelName, modelProvider, mlApp, sessionID); {{% collapse-content title="Argumentos" level="h4" expanded=false id="llm-span-arguments" %}} `spanName` -: opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `spanName` se establece en el tipo de tramo. +: opcional - _Cadena_ +
El nombre de la operación. Si no se proporciona, `spanName` se establece de forma predeterminada en el tipo de tramo. `modelName` -: opcional - _cadena_ - **predeterminado**: `"custom"` +: opcional - _Cadena_ - **predeterminado**: `"custom"`
El nombre del LLM invocado. `modelProvider` -: opcional - _cadena_ - **predeterminado**: `"custom"` +: opcional - _Cadena_ - **predeterminado**: `"custom"`
El nombre del proveedor del modelo.
**Nota**: Para mostrar el costo estimado en dólares estadounidenses, establezca `modelProvider` en uno de los siguientes valores: `openai`, `azure_openai` o `anthropic`. @@ -607,12 +620,12 @@ LLMObs.startLLMSpan(spanName, modelName, modelProvider, mlApp, sessionID);
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación de ML proporcionado al inicio de la aplicación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. `sessionId` -: opcional - _Cadena_ +: opcional - _cadena_
El ID de la sesión de usuario subyacente. Consulte [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-4} {{< code-block lang="java" >}} import datadog.trace.api.llmobs.LLMObs; @@ -622,6 +635,11 @@ public class MyJavaClass { LLMObsSpan llmSpan = LLMObs.startLLMSpan("my-llm-span-name", "my-llm-model", "my-company", "maybe-ml-app-override", "session-141"); String inference = ... // user application logic to invoke LLM llmSpan.annotateIO(...); // record the input and output + llmSpan.setMetrics(Map.of( + "input_tokens", 617, + "output_tokens", 338, + "total_tokens", 955 + )); llmSpan.finish(); return inference; } @@ -632,16 +650,16 @@ public class MyJavaClass { {{< /tabs >}} -### Flujos de trabajo +### Flujos de trabajo {#workflows} {{< tabs >}} {{% tab "Python" %}} -Para rastrear un tramo de flujo de trabajo, use el decorador de función `ddtrace.llmobs.decorators.workflow()`. +Para rastrear un tramo de flujo de trabajo, utiliza el decorador de función `ddtrace.llmobs.decorators.workflow()`. {{% collapse-content title="Argumentos" level="h4" expanded=false id="workflow-span-arguments" %}} `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `session_id` : opcional - _cadena_ @@ -649,11 +667,11 @@ Para rastrear un tramo de flujo de trabajo, use el decorador de función `ddtrac `ml_app` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-5} {{< code-block lang="python" >}} from ddtrace.llmobs.decorators import workflow @@ -674,7 +692,7 @@ Para rastrear un tramo de flujo de trabajo, especifique el tipo de tramo como `w `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `sessionId` : opcional - _cadena_ @@ -682,11 +700,11 @@ Para rastrear un tramo de flujo de trabajo, especifique el tipo de tramo como `w `mlApp` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-6} {{< code-block lang="javascript" >}} function processMessage () { @@ -698,7 +716,7 @@ processMessage = llmobs.wrap({ kind: 'workflow' }, processMessage) {{% /tab %}} {{% tab "Java" %}} -Para rastrear un tramo de flujo de trabajo, importe y llame al siguiente método con los argumentos que se enumeran a continuación: +Para rastrear un tramo de flujo de trabajo, importa y llama al siguiente método con los argumentos listados a continuación: ``` import datadog.trace.api.llmobs.LLMObs; @@ -709,19 +727,19 @@ LLMObs.startWorkflowSpan(spanName, mlApp, sessionID); `spanName` : opcional - _Cadena_ -
El nombre de la operación. Si no se proporciona, `spanName` se establece en el tipo de tramo. +
El nombre de la operación. Si no se proporciona, `spanName` se establece de forma predeterminada en el tipo de tramo. `mlApp` : opcional - _Cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación de ML proporcionado al inicio de la aplicación. Vea [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación de ML proporcionado al inicio de la aplicación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. `sessionId` : opcional - _Cadena_ -
El ID de la sesión de usuario subyacente. Vea [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulte [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-7} {{< code-block lang="java" >}} import datadog.trace.api.llmobs.LLMObs; @@ -741,28 +759,28 @@ public class MyJavaClass { {{< /tabs >}} -### Agentes +### Agentes {#agents} {{< tabs >}} {{% tab "Python" %}} -Para rastrear la ejecución de un agente, use el decorador de función `ddtrace.llmobs.decorators.agent()`. +Para rastrear la ejecución de un agente, utiliza el decorador de función `ddtrace.llmobs.decorators.agent()`. {{% collapse-content title="Argumentos" level="h4" expanded=false id="agent-span-arguments" %}} `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `session_id` : opcional - _cadena_ -
El ID de la sesión de usuario subyacente. Vea [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulta [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. `ml_app` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Vea [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-8} {{< code-block lang="python" >}} from ddtrace.llmobs.decorators import agent @@ -776,25 +794,25 @@ def react_agent(): {{% /tab %}} {{% tab "Node.js" %}} -Para rastrear la ejecución de un agente, especifique el tipo de tramo como `agent`, y opcionalmente especifique argumentos en el objeto de opciones. +Para rastrear la ejecución de un agente, especifica el tipo de tramo como `agent`, y opcionalmente especifica argumentos en el objeto de opciones. {{% collapse-content title="Argumentos" level="h4" expanded=false id="agent-span-arguments" %}} `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `sessionId` : opcional - _cadena_ -
El ID de la sesión de usuario subyacente. Vea [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulta [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. `mlApp` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Vea [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-9} {{< code-block lang="javascript" >}} function reactAgent () { @@ -806,7 +824,7 @@ reactAgent = llmobs.wrap({ kind: 'agent' }, reactAgent) {{% /tab %}} {{% tab "Java" %}} -Para rastrear la ejecución de un agente, importe y llame al siguiente método con los argumentos que se enumeran a continuación +Para rastrear la ejecución de un agente, importa y llama al siguiente método con los argumentos que se enumeran a continuación ``` import datadog.trace.api.llmobs.LLMObs; @@ -817,44 +835,44 @@ LLMObs.startAgentSpan(spanName, mlApp, sessionID); `spanName` : opcional - _Cadena_ -
El nombre de la operación. Si no se proporciona, `spanName` se establece en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `spanName` se establece de forma predeterminada en el nombre de la función rastreada. `mlApp` : opcional - _Cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación de ML proporcionado al inicio de la aplicación. Vea [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación de ML proporcionado al inicio de la aplicación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. `sessionId` : opcional - _Cadena_ -
El ID de la sesión de usuario subyacente. Vea [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulta [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. {{% /collapse-content %}} {{% /tab %}} {{< /tabs >}} -### Llamadas a herramientas +### Llamadas a herramientas {#tool-calls} {{< tabs >}} {{% tab "Python" %}} -Para rastrear una llamada a una herramienta, use el decorador de función `ddtrace.llmobs.decorators.tool()`. +Para rastrear una llamada a una herramienta, utiliza el decorador de función `ddtrace.llmobs.decorators.tool()`. {{% collapse-content title="Argumentos" level="h4" expanded=false id="tool-span-arguments" %}} `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `session_id` : opcional - _cadena_ -
El ID de la sesión de usuario subyacente. Vea [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulta [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. `ml_app` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Vea [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-10} {{< code-block lang="python" >}} from ddtrace.llmobs.decorators import tool @@ -868,25 +886,25 @@ def call_weather_api(): {{% /tab %}} {{% tab "Node.js" %}} -Para rastrear una llamada a una herramienta, especifique el tipo de tramo como `tool`, y opcionalmente especifique argumentos en el objeto de opciones. +Para rastrear una llamada a una herramienta, especifica el tipo de tramo como `tool`, y opcionalmente especifica argumentos en el objeto de opciones. {{% collapse-content title="Argumentos" level="h4" expanded=false id="tool-span-arguments" %}} `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `sessionId` : opcional - _cadena_ -
El ID de la sesión de usuario subyacente. Consulte [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulta [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. `mlApp` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-11} {{< code-block lang="javascript" >}} function callWeatherApi () { @@ -908,23 +926,23 @@ LLMObs.startToolSpan(spanName, mlApp, sessionID); {{% collapse-content title="Argumentos" level="h4" expanded=false id="tool-span-arguments" %}} `spanName` -: opcional - _Cadena_ -
El nombre de la operación. Si no se proporciona, `spanName` se establece en el nombre de la función rastreada. +: opcional - _cadena_ +
El nombre de la operación. Si no se proporciona, `spanName` se establece de forma predeterminada en el nombre de la función rastreada. `mlApp` -: opcional - _Cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación de ML proporcionado al inicio de la aplicación. Vea [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +: opcional - _cadena_ +
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo sobrescribe el nombre de la aplicación de ML suministrado al inicio de la aplicación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. `sessionId` -: opcional - _Cadena_ -
El ID de la sesión de usuario subyacente. Vea [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +: opcional - _cadena_ +
El ID de la sesión de usuario subyacente. Consulta [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. {{% /collapse-content %}} {{% /tab %}} {{< /tabs >}} -### Tareas +### Tareas {#tasks} {{< tabs >}} {{% tab "Python" %}} @@ -933,20 +951,20 @@ Para rastrear un tramo de tarea, utiliza el decorador de función `LLMObs.task() {{% collapse-content title="Argumentos" level="h4" expanded=false id="task-span-arguments" %}} `name` -: opcional - _Cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece en el nombre de la función rastreada. +: opcional - _cadena_ +
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. `session_id` -: opcional - _Cadena_ -
El ID de la sesión de usuario subyacente. Vea [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. +: opcional - _cadena_ +
El ID de la sesión de usuario subyacente. Consulta [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. `ml_app` -: opcional - _Cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +: opcional - _cadena_ +
El nombre de la aplicación de ML a la que pertenece la operación. Consulta [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-12} {{< code-block lang="python" >}} from ddtrace.llmobs.decorators import task @@ -966,19 +984,19 @@ Para rastrear un tramo de tarea, especifique el tipo de tramo como `task`, y opc `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece por defecto en el nombre de la función rastreada. `sessionId` : opcional - _cadena_ -
El ID de la sesión de usuario subyacente. Consulte [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulte [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. `mlApp` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Seguimiento de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-13} {{< code-block lang="javascript" >}} function sanitizeInput () { @@ -990,7 +1008,7 @@ sanitizeInput = llmobs.wrap({ kind: 'task' }, sanitizeInput) {{% /tab %}} {{% tab "Java" %}} -Para rastrear un tramo de tarea, importe y llame al siguiente método con los argumentos que se enumeran a continuación: +Para rastrear un tramo de tarea, importe y llame al siguiente método con los argumentos listados a continuación: ```java import datadog.trace.api.llmobs.LLMObs; @@ -1000,16 +1018,16 @@ LLMObs.startTaskSpan(spanName, mlApp, sessionID); {{% collapse-content title="Argumentos" level="h4" expanded=false id="task-span-arguments" %}} `spanName` -: opcional - _Cadena_ -
El nombre de la operación. Si no se proporciona, `spanName` se establece de forma predeterminada en el nombre de la función rastreada. +: opcional - _cadena_ +
El nombre de la operación. Si no se proporciona, `spanName` se establece por defecto en el nombre de la función rastreada. `mlApp` -: opcional - _Cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación de ML suministrado al inicio de la aplicación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +: opcional - _cadena_ +
El nombre de la aplicación de ML a la que pertenece la operación. Proporcionar un valor no nulo anula el nombre de la aplicación ML suministrado al inicio de la aplicación. Proporcionar un valor no nulo anula el nombre de la aplicación ML suministrado al inicio de la aplicación. Consulte [Seguimiento de múltiples aplicaciones](#tracing-multiple-applications) para más información. `sessionId` -: opcional - _Cadena_ -
El ID de la sesión de usuario subyacente. Consulte [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. +: opcional - _cadena_ +
El ID de la sesión de usuario subyacente. Consulte [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. {{% /collapse-content %}} @@ -1017,13 +1035,13 @@ LLMObs.startTaskSpan(spanName, mlApp, sessionID); {{% /tab %}} {{< /tabs >}} -### Embeddings +### Incrustaciones {#embeddings} {{< tabs >}} {{% tab "Python" %}} -Para rastrear una operación de embedding, use el decorador de función `LLMObs.embedding()`. +Para rastrear una operación de incrustación, utilice el decorador de función `LLMObs.embedding()`. -**Nota**: Anotar la entrada de un tramo de embedding requiere un formato diferente al de otros tipos de tramo. Consulte [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar entradas de embedding. +**Nota**: Anotar la entrada de un tramo de incrustación requiere un formato diferente al de otros tipos de tramos. Consulte [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar entradas de incrustación. {{% collapse-content title="Argumentos" level="h4" expanded=false id="embedding-span-arguments" %}} @@ -1040,7 +1058,7 @@ Para rastrear una operación de embedding, use el decorador de función `LLMObs. `session_id` : opcional - _cadena_ -
El ID de la sesión de usuario subyacente. Consulte [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulte [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. `ml_app` : opcional - _cadena_ @@ -1048,7 +1066,7 @@ Para rastrear una operación de embedding, use el decorador de función `LLMObs. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-14} {{< code-block lang="python" >}} from ddtrace.llmobs.decorators import embedding @@ -1062,9 +1080,9 @@ def perform_embedding(): {{% /tab %}} {{% tab "Node.js" %}} -Para rastrear una operación de embedding, especifique el tipo de tramo como `embedding`, y opcionalmente especifique argumentos en el objeto de opciones. +Para rastrear una operación de incrustación, especifique el tipo de tramo como `embedding`, y opcionalmente especifique argumentos en el objeto de opciones. -**Nota**: Anotar la entrada de un tramo de embedding requiere un formato diferente al de otros tipos de tramo. Consulte [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar entradas de embedding. +**Nota**: Anotar la entrada de un tramo de incrustación requiere un formato diferente al de otros tipos de tramos. Consulte [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar entradas de incrustación. {{% collapse-content title="Argumentos" level="h4" expanded=false id="embedding-span-arguments" %}} @@ -1082,15 +1100,15 @@ Para rastrear una operación de embedding, especifique el tipo de tramo como `em `sessionId` : opcional - _cadena_ -
El ID de la sesión de usuario subyacente. Consulte [Rastreo de sesiones de usuario](#tracking-user-sessions) para más información. +
El ID de la sesión de usuario subyacente. Consulte [Seguimiento de sesiones de usuario](#tracking-user-sessions) para más información. `mlApp` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Seguimiento de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-15} {{< code-block lang="javascript" >}} function performEmbedding () { @@ -1104,19 +1122,19 @@ performEmbedding = llmobs.wrap({ kind: 'embedding', modelName: 'text-embedding-3 {{% /tab %}} {{< /tabs >}} -### Recuperaciones +### Recuperaciones {#retrievals} {{< tabs >}} {{% tab "Python" %}} Para rastrear un tramo de recuperación, use el decorador de función `ddtrace.llmobs.decorators.retrieval()`. -**Nota**: Anotar la salida de un tramo de recuperación requiere un formato diferente al de otros tipos de tramo. Vea [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar salidas de recuperación. +**Nota**: Anotar la salida de un tramo de recuperación requiere un formato diferente al de otros tipos de tramos. Consulte [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar salidas de recuperación. {{% collapse-content title="Argumentos" level="h4" expanded=false id="retrieval-span-arguments" %}} `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece por defecto en el nombre de la función rastreada. `session_id` : opcional - _cadena_ @@ -1124,11 +1142,11 @@ Para rastrear un tramo de recuperación, use el decorador de función `ddtrace.l `ml_app` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Seguimiento de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-16} {{< code-block lang="python" >}} from ddtrace.llmobs.decorators import retrieval @@ -1151,13 +1169,13 @@ def get_relevant_docs(question): Para rastrear un tramo de recuperación, especifique el tipo de tramo como `retrieval`, y opcionalmente especifique los siguientes argumentos en el objeto de opciones. -**Nota**: Anotar la salida de un tramo de recuperación requiere un formato diferente al de otros tipos de tramo. Consulte [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar salidas de recuperación. +**Nota**: Anotar la salida de un tramo de recuperación requiere un formato diferente al de otros tipos de tramos. Consulte [Enriqueciendo tramos](#enriching-spans) para más detalles sobre cómo especificar salidas de recuperación. {{% collapse-content title="Argumentos" level="h4" expanded=false id="retrieval-span-arguments" %}} `name` : opcional - _cadena_ -
El nombre de la operación. Si no se proporciona, `name` se establece de forma predeterminada en el nombre de la función rastreada. +
El nombre de la operación. Si no se proporciona, `name` se establece por defecto en el nombre de la función rastreada. `sessionId` : opcional - _cadena_ @@ -1165,13 +1183,13 @@ Para rastrear un tramo de recuperación, especifique el tipo de tramo como `retr `mlApp` : opcional - _cadena_ -
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Rastreo de múltiples aplicaciones](#tracing-multiple-applications) para más información. +
El nombre de la aplicación de ML a la que pertenece la operación. Consulte [Seguimiento de múltiples aplicaciones](#tracing-multiple-applications) para más información. {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-17} -Lo siguiente también incluye un ejemplo de anotación de un tramo. Consulte [Enriqueciendo tramos](#enriching-spans) para más información. +A continuación se incluye también un ejemplo de cómo anotar un tramo. Consulte [Enriqueciendo tramos](#enriching-spans) para más información. {{< code-block lang="javascript" >}} function getRelevantDocs (question) { @@ -1193,7 +1211,7 @@ getRelevantDocs = llmobs.wrap({ kind: 'retrieval' }, getRelevantDocs) {{% /tab %}} {{< /tabs >}} -## Anidando tramos +## Anidando tramos {#nesting-spans} Iniciar un nuevo tramo antes de que el tramo actual haya terminado traza automáticamente una relación padre-hijo entre los dos tramos. El tramo padre representa la operación más grande, mientras que el tramo hijo representa una suboperación más pequeña anidada dentro de ella. @@ -1257,10 +1275,10 @@ public class MyJavaClass { {{< /tabs >}} -## Enriqueciendo tramos +## Enriqueciendo tramos {#enriching-spans}
-El parámetro métricas aquí se refiere a valores numéricos adjuntos como atributos en tramos individuales — no métricas de la plataforma Datadog. Para ciertas claves reconocidas como input_tokens, output_tokens, y total_tokens, Datadog utiliza estos atributos de tramo para generar métricas de plataforma correspondientes (como ml_obs.span.llm.input.tokens) para su uso en tableros y seguimientos. +El metrics parámetro aquí se refiere a valores numéricos adjuntos como atributos en tramos individuales — no métricas de la plataforma Datadog. Para ciertas claves reconocidas como input_tokens, output_tokens, y total_tokens, Datadog utiliza estos atributos de span para generar métricas de plataforma correspondientes (como ml_obs.span.llm.input.tokens) para su uso en tableros y monitores.
{{< tabs >}} @@ -1272,36 +1290,36 @@ El método `LLMObs.annotate()` acepta los siguientes argumentos: {{% collapse-content title="Argumentos" level="h4" expanded=false id="annotating-span-arguments" %}} `span` -: opcional - _Tramo_ - **predeterminado**: el tramo activo actual -
El tramo a anotar. Si `span` no se proporciona (como cuando se utilizan decoradores de función), el SDK anota el tramo activo actual. +: opcional - _tramo_ - **predeterminado**: el tramo activo actual +
El tramo a anotar. Si `span` no se proporciona (como al usar decoradores de función), el SDK anota el tramo activo actual. `input_data` -: opcional - _tipo serializable de JSON o lista de diccionarios_ -
Ya sea un tipo serializable de JSON (para tramos que no son LLM) o una lista de diccionarios con este formato: `{"content": "...", "role": "...", "tool_calls": ..., "tool_results": ...}`, donde `"tool_calls"` son una lista opcional de diccionarios de llamadas a herramientas con claves requeridas: `"name"`, `"arguments"`, y claves opcionales: `"tool_id"`, `"type"`, y `"tool_results"` son una lista opcional de diccionarios de resultados de herramientas con clave requerida: `"result"`, y claves opcionales: `"name"`, `"tool_id"`, `"type"` para escenarios de llamadas a funciones. **Nota**: Los tramos de incrustación son un caso especial y requieren una cadena o un diccionario (o una lista de diccionarios) con este formato: `{"text": "..."}`. +: opcional - _tipo serializable en JSON o lista de diccionarios_ +
Ya sea un tipo serializable en JSON (para tramos que no son LLM) o una lista de diccionarios con este formato: `{"content": "...", "role": "...", "tool_calls": ..., "tool_results": ...}`, donde `"tool_calls"` son una lista opcional de diccionarios de llamadas a herramientas con claves requeridas: `"name"`, `"arguments"`, y claves opcionales: `"tool_id"`, `"type"`, y `"tool_results"` son una lista opcional de diccionarios de resultados de herramientas con clave requerida: `"result"`, y claves opcionales: `"name"`, `"tool_id"`, `"type"` para escenarios de llamadas a funciones. **Nota**: Los tramos de incrustación son un caso especial y requieren una cadena o un diccionario (o una lista de diccionarios) con este formato: `{"text": "..."}`. `output_data` -: opcional - _tipo serializable de JSON o lista de diccionarios_ -
Ya sea un tipo serializable de JSON (para tramos que no son LLM) o una lista de diccionarios con este formato: `{"content": "...", "role": "...", "tool_calls": ...}`, donde `"tool_calls"` son una lista opcional de diccionarios de llamadas a herramientas con claves requeridas: `"name"`, `"arguments"`, y claves opcionales: `"tool_id"`, `"type"` para escenarios de llamadas a funciones. **Nota**: Los tramos de recuperación son un caso especial y requieren una cadena o un diccionario (o una lista de diccionarios) con este formato: `{"text": "...", "name": "...", "score": float, "id": "..."}`. +: opcional - _tipo serializable en JSON o lista de diccionarios_ +
Ya sea un tipo serializable en JSON (para tramos que no son LLM) o una lista de diccionarios con este formato: `{"content": "...", "role": "...", "tool_calls": ...}`, donde `"tool_calls"` son una lista opcional de diccionarios de llamadas a herramientas con claves requeridas: `"name"`, `"arguments"`, y claves opcionales: `"tool_id"`, `"type"` para escenarios de llamadas a funciones. **Nota**: Los tramos de recuperación son un caso especial y requieren una cadena o un diccionario (o una lista de diccionarios) con este formato: `{"text": "...", "name": "...", "score": float, "id": "..."}`. `tool_definitions` : opcional - _lista de diccionarios_ -
Lista de diccionarios de definición de herramientas para escenarios de llamadas a funciones. Cada definición de herramienta debe tener una clave `"name": "..."` requerida y claves opcionales `"description": "..."` y `"schema": {...}`. +
Lista de diccionarios de definición de herramientas para escenarios de llamadas a funciones. Cada definición de herramienta debe tener una clave requerida `"name": "..."` y claves opcionales `"description": "..."` y `"schema": {...}`. `metadata` : opcional - _diccionario_ -
Un diccionario de pares clave-valor serializables de JSON que los usuarios pueden agregar como información de metadatos relevante para la operación de entrada o salida descrita por el tramo (`model_temperature`, `max_tokens`, `top_k`, etc.). +
Un diccionario de pares clave-valor serializables en JSON que los usuarios pueden agregar como información de metadatos relevante a la operación de entrada o salida descrita por el tramo (`model_temperature`, `max_tokens`, `top_k`, etc.). `metrics` : opcional - _diccionario_ -
Un diccionario de claves serializables de JSON y valores numéricos que los usuarios pueden agregar como métricas relevantes para la operación descrita por el tramo (`input_tokens`, `output_tokens`, `total_tokens`, `time_to_first_token`, etc.). La unidad para `time_to_first_token` está en segundos, similar a la métrica `duration` que se emite por defecto. +
Un diccionario de claves serializables en JSON y valores numéricos que los usuarios pueden agregar como métricas relevantes a la operación descrita por el tramo (`input_tokens`, `output_tokens`, `total_tokens`, `time_to_first_token`, etc.). La unidad para `time_to_first_token` está en segundos, similar a la métrica `duration` que se emite por defecto. `tags` : opcional - _diccionario_ -
Un diccionario de pares clave-valor serializables en JSON que los usuarios pueden agregar como etiquetas en el tramo. Ejemplos de claves: `session`, `env`, `system` y `version`. Para más información sobre etiquetas, consulte [Introducción a las Etiquetas](/getting_started/tagging/). +
Un diccionario de pares clave-valor serializables en JSON que los usuarios pueden agregar como etiquetas en el tramo. Ejemplos de claves: `session`, `env`, `system`, y `version`. Para más información sobre etiquetas, consulte [Introducción a las Etiquetas](/getting_started/tagging/). {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-18} {{< code-block lang="python" >}} from ddtrace.llmobs import LLMObs @@ -1364,22 +1382,22 @@ El método `LLMObs.annotate()` acepta los siguientes argumentos: {{% collapse-content title="Argumentos" level="h4" expanded=false id="annotating-span-arguments" %}} `span` -: opcional - _Tramo_ - **predeterminado**: el tramo activo actual -
El tramo a anotar. Si `span` no se proporciona (como al usar envolturas de función), el SDK anota el tramo activo actual. +: opcional - _tramo_ - **predeterminado**: el tramo activo actual +
El tramo a anotar. Si `span` no se proporciona (como al usar envolturas de funciones), el SDK anota el tramo activo actual. `annotationOptions` : requerido - _objeto_
Un objeto de diferentes tipos de datos para anotar el tramo. -El `annotationOptions` objeto puede contener lo siguiente: +El objeto `annotationOptions` puede contener lo siguiente: `inputData` : opcional - _tipo serializable en JSON o lista de objetos_ -
Ya sea un tipo serializable en JSON (para tramos no LLM) o una lista de diccionarios con este formato: `{role: "...", content: "..."}` (para tramos LLM). **Nota**: Los tramos de incrustación son un caso especial y requieren una cadena o un objeto (o una lista de objetos) con este formato: `{text: "..."}`. +
Ya sea un tipo serializable en JSON (para tramos que no son LLM) o una lista de diccionarios con este formato: `{role: "...", contenido: "..."}` (para tramos LLM). **Nota**: Los tramos de incrustación son un caso especial y requieren una cadena o un objeto (o una lista de objetos) con este formato: `{text: "..."}`. `outputData` : opcional - _tipo serializable en JSON o lista de objetos_ -
Ya sea un tipo serializable en JSON (para tramos no LLM) o una lista de objetos con este formato: `{role: "...", content: "..."}` (para tramos LLM). **Nota**: Los tramos de recuperación son un caso especial y requieren una cadena o un objeto (o una lista de objetos) con este formato: `{text: "...", name: "...", score: number, id: "..."}`. +
Ya sea un tipo serializable en JSON (para tramos que no son LLM) o una lista de objetos con este formato: `{role: "...", content: "..."}` (para tramos LLM). **Nota**: Los tramos de recuperación son un caso especial y requieren una cadena o un objeto (o una lista de objetos) con este formato: `{text: "...", name: "...", score: number, id: "..."}`. `metadata` : opcional - _objeto_ @@ -1387,7 +1405,7 @@ El `annotationOptions` objeto puede contener lo siguiente: `metrics` : opcional - _objeto_ -
Un objeto de claves serializables en JSON y valores numéricos que los usuarios pueden agregar como métricas relevantes a la operación descrita por el tramo (`input_tokens`, `output_tokens`, `total_tokens`, etc.). +
Un objeto de claves serializables en JSON y valores numéricos que los usuarios pueden agregar como métricas relevantes para la operación descrita por el tramo (`input_tokens`, `output_tokens`, `total_tokens`, etc.). `tags` : opcional - _objeto_ @@ -1395,7 +1413,7 @@ El `annotationOptions` objeto puede contener lo siguiente: {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-19} {{< code-block lang="javascript" >}} function llmCall (prompt) { @@ -1452,24 +1470,24 @@ similaritySearch = llmobs.wrap({ kind: 'retrieval', name: 'getRelevantDocs' }, s {{% tab "Java" %}} El SDK proporciona varios métodos para anotar tramos con entradas, salidas, métricas y metadatos. -### Anotando entradas y salidas +### Anotando entradas y salidas {#annotating-inputs-and-outputs} -Utilice el método miembro `annotateIO()` de la interfaz `LLMObsSpan` para agregar datos de entrada y salida estructurados a un `LLMObsSpan`. Esto incluye argumentos opcionales y objetos de mensaje LLM. +Utilice el método miembro `annotateIO()` de la interfaz `LLMObsSpan` para agregar datos de entrada y salida estructurados a un `LLMObsSpan`. Esto incluye argumentos opcionales y objetos de mensaje de LLM. -#### Argumentos +#### Argumentos {#arguments} -Si un argumento es nulo o vacío, no sucede nada. Por ejemplo, si `inputData` es una cadena no vacía mientras que `outputData` es nulo, entonces solo se registra `inputData`. +Si un argumento es nulo o está vacío, no sucede nada. Por ejemplo, si `inputData` es una cadena no vacía mientras que `outputData` es nulo, entonces solo se registra `inputData`. `inputData` : opcional - _Cadena_ o _Lista_ -
Ya sea una cadena (para tramos no LLM) o una lista de `LLMObs.LLMMessage`s para tramos LLM. +
Ya sea una cadena (para tramos que no son LLM) o una lista de `LLMObs.LLMMessage`s para tramos LLM. `outputData` : opcional - _Cadena_ o _Lista_ -
Ya sea una cadena (para tramos no LLM) o una lista de `LLMObs.LLMMessage`s para tramos LLM. +
Ya sea una cadena (para tramos que no son LLM) o una lista de `LLMObs.LLMMessage`s para tramos LLM. -#### Mensajes LLM -Los tramos de LLM deben ser anotados con Mensajes LLM usando el objeto `LLMObs.LLMMessage`. +#### Mensajes LLM {#llm-messages} +Los tramos LLM deben ser anotados con mensajes LLM utilizando el objeto `LLMObs.LLMMessage`. El objeto `LLMObs.LLMMessage` puede ser instanciado llamando a `LLMObs.LLMMessage.from()` con los siguientes argumentos: @@ -1481,7 +1499,7 @@ El objeto `LLMObs.LLMMessage` puede ser instanciado llamando a `LLMObs.LLMMessag : requerido - _Cadena_
Una cadena que contiene el contenido del mensaje. -#### Ejemplo +#### Ejemplo {#example-20} ```java import datadog.trace.api.llmobs.LLMObs; @@ -1506,33 +1524,33 @@ public class MyJavaClass { } ``` -### Agregando métricas +### Agregando métricas {#adding-metrics} -#### Agregar métricas en bloque +#### Agregar métricas en bloque {#bulk-add-metrics} El método miembro `setMetrics()` de la interfaz `LLMObsSpan` acepta los siguientes argumentos para adjuntar múltiples métricas en bloque: -##### Argumentos +##### Argumentos {#arguments-1} `metrics` : requerido - _Mapa_
Un mapa de claves serializables en JSON y valores numéricos que los usuarios pueden agregar para registrar métricas relevantes a la operación descrita por el tramo (por ejemplo, `input_tokens`, `output_tokens` o `total_tokens`). -#### Agregar una sola métrica +#### Agregar una métrica única {#add-a-single-metric} -El método miembro `setMetric()` de la interfaz `LLMObsSpan` acepta los siguientes argumentos para adjuntar una sola métrica: +El método miembro `setMetric()` de la interfaz `LLMObsSpan` acepta los siguientes argumentos para adjuntar una métrica única: -##### Argumentos +##### Argumentos {#arguments-2} `key` -: requerido - _Secuencia de caracteres_ +: requerido - _ CharSequence_
El nombre de la métrica. `value` : requerido - _int_, _long_, o _double_
El valor de la métrica. -#### Ejemplos +#### Ejemplos {#examples} ```java import datadog.trace.api.llmobs.LLMObs; @@ -1554,35 +1572,35 @@ public class MyJavaClass { } ``` -### Agregando etiquetas +### Agregando etiquetas {#adding-tags} Para más información sobre etiquetas, consulte [Introducción a las Etiquetas][1]. -#### Agregar etiquetas en bloque +#### Agregar etiquetas en bloque {#bulk-add-tags} El método miembro `setTags()` de la interfaz `LLMObsSpan` acepta los siguientes argumentos para adjuntar múltiples etiquetas en bloque: -##### Argumentos +##### Argumentos {#arguments-3} `tags` -: requerido - _Mapa_ -
Un mapa de pares clave-valor serializables en JSON que los usuarios pueden agregar como etiquetas para describir el contexto del tramo (por ejemplo, `session`, `environment`, `system`, o `version`). +: requerido - _ Map_ +
Un mapa de pares clave-valor serializables en JSON que los usuarios pueden agregar como etiquetas para describir el contexto del tramo (por ejemplo, `session`, `environment`, `system` o `version`). -#### Agregar una sola etiqueta +#### Agregar una etiqueta única {#add-a-single-tag} -El método miembro `setTag()` de la interfaz `LLMObsSpan` acepta los siguientes argumentos para adjuntar una sola etiqueta: +El método miembro `setTag()` de la interfaz `LLMObsSpan` acepta los siguientes argumentos para adjuntar una etiqueta única: -##### Argumentos +##### Argumentos {#arguments-4} `key` : requerido - _Cadena_
La clave de la etiqueta. `value` -: requerido - _int_, _long_, _double_, _boolean_, o _Cadena_ +: requerido - _int_, _long_, _doble_, _booleano_, o _Cadena_
El valor de la etiqueta. -#### Ejemplos +#### Ejemplos {#examples-1} ```java import datadog.trace.api.llmobs.LLMObs; @@ -1602,39 +1620,39 @@ public class MyJavaClass { } ``` -### Anotando errores +### Anotando errores {#annotating-errors} -#### Agregando un Throwable (recomendado) +#### Agregando un Throwable (recomendado) {#adding-a-throwable-recommended} El método miembro `addThrowable()` de la interfaz `LLMObsSpan` acepta el siguiente argumento para adjuntar un throwable con una traza de pila: -##### Argumentos +##### Argumentos {#arguments-5} `throwable` : requerido - _Throwable_
El throwable/excepción que ocurrió. -#### Agregando un mensaje de error +#### Agregando un mensaje de error {#adding-an-error-message} -El método miembro `setErrorMessage()` de la interfaz `LLMObsSpan` acepta el siguiente argumento para adjuntar una cadena de error: +El `setErrorMessage()` método miembro de la `LLMObsSpan` interfaz acepta el siguiente argumento para adjuntar una cadena de error: -##### Argumentos +##### Argumentos {#arguments-6} `errorMessage` : requerido - _Cadena_
El mensaje del error. -#### Estableciendo una bandera de error +#### Estableciendo una bandera de error {#setting-an-error-flag} -El método miembro `setError()` de la interfaz `LLMObsSpan` acepta el siguiente argumento para indicar un error con la operación: +El `setError()` método miembro de la `LLMObsSpan` interfaz acepta el siguiente argumento para indicar un error con la operación: -##### Argumentos +##### Argumentos {#arguments-7} `error` -: requerido - _boolean_ +: requerido - _booleano_
`true` si el tramo tuvo un error. -#### Ejemplos +#### Ejemplos {#examples-2} ```java import datadog.trace.api.llmobs.LLMObs; @@ -1656,15 +1674,15 @@ public class MyJavaClass { } ``` -### Anotando metadatos +### Anotando metadatos {#annotating-metadata} -El método miembro `setMetadata()` de la interfaz `LLMObsSpan` acepta los siguientes argumentos: +El método `setMetadata()` miembro de la interfaz `LLMObsSpan` acepta los siguientes argumentos: `metadata` -: requerido - _Mapa_ +: requerido - _Map_
Un mapa de pares clave-valor serializables en JSON que contiene metadatos relevantes para la operación de entrada o salida descrita por el tramo. -#### Ejemplo +#### Ejemplo {#example-21} ```java import datadog.trace.api.llmobs.LLMObs; @@ -1689,7 +1707,7 @@ public class MyJavaClass { {{% /tab %}} {{< /tabs >}} -### Anotando tramos auto-instrumentados +### Anotando tramos auto-instrumentados {#annotating-auto-instrumented-spans} {{< tabs >}} {{% tab "Python" %}} @@ -1702,19 +1720,19 @@ El método `LLMObs.annotation_context()` acepta los siguientes argumentos: `name` : opcional - _str_ -
Nombre que anula el nombre del tramo para cualquier tramo auto-instrumentado que se inicie dentro del contexto de anotación. +
Nombre que reemplaza el nombre del tramo para cualquier tramo auto-instrumentado que se inicie dentro del contexto de anotación. `prompt` : opcional - _diccionario_ -
Un diccionario que representa el prompt utilizado para una llamada a LLM. Consulte la documentación del [Objeto Prompt](#prompt-tracking-arguments) para el esquema completo y las claves admitidas. También puede importar el `Prompt` objeto de `ddtrace.llmobs.utils` y pasarlo como el argumento `prompt`. **Nota**: Este argumento solo se aplica a los tramos de LLM. +
Un diccionario que representa el prompt utilizado para una llamada a LLM. Consulte la documentación del objeto [Prompt](#prompt-tracking-arguments) para el esquema completo y las claves admitidas. También puede importar el objeto `Prompt` de `ddtrace.llmobs.utils` y pasarlo como el argumento `prompt`. **Nota**: Este argumento solo se aplica a los tramos LLM. `tags` : opcional - _diccionario_ -
Un diccionario de pares clave-valor serializables en JSON que los usuarios pueden agregar como etiquetas en el tramo. Ejemplos de claves: `session`, `env`, `system` y `version`. Para más información sobre etiquetas, consulte [Introducción a las Etiquetas](/getting_started/tagging/). +
Un diccionario de pares clave-valor serializables en JSON que los usuarios pueden agregar como etiquetas en el tramo. Ejemplos de claves: `session`, `env`, `system` y `version`. Para más información sobre las etiquetas, consulte [Introducción a las Etiquetas](/getting_started/tagging/). {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-22} {{< code-block lang="python" >}} from ddtrace.llmobs import LLMObs @@ -1756,7 +1774,7 @@ El método `llmobs.annotationContext()` acepta las siguientes opciones en el pri `name` : opcional - _str_ -
Nombre que anula el nombre del tramo para cualquier tramo auto-instrumentado que se inicie dentro del contexto de anotación. +
Nombre que reemplaza el nombre del tramo para cualquier tramo auto-instrumentado que se inicie dentro del contexto de anotación. `tags` : opcional - _objeto_ @@ -1764,7 +1782,7 @@ El método `llmobs.annotationContext()` acepta las siguientes opciones en el pri {{% /collapse-content %}} -#### Ejemplo +#### Ejemplo {#example-23} {{< code-block lang="javascript" >}} const { llmobs } = require('dd-trace'); @@ -1788,15 +1806,15 @@ function ragWorkflow(userQuestion) { {{% /tab %}} {{< /tabs >}} -## Seguimiento de prompt +## Seguimiento de prompts {#prompt-tracking} -Adjunte metadatos estructurados del prompt al tramo de LLM para que pueda reproducir resultados, auditar cambios y comparar el rendimiento del prompt entre versiones. Al usar plantillas, LLM Observability también proporciona [seguimiento de versiones](#version-tracking) basado en cambios en el contenido de la plantilla. +Adjunte metadatos estructurados del prompt al tramo del LLM para que pueda reproducir resultados, auditar cambios y comparar el rendimiento del prompt entre versiones. Al usar plantillas, la Observabilidad del LLM también proporciona [seguimiento de versiones](#version-tracking) basado en cambios en el contenido de la plantilla. {{< tabs >}} {{% tab "Python" %}} -Utilice `LLMObs.annotation_context(prompt=...)` para adjuntar metadatos de prompt antes de la llamada al LLM. Para más detalles sobre la anotación de tramos, consulte [Enriqueciendo tramos](#enriching-spans). +Utilice `LLMObs.annotation_context(prompt=...)` para adjuntar metadatos del prompt antes de la llamada al LLM. Para más detalles sobre la anotación de tramos, consulte [Enriqueciendo tramos](#enriching-spans). -#### Argumentos +#### Argumentos {#arguments-8} {{% collapse-content title="Argumentos" level="h4" expanded=false id="prompt-tracking-arguments" %}} @@ -1811,17 +1829,17 @@ Utilice `LLMObs.annotation_context(prompt=...)` para adjuntar metadatos de promp Claves soportadas: - `id` (str): Identificador lógico para este prompt. Debería ser único por `ml_app`. Por defecto es `{ml_app}-unnamed_prompt` -- `version` (str): Etiqueta de versión para el prompt (por ejemplo, "1.0.0"). Consulte [seguimiento de versiones](#version-tracking) para más detalles. -- `variables` (Dict[str, str]): Variables utilizadas para poblar los marcadores de posición de la plantilla. -- `template` (str): Cadena de plantilla con marcadores de posición (por ejemplo, `"Traducir {{text}} a {{lang}}"`). -- `chat_template` (Lista[Mensaje]): Formato de plantilla de múltiples mensajes. Proporcione una lista de `{ "role": "", "content": "