diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml index b9980614b2e..416ae007782 100644 --- a/config/_default/menus/api.en.yaml +++ b/config/_default/menus/api.en.yaml @@ -11743,6 +11743,42 @@ menu: url: /api/latest/feature-flags/ identifier: feature-flags generated: true + - name: Update a variant + url: /api/latest/feature-flags/update-a-variant/ + identifier: feature-flags-update-a-variant + parent: feature-flags + generated: true + params: + versions: + - v2 + operationids: + - UpdateVariantForFeatureFlag + unstable: [] + order: 21 + - name: Delete a variant + url: /api/latest/feature-flags/delete-a-variant/ + identifier: feature-flags-delete-a-variant + parent: feature-flags + generated: true + params: + versions: + - v2 + operationids: + - DeleteVariantFromFeatureFlag + unstable: [] + order: 20 + - name: Add a variant to a feature flag + url: /api/latest/feature-flags/add-a-variant-to-a-feature-flag/ + identifier: feature-flags-add-a-variant-to-a-feature-flag + parent: feature-flags + generated: true + params: + versions: + - v2 + operationids: + - CreateVariantForFeatureFlag + unstable: [] + order: 22 - name: Unarchive a feature flag url: /api/latest/feature-flags/unarchive-a-feature-flag/ identifier: feature-flags-unarchive-a-feature-flag diff --git a/content/en/api/latest/feature-flags/add-a-variant-to-a-feature-flag/index.md b/content/en/api/latest/feature-flags/add-a-variant-to-a-feature-flag/index.md new file mode 100644 index 00000000000..b8c135c5cb0 --- /dev/null +++ b/content/en/api/latest/feature-flags/add-a-variant-to-a-feature-flag/index.md @@ -0,0 +1,3 @@ +--- +title: Add a variant to a feature flag +--- diff --git a/content/en/api/latest/feature-flags/delete-a-variant/index.md b/content/en/api/latest/feature-flags/delete-a-variant/index.md new file mode 100644 index 00000000000..8305ed98d58 --- /dev/null +++ b/content/en/api/latest/feature-flags/delete-a-variant/index.md @@ -0,0 +1,3 @@ +--- +title: Delete a variant +--- diff --git a/content/en/api/latest/feature-flags/update-a-variant/index.md b/content/en/api/latest/feature-flags/update-a-variant/index.md new file mode 100644 index 00000000000..183f9b5a9e5 --- /dev/null +++ b/content/en/api/latest/feature-flags/update-a-variant/index.md @@ -0,0 +1,3 @@ +--- +title: Update a variant +--- diff --git a/content/en/api/v2/feature-flags/examples.json b/content/en/api/v2/feature-flags/examples.json index 4e8eaa5fe0e..bca8903e365 100644 --- a/content/en/api/v2/feature-flags/examples.json +++ b/content/en/api/v2/feature-flags/examples.json @@ -2104,5 +2104,185 @@ "json": {}, "html": "" } + }, + "CreateVariantForFeatureFlag": { + "responses": { + "201": { + "json": { + "created_at": "2023-01-01T00:00:00Z", + "id": "550e8400-e29b-41d4-a716-446655440002", + "key": "variant-abc123", + "name": "Variant ABC123", + "updated_at": "2023-01-01T00:00:00Z", + "value": "true" + }, + "html": "
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

The timestamp when the variant was created.

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

id [required]

\n
\n

uuid

\n

The unique identifier of the variant.

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

key [required]

\n
\n

string

\n

The unique key of the variant.

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

name [required]

\n
\n

string

\n

The name of the variant.

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

updated_at

\n
\n

date-time

\n

The timestamp when the variant was last updated.

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

value [required]

\n
\n

string

\n

The value of the variant as a string.

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

errors [required]

\n
\n

[string]

\n

A list of errors.

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

errors [required]

\n
\n

[string]

\n

A list of errors.

\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
" + }, + "409": { + "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": { + "key": "variant-abc123", + "name": "Variant ABC123", + "value": "true" + }, + "json": { + "key": "variant-abc123", + "name": "Variant ABC123", + "value": "true" + }, + "html": "
\n
\n
\n
\n

key [required]

\n
\n

string

\n

The unique key of the variant.

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

name [required]

\n
\n

string

\n

The name of the variant.

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

value [required]

\n
\n

string

\n

The value of the variant as a string.

\n
\n \n
\n
" + } + }, + "DeleteVariantFromFeatureFlag": { + "responses": { + "400": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

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

errors [required]

\n
\n

[string]

\n

A list of errors.

\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
" + }, + "409": { + "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": "" + } + }, + "UpdateVariantForFeatureFlag": { + "responses": { + "200": { + "json": { + "created_at": "2023-01-01T00:00:00Z", + "id": "550e8400-e29b-41d4-a716-446655440002", + "key": "variant-abc123", + "name": "Variant ABC123", + "updated_at": "2023-01-01T00:00:00Z", + "value": "true" + }, + "html": "
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

The timestamp when the variant was created.

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

id [required]

\n
\n

uuid

\n

The unique identifier of the variant.

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

key [required]

\n
\n

string

\n

The unique key of the variant.

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

name [required]

\n
\n

string

\n

The name of the variant.

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

updated_at

\n
\n

date-time

\n

The timestamp when the variant was last updated.

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

value [required]

\n
\n

string

\n

The value of the variant as a string.

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

errors [required]

\n
\n

[string]

\n

A list of errors.

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

errors [required]

\n
\n

[string]

\n

A list of errors.

\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
" + }, + "409": { + "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": { + "name": "Variant ABC123 Updated", + "value": "new_value" + }, + "html": "
\n
\n
\n
\n

name

\n
\n

string

\n

The display name of the variant.

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

value

\n
\n

string

\n

The value of the variant as a string.

\n
\n \n
\n
" + } } } \ No newline at end of file diff --git a/content/en/continuous_integration/pipelines/automatic_retries.md b/content/en/continuous_integration/pipelines/automatic_retries.md index dfe332b48ba..95c122027fe 100644 --- a/content/en/continuous_integration/pipelines/automatic_retries.md +++ b/content/en/continuous_integration/pipelines/automatic_retries.md @@ -36,6 +36,7 @@ When a job in your CI pipeline fails: To use automatic job retries: - CI Visibility must be enabled for your [GitHub Actions][1] or [GitLab][2] integration. +- For GitHub Actions, the [Datadog GitHub App][8] must have the **Actions: Write** permission. - The [Datadog Source Code Integration][3] must be configured for the repositories where you'd like to use automatic retries. - Datadog must have indexed CI job logs for the repositories where you'd like to use automatic retries (see [Collect job logs for GitHub Actions][4] or [Collect job logs for GitLab][5]). - To enable this feature, you must have the **CI Provider Settings Write** permission in Datadog. @@ -100,3 +101,4 @@ A failed job is not retried when: [5]: /continuous_integration/pipelines/gitlab/#collect-job-logs [6]: /continuous_integration/guides/use_ci_jobs_failure_analysis/ [7]: https://app.datadoghq.com/ci/settings/ci-cd/repositories +[8]: /continuous_integration/pipelines/github/#configure-a-github-app diff --git a/content/en/incident_response/on-call/_index.md b/content/en/incident_response/on-call/_index.md index 67ccdbc50e2..eccccc97a14 100644 --- a/content/en/incident_response/on-call/_index.md +++ b/content/en/incident_response/on-call/_index.md @@ -22,7 +22,7 @@ cascade: Datadog On-Call integrates monitoring, paging, and incident response into one platform. -{{< img src="service_management/oncall/oncall_overview.png" alt="Overview of how Pages are routed. From a monitor, incident, security signal, or API call, the Page is sent to a Team (e.g. 'payments-team'), then to routing rules (e.g. based on priority) then to an escalation policy. There, it can be sent to a schedule or directly to a user." style="width:100%;" >}} +{{< img src="incident_response/on-call/oncall_overview.png" alt="Overview of how Pages are routed. From a monitor, incident, security signal, or API call, the Page is sent to a Team (e.g. 'payments-team'), then to routing rules (e.g. based on priority) then to an escalation policy. There, it can be sent to a schedule or directly to a user." style="width:100%;" >}} ## Concepts @@ -36,15 +36,15 @@ Datadog On-Call integrates monitoring, paging, and incident response into one pl **Teams** are the central organizational unit of Datadog On-Call. When a notification is triggered in Datadog, a **Page** is sent to the designated On-Call Team. -{{< img src="service_management/oncall/notification_page.png" alt="Notification that mentions an On-Call Team." style="width:80%;" >}} +{{< img src="incident_response/on-call/notification_page.png" alt="Notification that mentions an On-Call Team." style="width:80%;" >}} Each Team owns **escalation policies** and **schedules**. Escalation policies define how a Page is sent to various schedules, such as _Checkout Operations - Interrupt Handler_, _Primary_, and _Secondary_ in the following screenshot. Each Team can also configure **routing rules** to route Pages to different escalation policies. -{{< img src="service_management/oncall/escalation_policy.png" alt="A sample escalation policy." style="width:80%;" >}} +{{< img src="incident_response/on-call/escalation_policy.png" alt="A sample escalation policy." style="width:80%;" >}} A schedule defines specific times when Team members are assigned to respond to Pages. Schedules organize and manage the availability of Team members across different time zones and shifts. -{{< img src="service_management/oncall/schedule.png" alt="A sample schedule, with multiple layers for JP, EU, and US business hours." style="width:80%;" >}} +{{< img src="incident_response/on-call/schedule.png" alt="A sample schedule, with multiple layers for JP, EU, and US business hours." style="width:80%;" >}} ## Granular access control diff --git a/content/en/incident_response/on-call/automations.md b/content/en/incident_response/on-call/automations.md index 96036416cf2..c5253e186e4 100644 --- a/content/en/incident_response/on-call/automations.md +++ b/content/en/incident_response/on-call/automations.md @@ -22,7 +22,7 @@ further_reading: ## Overview -{{< img src="service_management/oncall/handover-automation.png" alt="The Handover Automation section on an On-Call team page" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation.png" alt="The Handover Automation section on an On-Call team page" style="width:80%;" >}} Handover automations run automatically when on-call duty passes from one person to another. They handle tasks that teams typically manage with custom scripts, such as notifying other systems about who's on-call, updating internal chat channels, or triggering downstream workflows. @@ -73,13 +73,13 @@ For example, you can use this action to: Posts a handover summary to a Slack channel showing who is handing off to whom for each selected schedule. You can also include an AI-generated shift summary. -{{< img src="service_management/oncall/handover-automation-slack-message.png" alt="Example Slack handover message showing shift change details" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation-slack-message.png" alt="Example Slack handover message showing shift change details" style="width:80%;" >}} #### Update channel topic Updates a Slack channel topic when a shift changes. Use numbered variables (`{{1}}`, `{{2}}`, and so on) in a customizable template to reference responders in schedule order. For example, `On-call: {{1}} (backup: {{2}})` resolves to the primary and secondary on-call responders when the shift changes. -{{< img src="service_management/oncall/handover-automation-slack-channel-topic.png" alt="Configuration form for the Slack Update channel topic automation" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation-slack-channel-topic.png" alt="Configuration form for the Slack Update channel topic automation" style="width:80%;" >}} Channel topics have a character limit. The UI validates the template before saving. @@ -87,13 +87,13 @@ Channel topics have a character limit. The UI validates the template before savi Sends a direct message to the incoming on-call responder when their shift begins. -{{< img src="service_management/oncall/handover-automation-slack-direct-message.png" alt="Configuration form for the Slack Send a direct message automation" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation-slack-direct-message.png" alt="Configuration form for the Slack Send a direct message automation" style="width:80%;" >}} #### Update user group Updates the members of a Slack user group to match the current on-call responders for the selected schedules. -{{< img src="service_management/oncall/handover-automation-slack-update-group.png" alt="Configuration form for the Slack Update user group automation" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation-slack-update-group.png" alt="Configuration form for the Slack Update user group automation" style="width:80%;" >}} **Note**: This action requires `usergroups:read` and `usergroups:write` permissions on the Datadog Slack app. If these permissions are missing, the UI displays a warning with a link to enable them. @@ -103,19 +103,19 @@ Updates the members of a Slack user group to match the current on-call responder Posts a handover summary to a Microsoft Teams channel showing who is handing off to whom for each selected schedule. You can also include an AI-generated shift summary. -{{< img src="service_management/oncall/handover-automation-ms-teams-message.png" alt="Configuration form for the Microsoft Teams Send message automation" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation-ms-teams-message.png" alt="Configuration form for the Microsoft Teams Send message automation" style="width:80%;" >}} #### Update channel description Updates a Microsoft Teams channel description when a shift changes. Use numbered variables (`{{1}}`, `{{2}}`, and so on) in a customizable template to reference responders in schedule order. For example, `On-call: {{1}} (backup: {{2}})` resolves to the primary and secondary on-call responders when the shift changes. -{{< img src="service_management/oncall/handover-automation-ms-teams-channel-topic.png" alt="Configuration form for the Microsoft Teams Update channel description automation" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation-ms-teams-channel-topic.png" alt="Configuration form for the Microsoft Teams Update channel description automation" style="width:80%;" >}} #### Send a direct message Sends a direct message to the incoming on-call responder when their shift begins. -{{< img src="service_management/oncall/handover-automation-ms-teams-direct-message.png" alt="Configuration form for the Microsoft Teams Send a direct message automation" style="width:80%;" >}} +{{< img src="incident_response/on-call/automations/handover-automation-ms-teams-direct-message.png" alt="Configuration form for the Microsoft Teams Send a direct message automation" style="width:80%;" >}} ## Troubleshooting diff --git a/content/en/incident_response/on-call/escalation_policies.md b/content/en/incident_response/on-call/escalation_policies.md index dd84f4269b6..04a39f6a1d7 100644 --- a/content/en/incident_response/on-call/escalation_policies.md +++ b/content/en/incident_response/on-call/escalation_policies.md @@ -13,7 +13,7 @@ In Datadog On-Call, escalation policies ensure that Pages are promptly addressed Datadog creates a default escalation policy when you [onboard a Team to On-Call][1]. ## Create a new escalation policy -{{< img src="service_management/oncall/escalation_policy_2.png" alt="A sample escalation policy." style="width:100%;" >}} +{{< img src="incident_response/on-call/escalation_policies/escalation_policy_2.png" alt="A sample escalation policy." style="width:100%;" >}} 1. Go to [**On-Call** > **Escalation Policies**][2]. 1. Select [**+ New Escalation Policy**][3]. @@ -24,13 +24,13 @@ Datadog creates a default escalation policy when you [onboard a Team to On-Call] 1. Select one of the following notification methods: `Notify All`, `Round Robin`. See [Escalation policy notification types](#escalation-policy-step-notification-types) for details. 1. Specify how many minutes the recipient has to acknowledge the Page before it is escalated to the next tier. For example, the following will notify the current on-call user when a Page is triggered. It will escalate to Jane Doe if John does not acknowledge the Page within 5 minutes. - {{< img src="service_management/oncall/escalation_policy_2_steps_v2.png" alt="An escalation policy configured to notify the scheduled on-call user and escalate to Jane Doe if the Page is not acknowledged after 5 minutes." style="width:100%;" >}} + {{< img src="incident_response/on-call/escalation_policies/escalation_policy_2_steps_v2.png" alt="An escalation policy configured to notify the scheduled on-call user and escalate to Jane Doe if the Page is not acknowledged after 5 minutes." style="width:100%;" >}} 1. Set how many times to repeat the steps if no one acknowledges the Page. 1. Select whether Datadog should automatically update the Page status to **Resolved** after executing all rules and repeats. ## Escalation policy step notification types In each step of an escalation policy, you can keep the standard `Notify All` behavior or opt-in for `Round Robin`. -{{< img src="service_management/oncall/escalation_policy_notification_type.png" alt="Notification type selector in Escalation Policy creation" style="width:100%;" >}} +{{< img src="incident_response/on-call/escalation_policies/escalation_policy_notification_type.png" alt="Notification type selector in Escalation Policy creation" style="width:100%;" >}} ### Notify all (default) Notify all targets of the step at the same time. @@ -58,7 +58,7 @@ If you want the Page to go to the next target in the round robin, use only one r In each step of an escalation policy, you can notify individual users, entire teams, or whoever is on-call in a schedule. ### Schedules -{{< img src="service_management/oncall/escalation_policy_notify_schedule.png" alt="A sample escalation policy step that notifies a schedule." style="width:100%;" >}} +{{< img src="incident_response/on-call/escalation_policies/escalation_policy_notify_schedule.png" alt="A sample escalation policy step that notifies a schedule." style="width:100%;" >}} Escalation policies can notify whoever is on-call according to a predefined schedule. The system checks the schedule and notifies the person or group that is actively on-call during the incident. Using schedules is beneficial for: @@ -68,10 +68,10 @@ Escalation policies can notify whoever is on-call according to a predefined sche If no one is on-call for a given schedule, the escalation step gracefully skips and the process moves forward without delays or interruptions. The UI indicates a skipped escalation. -{{< img src="service_management/oncall/escalation_policy_schedule_skipped.png" alt="A sample escalation policy indicating a skipped escalation due to no one being on-call." style="width:100%;" >}} +{{< img src="incident_response/on-call/escalation_policies/escalation_policy_schedule_skipped.png" alt="A sample escalation policy indicating a skipped escalation due to no one being on-call." style="width:100%;" >}} ### Users -{{< img src="service_management/oncall/escalation_policy_notify_user.png" alt="A sample escalation policy that specifies a user in the escalation policy." style="width:100%;" >}} +{{< img src="incident_response/on-call/escalation_policies/escalation_policy_notify_user.png" alt="A sample escalation policy that specifies a user in the escalation policy." style="width:100%;" >}} You can include specific users in an escalation policy to ensure key individuals are always notified in the event of a Page. Common use cases for directly paging a user are: @@ -80,7 +80,7 @@ You can include specific users in an escalation policy to ensure key individuals - Routing alerts to a backup responder if the primary contact is unavailable. ### Teams -{{< img src="service_management/oncall/escalation_policy_notify_team.png" alt="A sample escalation policy that notifies an entire Team." style="width:100%;" >}} +{{< img src="incident_response/on-call/escalation_policies/escalation_policy_notify_team.png" alt="A sample escalation policy that notifies an entire Team." style="width:100%;" >}} Common use cases for paging an entire Team are: diff --git a/content/en/incident_response/on-call/guides/migrate-your-opsgenie-resources-to-on-call.md b/content/en/incident_response/on-call/guides/migrate-your-opsgenie-resources-to-on-call.md index 50095e60c4f..5ceed2a115c 100644 --- a/content/en/incident_response/on-call/guides/migrate-your-opsgenie-resources-to-on-call.md +++ b/content/en/incident_response/on-call/guides/migrate-your-opsgenie-resources-to-on-call.md @@ -49,7 +49,7 @@ The migration follows a six-step wizard-style process in Datadog. Complete all s 1. If you have multiple regions configured, select your OpsGenie account's region from the dropdown. 1. Datadog loads all your OpsGenie teams in a searchable, paginated list. Select the team to migrate, then select **Next**. A preview pane shows the team's members and settings. -{{< img src="service_management/oncall/import-opsgenie-team-2.png" alt="OpsGenie team list with a preview pane showing the selected team's members and settings" style="width:95%;" >}} +{{< img src="incident_response/on-call/guides/migrate-your-opsgenie-resources-to-on-call/import-opsgenie-team-2.png" alt="OpsGenie team list with a preview pane showing the selected team's members and settings" style="width:95%;" >}} **Note**: If a team was previously imported, Datadog indicates this. @@ -61,7 +61,7 @@ The migration follows a six-step wizard-style process in Datadog. Complete all s - Map to a different Datadog team that you select. - Create a new team. Enter a team name to create a Datadog team based on the structure and members of the OpsGenie team. - {{< img src="service_management/oncall/map-opsgenie-team-to-datadog-team-2.png" alt="Mapping options for assigning an OpsGenie team to an existing or new Datadog team" style="width:95%;" >}} + {{< img src="incident_response/on-call/guides/migrate-your-opsgenie-resources-to-on-call/map-opsgenie-team-to-datadog-team-2.png" alt="Mapping options for assigning an OpsGenie team to an existing or new Datadog team" style="width:95%;" >}} 1. When the mapping is correct, select **Next**. @@ -70,7 +70,7 @@ The migration follows a six-step wizard-style process in Datadog. Complete all s 1. Browse your OpsGenie escalation policies. You can filter policies by team. 1. Select an escalation policy to import. The wizard displays the full policy details, including rules, recipients, and schedules. -{{< img src="service_management/oncall/import-opsgenie-escalation-policy.png" alt="OpsGenie escalation policy list with policy details shown for the selected policy" style="width:95%;" >}} +{{< img src="incident_response/on-call/guides/migrate-your-opsgenie-resources-to-on-call/import-opsgenie-escalation-policy.png" alt="OpsGenie escalation policy list with policy details shown for the selected policy" style="width:95%;" >}} ### Step 4: Map users diff --git a/content/en/incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call.md b/content/en/incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call.md index 69d17a4fe22..0f506fa0805 100644 --- a/content/en/incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call.md +++ b/content/en/incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call.md @@ -30,7 +30,7 @@ By rebuilding your on‑call setup from only current, relevant PagerDuty data, y 1. Visit the [On-Call Teams list][2] and select **Add Team to On‑Call** > **Import team from PagerDuty**. Datadog loads all your teams from PagerDuty. 1. Pick the team to migrate and choose **Next**. A preview pane shows the team's members and settings. -{{< img src="service_management/oncall/pagerduty_migration_import_team.png" alt="UI that lists PagerDuty teams and shows a preview of the selected team" style="width:95%;" >}} +{{< img src="incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call/pagerduty_migration_import_team.png" alt="UI that lists PagerDuty teams and shows a preview of the selected team" style="width:95%;" >}} ### Map the team and its members @@ -40,7 +40,7 @@ By rebuilding your on‑call setup from only current, relevant PagerDuty data, y - **Create a new team**: Enter a team name when prompted. Datadog builds the team using the structure and members from your PagerDuty team. - {{< img src="service_management/oncall/pagerduty_migration_map_users.png" alt="UI for mapping PagerDuty users to Datadog users or inviting new users" style="width:95%;" >}} + {{< img src="incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call/pagerduty_migration_map_users.png" alt="UI for mapping PagerDuty users to Datadog users or inviting new users" style="width:95%;" >}} 1. Handle unmapped users: @@ -59,13 +59,13 @@ Choose a template to define how alerts reach the team: - **Alert priority**: route alerts based on their priority and impact. - **Start from scratch**: customize routing rules to fit your team's workflows. -{{< img src="service_management/oncall/pagerduty_migration_select_routing_rule_template.png" alt="UI with routing‑rule templates such as 'All alerts to escalation policy', 'Business hours', and 'Alert priority'" style="width:95%;" >}} +{{< img src="incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call/pagerduty_migration_select_routing_rule_template.png" alt="UI with routing‑rule templates such as 'All alerts to escalation policy', 'Business hours', and 'Alert priority'" style="width:95%;" >}} ### Reuse escalation policies and schedules When you edit routing rules, you can import existing PagerDuty escalation policies and schedules instead of recreating them. -{{< img src="service_management/oncall/pagerduty_migration_migrate_escalation_policies_and_schedules.png" alt="UI for selecting existing PagerDuty escalation policies and schedules" style="width:95%;" >}} +{{< img src="incident_response/on-call/guides/migrate-your-pagerduty-resources-to-on-call/pagerduty_migration_migrate_escalation_policies_and_schedules.png" alt="UI for selecting existing PagerDuty escalation policies and schedules" style="width:95%;" >}} Datadog will automatically apply the imported configurations. You can change the policies and schedules at any time. diff --git a/content/en/incident_response/on-call/pages/_index.md b/content/en/incident_response/on-call/pages/_index.md index d0c01d8d244..22e4c704591 100644 --- a/content/en/incident_response/on-call/pages/_index.md +++ b/content/en/incident_response/on-call/pages/_index.md @@ -29,7 +29,7 @@ A Page is sent to a Team and routed through its escalation policies and schedule Send a Page by mentioning a Team's handle with `oncall-` prepended. For example, to send a Page to the Checkout Operations Team (`@checkout-operations`), mention `@oncall-checkout-operations`. -{{< img src="service_management/oncall/notification_page.png" alt="Notification that mentions an On-Call Team." style="width:80%;" >}} +{{< img src="incident_response/on-call/notification_page.png" alt="Notification that mentions an On-Call Team." style="width:80%;" >}} You can send Pages to On-Call Teams anywhere @-handles are supported, including monitors, Incident Management, security detection rules, and Event Management. @@ -72,7 +72,7 @@ Send a Page from the Datadog platform, or through a tool like Slack or Microsoft 1. Go to [**On-Call** > **Teams**][2]. 1. Find the Team you want to page. Select **Page**. - {{< img src="service_management/oncall/manual_page.png" alt="The list of On-Call Teams, showing the Checkout Operations Team. Three buttons are displayed: Schedules, Escalation Policies, Page." style="width:80%;" >}} + {{< img src="incident_response/on-call/pages/manual_page.png" alt="The list of On-Call Teams, showing the Checkout Operations Team. Three buttons are displayed: Schedules, Escalation Policies, Page." style="width:80%;" >}} 1. Enter a **Page title** and add more context in the **Description** field. Select **Page**. Pages sent manually through Datadog are always `high` urgency. @@ -91,7 +91,7 @@ To receive Page notifications in Slack, see [Routing Rules][4]. Go to [**On-Call** > **Pages**][7] to view all active and historical Pages. Click a Page to open its side panel and take action, or select the checkbox next to one or more Pages to bulk-edit them. -{{< img src="service_management/oncall/on-call-pages-list.png" alt="The On-Call Pages list view with sub-tabs for Active, Triggered, Acknowledged, Resolved, and All, and a table showing each Page's name, status, Team, responders, and creation date" style="width:100%;" >}} +{{< img src="incident_response/on-call/pages/on-call-pages-list.png" alt="The On-Call Pages list view with sub-tabs for Active, Triggered, Acknowledged, Resolved, and All, and a table showing each Page's name, status, Team, responders, and creation date" style="width:100%;" >}} ### Acknowledge a Page @@ -104,7 +104,7 @@ To acknowledge a Page: The Page status changes to `Acknowledged`. -{{< img src="service_management/oncall/on-call-page-side-panel.png" alt="An On-Call Page side panel showing the Page status, urgency, responder, and service, with Next Steps buttons to Acknowledge, Reassign, Resolve, or Declare Incident" style="width:70%;" >}} +{{< img src="incident_response/on-call/pages/on-call-page-side-panel.png" alt="An On-Call Page side panel showing the Page status, urgency, responder, and service, with Next Steps buttons to Acknowledge, Reassign, Resolve, or Declare Incident" style="width:70%;" >}} ### Reassign a Page @@ -115,7 +115,7 @@ To reassign a Page: 1. Click the Page to open its side panel. 1. Under **Next Steps**, select **Reassign**. This opens a **Reassign Page** modal. - {{< img src="service_management/oncall/on-call-reassign-page.png" alt="The Reassign Page modal with a toggle to reassign to a Team or User, a team selection dropdown, and an optional comment field" style="width:60%;" >}} + {{< img src="incident_response/on-call/pages/on-call-reassign-page.png" alt="The Reassign Page modal with a toggle to reassign to a Team or User, a team selection dropdown, and an optional comment field" style="width:60%;" >}} 1. Select the user or Team to reassign to. 1. Optionally, add a comment explaining the handoff. @@ -146,7 +146,7 @@ To declare an incident: 1. Under **Next Steps**, select **Declare Incident**. 1. Review and adjust the pre-filled details as needed. - {{< img src="service_management/oncall/on-call-declare-incident-demo.png" alt="The Declare Incident modal pre-filled with the Page title and summary, with fields for incident type, severity level, incident commander, and team" style="width:100%;" >}} + {{< img src="incident_response/on-call/pages/on-call-declare-incident-demo.png" alt="The Declare Incident modal pre-filled with the Page title and summary, with fields for incident type, severity level, incident commander, and team" style="width:100%;" >}} 1. Select **Declare Incident** to confirm. @@ -156,7 +156,7 @@ For guidance on incident severity levels and responder roles, see [Incident Mana The Page timeline is an activity log that records when the Page was triggered, who was notified, and how escalation progressed. You can add your own comments to provide context for other responders. -{{< img src="service_management/oncall/on-call-timeline-demo.png" alt="The Timeline section of an On-Call Page showing a comment input field and a chronological log of events including the Page trigger, notifications sent, and acknowledgment" style="width:60%;" >}} +{{< img src="incident_response/on-call/pages/on-call-timeline-demo.png" alt="The Timeline section of an On-Call Page showing a comment input field and a chronological log of events including the Page trigger, notifications sent, and acknowledgment" style="width:60%;" >}} Use comments to: - Document what you've already investigated or ruled out diff --git a/content/en/incident_response/on-call/profile_settings.md b/content/en/incident_response/on-call/profile_settings.md index bdb96d15190..0d3ed05bd6b 100644 --- a/content/en/incident_response/on-call/profile_settings.md +++ b/content/en/incident_response/on-call/profile_settings.md @@ -19,7 +19,7 @@ You must [configure your profile settings][1] before you can receive On-Call Pag Go to [My On-Call Profile][1] to configure your settings. ### Contact methods -{{< img src="service_management/oncall/contact_methods.png" alt="Adding contact methods in On-Call profile settings. A phone number, an email, and a mobile device are configured. The phone number is in a hover state, displaying 'Test Call' and 'Test SMS' options." style="width:100%;" >}} +{{< img src="incident_response/on-call/profile_settings/contact_methods.png" alt="Adding contact methods in On-Call profile settings. A phone number, an email, and a mobile device are configured. The phone number is in a hover state, displaying 'Test Call' and 'Test SMS' options." style="width:100%;" >}} - You must manually add your email or phone number. Afterwards, the screen asks you for consent to reach you through SMS. If you consent, a green badge appears next to your phone number, indicating that it can be used for SMS notification preferences below. - If the Datadog [mobile app][2] is installed on your device, your device appears automatically in this list. Check your settings in the mobile app to ensure that your device can receive notifications. - Datadog recommends that you test each of your contact methods. Hover over your contact method for test options. @@ -42,7 +42,7 @@ Notification preferences allow you to tailor how and when **you** are alerted fo The system cycles through your configured notification preferences until you either acknowledge the Page, or the Page is escalated to the next on-call person as defined in the [Escalation Policy][6]. #### High urgency notifications -{{< img src="service_management/oncall/high_urgency_notification_preferences.png" alt="Configuring high urgency notification preferences in On-Call profile settings: 'When a high urgency Page is triggered' set to notify a phone number immediately in order to quickly respond to critical Pages." style="width:100%;" >}} +{{< img src="incident_response/on-call/profile_settings/high_urgency_notification_preferences.png" alt="Configuring high urgency notification preferences in On-Call profile settings: 'When a high urgency Page is triggered' set to notify a phone number immediately in order to quickly respond to critical Pages." style="width:100%;" >}} Configure your high-urgency Pages (P1 monitor alerts, SEV-1 security threats, SEV-1 incidents, etc.), to demand immediate attention and escalation. @@ -58,12 +58,12 @@ For example, you can configure On-Call to start with a push notification, call a - Plan escalation policies carefully to avoid missed responses during emergencies. #### Low urgency notifications -{{< img src="service_management/oncall/low_urgency_notification_preferences.png" alt="Configuring low urgency notification preferences in On-Call profile settings: 'When a low urgency Page is triggered' set to notify an email immediately but don't escalate it further." style="width:100%;" >}} +{{< img src="incident_response/on-call/profile_settings/low_urgency_notification_preferences.png" alt="Configuring low urgency notification preferences in On-Call profile settings: 'When a low urgency Page is triggered' set to notify an email immediately but don't escalate it further." style="width:100%;" >}} Configure your low-urgency Pages (non-blocking issues, informational signals, etc.), to minimize disruptions while ensuring you stay informed. For example, you can opt to only yourself through email. ### Other notifications -{{< img src="service_management/oncall/settings_shift_reminder.png" alt="Configuring a shift reminder in On-Call profile settings. A shift reminder is configured to notify a phone number 10 minutes before the shift begins." style="width:100%;" >}} +{{< img src="incident_response/on-call/profile_settings/settings_shift_reminder.png" alt="Configuring a shift reminder in On-Call profile settings. A shift reminder is configured to notify a phone number 10 minutes before the shift begins." style="width:100%;" >}} Under **Other Notifications**, you can opt to receive a **Shift reminder** before your On-Call shift begins. diff --git a/content/en/incident_response/on-call/routing_rules.md b/content/en/incident_response/on-call/routing_rules.md index 9d0710ae401..638452862e6 100644 --- a/content/en/incident_response/on-call/routing_rules.md +++ b/content/en/incident_response/on-call/routing_rules.md @@ -22,7 +22,7 @@ To create a routing rule: 1. Go to [**On-Call** > **Teams**][1] and select a team. 1. Find the **Page Routing** section and click **Edit**. The **Configure Page Routing** window opens. - {{< img src="service_management/oncall/configure-page-routing2.png" alt="The Configure Page Routing window in Datadog On-Call, showing routing condition fields and target configuration options" style="width:100%;" >}} + {{< img src="incident_response/on-call/routing_rules/configure-page-routing2.png" alt="The Configure Page Routing window in Datadog On-Call, showing routing condition fields and target configuration options" style="width:100%;" >}} 1. Click **Add Conditions** to add a routing rule. 1. Define a match query using the [routing rule syntax](#routing-rule-syntax). @@ -32,7 +32,7 @@ To create a routing rule: 1. Click **Add** to add a time interval. For each interval, select a time zone and the days of the week, then set the start and end time. 1. Optionally, enable the **Outside support hours, hold escalation policy notifications until the next window** toggle. - {{< img src="service_management/oncall/page-routing-support-hours.png" alt="The support hours configuration panel on a routing condition, showing time interval fields and the option to hold escalation policy notifications outside support hours" style="width:60%;" >}} + {{< img src="incident_response/on-call/routing_rules/page-routing-support-hours.png" alt="The support hours configuration panel on a routing condition, showing time interval fields and the option to hold escalation policy notifications outside support hours" style="width:60%;" >}} 1. Under **Set targets**, click **Add** and select a target type. The target type determines what happens when the rule matches: - **Page escalation policy**: Select an [escalation policy][3] and set the urgency to `DYNAMIC` (based on alert status), `HIGH`, or `LOW`. @@ -79,7 +79,7 @@ When a routing rule includes support hours, Datadog compares the current time to Add one interval: select Monday through Friday, set the time range to 9 a.m.–5 p.m., and select the `America/New_York` time zone. Pages outside this window are postponed until 9 a.m. on the following Monday. -{{< img src="service_management/oncall/support-hours-biz.png" alt="The support hours pop-up modal with a time interval defined for 9 a.m. to 5 p.m. Monday through Friday" style="width:60%;" >}} +{{< img src="incident_response/on-call/routing_rules/support-hours-biz.png" alt="The support hours pop-up modal with a time interval defined for 9 a.m. to 5 p.m. Monday through Friday" style="width:60%;" >}} {{% /collapse-content %}} @@ -101,11 +101,11 @@ To configure acknowledgment timeout: ### Pages in Slack and Microsoft Teams -{{< img src="service_management/oncall/page_in_slack_or_ms_teams.png" alt="A sample routing rule, which routes all incoming Pages to Slack and Microsoft Teams" style="width:100%;" >}} +{{< img src="incident_response/on-call/routing_rules/page_in_slack_or_ms_teams.png" alt="A sample routing rule, which routes all incoming Pages to Slack and Microsoft Teams" style="width:100%;" >}} When you route Pages to Slack or Microsoft Teams, Datadog sends a notification to the configured channel and creates a Page. Team members can use buttons to acknowledge, escalate, or resolve the Page. -{{< img src="service_management/oncall/page_representation_in_slack.png" alt="A Page notification in Slack with buttons to acknowledge, escalate, or resolve" style="width:70%;" >}} +{{< img src="incident_response/on-call/routing_rules/page_representation_in_slack.png" alt="A Page notification in Slack with buttons to acknowledge, escalate, or resolve" style="width:70%;" >}} When a Page is acknowledged or resolved in Slack or Teams, Datadog updates the original notification in place, without sending additional messages. This minimizes notification volume and keeps the current Page status visible in the original thread. diff --git a/content/en/incident_response/on-call/schedules.md b/content/en/incident_response/on-call/schedules.md index 549d8689aea..b312bc23970 100644 --- a/content/en/incident_response/on-call/schedules.md +++ b/content/en/incident_response/on-call/schedules.md @@ -16,7 +16,7 @@ On-Call schedules are structured in layers, where each layer covers different pa Consider the following example schedule: -{{< img src="service_management/oncall/schedule.png" alt="A sample schedule, with multiple layers for JP, EU, and US business hours." style="width:100%;" >}} +{{< img src="incident_response/on-call/schedule.png" alt="A sample schedule, with multiple layers for JP, EU, and US business hours." style="width:100%;" >}} There are four layers: - **JP Business Hours**: A person named DM covers Japanese business hours, which begin (from a UTC perspective) each day. Repeats every day from Monday to Friday. @@ -49,7 +49,7 @@ To send a Page to the on-call person for a given schedule, reference the schedul ### Overrides {#overrides} Overrides are modifications made to the scheduled on-call shifts. They can accommodate changes such as temporary shift adjustments and holidays. -{{< img src="service_management/oncall/schedule_override.png" alt="When editing a schedule, a shift is selected. A dialog appears with an Override button." style="width:100%;" >}} +{{< img src="incident_response/on-call/schedules/schedule_override.png" alt="When editing a schedule, a shift is selected. A dialog appears with an Override button." style="width:100%;" >}} To completely or partially override a shift, select the shift and click **Override**. @@ -57,7 +57,7 @@ To completely or partially override a shift, select the shift and click **Overri If you are part of an On-Call rotation, and you know that you will be out of office during your shift, you can request an override in Slack or Microsoft Teams. Type `/dd override`, select the timeframe to be overridden, and add a description. This sends a request to the channel: -{{< img src="service_management/oncall/schedule_override_request.png" alt="In Slack, a message from Datadog Staging reads: '@Daljeet has an override request. Schedule: [Primary] Payments & Transactions (payments-transactions). Start: Today, 1:00PM. End: Today, 3:00 PM. Duration: 2h. Note: Doctor's appointment. Will offer cookies for override.' A button labeled 'Take it' appears at the end of the message." style="width:80%;" >}} +{{< img src="incident_response/on-call/schedules/schedule_override_request.png" alt="In Slack, a message from Datadog Staging reads: '@Daljeet has an override request. Schedule: [Primary] Payments & Transactions (payments-transactions). Start: Today, 1:00PM. End: Today, 3:00 PM. Duration: 2h. Note: Doctor's appointment. Will offer cookies for override.' A button labeled 'Take it' appears at the end of the message." style="width:80%;" >}} Other channel members can select **Take it** to schedule themselves to override your shift. diff --git a/content/en/incident_response/on-call/teams.md b/content/en/incident_response/on-call/teams.md index 2f32c96bde6..58bd25aa736 100644 --- a/content/en/incident_response/on-call/teams.md +++ b/content/en/incident_response/on-call/teams.md @@ -28,13 +28,13 @@ On-Call Teams are an extension of [Datadog Teams][1]. On-Call Teams are listed o {{% /tab %}} {{< /tabs >}} 1. Add a default escalation policy. - {{< img src="service_management/oncall/escalation_policy_blank.png" alt="Setup view of a new escalation policy. Notifies three proposed schedules." style="width:80%;" >}} + {{< img src="incident_response/on-call/teams/escalation_policy_blank.png" alt="Setup view of a new escalation policy. Notifies three proposed schedules." style="width:80%;" >}} - Datadog automatically proposes _Interrupt Handler_, _Primary_, and _Secondary_ schedules for your Team. You can define these schedules in the next step. - You can also notify an existing schedule owned by another Team. See [Escalation Policies][5] for more details. 1. Define the schedules created in the previous step. - {{< img src="service_management/oncall/schedule_blank.png" alt="Setup view of a new schedule." style="width:80%;" >}} + {{< img src="incident_response/on-call/teams/schedule_blank.png" alt="Setup view of a new schedule." style="width:80%;" >}} - **Schedule Time Zone**: Select the time zone you want to operate your schedule in. Other settings, such as handoff times, adhere to this selection. - **Schedule Rotations**: Add your desired rotations. See [Schedules][6] for more details. diff --git a/content/en/logs/log_collection/_index.md b/content/en/logs/log_collection/_index.md index 5c89ff69fe6..7503b51b649 100644 --- a/content/en/logs/log_collection/_index.md +++ b/content/en/logs/log_collection/_index.md @@ -142,6 +142,19 @@ To learn how to submit logs from your custom Agent check, see [Agent Integration {{% /tab %}} {{< /tabs >}} +### Limitations + +* A log event should not have more than 100 tags, and each tag should not exceed 256 characters for a maximum of 10 million unique tags per day. +* A log event converted to JSON format should contain less than 2048 attributes. Each of those attribute's keys should be less than 50 characters, nested in less than 20 successive levels, and their respective value should be less than 1024 characters if promoted as a facet. +* Only log events with a [timestamp][14] up to 18h in the past can be submitted. + * Preview available: To submit logs from up to 7 days in the past, register for the Preview. +* Log collection does not retain attributes with null values. + * Preview available: To retain attributes with null values, register for the Preview. + +Log events that do not comply with these limits might be transformed or truncated by the system or not indexed if outside the provided time range. However, Datadog tries to preserve as much user data as possible. + +There is an additional truncation in fields that applies only to indexed logs: the value is truncated to 75 KiB for the message field and 25 KiB for non-message fields. Datadog still stores the full text, and it remains visible in regular list queries in the Logs Explorer. However, the truncated version will be displayed when performing a grouped query, such as when grouping logs by that truncated field or performing similar operations that display that specific field. + ## Additional configuration options ### Logging endpoints @@ -165,21 +178,10 @@ Any custom process or logging library able to forward logs through HTTP can be u You can send logs to Datadog platform over HTTP. Refer to the [Datadog Log HTTP API documentation][15] to get started. -**Notes**: - -* The HTTPS API supports logs of sizes up to 1MB. However, for optimal performance, it is recommended that an individual log be no greater than 25K bytes. If you use the Datadog Agent for logging, it is configured to split a log at 900kB (900000 bytes). -* A log event should not have more than 100 tags, and each tag should not exceed 256 characters for a maximum of 10 million unique tags per day. -* A log event converted to JSON format should contain less than 2048 attributes. Each of those attribute's keys should be less than 50 characters, nested in less than 20 successive levels, and their respective value should be less than 1024 characters if promoted as a facet. -* Log events can be submitted with a [timestamp][14] that is up to 18h in the past. -
-Preview available: You can submit logs from the past 7 days, instead of the current 18-hour limit. Register for the Preview. +The HTTPS API supports logs of sizes up to 1MB. However, for optimal performance, Datadog recommends that an individual log be no greater than 25 KB (25,000 bytes). If you use the Datadog Agent for logging, it is configured to split a log at 900 KB (900,000 bytes).
-Log events that do not comply with these limits might be transformed or truncated by the system or not indexed if outside the provided time range. However, Datadog tries to preserve as much user data as possible. - -There is an additional truncation in fields that applies only to indexed logs: the value is truncated to 75 KiB for the message field and 25 KiB for non-message fields. Datadog still stores the full text, and it remains visible in regular list queries in the Logs Explorer. However, the truncated version will be displayed when performing a grouped query, such as when grouping logs by that truncated field or performing similar operations that display that specific field. - {{% collapse-content title="TCP" level="h3" expanded=false %}} {{% logs-tcp-disclaimer %}} diff --git a/content/en/mcp_server/setup.md b/content/en/mcp_server/setup.md index d73d77189ed..14572f7b79a 100644 --- a/content/en/mcp_server/setup.md +++ b/content/en/mcp_server/setup.md @@ -46,7 +46,7 @@ Connect Datadog to ChatGPT by installing the [Datadog app][1] from ChatGPT's app Install the [Datadog Connector](https://claude.ai/directory/connectors/datadog) from the Claude Connectors Directory. The official connector is the recommended way to connect Datadog to Claude (including Claude Cowork) and includes MCP Apps for in-product visualizations. If you previously added Datadog as a custom connector, remove it to avoid conflicts. {{< site-region region="us,us3,us5,eu,ap1,ap2" >}} -1. In Claude, click the **+** icon at the bottom of any prompt, then click {{< ui >}}Add Connector{{< /ui >}}. +1. In Claude, click the {{< ui >}}+{{< /ui >}} icon at the bottom of any prompt, then click {{< ui >}}Add Connector{{< /ui >}}. 1. Find **Datadog** in the directory and enable the connector. 1. Complete the OAuth login flow when prompted. 1. Verify that you have the required [permissions](#required-permissions) for the Datadog resources you want to access. @@ -167,8 +167,8 @@ Install the [Datadog Plugin][1] from the Cursor Marketplace—the plugin include {{< site-region region="us,us3,us5,eu,ap1,ap2" >}} 1. You can install the plugin from the Cursor Marketplace or from within Cursor: - - From the Cursor Marketplace, open the [Datadog Plugin][1] and click **Add to Cursor**. - - In Cursor, navigate to **Cursor Settings** > **Plugins**, then search for the Datadog plugin and click **Add to Cursor**. + - From the Cursor Marketplace, open the [Datadog Plugin][1] and click {{< ui >}}Add to Cursor{{< /ui >}}. + - In Cursor, navigate to {{< ui >}}Cursor Settings{{< /ui >}} > {{< ui >}}Plugins{{< /ui >}}, then search for the Datadog plugin and click {{< ui >}}Add to Cursor{{< /ui >}}. 1. After installation of the plugin, type `/ddsetup` in the agent chat to perform first-time setup. 1. Verify that you have the required [permissions](#required-permissions) for the Datadog resources you want to access. @@ -209,7 +209,7 @@ Connect Devin to the Datadog MCP Server by enabling it from Devin's MCP Marketpl {{% tab "Gemini CLI" %}} -Point your AI agent to the MCP Server endpoint for your regional [Datadog site][1]. For the correct instructions, use the **Datadog Site** selector on the right side of this documentation page to select your site. +Point your AI agent to the MCP Server endpoint for your regional [Datadog site][1]. For the correct instructions, use the {{< ui >}}Datadog Site{{< /ui >}} selector on the right side of this documentation page to select your site. {{< site-region region="us,us3,us5,eu,ap1,ap2" >}} Selected endpoint ({{< region-param key="dd_site_name" >}}): {{< region-param key="mcp_server_endpoint" >}}. @@ -351,7 +351,7 @@ Selected endpoint ({{< region-param key="dd_site_name" >}}): {{< region-pa
{{< region-param key="mcp_server_endpoint" >}}?toolsets=apm,llmobs
-1. Click the `Start` element that appears in the editor to start the server. You are prompted to log in through OAuth. +1. Click the {{< ui >}}Start{{< /ui >}} element that appears in the editor to start the server. You are prompted to log in through OAuth. 1. Verify that you have the required [permissions](#required-permissions) for the Datadog resources you want to access. @@ -484,7 +484,7 @@ Datadog's [Cursor and VS Code extension][1] provides a configuration assistant f 1. Install the [Datadog extension][2]. If you have the extension installed already, make sure it's the latest version. 1. Sign in to your Datadog account. 1. **Restart the IDE.** -1. Run the `Datadog: Open MCP Configuration Assistant` and follow the guidance to configure the Datadog MCP Server. +1. Run the {{< ui >}}Datadog: Open MCP Configuration Assistant{{< /ui >}} and follow the guidance to configure the Datadog MCP Server. 1. Verify that you have the required [permissions](#required-permissions) for the Datadog resources you want to access. [2]: /ide_plugins/vscode/?tab=vscode#installation @@ -678,8 +678,8 @@ MCP Server tools require the following [Datadog user role permissions][22]: In addition to `mcp_read` or `mcp_write`, users need the standard Datadog permissions for the underlying resource. For example, using an MCP tool that reads monitors requires both `mcp_read` and the [Monitors Read][24] permission. See [Datadog Role Permissions][25] for the full list of resource-level permissions. -Users with the **Datadog Standard Role** have both MCP Server permissions by default. If your organization uses [custom roles][23], add the permissions manually: -1. Go to [**Organization Settings > Roles**][26] as an administrator, and click the role you want to update. +Users with the {{< ui >}}Datadog Standard Role{{< /ui >}} have both MCP Server permissions by default. If your organization uses [custom roles][23], add the permissions manually: +1. Go to [{{< ui >}}Organization Settings{{< /ui >}} > {{< ui >}}Roles{{< /ui >}}][26] as an administrator, and click the role you want to update. 1. Click {{< ui >}}Edit Role{{< /ui >}} (pencil icon). 1. Under the permissions list, select the {{< ui >}}MCP Read{{< /ui >}} and {{< ui >}}MCP Write{{< /ui >}} checkboxes. 1. Select any other resource-level permissions you need for the role. @@ -715,7 +715,7 @@ For security, use a scoped API key and application key from a [service account][ ### Adding OAuth clients -You can allow-list your redirect URLs in [Organization Preferences][27] under `MCP OAuth Redirect URLs`. +You can allow-list your redirect URLs in [{{< ui >}}Organization Preferences{{< /ui >}}][27] under {{< ui >}}MCP OAuth Redirect URLs{{< /ui >}}. If you are a partner or vendor adding Datadog to an MCP directory for your AI agent platform, submit your interest through Datadog's [Technology Partner Signup][61]. diff --git a/content/en/metrics/_index.md b/content/en/metrics/_index.md index 571088ecb56..5eb3a6c978c 100644 --- a/content/en/metrics/_index.md +++ b/content/en/metrics/_index.md @@ -126,7 +126,7 @@ A metric query consists of the same two evaluation steps to start: time aggregat Additionally, Datadog has many other types of graphs and widgets for visualizations. You can learn more about them in Datadog's [blog series about metric graphs][7]. -The graphing experience is consistent whether you are using dashboards, notebooks, or monitors. You can create graphs by using the graphing editor UI or by directly changing the raw query string. To edit the query string, use the `` button on the far right. +The graphing experience is consistent whether you are using dashboards, notebooks, or monitors. You can create graphs by using the graphing editor UI or by directly changing the raw query string. To edit the query string, use the {{< ui >}}{{< /ui >}} button on the far right. ### Anatomy of a metric query @@ -138,7 +138,7 @@ You can break this query into a few steps: #### Metric name -First, choose the specific metric that you'd like to graph by searching or selecting it from the dropdown next to **Metric**. If you're not sure which metric to use, start with the Metrics Explorer or a notebook. You can also see a list of actively reporting metrics on the Metrics Summary page. +First, choose the specific metric that you'd like to graph by searching or selecting it from the dropdown next to {{< ui >}}Metric{{< /ui >}}. If you're not sure which metric to use, start with the Metrics Explorer or a notebook. You can also see a list of actively reporting metrics on the Metrics Summary page. #### Filter your metric diff --git a/content/en/metrics/advanced-filtering.md b/content/en/metrics/advanced-filtering.md index 30fc2ef5ac8..9a026b9232c 100644 --- a/content/en/metrics/advanced-filtering.md +++ b/content/en/metrics/advanced-filtering.md @@ -24,7 +24,7 @@ further_reading: ## Overview -When using the Metrics Explorer, monitors, or dashboards to query metrics data, you can filter the data to narrow the scope of the timeseries returned. Any metric can be filtered by tag(s) using the **from** field to the right of the metric. +When using the Metrics Explorer, monitors, or dashboards to query metrics data, you can filter the data to narrow the scope of the timeseries returned. Any metric can be filtered by tag(s) using the {{< ui >}}from{{< /ui >}} field to the right of the metric. You can also perform advanced filtering with Boolean or Wildcard tag value filters. For queries outside of metrics data such as logs, traces, Network Monitoring, Real User Monitoring, Synthetics, or Security, see the [Log Search Syntax][1] documentation for configuration. @@ -51,7 +51,7 @@ For more information on tags, see the [Getting Started With Using Tags][2] guide ### Boolean filtered query examples -To use the examples below, click the code icon `` to see the query editor in the UI, and then copy and paste the query example into the query editor. +To use the examples below, click the code icon {{< ui >}}{{< /ui >}} to see the query editor in the UI, and then copy and paste the query example into the query editor. ``` avg:system.cpu.user{env:staging AND (availability-zone:us-east-1a OR availability-zone:us-east-1c)} by {availability-zone} diff --git a/content/en/metrics/custom_metrics/agent_metrics_submission.md b/content/en/metrics/custom_metrics/agent_metrics_submission.md index c1af7ffc607..efb54e2c027 100644 --- a/content/en/metrics/custom_metrics/agent_metrics_submission.md +++ b/content/en/metrics/custom_metrics/agent_metrics_submission.md @@ -201,7 +201,7 @@ Follow the steps below to create a [custom Agent check][2] that sends all metric ``` 4. [Restart the Agent][4]. -5. Validate your custom check is running correctly with the [Agent's status subcommand][5]. Look for `metrics_example` under the Checks section: +5. Validate your custom check is running correctly with the [Agent's status subcommand][5]. Look for `metrics_example` under the {{< ui >}}Checks{{< /ui >}} section: ```text ========= diff --git a/content/en/metrics/custom_metrics/historical_metrics.md b/content/en/metrics/custom_metrics/historical_metrics.md index 63c8c234f08..04c0acd2965 100644 --- a/content/en/metrics/custom_metrics/historical_metrics.md +++ b/content/en/metrics/custom_metrics/historical_metrics.md @@ -47,8 +47,8 @@ You can start ingesting historical metric values by enabling Historical Metrics To enable the ingestion of historical metrics for a specific metric: 1. Navigate to the [Metrics Summary Page][1]. 1. Click on the metric name you want to enable Historical Metrics Ingestion for to open the metric's details side panel. -1. Within the *Advanced* section of the side panel, click **Configure**. -1. Select the **Enable historical metrics** toggle and press **Save**. +1. Within the *Advanced* section of the side panel, click {{< ui >}}Configure{{< /ui >}}. +1. Select the {{< ui >}}Enable historical metrics{{< /ui >}} toggle and press {{< ui >}}Save{{< /ui >}}. {{< img src="metrics/custom_metrics/historical_metrics/enable_historical_metrics.png" alt="Metrics Summary page showing the Historical Metrics facets panel and the Advanced section of an open Metric detail panel with the Enable historical metrics option selected" style="width:100%;" >}} @@ -56,10 +56,10 @@ To enable the ingestion of historical metrics for a specific metric: You can enable or disable Historical Metrics Ingestion for multiple metrics at once, rather than having to configure each one individually. -1. Navigate to the [Metrics Summary Page][1] and click the **Configure Metrics** dropdown. -1. Select **Enable historical metrics**. +1. Navigate to the [Metrics Summary Page][1] and click the {{< ui >}}Configure Metrics{{< /ui >}} dropdown. +1. Select {{< ui >}}Enable historical metrics{{< /ui >}}. 1. Specify a metric namespace prefix to select all metrics that match that namespace. -1. (Optional) To disable Historical Metrics Ingestion for all metrics in the namespace, click the **Historical metrics** toggle. +1. (Optional) To disable Historical Metrics Ingestion for all metrics in the namespace, click the {{< ui >}}Historical metrics{{< /ui >}} toggle. {{< img src="metrics/custom_metrics/historical_metrics/historical_metrics_ingestion_toggle.png" alt="Historical metrics ingestion toggle" >}} diff --git a/content/en/metrics/derived-metrics.md b/content/en/metrics/derived-metrics.md index 6b0889aceb1..ee612741499 100644 --- a/content/en/metrics/derived-metrics.md +++ b/content/en/metrics/derived-metrics.md @@ -24,7 +24,7 @@ Derived Metrics allow you to save any metrics query as a new metric, so you can ## Create a derived metric -To create a derived metric, navigate to **[Metrics > Generate Metrics][1]** and click **+ New Metric**. +To create a derived metric, navigate to [{{< ui >}}Metrics > Generate Metrics{{< /ui >}}][1] and click {{< ui >}}+ New Metric{{< /ui >}}. {{< img src="metrics/derived_metrics/generate_metrics_tab.png" alt="The generate metrics tab in Datadog" style="width:90%;" >}} @@ -38,17 +38,17 @@ To create a derived metric, navigate to **[Metrics > Generate Metrics][1]** and {{< img src="metrics/derived_metrics/derived_metric_query.png" alt="A Datadog metric query to generate a derived metric" style="width:90%;" >}} -3. Click **Create Metric**. +3. Click {{< ui >}}Create Metric{{< /ui >}}. ## Update a derived metric -To update a derived metric, hover over the metric and click the **Edit** icon that appears to the right. +To update a derived metric, hover over the metric and click the {{< ui >}}Edit{{< /ui >}} icon that appears to the right. **Note**: You cannot rename an existing metric. Create a new metric instead. ## Delete a derived metric -To delete a derived metric, hover over the derived metric and click the **Delete** icon that appears to the right. +To delete a derived metric, hover over the derived metric and click the {{< ui >}}Delete{{< /ui >}} icon that appears to the right. ## Further reading diff --git a/content/en/metrics/distributions.md b/content/en/metrics/distributions.md index b57d9eaa056..b41a47670cc 100644 --- a/content/en/metrics/distributions.md +++ b/content/en/metrics/distributions.md @@ -72,10 +72,10 @@ You can use percentile aggregations in a variety of other widgets and for alerti You can enable or disable percentile aggregations for multiple metrics at once, rather than having to configure each one individually. -1. Navigate to the [Metrics Summary Page][4] and click the **Configure Metrics** dropdown. -1. Select **Enable percentiles**. +1. Navigate to the [Metrics Summary Page][4] and click the {{< ui >}}Configure Metrics{{< /ui >}} dropdown. +1. Select {{< ui >}}Enable percentiles{{< /ui >}}. 1. Specify a metric namespace prefix to select all metrics that match that namespace. -1. (Optional) To disable percentiles for all metrics in the namespace, click the **Percentile aggregations** toggle. +1. (Optional) To disable percentiles for all metrics in the namespace, click the {{< ui >}}Percentile aggregations{{< /ui >}} toggle. {{< img src="metrics/summary/percentile_aggregations_toggle.png" alt="Toggle to manage percentile aggregations" style="width:100%;" >}} @@ -88,14 +88,14 @@ With threshold queries for distributions with percentiles, you do not need to pr To use threshold queries: 1. Enable percentiles on your distribution metric on the Metrics Summary page. -2. Graph your chosen distribution metric using the "count values..." aggregator. +2. Graph your chosen distribution metric using the {{< ui >}}count values...{{< /ui >}} aggregator. 3. Specify a threshold value and comparison operator. {{< img src="metrics/distributions/threshold_queries.mp4" video=true alt="A timeseries graph being visualized using the count values aggregator, with a threshold of greater than 8 seconds" style="width:80%;" >}} You can similarly create a metric-based SLO using threshold queries: 1. Enable percentiles on your distribution metric on the Metrics Summary page. -2. Create a new Metric-Based SLO and define the numerator as the number of "good" events with a query on your chosen distribution metric using the "count values..." aggregator. +2. Create a new Metric-Based SLO and define the numerator as the number of "good" events with a query on your chosen distribution metric using the {{< ui >}}count values...{{< /ui >}} aggregator. 3. Specify a threshold value and comparison operator. {{< img src="metrics/distributions/threshold_SLO.png" alt="Threshold Queries for SLOs" style="width:80%;">}} @@ -106,8 +106,8 @@ Distributions provide functionality that allows you to control the tagging for c To customize tagging: 1. Click on your custom distribution metric name in the Metrics Summary table to open the metrics details sidepanel. -2. Click the **Manage Tags** button to open the tag configuration modal. -3. Click the **Custom...** tab to customize the tags you'd like to keep available for query. +2. Click the {{< ui >}}Manage Tags{{< /ui >}} button to open the tag configuration modal. +3. Click the {{< ui >}}Custom...{{< /ui >}} tab to customize the tags you'd like to keep available for query. **Note**: The exclusion of tags is not supported in the allowlist-based customization of tags. Adding tags starting with `!` is not accepted. diff --git a/content/en/metrics/explorer.md b/content/en/metrics/explorer.md index 6316231931f..b66d8e44ac3 100644 --- a/content/en/metrics/explorer.md +++ b/content/en/metrics/explorer.md @@ -31,17 +31,17 @@ The [Metrics Explorer][1] is a basic interface for examining your metrics in Dat Use Natural Language Queries (NLQ) to describe what you're looking for in plain English. Datadog automatically translates your request into a structured metric query, understanding context such as your services, attributes, and tags. This makes it easier to explore metrics without needing to write complex syntax. -To access this feature, click **Ask** in the search field and type your query. +To access this feature, click {{< ui >}}Ask{{< /ui >}} in the search field and type your query. {{< img src="/metrics/explorer/metrics_nlq_example_10152025.mp4" alt="Natural language query in Metrics Explorer showing how to search for metrics using plain English phrases" video=true >}} -To disable NLQ for your organization, you must have [org_management permissions][11]. Navigate to **Organization Settings > Preferences** and toggle off the Natural Language Queries feature. +To disable NLQ for your organization, you must have [org_management permissions][11]. Navigate to {{< ui >}}Organization Settings{{< /ui >}} > {{< ui >}}Preferences{{< /ui >}} and toggle off the Natural Language Queries feature. ## Graphing Use the query editor to customize the graph displayed on the Metrics Explorer page. -You can specify the time frame in the top right corner of the page. The default is **Past 1 Hour**. +You can specify the time frame in the top right corner of the page. The default is {{< ui >}}Past 1 Hour{{< /ui >}}. {{< img src="metrics/explorer/metrics_explorer.png" alt="Metrics Explorer displaying two queries on a bar graph" style="width:80%;" >}} @@ -49,7 +49,7 @@ Metrics that are not reported in the last 24 hours do not appear in the query ed ### Scope -Define a filtering scope with the **from** text box by selecting or searching for tag values. For example, you can use the **from** text box to filter metric values from a specific host, cluster, environment, or region. +Define a filtering scope with the {{< ui >}}from{{< /ui >}} text box by selecting or searching for tag values. For example, you can use the {{< ui >}}from{{< /ui >}} text box to filter metric values from a specific host, cluster, environment, or region. ### Space aggregation @@ -70,11 +70,11 @@ You can optionally add functions to your query using the function button. Not al ### Split graph -Use the **Split Graph** button to view the data split into individual graphs by values for tags such as region, service, or environment. +Use the {{< ui >}}Split Graph{{< /ui >}} button to view the data split into individual graphs by values for tags such as region, service, or environment. ### Export -Use the **Export** button () to export your graph: +Use the {{< ui >}}Export{{< /ui >}} button () to export your graph: - Copy a link to the graph for sharing - Add it to an [incident][8] diff --git a/content/en/metrics/faq/rollup-for-distributions-with-percentiles.md b/content/en/metrics/faq/rollup-for-distributions-with-percentiles.md index 9c29da6b35d..8ab590a5e2f 100644 --- a/content/en/metrics/faq/rollup-for-distributions-with-percentiles.md +++ b/content/en/metrics/faq/rollup-for-distributions-with-percentiles.md @@ -13,10 +13,10 @@ No - your existing queries are unaffected. The `.rollup ` parameter ## What has been updated for distributions with percentiles? You no longer need to specify an additional time aggregator (as in `.rollup(avg)`) when you've already selected `p50`, `p75`, `p90`, `p95`, or `p99`. You only need to specify a rollup `