From f49434992ae08f0082fa0bf4e3070ba634730454 Mon Sep 17 00:00:00 2001 From: guacbot Date: Mon, 1 Jul 2024 18:25:23 -0400 Subject: [PATCH] Translation Pipeline PR (#23936) * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * updating translations * adding translations * adding translations * adding translations * updating translations * adding translations * updating translations * updating translations * updating translations * updating translations * updating translations * adding translations * updating translations * adding translations * updating translations * adding translations * adding translations * adding translations * adding translations * updating translations * adding translations * adding translations * updating translations * adding translations * adding translations * adding translations * adding translations * adding translations * updating translations * updating translations * adding translations * updating translations * adding translations * adding translations * adding translations * adding translations * updating translations * updating translations * adding translations * adding translations * adding translations * adding translations * updating translations * adding translations * updating translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * updating translations * updating translations * updating translations * updating translations * updating translations * adding translations * adding translations * updating translations * adding translations * adding translations * adding translations * adding translations * adding translations * updating translations * adding translations * adding translations * adding translations * adding translations * adding translations * updating translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * adding translations * updating translations --------- Co-authored-by: Jen Gilbert --- content/es/logs/guide/apigee.md | 158 ++++ ...fargate-logs-with-kinesis-data-firehose.md | 252 ++++++ .../logs/guide/azure-native-logging-guide.md | 69 ++ .../best-practices-for-log-management.md | 229 ++++++ ...g-file-with-heightened-read-permissions.md | 34 + content/es/logs/guide/detect-unparsed-logs.md | 73 ++ ...shooting-with-cross-product-correlation.md | 245 ++++++ .../es/logs/guide/how-to-set-up-only-logs.md | 75 ++ .../increase-number-of-log-files-tailed.md | 29 + ...a-logs-collection-troubleshooting-guide.md | 107 +++ .../log-collection-troubleshooting-guide.md | 281 +++++++ .../logs/guide/log-parsing-best-practice.md | 69 ++ .../logs-not-showing-expected-timestamp.md | 130 +++ .../guide/mechanisms-ensure-logs-not-lost.md | 43 + ...-custom-severity-to-official-log-status.md | 68 ++ ...ith-amazon-eventbridge-api-destinations.md | 63 ++ ...ting-file-permissions-for-rotating-logs.md | 118 +++ content/es/logs/log_collection/android.md | 514 ++++++++++++ content/es/logs/log_collection/flutter.md | 160 ++++ content/es/logs/log_collection/go.md | 133 +++ content/es/logs/log_collection/ios.md | 517 ++++++++++++ content/es/logs/log_collection/nodejs.md | 211 +++++ content/es/logs/log_collection/php.md | 556 +++++++++++++ content/es/logs/log_collection/python.md | 144 ++++ content/es/logs/log_collection/reactnative.md | 193 +++++ content/es/logs/log_collection/roku.md | 199 +++++ content/es/logs/log_collection/ruby.md | 214 +++++ content/es/logs/log_configuration/_index.md | 60 ++ content/es/logs/log_configuration/archives.md | 468 +++++++++++ .../logs/log_configuration/online_archives.md | 99 +++ .../es/logs/log_configuration/processors.md | 774 ++++++++++++++++++ .../fr/containers/cluster_agent/commands.md | 104 ++- content/fr/containers/troubleshooting/hpa.md | 127 +++ .../guide/aws-integration-troubleshooting.md | 29 +- .../guide/mongo-custom-query-collection.md | 23 +- .../logs/guide/log-parsing-best-practice.md | 33 +- content/fr/metrics/explorer.md | 38 +- .../monitors/guide/non_static_thresholds.md | 183 +++++ .../guide/devtools-tips.md | 57 ++ .../guide/enable-rum-shopify-store.md | 70 ++ .../guide/enable-rum-squarespace-store.md | 63 ++ .../guide/sampling-browser-plans.md | 237 ++++++ .../serverless/guide/extension_motivation.md | 12 +- .../fr/synthetics/guide/email-validation.md | 67 ++ content/fr/synthetics/guide/popup.md | 39 +- .../guide/synthetic-test-monitors.md | 70 ++ .../guide/using-synthetic-metrics.md | 69 ++ .../setting_up_apm_with_kubernetes_service.md | 170 ++++ .../connect_logs_and_traces/php.md | 191 +++++ .../automatic_instrumentation/_index.md | 122 +++ .../fr/tracing/trace_explorer/visualize.md | 102 +++ .../troubleshooting/connection_errors.md | 54 +- .../ja/api/latest/cases-projects/_index.md | 3 + .../ja/api/latest/container-images/_index.md | 3 + content/ja/api/latest/containers/_index.md | 3 + content/ja/api/latest/dora-metrics/_index.md | 3 + .../api/latest/service-scorecards/_index.md | 3 + .../integrations/marketplace_offering.md | 4 +- content/ja/glossary/terms/investigator.md | 6 + content/ja/glossary/terms/sast.md | 1 + .../containers/configuration.md | 43 +- content/ja/integrations/guide/azure-portal.md | 58 +- .../error_tracking/manage_data_collection.md | 4 +- content/ja/logs/explorer/advanced_search.md | 90 ++ .../log_configuration/pipeline_scanner.md | 66 ++ .../enabling/compatibility/_index.md | 13 +- .../sensitive_data_scanner/library_rules.md | 131 +++ .../regular_expression_syntax.md | 225 +++++ .../aws_lambda/installation/_index.md | 48 ++ .../guide/serverless_package_too_large.md | 2 +- .../serverless/libraries_integrations/cli.md | 2 +- .../libraries_integrations/extension.md | 2 +- .../events/explorer/analytics.md | 27 + .../events/explorer/searching.md | 49 ++ content/ja/tests/containers.md | 309 +++++++ content/ja/tests/setup/_index.md | 15 + content/ja/tests/setup/swift.md | 768 +++++++++++++++++ content/ja/tests/swift_tests.md | 51 ++ .../connect_logs_and_traces/python.md | 40 +- content/ja/tracing/trace_collection/_index.md | 4 +- .../dd_libraries/_index.md | 51 ++ .../tracing_naming_convention/_index.md | 158 ++-- .../trace_explorer/request_flow_map.md | 58 ++ 83 files changed, 10092 insertions(+), 293 deletions(-) create mode 100644 content/es/logs/guide/apigee.md create mode 100644 content/es/logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose.md create mode 100644 content/es/logs/guide/azure-native-logging-guide.md create mode 100644 content/es/logs/guide/best-practices-for-log-management.md create mode 100644 content/es/logs/guide/custom-log-file-with-heightened-read-permissions.md create mode 100644 content/es/logs/guide/detect-unparsed-logs.md create mode 100644 content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md create mode 100644 content/es/logs/guide/how-to-set-up-only-logs.md create mode 100644 content/es/logs/guide/increase-number-of-log-files-tailed.md create mode 100644 content/es/logs/guide/lambda-logs-collection-troubleshooting-guide.md create mode 100644 content/es/logs/guide/log-collection-troubleshooting-guide.md create mode 100644 content/es/logs/guide/log-parsing-best-practice.md create mode 100644 content/es/logs/guide/logs-not-showing-expected-timestamp.md create mode 100644 content/es/logs/guide/mechanisms-ensure-logs-not-lost.md create mode 100644 content/es/logs/guide/remap-custom-severity-to-official-log-status.md create mode 100644 content/es/logs/guide/sending-events-and-logs-to-datadog-with-amazon-eventbridge-api-destinations.md create mode 100644 content/es/logs/guide/setting-file-permissions-for-rotating-logs.md create mode 100644 content/es/logs/log_collection/android.md create mode 100644 content/es/logs/log_collection/flutter.md create mode 100644 content/es/logs/log_collection/go.md create mode 100644 content/es/logs/log_collection/ios.md create mode 100644 content/es/logs/log_collection/nodejs.md create mode 100644 content/es/logs/log_collection/php.md create mode 100644 content/es/logs/log_collection/python.md create mode 100644 content/es/logs/log_collection/reactnative.md create mode 100644 content/es/logs/log_collection/roku.md create mode 100644 content/es/logs/log_collection/ruby.md create mode 100644 content/es/logs/log_configuration/_index.md create mode 100644 content/es/logs/log_configuration/archives.md create mode 100644 content/es/logs/log_configuration/online_archives.md create mode 100644 content/es/logs/log_configuration/processors.md create mode 100644 content/fr/containers/troubleshooting/hpa.md create mode 100644 content/fr/monitors/guide/non_static_thresholds.md create mode 100644 content/fr/real_user_monitoring/guide/devtools-tips.md create mode 100644 content/fr/real_user_monitoring/guide/enable-rum-shopify-store.md create mode 100644 content/fr/real_user_monitoring/guide/enable-rum-squarespace-store.md create mode 100644 content/fr/real_user_monitoring/guide/sampling-browser-plans.md create mode 100644 content/fr/synthetics/guide/email-validation.md create mode 100644 content/fr/synthetics/guide/synthetic-test-monitors.md create mode 100644 content/fr/synthetics/guide/using-synthetic-metrics.md create mode 100644 content/fr/tracing/guide/setting_up_apm_with_kubernetes_service.md create mode 100644 content/fr/tracing/other_telemetry/connect_logs_and_traces/php.md create mode 100644 content/fr/tracing/trace_collection/automatic_instrumentation/_index.md create mode 100644 content/fr/tracing/trace_explorer/visualize.md create mode 100644 content/ja/api/latest/cases-projects/_index.md create mode 100644 content/ja/api/latest/container-images/_index.md create mode 100644 content/ja/api/latest/containers/_index.md create mode 100644 content/ja/api/latest/dora-metrics/_index.md create mode 100644 content/ja/api/latest/service-scorecards/_index.md create mode 100644 content/ja/glossary/terms/investigator.md create mode 100644 content/ja/logs/explorer/advanced_search.md create mode 100644 content/ja/logs/log_configuration/pipeline_scanner.md create mode 100644 content/ja/sensitive_data_scanner/library_rules.md create mode 100644 content/ja/sensitive_data_scanner/regular_expression_syntax.md create mode 100644 content/ja/serverless/aws_lambda/installation/_index.md create mode 100644 content/ja/service_management/events/explorer/analytics.md create mode 100644 content/ja/service_management/events/explorer/searching.md create mode 100644 content/ja/tests/containers.md create mode 100644 content/ja/tests/setup/_index.md create mode 100644 content/ja/tests/setup/swift.md create mode 100644 content/ja/tests/swift_tests.md create mode 100644 content/ja/tracing/trace_collection/custom_instrumentation/dd_libraries/_index.md create mode 100644 content/ja/tracing/trace_explorer/request_flow_map.md diff --git a/content/es/logs/guide/apigee.md b/content/es/logs/guide/apigee.md new file mode 100644 index 0000000000000..b8a551563400f --- /dev/null +++ b/content/es/logs/guide/apigee.md @@ -0,0 +1,158 @@ +--- +aliases: +- /es/logs/log_collection/apigee +- /es/integrations/apigee +description: Recopila logs de proxy de Apigee para realizar un seguimiento de errores, + tiempos de respuesta de solicitudes, duración, latencia, rendimiento del monitor + y problemas de proxies agregados en un solo lugar. +further_reading: +- link: logs/ + tag: Documentación + text: Log Management +integration_id: apigee +kind: Guía +name: apigee +short_description: Recopilar logs de Apigee +title: Apigee +--- + +## Información general + +Recopila logs de proxy de Apigee para realizar un seguimiento de errores, tiempos de respuesta, duración, latencia, rendimiento del monitor y problemas de proxies. + +## Configuración + +### Recopilación de logs + +{{% site-region region="us,eu" %}} +Existen dos métodos para recopilar logs de Apigee: + +1. Utiliza la [política JavaScript][1] de Apigee para enviar logs a Datadog. +2. Si ya dispones de un servidor syslog, utiliza el tipo de [política MessageLogging][2] de Apigee para gestionar logs en una cuenta syslog. + +#### Parámetro Syslog + +Utiliza el tipo de política MessageLogging con el parámetro syslog en tu API para registrar mensajes personalizados en syslog. Sustituye `` por {{< region-param key="web_integrations_endpoint" code="true" >}} y `` por {{< region-param key="web_integrations_port" code="true" >}}, en el siguiente ejemplo: + +```json + + datadog-logging + + test + + + TCP + + +``` + +[1]: https://docs.apigee.com/api-platform/reference/policies/javascript-policy +[2]: https://docs.apigee.com/api-platform/reference/policies/message-logging-policy#samples + +{{% /site-region %}} +#### Política JavaScript + +Envía logs de proxy de Apigee a Datadog utilizando la [política JavaScript][1] de Apigee. + +El JavaScript se ha configurado para registrar las variables de flujo esenciales como atributos de logs en Datadog. Los atributos se nombran de acuerdo con la [lista de atributos estándar][2]. + +1. Selecciona el proxy de Apigee desde el que quieres enviar logs a Datadog. +2. En la página de información general del proxy seleccionada, haz clic en la pestaña **DEVELOP** (Ampliar), situada en la esquina superior derecha. + +{{< img src="static/images/logs/guide/apigee/apigee_develop.png" alt="Ampliar" style="width:75%;">}} + +3. En **Navigator** (Navegador), añade una nueva política JavaScript y edita el archivo JavaScript creado en el menú desplegable **Resources --> jsc** (Recursos --> jsc). +4. Añade el siguiente fragmento de código JavaScript en él. Asegúrate de sustituir `` en la variable `dd_api_url` por tu [clave de API Datadog][3]. + +``` +// Configura la URL de la API Datadog aquí.. +var dd_api_url = "https://http-intake.logs.{{< region-param key="dd_site" code="true" >}}/api/v2/logs?dd-api-key=&ddsource=apigee"; + +// Depurar +// print(dd_api_url); +// print('Name of the flow: ' + context.flow); + +// calcular tiempos de respuesta de cliente, destino y total +var request_start_time = context.getVariable('client.received.start.timestamp'); +var request_end_time = context.getVariable('client.received.end.timestamp'); +var system_timestamp = context.getVariable('system.timestamp'); +var target_start_time = context.getVariable('target.sent.start.timestamp'); +var target_end_time = context.getVariable('target.received.end.timestamp'); +var total_request_time = system_timestamp - request_start_time; +var total_target_time = target_end_time - target_start_time; +var total_client_time = total_request_time - total_target_time; + +var timestamp = crypto.dateFormat('YYYY-MM-dd HH:mm:ss.SSS'); +var organization = context.getVariable("organization.name"); +var networkClientIP = context.getVariable("client.ip"); +var httpPort = context.getVariable("client.port"); +var environment = context.getVariable("environment.name"); +var apiProduct = context.getVariable("apiproduct.name"); +var apigeeProxyName = context.getVariable("apiproxy.name"); +var apigeeProxyRevision = context.getVariable("apiproxy.revision"); +var appName = context.getVariable("developer.app.name"); +var httpMethod = context.getVariable("request.verb"); +var httpUrl = '' + context.getVariable("client.scheme") + '://' + context.getVariable("request.header.host") + context.getVariable("request.uri"); +var httpStatusCode = context.getVariable("message.status.code"); +var statusResponse = context.getVariable("message.reason.phrase"); +var clientLatency = total_client_time; +var targetLatency = total_target_time; +var totalLatency = total_request_time; +var userAgent = context.getVariable('request.header.User-Agent'); +var messageContent = context.getVariable('message.content'); + + +// Atributos de logs de Datadog +var logObject = { + "timestamp": timestamp, + "organization": organization, + "network.client.ip": networkClientIP, + "env": environment, + "apiProduct": apiProduct, + "apigee_proxy.name": apigeeProxyName, + "apigee_proxy.revision": apigeeProxyRevision, + "service": appName, + "http.method": httpMethod, + "http.url": httpUrl, + "http.status_code": httpStatusCode, + "http.port": httpPort, + "status": statusResponse, + "clientLatency": clientLatency, + "targetLatency": targetLatency, + "totalLatency": totalLatency, + "http.client.start_time_ms": request_start_time, + "http.client.end_time_ms": request_end_time, + "http.useragent": userAgent, + "message": messageContent, +}; + + +var headers = { + 'Content-Type': 'application/json' +}; + + +// Depurar +// print('LOGGING OBJECT' + JSON.stringify(logObject)); + +var myLoggingRequest = new Request(dd_api_url, "POST", headers, JSON.stringify(logObject)); + +// Enviar logs a Datadog +httpClient.send(myLoggingRequest); +``` + +**Nota**: Añade más variables de flujo en JavaScript a partir de la [referencia de la variable de flujo Apigee][4]. + +## Solucionar problemas + +¿Necesitas ayuda? Ponte en contacto con el [servicio de asistencia de Datadog][5]. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://docs.apigee.com/api-platform/reference/policies/javascript-policy +[2]: /es/logs/log_configuration/attributes_naming_convention/#standard-attributes +[4]: https://docs.apigee.com/api-platform/reference/variables-reference +[5]: /es/help/ +[3]: https://app.datadoghq.com/organization-settings/api-keys \ No newline at end of file diff --git a/content/es/logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose.md b/content/es/logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose.md new file mode 100644 index 0000000000000..6737c901c0664 --- /dev/null +++ b/content/es/logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose.md @@ -0,0 +1,252 @@ +--- +further_reading: +- link: https://docs.datadoghq.com/logs/log_configuration/processors/ + tag: Documentación + text: Procesadores +- link: https://docs.aws.amazon.com/eks/latest/userguide/fargate-logging.html + tag: Documentación + text: Gestión de logs en Fargate +- link: https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html + tag: Documentación + text: Perfil de AWS Fargate +kind: guía +title: Enviar logs de Amazon EKS Fargate logs con Amazon Data Firehose +--- + +## Información general + +AWS Fargate en EKS proporciona una experiencia totalmente gestionada para la ejecución de cargas de trabajo Kubernetes. Amazon Data Firehose puede utilizarse junto con el enrutador de logs Fluent Bit de EKS para recopilar logs en Datadog. Esta guía proporciona una comparación del reenvío de logs a través de Amazon Data Firehose y de CloudWatch Logs, así como un ejemplo de aplicación de EKS Fargate para el reenvío de logs a Datadog a través de Amazon Data Firehose. + +{{< img src="logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose/log_streaming_diagram.png" alt="Diagrama del flujo de logs que muestra un clúster Fargate EKS enviando logs de contenedor, a través del enrutador de logs Fluent BIt, a Amazon Data Firehose y a un bucket de copia de seguridad S3 dentro de AWS, y luego a Datadog" responsive="true">}} + +### Reenvío de logs de Amazon Data Firehose y CloudWatch + +A continuación se indican las principales diferencias entre el uso de Amazon Data Firehose y CloudWatch para el reenvío de logs. + +- **Metadatos y etiquetado**: los metadatos, como el espacio de nombres y el ID de contenedor de Kubernetes, son accesibles como atributos estructurados al enviar logs mediante Amazon Data Firehose. + +- **Costes de AWS**: los costes de AWS pueden variar según los casos de uso individuales, pero el consumo de Amazon Data Firehose suele ser menos costoso que el consumo comparable de CloudWatch Logs. + +## Requisitos +1. Las siguientes herramientas de línea de comandos: [`kubectl`][6], [`aws`][7]. +2. Un clúster EKS con un [perfil Fargate][1] y un rol de ejecución de pod Fargate. En esta guía, el clúster se denomina `fargate-cluster` con un perfil Fargate denominado `fargate-profile` aplicado al espacio de nombres `fargate-namespace` . Si aún no dispones de estos recursos, consulta [Empezando con Amazon EKS][8], para crear el clúster ,y [Empezando con AWS Fargate utilizando Amazon EKS][9], para crear el perfil Fargate y el rol de ejecución del pod. + +## Configuración + +Los siguientes pasos describen el proceso para el envío de logs desde una aplicación de muestra desplegada en un clúster EKS a través de Fluent Bit y un flujo (stream) de entrega de Amazon Data Firehose a Datadog. Para maximizar la coherencia con las etiquetas (tags) estándar de Kubernetes en Datadog, se incluyen instrucciones para reasignar atributos seleccionados a etiquetas claves. + +1. [Crea un flujo de entrega de Amazon Data Firehose](#create-an-amazon-data-firehose-delivery-stream) que entregue logs a Datadog, junto con una copia de seguridad de S3 para cualquier entrega fallida de logs. +2. [Configura Fluent Bit para Firehose en EKS Fargate](#configure-fluent-bit-for-firehose-on-an-eks-fargate-cluster). +3. [Despliega una aplicación de ejemplo](#deploy-a-sample-application). +4. [Aplica procesadores de reasignadores](#remap-attributes-for-log-correlation) para la correlación utilizando etiquetas de Kubernetes y la etiqueta `container_id`. + +### Crea un flujo de entrega de Amazon Data Firehose + +Consulta la guía [Enviar logs de servicios AWS con Amazon Data Firehose de Datadog como destino][4] para configurar un flujo de entrega de Amazon Data Firehose. +**Nota**: Configura la **Fuente** como `Direct PUT`. + +### Configurar Fluent Bit para Firehose en un clúster EKS Fargate + +1. Crea el espacio de nombres `aws-observability`. + +{{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} +kubectl create namespace aws-observability +{{< /code-block >}} + +2. Crea el siguiente ConfigMap Kubernetes para Fluent Bit como `aws-logging-configmap.yaml`. Sustituye el nombre de tu flujo de entrega. + +{{< code-block lang="yaml" filename="" disable_copy="false" collapsible="false" >}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: aws-logging + namespace: aws-observability +data: + filters.conf: | + [FILTER] + Name kubernetes + Match kube.* + Merge_Log On + Buffer_Size 0 + Kube_Meta_Cache_TTL 300s + + flb_log_cw: 'true' + + output.conf: | + [OUTPUT] + Name amazon_data_firehose + Match kube.* + region + delivery_stream +{{< /code-block >}} + +3. Utiliza `kubectl` para aplicar el manifiesto ConfigMap. + +{{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} +kubectl apply -f aws-logging-configmap.yaml +{{< /code-block >}} + +4. Crea una política IAM y adjúntala al rol de ejecución del pod para permitir que el enrutador de logs que se ejecuta en AWS Fargate escriba en Amazon Data Firehose. Puedes utilizar el siguiente ejemplo, sustituyendo el ARN en el campo **Resource** (Recurso) por el ARN de tu flujo de entrega y también especificando tu región o tu ID de cuenta. + +{{< code-block lang="json" filename="allow_firehose_put_permission.json" disable_copy="false" collapsible="false" >}} +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "VisualEditor0", + "Effect": "Allow", + "Action": [ + "firehose:PutRecord", + "firehose:PutRecordBatch" + ], + "Resource": + "arn:aws:firehose:::deliverystream/" + } +] +} +{{< /code-block >}} + + a. Crea la política. + +{{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} +aws iam create-policy \ + --policy-name FluentBitEKSFargate \ + --policy-document file://allow_firehose_put_permission.json +{{< /code-block >}} + + b. Recupera el rol de ejecución del pod Fargate y adjunta la política IAM. + +{{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} + POD_EXEC_ROLE=$(aws eks describe-fargate-profile \ + --cluster-name fargate-cluster \ + --fargate-profile-name fargate-profile \ + --query 'fargateProfile.podExecutionRoleArn' --output text |cut -d '/' -f 2) + aws iam attach-role-policy \ + --policy-arn arn:aws:iam:::policy/FluentBitEKSFargate \ + --role-name $POD_EXEC_ROLE +{{< /code-block >}} + +### Desplegar una aplicación de ejemplo + +Para generar logs y probar el flujo de entrega de Amazon Data Firehose, despliega una carga de trabajo de muestra en tu clúster EKS Fargate. + +1. Crea un manifiesto de despliegue `sample-deployment.yaml`. + +{{< code-block lang="yaml" filename="sample-deployment.yaml" disable_copy="false" collapsible="false" >}} + apiVersion: apps/v1 + kind: Deployment + metadata: + name: sample-app + namespace: fargate-namespace + spec: + selector: + matchLabels: + app: nginx + replicas: 1 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx + ports: + - containerPort: 80 +{{< /code-block >}} + + 2. Crea el espacio de nombres `fargate-namespace`. + + {{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} + kubectl create namespace fargate-namespace + {{< /code-block >}} + + 3. Utiliza `kubectl` para aplicar el manifiesto del despliegue. + + {{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} + kubectl apply -f sample-deployment.yaml + {{< /code-block >}} + +### Validación + +1. Comprueba que los pods `sample-app` se están ejecutando en el espacio de nombres `fargate-namespace`. + + {{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} + kubectl get pods -n fargate-namespace + {{< /code-block >}} + +Resultado esperado: + + {{< code-block lang="bash" filename="" disable_copy="true" collapsible="false" >}} + NAME READY STATUS RESTARTS AGE + sample-app-6c8b449b8f-kq2qz 1/1 Running 0 3m56s + sample-app-6c8b449b8f-nn2w7 1/1 Running 0 3m56s + sample-app-6c8b449b8f-wzsjj 1/1 Running 0 3m56s + {{< /code-block >}} + +2. Utiliza `kubectl describe pod` para confirmar que la función de gestión de logs de Fargate está habilitada. + + {{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} + kubectl describe pod -n fargate-namespace |grep Logging + {{< /code-block >}} + +Resultado esperado: + + {{< code-block lang="bash" filename="" disable_copy="true" collapsible="false" >}} + Logging: LoggingEnabled + Normal LoggingEnabled 5m fargate-scheduler Successfully enabled logging for pod + {{< /code-block >}} + +3. Inspecciona los logs del despliegue. + + {{< code-block lang="shell" filename="" disable_copy="false" collapsible="false" >}} + kubectl logs -l app=nginx -n fargate-namespace + {{< /code-block >}} + +Resultado esperado: + + {{< code-block lang="bash" filename="" disable_copy="true" collapsible="false" >}} + /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh + /docker-entrypoint.sh: Configuration complete; ready for start up + 2023/01/27 16:53:42 [notice] 1#1: using the "epoll" event method + 2023/01/27 16:53:42 [notice] 1#1: nginx/1.23.3 + 2023/01/27 16:53:42 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) + 2023/01/27 16:53:42 [notice] 1#1: OS: Linux 4.14.294-220.533.amzn2.x86_64 + 2023/01/27 16:53:42 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1024:65535 + 2023/01/27 16:53:42 [notice] 1#1: start worker processes + ... + {{< /code-block >}} + +4. Comprueba que los logs está en Datadog. En el [Explorador de logs de Datadog][10], busca `@aws.firehose.arn:""`, sustituyendo `` por tu ARN de Amazon Data Firehose, para filtrar logs desde Amazon Data Firehose. + +{{< img src="logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose/log_verification.jpg" alt="Verificación de líneas de logs NGINX en el Explorador de logs de Datadog" responsive="true">}} + +### Reasignar atributos para la correlación de logs + +Los logs de esta configuración requieren la reasignación de algunos atributos para maximizar la coherencia con las etiquetas estándar de Kubernetes en Datadog. +1. Ve a la página [Pipelines de logs de Datadog][3]. +2. Crea un nuevo pipeline con el **Nombre** `EKS Fargate Log Pipeline` y el **Filtro** `service:aws source:aws`. +3. Crea cuatro [procesadores de reasignadores][5] para reasignar los siguientes atributos a claves de etiqueta: + | Atributo a reasignar | Claves de etiqueta de destino | + |--------------------|----------------| + | `kubernetes.container_name` | `kube_container_name` | + | `kubernetes.namespace_name` | `kube_namespace` | + | `kubernetes.pod_name` | `pod_name` | + | `kubernetes.docker_id` | `container_id` | + +4. Después de crear este pipeline, los logs emitidos por la aplicación de ejemplo se etiquetan como en este ejemplo con los atributos de logs reasignados a etiquetas de Kubernetes: +{{< img src="logs/guide/aws-eks-fargate-logs-with-kinesis-data-firehose/log_example_remapped.jpg" alt="Vista detallada de un log en Datadog con las etiquetas container_id, kube_container_name, kube_namespace, pod_name " responsive="true">}} + +## Leer más + {{< partial name="whats-next/whats-next.html" >}} + +[1]: https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html +[2]: https://app.datadoghq.com/organization-settings/api-keys +[3]: https://app.datadoghq.com/logs/pipelines +[4]: /es/logs/guide/send-aws-services-logs-with-the-datadog-kinesis-firehose-destination/?tab=amazondatafirehosedeliverystream#setup +[5]: /es/logs/log_configuration/processors/?tab=ui#remapper +[6]: https://kubernetes.io/docs/tasks/tools/ +[7]: https://aws.amazon.com/cli/ +[8]: https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html +[9]: https://docs.aws.amazon.com/eks/latest/userguide/fargate-getting-started.html +[10]: https://app.datadoghq.com/logs \ No newline at end of file diff --git a/content/es/logs/guide/azure-native-logging-guide.md b/content/es/logs/guide/azure-native-logging-guide.md new file mode 100644 index 0000000000000..23e3ff31849da --- /dev/null +++ b/content/es/logs/guide/azure-native-logging-guide.md @@ -0,0 +1,69 @@ +--- +further_reading: +- link: /logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +kind: documentation +title: Enviar logs de Azure con el recurso de Datadog +--- + +{{< site-region region="us3" >}} + +## Información general + +Utiliza esta guía para configurar y gestionar el registro directamente desde tus suscripciones de Azure a Datadog a través del recurso [Datadog en Azure][7]. Puedes gestionar la recopilación de tres tipos de logs de Azure. Encontrarás instrucciones y detalles adicionales en las secciones siguientes: + + - [Logs de actividad](#activity-logs) + - [Logs de recurso de Azure](#azure-resource-logs) + - [Logs de Azure Active Directory (Azure AD)](#azure-active-directory-azure-ad-logs) + +**Nota**: El recurso de Datadog en Azure solo está disponible para organizaciones de Datadog en el sitio US3 de Datadog. Si utilizas cualquier otro [sitio de Datadog][5], consulta la guía [Enviar logs de Azure a Datadog][6] para conocer las opciones de configuración. + +## Logs de actividad + +Brinda información sobre las operaciones en tus recursos en el [plano de control][1]. También se incluyen actualizaciones sobre los eventos de estado del servicio. Utiliza el log de actividad para determinar el qué, el quién y el cuándo de cualquier operación de escritura (`PUT`, `POST`, `DELETE`). + +Para enviar los logs de actividad a Datadog, selecciona **Send subscription activity logs** (Enviar logs de actividad de suscripción). Si esta opción se deja sin marcar, no se enviará ninguno de los logs de actividad a Datadog. + +
Cuando se habilita la recopilación de logs, el recurso de Datadog modifica automáticamente las configuraciones de registro de los servicios de aplicación. Azure activa un reinicio para los servicios de aplicación cuando cambian sus configuraciones de registro.
+ +## Logs de recursos de Azure + +Brinda información sobre las operaciones realizadas en los recursos de Azure en el [plano de datos][1]. Por ejemplo, obtener un secreto de una bóveda de claves o realizar una solicitud a una base de datos son operaciones del plano de datos. El contenido de los logs de recursos varía según el servicio de Azure y el tipo de recurso. + +Para enviar los logs de recursos de Azure a Datadog, selecciona **Send Azure resource logs for all defined resources** (Enviar logs de recursos de Azure para todos los recursos definidos). Los tipos de logs de recursos de Azure se enumeran en las [categorías Log de recursos de monitor de Azure][2]. Cuando seleccionas esta opción, todos los logs de recursos se envían a Datadog, incluidos los nuevos recursos creados en la suscripción. + +Opcionalmente, puedes filtrar el conjunto de recursos de Azure al enviar logs a Datadog utilizando las etiquetas de recurso de Azure. + +### Reglas de etiqueta para el envío de logs + +- Los recursos de Azure con etiquetas `include` envían logs a Datadog. +- Los recursos de Azure con etiquetas `exclude` no envían logs a Datadog. +- Si hay un conflicto entre las normas de inclusión y exclusión, la exclusión tiene prioridad. + +Por ejemplo, la captura de pantalla siguiente muestra una regla de etiqueta en la que solo las máquinas virtuales, los conjuntos a escala de máquinas virtuales y los planes de servicio de aplicaciones etiquetados como `Datadog = True` envían métricas y logs a Datadog. + +{{< img src="integrations/azure/azure-us3-create-dd-resource3.png" alt="Azure US3 crea logs de recursos de Datadog " responsive="true" style="width:90%;">}} + +## Logs de Azure Active Directory (Azure AD) + +Los logs de Azure AD contienen el historial de la actividad de inicio de sesión y un rastro de auditoría de los cambios realizados en Azure AD para un inquilino concreto. Para enviar estos logs a Datadog, primero completa el proceso para crear un recurso de Datadog. Una vez que tengas un recurso de Datadog en Azure, sigue los pasos de configuración de la guía [Datadog en el Portal de Azure][3]. + +[1]: https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/control-plane-and-data-plane +[2]: https://docs.microsoft.com/en-us/azure/azure-monitor/essentials/resource-logs-categories +[3]: https://docs.datadoghq.com/es/integrations/guide/azure-portal/#azure-active-directory-logs +[4]: https://portal.azure.com/#blade/HubsExtension/BrowseResource/resourceType/Microsoft.Datadog%2Fmonitors +[5]: /es/getting_started/site/ +[6]: /es/logs/guide/azure-logging-guide +[7]: https://learn.microsoft.com/en-us/azure/partner-solutions/datadog/ +{{< /site-region >}} + +{{< site-region region="us,eu,us5,gov,ap1" >}} + +
El recurso de Datadog en Azure solo está disponible para organizaciones en el sitio US3 de Datadog. Si utilizas un sitio de Datadog diferente, consulta la guía Enviar logs de Azure a Datadog para conocer las opciones de configuración. Si estás utilizando el sitio US3 de Datadog, cambia el selector de sitio a la derecha de esta página.
+ +{{< /site-region >}} + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} \ No newline at end of file diff --git a/content/es/logs/guide/best-practices-for-log-management.md b/content/es/logs/guide/best-practices-for-log-management.md new file mode 100644 index 0000000000000..c6b3ef616f23a --- /dev/null +++ b/content/es/logs/guide/best-practices-for-log-management.md @@ -0,0 +1,229 @@ +--- +algolia: + tags: + - uso de logs +aliases: +- /es/logs/guide/logs-monitors-on-volumes/ +further_reading: +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +- link: https://www.datadoghq.com/blog/log-management-policies/ + tag: Blog + text: Cómo implementar las políticas de gestión de logs con tus equipos +kind: guía +title: Prácticas recomendadas para la gestión de logs +--- + +## Información general + +La gestión de logs de Datadog recopila, procesa, archiva, explora y monitoriza tus logs para que puedas visualizar los problemas de tu sistema. Sin embargo, puede ser difícil obtener el nivel adecuado de visibilidad de tus logs y el rendimiento de los logs puede variar mucho, lo que crea un uso inesperado de los recursos. + +Por tal motivo, esta guía te mostrará varias prácticas recomendadas para la gestión de logs y configuraciones de cuenta que brindan flexibilidad en la gestión, la atribución del uso y el control del presupuesto. Más concretamente, verás cómo puedes: + +- [Configurar múltiples índices para segmentar tus logs](#set-up-multiple-indexes-for-log-segmentation) +- [Configurar varios archivos para almacenamiento a largo plazo](#set-up-multiple-archives-for-long-term-storage) +- [Configurar el control de acceso basado en roles (RBAC) para roles personalizados](#set-up-rbac-for-custom-roles) + +Esta guía también explica cómo puedes monitorizar el uso de logs: + +- [Con alertas para picos inesperados de tráfico de logs](#alert-on-unexpected-log-traffic-spikes) +- [Con alertas para logs indexados cuando el volumen supera un umbral especificado](#alert-when-an-indexed-log-volume-passes-a-specified-threshold) +- [Configurando filtros de exclusión en logs de gran volumen](#set-up-exclusion-filters-on-high-volume-logs) + +Si deseas transformar tus logs o redactar datos confidenciales en tus logs antes de que salgan de tu entorno, consulta cómo puedes [agregar, procesar y transformar tus datos de logs con Observability Pipelines][29]. + +## Configuración de la cuenta de logs + +### Configurar varios índices para la segmentación de logs + +Configura varios índices si deseas segmentar tus logs para diferentes periodos de retención o cuotas diarias, monitorización del uso y facturación. + +Por ejemplo, si tienes logs que solo deben conservarse durante 7 días, mientras que otros deben conservarse durante 30 días, utiliza varios índices para separar los logs según los dos periodos de conservación. + +Para configurar varios índices: + +1. Navega hasta [Índices de logs][1]. +2. Haz clic en **New Index** (Nuevo índice) o **Add a new index** (Añadir un nuevo índice). +3. Introduce un nombre para el índice. +4. Introduce la consulta de búsqueda para filtrar los logs que deseas en este índice. +5. Establece la cuota diaria para limitar el número de logs que se almacenan en un índice por día. +6. Establece el periodo de retención durante el cual deseas conservar estos logs. +7. Haz clic en **Save** (Guardar). + +Establecer cuotas diarias en tus índices puede ayudar a evitar excesos en la facturación cuando se añaden nuevos orígenes de logs o si un desarrollador cambia involuntariamente los niveles de gestión de logs al modo de depuración. Consulta [Alerta de índices que alcanzan su cuota diaria](#alert-on-indexes-reaching-their-daily-quota) para conocer cómo configurar una monitorización que avise cuando se alcanza un porcentaje de la cuota diaria dentro de las últimas 24 horas. + +### Crear varios archivos para el almacenamiento a largo plazo + +Si deseas almacenar tus logs durante periodos de tiempo más largos, configura [Archivos de logs][2] para enviar tus logs a un sistema optimizado para el almacenamiento, como Amazon S3, Azure Storage o Google Cloud Storage. Cuando desees utilizar Datadog para analizar esos logs, utiliza [Log Rehydration][3]TM para capturar esos logs de nuevo en Datadog. Con múltiples archivos, puedes segmentar logs por motivos de cumplimiento y mantener los costes de rehidratación bajo control. + +#### Configurar el tamaño máximo de escaneado para gestionar las rehidrataciones costosas + +Establece un límite para el volumen de logs que pueden rehidratarse al mismo tiempo. Al configurar un archivo, puedes definir el volumen máximo de datos de logs que se pueden escanear para su rehidratación. Consulta [Definir el tamaño máximo de escaneado][4] para obtener más información. + +### Configurar el control de acceso basado en roles (RBAC) para roles personalizados + +Existen tres [roles predeterminados de Datadog][5]: Administrador, Estándar y Solo lectura. También puedes crear roles personalizados con conjuntos de permisos únicos. Por ejemplo, puedes crear un rol que restrinja la modificación de las políticas de retención de índices para los usuarios a fin de evitar picos de costes no deseados. Del mismo modo, puedes restringir quién puede modificar las configuraciones de parseo de logs para evitar cambios no deseados en formatos y estructuras de logs bien definidos. + +Para configurar roles personalizados con permisos: + +1. Inicia sesión en [Datadog][6] como Administrador. +2. Navega hasta [Parámetros de organización > Roles][7]. +3. Para activar los roles personalizados, haz clic en el engranaje de la parte superior izquierda y, a continuación, en **Enable** (Habilitar). +4. Una vez activados, haz clic en **New Role** (Nuevo rol). +5. Introduce un nombre para el nuevo rol. +6. Selecciona los permisos para el rol. Esto te permite restringir el acceso a determinadas acciones, como la rehidratación de logs y la creación de métricas basadas en logs. Consulta [Permisos para la gestión de logs][8] para conocer más detalles. +7. Haz clic en **Save** (Guardar). + +Consulta [Cómo configurar el control de acceso basado en roles (RBAC) para logs][9] para obtener una guía paso a paso sobre cómo configurar y asignar un rol con permisos específicos para un caso de uso de ejemplo. + +## Monitorizar el uso de logs + +Puedes monitorizar el uso de logs configurando lo siguiente: + +- [Alertas para picos inesperados de tráfico de logs](#alert-on-unexpected-log-traffic-spikes) +- [Alertas cuando un volumen de logs indexados supera un umbral especificado](#alert-when-an-indexed-log-volume-passes-a-specified-threshold) + +### Alertas para picos inesperados de tráfico de logs + +#### Métricas del uso de logs + +Por defecto, [las métricas del uso de logs][10] están disponibles para realizar un seguimiento del número de logs consumidos, bytes consumidos y logs indexados. Estas métricas son gratuitas y se conservan durante 15 meses: + +- `datadog.estimated_usage.logs.ingested_bytes` +- `datadog.estimated_usage.logs.ingested_events` + +Consulta [Monitores para detección de anomalías][11] para conocer cómo puedes crear monitores de anomalías con las métricas de uso. + +**Nota**: Datadog recomienda establecer la unidad en `byte` para `datadog.estimated_usage.logs.ingested_bytes` en la [página de resumen de métricas][12]: + +{{< img src="logs/guide/logs_estimated_bytes_unit.png" alt="La página de resumen de métricas muestra el panel lateral datadog.estimated_usage.logs.ingested_bytes con la unidad configurada en byte" style="width:70%;">}} + +#### Monitores para detección de anomalías + +Crea un monitor para la detección de anomalías a fin de alertar sobre cualquier pico inesperado de indexación de logs: + +1. Navega hasta [Monitores > Nuevo monitor][13] y selecciona **Anomaly** (Anomalía). +2. En la sección **Define the metric** (Definir la métrica), selecciona la métrica`datadog.estimated_usage.logs.ingested_events`. +3. En el campo **from** (de), añade la etiqueta (tag) `datadog_is_excluded:false` para monitorizar los logs indexados y no los consumidos. +4. En el campo **sum by** (sumar por), añade las etiquetas (tags) `service` y `datadog_index` para recibir una notificación si un servicio específico se dispara o deja de enviar logs en cualquier índice. +5. Configura las condiciones de alerta para que coincidan con tu caso de uso. Por ejemplo, configura el monitor para que alerte si los valores evaluados están fuera de un rango esperado. +6. Añade un título para la notificación y un mensaje con instrucciones para actuar. Por ejemplo, esta es una notificación con enlaces contextuales: + ```text + An unexpected amount of logs has been indexed in the index: {{datadog_index.name}} + + 1. [Check Log patterns for this service](https://app.datadoghq.com/logs/patterns?from_ts=1582549794112&live=true&to_ts=1582550694112&query=service%3A{{service.name}}) + 2. [Add an exclusion filter on the noisy pattern](https://app.datadoghq.com/logs/pipelines/indexes) + ``` +7. Haz clic en **Create** (Crear). + +### Alerta cuando un volumen de logs indexados supera un umbral especificado + +Configura un monitor para alertar si un volumen de logs indexados en cualquier contexto de tu infraestructura (por ejemplo, `service`, `availability-zone`, etc.) está aumentando inesperadamente. + +1. Navega hasta [Explorador de logs][14]. +2. Introduce una [consulta de búsqueda][15] que incluya el nombre del índice (por ejemplo, `index:main`) para capturar el volumen de logs que deseas monitorizar. +3. Haz clic en la flecha hacia abajo situada junto a **Download as CSV** (Descargar como CSV) y selecciona **Create monitor** (Crear monitor). +4. Añade etiquetas (tags) (por ejemplo, `host, `services, etc.) al campo **group by** (agrupar por). +5. Completa **Alert threshold** (Umbral de alerta) para tu caso de uso. Opcionalmente, completa **Warning threshold** (Umbral de alerta). +6. Añade un título para la notificación, por ejemplo: + ``` + Unexpected spike on indexed logs for service {{service.name}} + ``` +6. Añade un mensaje, por ejemplo: + ``` + The volume on this service exceeded the threshold. Define an additional exclusion filter or increase the sampling rate to reduce the volume. + ``` +7. Haz clic en **Create** (Crear). + +#### Alerta sobre el volumen de logs indexados desde principios de mes + +Aprovecha la métrica `datadog.estimated_usage.logs.ingested_events` filtrada en `datadog_is_excluded:false` para contar solo los logs indexados y el [intervalo continuo del monitor de métricas][28] para monitorizar el recuento desde principios de mes. + +{{< img src="logs/guide/monthly_usage_monitor.png" alt="Configurar un monitor para alertar del recuento de logs indexados desde principios de mes" style="width:70%;">}} + +#### Alerta para índices que alcanzan su cuota diaria + +[Establece una cuota diaria][16] en los índices para evitar indexar más de un número determinado de logs al día. Si un índice tiene una cuota diaria, Datadog recomienda que se configure el [monitor que notifica sobre el volumen de ese índice](#alert-when-an-indexed-log-volume-passes-a-specified-threshold) para alertar cuando se alcance el 80 % de esta cuota en las últimas 24 horas. + +Se genera un evento cuando se alcanza la cuota diaria. Por defecto, estos eventos tienen la etiqueta (tag) `datadog_index` con el nombre del índice. Por lo tanto, cuando se genere este evento, puedes [crear una faceta][17] en la etiqueta (tag) `datadog_index`, de modo que puedas utilizar `datadog_index` en el paso `group by` para configurar un monitor de alerta múltiple. + +Para configurar un monitor que alerte cuando se alcanza la cuota diaria para un índice: + +1. Navega hasta [Monitores > Nuevo monitor][13] y haz clic en **Event** (Evento). +2. Introduce `source:datadog "daily quota reached"` en la sección **Define the search query** (Definir la consulta de búsqueda). +3. Añade `datadog_index` al campo **group by** (agrupar por). Se actualiza automáticamente a `datadog_index(datadog_index)`. La etiqueta (tag) `datadog_index(datadog_index)` solo está disponible cuando ya se ha generado un evento. +4. En la sección **Set alert conditions** (Establecer condiciones de alerta), selecciona `above or equal to` e introduce `1` para **Alert threshold** (Umbral de alerta). +5. Añade un título de notificación y un mensaje en la sección **Configure notifications and automations** (Configurar notificaciones y automatizaciones). El botón **Multi Alert** (Alerta múltiple) se selecciona automáticamente porque el monitor está agrupado por `datadog_index(datadog_index)`. +6. Haz clic en **Save** (Guardar). + +Este es un ejemplo del aspecto de la notificación en Slack: + +{{< img src="logs/guide/daily_quota_notification.png" alt="Una notificación de Slack sobre la cuota diaria alcanzada en datadog_index:retention-7" style="width:70%;">}} + +### Revisar el dashboard de uso estimado + +Una vez que empieces a consumir logs, se instala automáticamente en tu cuenta un [dashboard][18] listo para usar que resume las métricas del uso de logs. + +{{< img src="logs/guide/logslight.png" alt="El dashboard de uso estimado de logs que muestra el desglose de los indexados y los consumidos en diferentes widgets" style="width:70%;">}} + +**Nota**: Las métricas utilizadas en este dashboard son estimaciones y pueden diferir de las cifras de facturación oficiales. + +Para encontrar este dashboard, navega hasta **Dashboards > Dashboards List** (Dashboards > Listas de dashboards) y busca [Gestión de logs - Uso estimado][19]. + +### Establecer filtros de exclusión en logs de gran volumen + +Cuando haya alertas de los monitores de uso, puedes configurar filtros de exclusión y aumentar la frecuencia de muestreo para reducir el volumen. Consulta [Filtros de exclusión][20] para saber cómo configurarlos. También puedes utilizar [Patrones de logs][21] para agrupar e identificar logs de gran volumen. A continuación, en el panel lateral del patrón de logs, haz clic en **Add Exclusion Filter** (Añadir filtro de exclusión) para añadir un filtro que impida la indexación de esos logs. + +{{< img src="logs/guide/patterns_exclusion.png" alt="La página del explorador de logs muestra los detalles del panel lateral de un patrón con el botón para añadir filtros de exclusión en la parte superior" style="width:80%;">}} + +Incluso si utilizas filtros de exclusión, puedes visualizar tendencias y anomalías sobre todos tus datos de logs utilizando las métricas basadas en logs. Consulta [Generar métricas a partir de logs consumidos][22] para obtener más información. + +### Activar el escáner de datos confidenciales para la detección de información de identificación personal (PII) + +Si deseas evitar fugas de datos y limitar los riesgos de incumplimiento, utiliza Sensitive Data Scanner para identificar, etiquetar y, opcionalmente, redactar o aplicar hash a los datos confidenciales. Por ejemplo, puedes buscar números de tarjetas de crédito, números de cuenta bancaria y claves de API en tus logs, tramos (spans) APM y eventos RUM. Consulta [Sensitive Data Scanner][23] para conocer cómo configurar las reglas de escaneo a fin de determinar qué datos se analizarán. + +**Nota**: [Sensitive Data Scanner][24] es un producto que se factura por separado. + +### Activar Audit Trail para ver las actividades de los usuarios + +Si deseas ver las actividades de los usuarios, como quién cambió la retención de un índice o quién modificó un filtro de exclusión, activa Audit Trail para ver estos eventos. Consulta [Eventos de Audit Trail][25] para obtener una lista de los eventos específicos de plataformas y productos que están disponibles. Para activar y configurar Audit Trail, sigue los pasos que se indican en la [documentación de Audit Trail][26]. + +**Nota**: [Audit Trail][27] es un producto que se factura por separado. + +## Lectura adicional + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/logs/pipelines/indexes +[2]: /es/logs/log_configuration/archives/ +[3]: /es/logs/log_configuration/rehydrating/ +[4]: /es/logs/log_configuration/archives/?tab=awss3#define-maximum-scan-size +[5]: /es/account_management/rbac/?tab=datadogapplication#datadog-default-roles +[6]: https://app.datadoghq.com/ +[7]: https://app.datadoghq.com/organization-settings/roles +[8]: /es/account_management/rbac/permissions/?tab=ui#log-management +[9]: /es/logs/guide/logs-rbac/ +[10]: /es/logs/logs_to_metrics/#logs-usage-metrics +[11]: /es/monitors/types/anomaly/ +[12]: https://app.datadoghq.com/metric/summary?filter=datadog.estimated_usage.logs.ingested_bytes&metric=datadog.estimated_usage.logs.ingested_bytes +[13]: https://app.datadoghq.com/monitors/create +[14]: https://app.datadoghq.com/logs +[15]: /es/logs/explorer/search/ +[16]: /es/logs/indexes/#set-daily-quota +[17]: /es/service_management/events/explorer/facets +[18]: https://app.datadoghq.com/dash/integration/logs_estimated_usage +[19]: https://app.datadoghq.com/dashboard/lists?q=Log+Management+-+Estimated+Usage +[20]: /es/logs/log_configuration/indexes/#exclusion-filters +[21]: /es/logs/explorer/analytics/patterns +[22]: /es/logs/log_configuration/logs_to_metrics/ +[23]: /es/sensitive_data_scanner/ +[24]: https://www.datadoghq.com/pricing/?product=sensitive-data-scanner#sensitive-data-scanner +[25]: /es/account_management/audit_trail/events/ +[26]: /es/account_management/audit_trail/ +[27]: https://www.datadoghq.com/pricing/?product=audit-trail#audit-trail +[28]: /es/monitors/configuration/?tab=thresholdalert#evaluation-window +[29]: /es/observability_pipelines/ \ No newline at end of file diff --git a/content/es/logs/guide/custom-log-file-with-heightened-read-permissions.md b/content/es/logs/guide/custom-log-file-with-heightened-read-permissions.md new file mode 100644 index 0000000000000..4feefbac60754 --- /dev/null +++ b/content/es/logs/guide/custom-log-file-with-heightened-read-permissions.md @@ -0,0 +1,34 @@ +--- +aliases: +- /es/logs/faq/i-have-a-custom-log-file-with-heightened-read-permissions +further_reading: +- link: /logs/log_collection/ + tag: Documentación + text: Aprende a recopilar tus logs +- link: /logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +- link: /glossary/#tail + tag: Glosario + text: Entrada de glosario para "tail" (cola) +kind: guía +title: Enviar logs desde un archivo de log personalizado con permisos de lectura ampliados +--- + +A menudo, los archivos de log, en especial los logs de sistema como *syslog* o *journald*, tienen permisos de lectura ampliados que bloquean la recopilación de logs del Datadog Agent, ya que no tiene acceso *sudo* o *admin*. + +Hay tres posibles soluciones para evitar esto: + +* (No recomendado) Proporciona acceso root (raíz) al Agent para que pueda seguir esos archivos. Datadog recomienda encarecidamente no elegir esta opción. +* Cambia el permiso del archivo para que el Agent pueda acceder a él. El Agent necesita permisos de ejecución y lectura en los directorios y también permiso de lectura en el archivo. Ejecuta los siguientes comandos para proporcionar esos permisos (para cualquier usuario, no solo el Agent): + * chmod 755 `` + * chmod 644 `` +* Configura un cargador de log de código abierto (como Rsyslog, NXLog, etc.) que tenga acceso root (raíz) para enviar esos logs directamente a tu plataforma de Datadog o localmente a un Datadog Agent en ejecución. Para obtener instrucciones, lee la documentación dedicada a [Rsyslog][1], [Syslog-ng][2], [NXLog][3], [FluentD][4], o [Logstash][5]. + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /es/integrations/rsyslog/ +[2]: /es/integrations/syslog_ng/ +[3]: /es/integrations/nxlog/ +[4]: /es/integrations/fluentd/#log-collection +[5]: /es/integrations/logstash/#log-collection \ No newline at end of file diff --git a/content/es/logs/guide/detect-unparsed-logs.md b/content/es/logs/guide/detect-unparsed-logs.md new file mode 100644 index 0000000000000..3631bdef92674 --- /dev/null +++ b/content/es/logs/guide/detect-unparsed-logs.md @@ -0,0 +1,73 @@ +--- +further_reading: +- link: /logs/explorer/ + tag: Documentación + text: Aprender a explorar tus logs +- link: /logs/faq/log-parsing-best-practice + tag: Documentación + text: Prácticas recomendadas para el análisis de logs +kind: Guía +title: Monitorizar y consultar logs sin analizar +--- + +## Información general +El análisis de logs es fundamental para poder utilizar Datadog Log Management en toda su capacidad en consultas, monitores, agregaciones o enriquecimientos automáticos, como el analizador de datos sensibles. +Al aumentar el volumen de logs, puede resultar difícil identificar y corregir los patrones de logs que no son analizados por los pipelines. + +Para identificar y controlar el volumen de logs sin analizar en tu organización necesitas: + +1. [Detectar los logs sin analizar](#detect-unparsed-logs) +2. [Consultar si existen logs sin analizar](#query-for-unparsed-logs) +3. [Crear una métrica para realizar un seguimiento de los logs sin analizar](#create-a-metric-to-track-for-unparsed-logs) +4. [Monitorizar el volumen de logs sin analizar](#monitor-the-volume-of-unparsed-logs) + + +## Detectar los logs sin analizar +Para determinar si un log específico ha sido analizado por tus pipelines, ábrelo y observa el panel Event Attributes (Atributos de eventos). Si el log no ha sido analizado, en lugar de mostrar los atributos extraídos de tu log, el panel mostrará un mensaje indicando que no se han extraído atributos: + +{{< img src="logs/guide/unparsed-logs/unparsed-log.jpg" alt="Detalles de logs sin analizar" style="width:90%;">}} + + +Puedes comenzar analizando los logs sin analizar mediante la creación de [pipelines personalizados][1] o el uso de una [integración de logs][2] como origen del log, para aprovechar la configuración automática de pipelines. + +## Consultar si existen logs sin analizar +Si tienes muchos logs, lo que hace que sea inviable verificarlos individualmente, puedes consultar si existen logs sin analizar utilizando el filtro `datadog.pipelines:false` en el [Explorador de logs][3]: + +{{< img src="logs/guide/unparsed-logs/datadog-pipeline-false-log-explorer.jpg" alt="Consultar si existen logs sin analizar" style="width:90%;">}} + +Este filtro devuelve todos los logs indexados sin atributos personalizados después del procesamiento del pipeline. +La [agregación de patrones][4] muestra una vista agregada de los patrones comunes en logs sin analizar, lo que puede ayudarte a crear pipelines personalizados. + +## Crear una métrica para realizar un seguimiento de los logs sin analizar +La consulta de logs sin analizar te permite seleccionar logs indexados sin analizar. También es una buena práctica asegurarse de que se analicen incluso los logs que no indexas, para que el contenido de tus [archivos][5] esté estructurado. + +Para logs sin analizar, crea una [métrica personalizada][6] utilizando la consulta `datadog.pipelines:false`: + +{{< img src="logs/guide/unparsed-logs/logs-unparsed-metric.jpg" alt="Generar una métrica para logs no analizados" style="width:90%;">}} + +Como para cualquier métrica basada en logs, puedes añadir dimensiones en el campo `group by`. El ejemplo anterior muestra la agrupación por `service` y `team`. Para definir la propiedad de un log, debes agrupar por las dimensiones que estás utilizando. +## Monitorizar el volumen de logs sin analizar +Para garantizar que en tu organización existe un control del análisis de logs, aplica una cuota para el volumen logs sin analizar. Este enfoque se aproxima a lo que proponen las [cuotas diarias][7] para índices. + +Para monitorizar el volumen de logs sin analizar: +1. Crea un [monitor de métricas][8]. +2. Utiliza la métrica `logs.unparsed` creada anteriormente. +3. Define la cuota por `team`. +4. Asegúrate de que las [condiciones de alerta][9] corresponden a los casos de los que quieres recibir alertas. + +{{< img src="logs/guide/unparsed-logs/monitor-unparsed-logs-team.jpg" alt="Consultar logs sin analizar" style="width:90%;">}} + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: /es/logs/log_configuration/pipelines +[2]: /es/integrations/#cat-log-collection +[3]: /es/logs/explorer/ +[4]: /es/logs/explorer/#patterns +[5]: /es/logs/archives/?tab=awss3 +[6]: /es/logs/logs_to_metrics/ +[7]: /es/logs/indexes#set-daily-quota +[8]: /es/monitors/types/metric/?tab=threshold#overview +[9]: /es/monitors/types/metric/?tab=threshold#set-alert-conditions \ No newline at end of file diff --git a/content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md b/content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md new file mode 100644 index 0000000000000..a3b8274d7c0b7 --- /dev/null +++ b/content/es/logs/guide/ease-troubleshooting-with-cross-product-correlation.md @@ -0,0 +1,245 @@ +--- +further_reading: +- link: /getting_started/tagging/unified_service_tagging/ + tag: Documentación + text: Obtener más información sobre el etiquetado unificado de servicios +- link: /tracing/other_telemetry/connect_logs_and_traces + tag: Documentación + text: Conectar logs y trazas +- link: /real_user_monitoring/platform/connect_rum_and_traces/ + tag: Documentación + text: Conectar RUM, Session Replay y trazas +- link: /synthetics/apm/ + tag: Documentación + text: Conectar tests Synthetic y trazas +kind: guía +title: Facilitar la resolución de problemas a través de la correlación entre productos +--- + +## Información general + +El [etiquetado unificado de servicios][1] ofrece capacidades de correlación de alto nivel. En ocasiones, es posible que los puntos de partida de tu investigación sean un log, una traza, una vista o un test Synthetic únicos. Correlacionar logs, trazas y vistas con otros datos proporciona un contexto útil que te permite calcular el impacto en tus actividades e identificar la causa raíz de un problema rápidamente. + +{{< img src="logs/guide/ease-troubleshooting-with-cross-product-correlation/full-stack-cover.png" alt="Correlación de pila completa" style="width:100%;" >}} + +En esta guía te explica cómo correlacionar los datos de toda la pila. Dependiendo de tu caso de uso, puedes omitir algunos pasos. Los pasos que dependen de otros se indican explícitamente. + +1. [Correlacionar logs del lado del servidor con trazas](#correlate-server-side-logs-with-traces) + * [Correlacionar logs de aplicación](#correlate-application-logs) + * [Correlacionar logs de proxy](#correlate-proxy-logs) + * [Correlacionar logs de base de datos](#correlate-database-logs) +2. [Correlacionar productos frontend](#correlate-frontend-products) + * [Correlacionar logs de navegador con RUM](#correlate-browser-logs-with-rum) +3. [Correlacionar la experiencia del usuario con el comportamiento del servidor](#correlate-user-experience-with-server-behavior) + * [Correlacionar vistas de RUM con trazas](#correlate-rum-views-with-traces) + * [Aprovechar la correlación de trazas para solucionar problemas de tests Synthetic](#leverage-trace-correlation-to-troubleshoot-synthetic-tests) + +## Correlacionar logs del lado del servidor con trazas + +Cuando tus usuarios encuentran errores o una latencia elevada en tu aplicación, la visualización de logs específicos de una solicitud problemática puede revelar exactamente qué ha salido mal. Al reunir todos los logs relativos a una solicitud determinada, puedes ver con lujo de detalles cómo se ha gestionado de principio a fin y así diagnosticar rápidamente el problema. + +Correlacionar tus logs con trazas también facilita la aplicación de [una agresiva estrategia de muestreo sin pérdida de coherencia a nivel de la entidad][2] mediante el uso de `trace_id`. + +La [correlación de logs de aplicación](#correlate-application-logs) te proporciona una amplia visibilidad de toda tu pila, pero algunos casos de uso específicos requieren una correlación más profunda en tu pila. Sigue los siguientes enlaces para completar la configuración de cada caso de uso: + +* [Correlacionar logs de proxy](#correlate-proxy-logs) +* [Correlacionar logs de base de datos](#correlate-database-logs) + +### Correlacionar logs de aplicación + +#### ¿Por qué? + +Los logs de aplicación ofrecen el mayor contexto en torno a la mayoría de los problemas de código y de lógica empresarial. Incluso pueden ayudarte resolver otros problemas de servicios. Por ejemplo, la mayoría de los errores de base de datos de logs de ORM. + +#### ¿Cómo? + +Utiliza una de las [varias correlaciones OOTB][3]. Si utilizas un rastreador personalizado o si tienes algún problema, consulta la sección de [FAQ acerca de correlaciones][4]. + +### Correlacionar logs de proxy + +#### ¿Por qué? + +Los logs de proxy proporcionan más información que los logs de aplicación, ya que abarcan más puntos de entrada y brindan información sobre el contenido estático y las redirecciones. + +#### ¿Cómo? + +El rastreador de aplicaciones genera los ID de rastreo por defecto. Esto se puede cambiar inyectando `x-datadog-trace-id` en los encabezados de solicitudes HTTP. + +#### NGINX + +##### Configurar OpenTracing + +Consulta la [integración de rastreo NGINX][5]. + +##### Inyectar un ID de rastreo en logs + +El ID de rastreo se almacena como variable `opentracing_context_x_datadog_trace_id`. Actualiza el formato de log NGINX añadiendo el siguiente bloque de configuración en la sección HTTP de tu archivo de configuración NGINX `/etc/nginx/nginx.conf`: + +```conf +http { + log_format main '$remote_addr - $opentracing_context_x_datadog_trace_id $http_x_forwarded_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for" '; + + access_log /var/log/nginx/access.log; +} +``` + +##### Analizar los ID de rastreo en pipelines + +1. Clona el pipeline NGINX. + +2. Personaliza el primer [analizador grok][6]: + - En **Parsing rules* (Reglas de análisis), sustituye la primera regla de análisis por: + ```text + access.common %{_client_ip} %{_ident} %{_trace_id} %{_auth} \[%{_date_access}\] "(?>%{_method} |)%{_url}(?> %{_version}|)" %{_status_code} (?>%{_bytes_written}|-) + ``` + - En **Advanced settings** (Configuración avanzada), en **Helper Rules** (Reglas de ayuda), añade la línea: + ```text + _trace_id %{notSpace:dd.trace_id:nullIf("-")} + ``` + +3. Añade un [reasignador de ID de rastreo][7] en el atributo `dd.trace_id`. + +### Correlacionar logs de base de datos + +#### ¿Por qué? + +Los logs de base de datos suelen ser difíciles de contextualizar debido a la similitud de las consultas, la anonimización variable y el elevado uso. + +Por ejemplo, las consultas lentas de producción son difíciles de reproducir y analizar sin invertir mucho tiempo y recursos. A continuación se muestra un ejemplo de cómo correlacionar el análisis de consultas lentas con las trazas. + +#### ¿Cómo? + +#### PostgreSQL + +##### Para enriquecer tus logs de base de datos + +Los logs predeterminados de PostgreSQL no tienen información. Para enriquecerlos, sigue [esta guía sobre integraciones][8]. + +Las prácticas recomendadas para consultas lentas también sugieren registrar planes de ejecución de sentencias lentas automáticamente, para que no tengas que ejecutar `EXPLAIN` manualmente. Para ejecutar `EXPLAIN` automáticamente, actualiza `/etc/postgresql//main/postgresql.conf` con: + +```conf +session_preload_libraries = 'auto_explain' +auto_explain.log_min_duration = '500ms' +``` + +Las consultas de más de 500ms registran su plan de ejecución. + +**Nota**: `auto_explain.log_analyze = 'true'` proporciona aún más información, pero afecta enormemente al rendimiento. Para obtener más información, consulta la [documentación oficial][9]. + +##### Inyectar trace_id en tus logs de base de datos + +Inyecta `trace_id` en la mayoría de tus logs de base de datos con [comentarios SQL][10]. El siguiente es un ejemplo con Flask y SQLAlchemy: + +```python +if os.environ.get('DD_LOGS_INJECTION') == 'true': + from ddtrace import tracer + from sqlalchemy.engine import Engine + from sqlalchemy import event + + @event.listens_for(Engine, "before_cursor_execute", retval=True) + def comment_sql_calls(conn, cursor, statement, parameters, context, executemany): + trace_ctx = tracer.get_log_correlation_context() + statement = f"{statement} -- dd.trace_id=<{trace_ctx['trace_id']}>" + return statement, parameters +``` + +**Nota**: Esto sólo correlaciona logs que incluyen una declaración de consulta. Los errores de logs como `ERROR: duplicate key value violates unique constraint ""` permanecen fuera de contexto. La mayoría de las veces puedes obtener información sobre errores a través de tus logs de aplicación. + +Clona y personaliza el pipeline PostgreSQL: + +1. Añade un nuevo [analizador grok][6]: + ```text + extract_trace %{data}\s+--\s+dd.trace_id=<%{notSpace:dd.trace_id}>\s+%{data} + ``` + +2. Añade un [reasignador de ID de rastreo][7] en el atributo `dd.trace_id`. + +El siguiente es un ejemplo de plan de ejecución de una consulta lenta a partir de una traza lenta: + +{{< img src="logs/guide/ease-troubleshooting-with-cross-product-correlation/slow-query-root-cause.png" alt="Correlación de logs de consulta lenta" style="width:100%;" >}} + +## Correlacionar productos frontend + +### Correlacionar logs de navegador con RUM y Session Replay + +#### ¿Por qué? + +Los [logs de navegador][11] de un evento RUM proporcionan contexto e información sobre un problema. En el siguiente ejemplo, los logs de navegador indican que la causa principal de la consulta errónea es un ID de usuario no válido. + +{{< img src="logs/guide/ease-troubleshooting-with-cross-product-correlation/browser-logs-in-rum.png" alt="Logs de navegador en una acción RUM" style="width:100%;" >}} + +Correlacionar tus logs de navegador con RUM también facilita la aplicación de [una agresiva estrategia de muestreo sin pérdida de coherencia a nivel de la entidad][2] mediante el uso de atributos como `session_id` y `view.id`. + +#### ¿Cómo? + +Los logs de navegador y los eventos RUM se correlacionan automáticamente. Para obtener más información, consulta [Facturación de RUM y Session Replay][12]. Debes [hacer coincidir las configuraciones entre los SDK de navegador RUM y los SDK de logs][13]. + +## Correlacionar la experiencia del usuario con el comportamiento del servidor + +Las monitorizaciones backend y frontend tradicionales están aisladas y pueden requerir flujos de trabajo separados para solucionar problemas en toda la pila. Las correlaciones de pila completa de Datadog te permiten identificar la causa raíz, ya sea que provenga de un problema con el navegador o de un tiempo de inactividad en una base de datos, y calcular su impacto en el usuario. + +En esta sección se explica cómo habilitar estas correlaciones: + +* [Correlacionar vistas de RUM con trazas](#correlate-rum-views-with-traces) +* [Aprovechar la correlación de trazas para solucionar problemas de tests Synthetic](#leverage-trace-correlation-to-troubleshoot-synthetic-tests) + +### Correlacionar vistas de RUM con trazas + +#### ¿Por qué? + +La integración de APM con RUM y Session Replay te permite ver datos frontend y backend en una sola lente, además de: + +* Localizar rápidamente los problemas en cualquier punto de la pila, incluido el frontend. +* Comprender plenamente lo que experimentan tus usuarios + +#### ¿Cómo? + +Puedes acceder a las vistas de RUM en el [Explorador de trazas][14] y a las trazas de APM en el [Explorador RUM][15]. Para obtener más información, consulta [Conectar RUM y trazas][16]. + +{{< img src="logs/guide/ease-troubleshooting-with-cross-product-correlation/trace-details-rum.png" alt="Información RUM en una traza" style="width:100%;" >}} + +No existe una correlación directa entre las vistas de RUM y los logs del servidor. Para ver eventos RUM en un log y logs en un evento RUM, haz clic en la pestaña **Traces** (Trazas). + +{{< img src="logs/guide/ease-troubleshooting-with-cross-product-correlation/rum-action-server-logs.png" alt="Vista previa de logs en la traza de una acción RUM" style="width:100%;" >}} + +### Aprovechar la correlación de trazas para solucionar problemas en tests Synthetic + +#### ¿Por qué? + +La integración de APM con la monitorización Synthetic te permite navegar desde la ejecución fallida de un test hasta la causa raíz del problema a través de la traza generada por el test. + +{{< img src="logs/guide/ease-troubleshooting-with-cross-product-correlation/synthetic-trace-root-cause.png" alt="Causa raíz del fallo de un test Synthetic" style="width:100%;" >}} + +Obtener datos específicos relacionados con la red a partir de tu test, además de información de backend, de infraestructura, de logs a partir de tu traza y de eventos RUM (sólo para [tests de navegador][17]) te permite acceder a detalles adicionales sobre el comportamiento de tu aplicación y la experiencia del usuario. + +#### ¿Cómo? + +Después de habilitar APM en el endpoint de tu aplicación, puedes acceder a las trazas de APM en la [página de monitorización Synthetic y ejecución permanente de tests][18]. + +Para obtener más información, consulta [Conectar tests Synthetic y trazas][19]. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /es/getting_started/tagging/unified_service_tagging +[2]: /es/logs/indexes/#sampling-consistently-with-higher-level-entities +[3]: /es/tracing/other_telemetry/connect_logs_and_traces +[4]: /es/tracing/faq/why-cant-i-see-my-correlated-logs-in-the-trace-id-panel +[5]: /es/tracing/trace_collection/proxy_setup/?tab=nginx +[6]: /es/logs/log_configuration/processors/#grok-parser +[7]: /es/logs/log_configuration/processors/#trace-remapper +[8]: /es/integrations/postgres/?tab=host#log-collection +[9]: https://www.postgresql.org/docs/13/auto-explain.html +[10]: https://www.postgresql.org/docs/13/sql-syntax-lexical.html#SQL-SYNTAX-COMMENTS +[11]: /es/logs/log_collection/javascript/ +[12]: /es/account_management/billing/rum/#how-do-you-view-logs-from-the-browser-collector-in-rum +[13]: /es/real_user_monitoring/browser/setup/#initialization-parameters +[14]: https://app.datadoghq.com/apm/traces +[15]: https://app.datadoghq.com/rum/explorer +[16]: /es/real_user_monitoring/platform/connect_rum_and_traces +[17]: /es/synthetics/browser_tests/ +[18]: https://app.datadoghq.com/synthetics/tests +[19]: /es/synthetics/apm \ No newline at end of file diff --git a/content/es/logs/guide/how-to-set-up-only-logs.md b/content/es/logs/guide/how-to-set-up-only-logs.md new file mode 100644 index 0000000000000..140b3593c3580 --- /dev/null +++ b/content/es/logs/guide/how-to-set-up-only-logs.md @@ -0,0 +1,75 @@ +--- +aliases: +- /es/logs/faq/how-to-set-up-only-logs +kind: documentación +title: Uso exclusivo del Datadog Agent para la recopilación de logs +--- + +Para deshabilitar las cargas útiles, debes ejecutar el Agent v6.4 o superior. Esto deshabilita el envío de datos de métricas, para que los hosts dejen de aparecer en Datadog. Sigue estos pasos: + +{{< tabs >}} +{{% tab "Host " %}} + +1. Abre el [archivo de configuración datadog.yaml][1]. +2. Añade el atributo `enable_payloads` con la siguiente configuración: + + ```yaml + enable_payloads: + series: false + events: false + service_checks: false + sketches: false + ``` + +3. [Configura el Agent para recopilar logs][2]. +4. [Reinicia el Agent][3]. + +[1]: /es/agent/configuration/agent-configuration-files/ +[2]: /es/logs/log_collection/ +[3]: /es/agent/configuration/agent-commands/#restart-the-agent +{{% /tab %}} +{{% tab "Docker" %}} + +Si utilizas el Agent contenedorizado en Docker, configura las variables de entorno`DD_ENABLE_PAYLOADS_EVENTS`, `DD_ENABLE_PAYLOADS_SERIES`, `DD_ENABLE_PAYLOADS_SERVICE_CHECKS` y `DD_ENABLE_PAYLOADS_SKETCHES` como `false`, además de la configuración de tu Agent: + +```shell +docker run -d --name datadog-agent \ + --cgroupns host \ + --pid host \ + -e DD_API_KEY= \ + -e DD_LOGS_ENABLED=true \ + -e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \ + -e DD_CONTAINER_EXCLUDE="name:datadog-agent" \ + -e DD_ENABLE_PAYLOADS_EVENTS=false \ + -e DD_ENABLE_PAYLOADS_SERIES=false \ + -e DD_ENABLE_PAYLOADS_SERVICE_CHECKS=false \ + -e DD_ENABLE_PAYLOADS_SKETCHES=false \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + -v /proc/:/host/proc/:ro \ + -v /opt/datadog-agent/run:/opt/datadog-agent/run:rw \ + -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ + gcr.io/datadoghq/agent:latest +``` + +{{% /tab %}} +{{% tab "Kubernetes" %}} + +Si despliegas el Agent en Kubernetes, configura las variables de entorno`DD_ENABLE_PAYLOADS_EVENTS`, `DD_ENABLE_PAYLOADS_SERIES`, `DD_ENABLE_PAYLOADS_SERVICE_CHECKS` y `DD_ENABLE_PAYLOADS_SKETCHES` como `false`, además de la configuración de tu Agent: + +```yaml + ## Send logs only + datadog: + [...] + env: + - name: DD_ENABLE_PAYLOADS_EVENTS + value: "false" + - name: DD_ENABLE_PAYLOADS_SERIES + value: "false" + - name: DD_ENABLE_PAYLOADS_SERVICE_CHECKS + value: "false" + - name: DD_ENABLE_PAYLOADS_SKETCHES + value: "false" +``` + +{{% /tab %}} +{{< /tabs >}} \ No newline at end of file diff --git a/content/es/logs/guide/increase-number-of-log-files-tailed.md b/content/es/logs/guide/increase-number-of-log-files-tailed.md new file mode 100644 index 0000000000000..141d4a5b53014 --- /dev/null +++ b/content/es/logs/guide/increase-number-of-log-files-tailed.md @@ -0,0 +1,29 @@ +--- +aliases: +- /es/logs/faq/how-to-increase-the-number-of-log-files-tailed-by-the-agent +further_reading: +- link: /logs/faq/how-to-send-logs-to-datadog-via-external-log-shippers/ + tag: FAQ + text: ¿Cómo enviar logs a Datadog a través de cargadores de log externos? +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +- link: /logs/faq/how-to-investigate-a-log-parsing-issue/ + tag: FAQ + text: ¿Cómo investigar un problema de parseo de logs? +kind: guía +title: Aumentar el número de archivos de log supervisados por el Agent +--- + +Por defecto, el Agent puede almacenar hasta 200 archivos de log en Windows y MacOS, y 500 archivos de log en otros sistemas operativos. Este límite se coloca para evitar problemas de rendimiento cuando se establecen comodines en directorios enormes. + +Para aumentar este límite, ajusta el valor de `open_files_limit` en el archivo de configuración del Agent (`/etc/datadog-agent/datadog.yaml`) en la sección `logs_config`: + +```yaml +logs_config: + open_files_limit: 500 +``` + +Para los entornos en contenedores, puedes establecer la variable de entorno `DD_logs_CONFIG_OPEN_FILES_LIMIT`. + +**Nota**: Aumentar el límite de archivos de logs supervisados podría incrementar el consumo de recursos del Agent. \ No newline at end of file diff --git a/content/es/logs/guide/lambda-logs-collection-troubleshooting-guide.md b/content/es/logs/guide/lambda-logs-collection-troubleshooting-guide.md new file mode 100644 index 0000000000000..60816ec05585d --- /dev/null +++ b/content/es/logs/guide/lambda-logs-collection-troubleshooting-guide.md @@ -0,0 +1,107 @@ +--- +further_reading: +- link: https://www.datadoghq.com/blog/aws-lambda-telemetry-api/ + tag: Blog + text: Ampliación de las capacidades de extensión Lambda de Datadog con la API de + telemetría de AWS Lambda +kind: documentación +title: Guía para la resolución de problemas de recopilación de logs de la función + Lambda +--- + +Si no ves logs reenviados desde una función Lambda del Datadog Forwarder en el Explorador de logs, sigue los pasos para solucionar problemas que se indican a continuación. Si sigues teniendo problemas después de seguir estos pasos, [ponte en contacto con el servicio de asistencia de Datadog][1] para obtener más ayuda. + +## ¿Se envían tus logs a Datadog? + +1. Ve a la [vista de Live Tail del Explorador de logs][2]. +2. En la barra de búsqueda, utiliza un filtro para limitar la vista de Live Tail sólo a la logs procedentes de tu función Lambda. Algunas consultas comunes de búsqueda son: + * Por fuente: la fuente suele estar configurada como`source:lambda`, `source:aws` o `source:cloudwatch`, pero puedes encontrar otras fuentes posibles en la función`parse_event_source` en la [función Lambda][3]. + * Por nombre de Forwarder: la función Lambda añade una etiqueta (tag) `forwardername` a todos los logs que reenvía. Puedes filtrar a través de esta etiqueta buscando `forwardername:*` o `forwardername:`. +3. Si ves logs en Live Tail, pero no en el Explorador de logs, significa que tu índice de logs tiene configurados algunos [filtros de exclusión][4]. Estos filtros están filtrando tus logs. +4. Si no ves logs en Live Tail, los logs no están llegando a Datadog. + +## Comprobar la pestaña Monitoring (Monitorización) de la función Lambda + +[Desde la consola AWS][5] + +1. Abre la función Lambda de tu Forwarder. + +2. Haz clic en la pestaña Monitoring (Monitorización). + + {{< img src="logs/guide/lambda-monitoring-tab.png" alt="Pestaña de monitorización" style="width:80%;" >}} + +3. La pestaña Monitoring (Monitorización) muestra una serie de gráficos que indican la siguiente información sobre tu función Lambda: + * invocaciones + * errores + * logs + +4. Si no ves ningún punto de datos en el gráfico **Invocations** (Invocaciones), puede que haya un problema con los activadores que has configurado para tu función. Consulte [Gestionar los activadores de tu función](#manage-your-function-triggers). Para obtener más información sobre las invocaciones de tu Lambda sin utilizar la pestaña de monitorización, consulta [Visualización de métricas Lambda en Datadog](#viewing-lambda-metrics-in-datadog). +5. Si ves puntos de datos en el gráfico "Error count and success rate" (Recuento de errores y tasa de éxito), [comprueba los logs de la función Lambda](#check-the-lambda-function-logs) para ver de qué mensajes de error se están informando. + +### Visualización de métricas Lambda en Datadog + +Si has habilitado métricas AWS Lambda, puedes ver métricas relacionadas con invocaciones de Lambda y errores en Datadog. Todas las siguientes métricas tienen la etiqueta `functionname`: + +| Métrica | Descripción | +|-------------------------------|----------------------------------------------------------------------------------------------------| +| `aws.lambda.invocations ` | Número de veces que se ha activado/invocado la función Lambda | +| `aws.lambda.errors ` | Número de errores que se han producido al invocar la función | +| `aws.lambda.duration ` | Tiempo promedio (en milisegundos) que ha tardado en terminar de ejecutarse la función Lambda | +| `aws.lambda.duration.maximum` | Tiempo máximo (en milisegundos) que ha tardado en terminar de ejecutarse la función Lambda | +| `aws.lambda.throttles` | Número de intentos de invocación que se limitaron debido a que los índices de invocación excedían los límites del cliente | + +Para obtener más información sobre éstas y otras métricas de AWS Lambda, consulta las [métricas AWS Lambda][6]. + +### Gestionar los activadores de tu función + +Para que los logs se reenvíen, la función Lambda del Forwarder debe tener configurados los activadores (CloudWatch Logs o S3). Sigue los pasos que se indican a continuación para asegurarte de que los activadores están configurados correctamente. + +1. ¿Aparece la fuente de tu log (bucket S3 o grupo de logs de CloudWatch) en la lista de "Activadores" en la consola Lambda del Forwarder? Si aparece, asegúrate de que está habilitada. De lo contrario, sigue los pasos que se indican a continuación para buscar en el bucket S3 o en la consola de grupos de logs de CloudWatch, ya que se sabe que la lista de "Activadores" en la consola Lambda es incomprensible. + +2. Para el bucket S3, ve a la pestaña "Properties" (Propiedades) y desplázate hasta "Advanced settings" (Configuración avanzada) y el mosaico "Events" (Eventos), o realiza una consulta utilizando la interfaz de línea de comandos (CLI) de AWS que se indica a continuación. ¿Ves alguna notificación de eventos configurada para activar la función Lambda del Forwarder? Si no es así, necesitas configurar un activador. + ``` + aws s3api get-bucket-notification-configuration --bucket + ``` + +3. Para el grupo de logs de CloudWatch, ve al campo "Subscriptions" (Suscripciones) de la consola del grupo de logs, en la sección "Log group details" (Detalles del grupo de logs). También puedes realizar una consulta utilizando la interfaz de línea de comandos (CLI) de AWS que se indica a continuación. Si el grupo de logs no está suscrito por la función Lambda del Forwarder, necesitas configurar un activador. + ``` + aws logs describe-subscription-filters --log-group-name + ``` + +4. Ajusta los activadores [automáticamente][7] o [manualmente][8]. + +Para el grupo de logs de CloudWatch, puedes utilizar las siguientes métricas de la plataforma Datadog, para confirmar si los logs se envían desde el grupo de logs a la función Lambda del Forwarder. Utiliza la etiqueta `log_group` para filtrar los datos al visualizar las métricas. + +| Métrica | Descripción | +|---------------------------------|----------------------------------------------------------------------------------------------------| +| `aws.logs.incoming_log_events` | Número de eventos de logs cargados en CloudWatch Logs | +| `aws.logs.forwarded_log_events` | Número de eventos de logs reenviados al destino de la suscripción | +| `aws.logs.delivery_errors` | Número de eventos de logs que no se han podido enviar al destino de la suscripción | +| `aws.logs.delivery_throttling` | Número de eventos de logs con límites para el envío al destino de suscripción | + +## Comprobar logs de la función Lambda + +1. En la pestaña de monitorización, haz clic en **View logs in Cloudwatch** (Ver logs en CloudWatch). + +{{< img src="logs/guide/lambda-logs-cloudwatch.png" alt="Logs de Lambda en Cloudwatch" style="width:80%;" >}} + +2. Encuentra el flujo (stream) de logs más reciente. + +3. ¿Ves algún error? Intenta buscar "?ERROR ?Error ?error". + +4. Configura la variable de entorno "DD_LOG_LEVEL" para "debug" (depurar), en la función Lambda del Forwarder, para habilitar la posterior depuración de logs. Los logs depurados son bastante verbosos, así que recuerda deshabilitar la función después de la depuración. + + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: https://docs.datadoghq.com/es/help +[2]: https://docs.datadoghq.com/es/logs/live_tail/#live-tail-view +[3]: https://github.com/DataDog/datadog-serverless-functions/blob/master/aws/logs_monitoring/lambda_function.py +[4]: https://docs.datadoghq.com/es/logs/indexes/#exclusion-filters +[5]: https://console.aws.amazon.com/lambda/home +[6]: https://docs.datadoghq.com/es/integrations/amazon_lambda/?tab=awsconsole#metrics +[7]: https://docs.datadoghq.com/es/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/?tab=awsconsole#automatically-set-up-triggers +[8]: https://docs.datadoghq.com/es/logs/guide/send-aws-services-logs-with-the-datadog-lambda-function/?tab=awsconsole#manually-set-up-triggers \ No newline at end of file diff --git a/content/es/logs/guide/log-collection-troubleshooting-guide.md b/content/es/logs/guide/log-collection-troubleshooting-guide.md new file mode 100644 index 0000000000000..5db9ff8dc503f --- /dev/null +++ b/content/es/logs/guide/log-collection-troubleshooting-guide.md @@ -0,0 +1,281 @@ +--- +aliases: +- /es/logs/faq/log-collection-troubleshooting-guide +further_reading: +- link: /logs/log_collection/ + tag: Documentación + text: Aprender a recopilar tus logs +- link: /logs/explorer/ + tag: Documentación + text: Aprender a explorar tus logs +- link: /logs/guide//logs-not-showing-expected-timestamp/ + tag: Guía + text: ¿Por qué mis logs no tienen la marca de tiempo esperada? +- link: /logs/guide/logs-show-info-status-for-warnings-or-errors/ + tag: Guía + text: ¿Por qué mis logs aparecen con el estado de información, incluso cuando se + trata de advertencias o errores? +kind: guía +title: Guía para la resolución de problemas con la recopilación de logs +--- + +Existen una serie de problemas comunes que pueden surgir al [enviar nuevos logs a Datadog][1] a través del recopilador de logs en `dd-agent`. Si tienes problemas al enviar nuevos logs a Datadog, esta lista te ayudará a solucionarlos. Si sigues teniendo problemas, [ponte en contacto con el servicio de asistencia de Datadog][2] para obtener más ayuda. + +## Reinicio del Agent + +Los cambios en la configuración del `datadog-agent` no se tendrán en cuenta hasta que [reinicies el Agent][3]. + +## El tráfico saliente en el puerto 10516 está bloqueado + +El Datadog Agent envía sus logs a Datadog a través de TCP utilizando el puerto 10516. Si esa conexión no está disponible, los logs no se pueden enviar y se registra un error en el archivo `agent.log`. + +Puedes probar manualmente tu conexión utilizando OpenSSL, GnuTLS u otro cliente SSL/TLS. Para OpenSSL, ejecuta el siguiente comando: + +```shell +openssl s_client -connect intake.logs.datadoghq.com:10516 +``` + +Para GnuTLS, ejecuta el siguiente comando: + +```shell +gnutls-cli intake.logs.datadoghq.com:10516 +``` + +Y luego, enviando un log como el siguiente: + +```texto + este es un mensaje de prueba +``` + +- Si abrir el puerto 10516 no es una opción, es posible configurar el Datadog Agent para enviar logs a través de HTTPS, añadiendo lo siguiente en `datadog.yaml`: + +```yaml +logs_config: + force_use_http: true +``` + +Para obtener más información, consulta la sección sobre el [reenvío HTTPS de logs][4]. + +## Comprobar el estado del Agent + +A menudo, comprobar los resultados del [comando de estado del Agent][5] te ayudará a solucionar lo que está ocurriendo. + +## No se han escrito nuevos logs + +El Datadog Agent sólo recopila los logs que se han escrito después de que empezara a intentar recopilarlos (ya sea rastreándolos o escuchándolos). Para confirmar si se ha configurado correctamente la recopilación de logs, asegúrate de que se han escrito nuevos logs. + +## Problemas de permisos al rastrear archivos de logs + +El Datadog Agent no se ejecuta como raíz (y como práctica recomendada general se recomienda no ejecutarlo como raíz). Cuando configuras tu Agent para rastrear archivos de logs en logs personalizados o en integraciones, necesitas tener especial cuidado para garantizar que el usuario del Agent tiene el acceso correcto a los archivos de logs. + +.El usuario por defecto del Agent por sistema operativo: +| Sistema operativo | Usuario por defecto del Agent | +| --------------- | ------------------ | +| Linux: `datadog-agent` +| MacOS `datadog-agent` +| Windows `ddagentuser` + +Si el Agent no tiene los permisos correctos, es posible que aparezca uno de los siguientes mensajes de error cuando compruebes el [estado del Agent][5]: +- El archivo no existe. +- Acceso denegado. +- No se ha podido encontrar ningún archivo que coincida con el patrón ``. Comprueba que todos sus subdirectorios son ejecutables. + +Para solucionar el error, concede al usuario del Datadog Agent permisos de lectura y ejecución en el archivo del log y en sus subdirectorios. + +{{< tabs >}} +{{% tab "Linux" %}} +1. Para obtener más información sobre permisos de archivos, ejecuta el comando `namei`: + ``` + > namei -m /path/to/log/file + ``` + + En el siguiente ejemplo, el usuario del Agent no tiene permisos de `execute` en el directorio `application`, ni permisos de lectura en el archivo `error.log`. + + ``` + > namei -m /var/log/application/error.log + > f: /var/log/application/ + drwxr-xr-x / + drwxr-xr-x var + drwxrwxr-x log + drw-r--r-- application + -rw-r----- error.log + ``` + +1. Haz que la carpeta de logs y sus elementos secundarios sean legibles: + + ```bash + sudo chmod o+rx /path/to/logs + ``` + +**Nota**: Asegúrate de que estos permisos están correctamente configurados en tu configuración de rotación de logs. De lo contrario, en la siguiente rotación de logs, el Datadog Agent podría perder sus permisos de lectura. Configura los permisos como `644` configuración de rotación de logs, para asegurarte de que el Agent tiene acceso de lectura a los archivos. + +{{% /tab %}} + +{{% tab "Windows (cmd)" %}} +1. Para obtener más información sobre permisos de archivos, utiliza el comando `icacls` en la carpeta de logs: + ``` + icacls path/to/logs/file /t + ``` + La marca `/t` ejecuta el comando recursivamente en archivos y subcarpetas. + + En el siguiente ejemplo, el directorio `test` y sus elementos secundarios no son accesibles para el `ddagentuser`: + + ```powershell + PS C:\Users\Administrator> icacls C:\test\ /t + C:\test\ NT AUTHORITY\SYSTEM:(OI)(CI)(F) + BUILTIN\Administrators:(OI)(CI)(F) + CREATOR OWNER:(OI)(CI)(IO)(F) + + C:\test\file.log NT AUTHORITY\SYSTEM:(F) + BUILTIN\Administrators:(F) + + C:\test\file2.log NT AUTHORITY\SYSTEM:(F) + BUILTIN\Administrators:(F) + ``` + +1. Utiliza el comando `icacls` para conceder a `ddagentuser` los permisos necesarios (incluye las comillas): + ``` + icacls "path\to\folder" /grant "ddagentuser:(OI)(CI)(RX)" /t + ``` + + En caso de que la aplicación utilice la rotación de logs, los derechos de herencia `(OI)` y `(CI)` garantizan que cualquier futuro archivo de logs creado en el directorio podrá heredar los permisos de la carpeta principal. + +1. Vuelve a ejecutar `icacls` para comprobar que el `ddagentuser` tiene los permisos correctos: + ```powershell + icacls path/to/logs/file /t + ``` + + En el siguiente ejemplo, `ddagentuser` aparece en la lista de permisos de archivos: + ```powershell + PS C:\Users\Administrator> icacls C:\test\ /t + C:\test\ EC2-ABCD\ddagentuser:(OI)(CI)(RX) + NT AUTHORITY\SYSTEM:(OI)(CI)(F) + BUILTIN\Administrators:(OI)(CI)(F) + CREATOR OWNER:(OI)(CI)(IO)(F) + + C:\test\file.log NT AUTHORITY\SYSTEM:(F) + BUILTIN\Administrators:(F) + EC2-ABCD\ddagentuser:(RX) + + C:\test\file2.log NT AUTHORITY\SYSTEM:(F) + BUILTIN\Administrators:(F) + EC2-ABCD\ddagentuser:(RX) + Successfully processed 3 files; Failed processing 0 files + ``` + +1. Reinicia el servicio del Agent y comprueba su estado para ver si el problema se ha resuelto: + + ```powershell + & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service + & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" status + ``` + +{{% /tab %}} + +{{% tab "Windows (PowerShell)" %}} + +1. Recupera los permisos ACL del archivo: + ```powershell + PS C:\Users\Administrator> get-acl C:\app\logs | fl + + Path : Microsoft.PowerShell.Core\FileSystem::C:\app\logs + Owner : BUILTIN\Administrators + Group : EC2-ABCD\None + Access : NT AUTHORITY\SYSTEM Allow FullControl + BUILTIN\Administrators Allow FullControl + ... + ``` + En este ejemplo, el directorio `application` no puede ser ejecutado por el Agent. + +1. Ejecuta este script PowerShell para proporcionar privilegios de lectura y ejecución al `ddagentuser`: + ```powershell + $acl = Get-Acl + $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ddagentuser","ReadAndExecute","Allow") + $acl.SetAccessRule($AccessRule) + $acl | Set-Acl + ``` + +1. Vuelve a recuperar los permisos ACL del archivo para comprobar si el `ddagentuser` tiene los permisos correctos: + ```powershell + PS C:\Users\Administrator> get-acl C:\app\logs | fl + Path : Microsoft.PowerShell.Core\FileSystem::C:\app\logs + Owner : BUILTIN\Administrators + Group : EC2-ABCD\None + Access : EC2-ABCD\ddagentuser Allow ReadAndExecute, Synchronize + NT AUTHORITY\SYSTEM Allow FullControl + BUILTIN\Administrators Allow FullControl + ... + ``` + +1. Reinicia el servicio del Agent y comprueba su estado para ver si el problema se ha resuelto: + ```powershell + & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" restart-service + & "$env:ProgramFiles\Datadog\Datadog Agent\bin\agent.exe" status + ``` + + +{{% /tab %}} + +{{< /tabs >}} + +## Problemas de permisos y Journald + +Cuando recopiles logs de Journald, asegúrate de que el usuario del Datadog Agent ha sido añadido al grupo systemd, como se muestra en la [integración Journald][7]. + +**Nota**: Journald envía una carga útil vacía si los permisos del archivo son incorrectos. Por lo tanto, no es posible lanzar o enviar un mensaje de error explícito en este caso. + +## Problemas de configuración + +Estos son algunos de los problemas de configuración frecuentes que deberías controlar más de dos veces al configurar el `datadog-agent`: + +1. Comprueba si la `api_key` está definida en `datadog.yaml`. + +2. Comprueba si tienes `logs_enabled: true` en tu `datadog.yaml`. + +3. Por defecto, el Agent no recopila logs. Asegúrate de que hay al menos un archivo .yaml en el directorio `conf.d/` del Agent, que incluye una sección para logs y los valores apropiados. + +4. Es posible que tengas algunos errores de análisis .yaml en tus archivos de configuración. El YAML puede ser quisquilloso, así que en caso de duda confía en un [validador de YAML][8]. + +### Comprobar si hay errores en logs del Agent + +Puede que haya un error en los logs que explique el problema. Ejecuta el siguiente comando para comprobar si hay errores: + +```shell +sudo grep -i error /var/log/datadog/agent.log +``` + +## Entorno Docker + +Consulta la [Guía para la resolución de problemas de recopilación de logs de Docker][9]. + +## Entorno serverless + +Consulta la [Guía para la resolución de problemas de recopilación de logs de Lambda][10] + +## Pérdida inesperada de logs + +Comprueba si aparecen logs en [Datadog Live Tail][11]. + +Si aparecen en Live Tail, consulta la página de configuración de índices y busca cualquier [filtro de exclusión][12] que pueda coincidir con tus logs. +Si no aparecen en Live Tail,, es posible que se hayan perdido, si su marca de tiempo superaba las 18 horas anteriores. Puedes consultar qué `service` y `source` pueden verse afectados con la métrica `datadog.estimated_usage.logs.drop_count`. + +## Logs truncados + +Los logs de más de 1 MB se truncan. Puedes consultar qué `service` y `source` se ven afectados con las métricas `datadog.estimated_usage.logs.truncated_count` y `datadog.estimated_usage.logs.truncated_bytes`. + + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /es/logs/ +[2]: /es/help/ +[3]: /es/agent/configuration/agent-commands/#restart-the-agent +[4]: /es/agent/logs/log_transport?tab=https#enforce-a-specific-transport +[5]: /es/agent/configuration/agent-commands/#agent-status-and-information +[7]: /es/integrations/journald/ +[8]: https://codebeautify.org/yaml-validator +[9]: /es/logs/guide/docker-logs-collection-troubleshooting-guide/ +[10]: /es/logs/guide/lambda-logs-collection-troubleshooting-guide/ +[11]: https://app.datadoghq.com/logs/livetail +[12]: /es/logs/indexes/#exclusion-filters \ No newline at end of file diff --git a/content/es/logs/guide/log-parsing-best-practice.md b/content/es/logs/guide/log-parsing-best-practice.md new file mode 100644 index 0000000000000..17d8e415d132f --- /dev/null +++ b/content/es/logs/guide/log-parsing-best-practice.md @@ -0,0 +1,69 @@ +--- +aliases: +- /es/logs/faq/log-parsing-best-practice +further_reading: +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprender a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtener más información sobre los análisis +- link: /logs/faq/how-to-investigate-a-log-parsing-issue/ + tag: FAQ + text: ¿Cómo investigar un problema de análisis de logs? +kind: guía +title: Análisis de logs - Prácticas recomendadas +--- + +Datadog te permite definir analizadores para extraer toda la información relevante de tus logs. Para obtener más información sobre el lenguaje de análisis y sus posibilidades, consulta [nuestra documentación][1]. + +Este artículo explica el análisis de un log del recopilador del Datadog Agent: + +```text +2017-10-12 08:54:44 UTC | INFO | dd.collector | checks.collector(collector.py:530) | Finalizada la ejecución #1780. Tiempo de recopilación: 4.06s. Tiempo de emisión: 0.01s +``` + +1. **Añade siempre el log de ejemplo con el que estás trabajando como comentario en tu regla**: + {{< img src="logs/faq/parsing_best_practice_1.png" alt="Práctica recomendada para el análisis 1" >}} + Es posible probar tu regla de análisis en una log de ejemplo. Debido a que esto es útil cuando escribes la regla por primera vez, puede ser importante cuando vuelves al analizador para investigar un problema o admitir un nuevo formato de log. + +2. **Analiza un atributo a la vez gracias al truco de la estrella**: + No necesitas escribir una regla de análisis para el log completo en el primer borrador. Comprueba tu regla, un atributo a la vez, utilizando una `.*` al final de la regla. Esto coincide con todo lo que seguiría al final de tu regla. + Por ejemplo, digamos que primero quieres analizar la fecha del log, sin importar lo que venga después. Crea la regla: + {{< img src="logs/faq/parsing_best_practice_2.png" alt="Práctica recomendada para el análisis 2" >}} + Así sabrás que la fecha se ha analizado correctamente. Ahora puedes pasar al siguiente atributo, la gravedad. + Primero tienes que escapar la barra vertical (es necesario escapar los caracteres especiales) y luego hacer coincidir la palabra: + {{< img src="logs/faq/parsing_best_practice_3.png" alt="Práctica recomendada para el análisis 3" >}} + Y así sucesivamente, hasta extraer todos los atributos deseados de este log. + +3. **Utiliza los emparejadores adecuados**: + Cuanto más simple, mejor. A menudo no hay necesidad de intentar definir un regex complejo para que coincida con un patrón específico, cuando el `notSpace` clásico puede hacer el trabajo. + Ten en cuenta los siguientes emparejadores al escribir una regla de análisis: + + * no espacio: coincide con todo hasta el siguiente espacio + * datos: coincide con todo (equivalente a .*) + * palabra: coincide con todos los caracteres alfanuméricos siguientes + * integral: coincide con un número entero decimal y lo interpreta como un número entero + + La mayoría de las reglas pueden escribirse con estos cuatro comparadores. Puedes consultar la lista completa de los comparadores disponibles [en la documentación de análisis][2]. + +4. **Valor clave**: + Ten en cuenta que existe un filtro clave-valor que puede extraer automáticamente todos tus atributos. + Para obtener más información, consulta [algunos ejemplos][3]. + +5. **Omitir algunas partes del mensaje de tu log que no deben extraerse como atributos**: + Vuelve a utilizar el ejemplo: + ``` + 2017-10-12 08:54:44 UTC | INFO | dd.collector | checks.collector(collector.py:530) | Finished run #1780. Collection time: 4.06s. Emit time: 0.01s + ``` + Supón que la información de `dd.collector` no tiene ningún valor para ti y no quieres extraerla como atributo. + Para ello, elimina la sección de extracción de la regla: + {{< img src="logs/faq/parsing_best_practice_4.png" alt="Práctica recomendada para el análisis 4" >}} + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /es/logs/log_configuration/parsing +[2]: /es/logs/log_configuration/parsing/#matcher-and-filter +[3]: /es/logs/log_configuration/parsing/#key-value-or-logfmt \ No newline at end of file diff --git a/content/es/logs/guide/logs-not-showing-expected-timestamp.md b/content/es/logs/guide/logs-not-showing-expected-timestamp.md new file mode 100644 index 0000000000000..d7f25d5a58fd5 --- /dev/null +++ b/content/es/logs/guide/logs-not-showing-expected-timestamp.md @@ -0,0 +1,130 @@ +--- +aliases: +- /es/logs/faq/why-do-my-logs-not-have-the-expected-timestamp +further_reading: +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +- link: /logs/faq/how-to-investigate-a-log-parsing-issue/ + tag: FAQ + text: ¿Cómo investigar un problema de parseo de logs? +kind: guía +title: Los logs no muestran la marca temporal prevista +--- + +Por defecto, cuando la API de entrada de Datadog recibe logs, se genera una marca temporal y se añade como atributo de fecha. Sin embargo, esta marca temporal predeterminada no siempre refleja la marca real que podría estar contenida en el propio log. En esta guía, aprenderás cómo anular la marca temporal predeterminada por la marca temporal real. + +{{< img src="logs/guide/log_timestamp_1.png" alt="Panel del log que muestra la marca temporal del log, distinta de la marca temporal en el mensaje" style="width:70%;">}} + +## Marca temporal indicada + +La marca temporal del log se encuentra en la parte superior del panel del log. Las marcas temporales se almacenan en UTC y se muestran en la zona horaria local del usuario. En la captura de pantalla anterior, el perfil local está configurado en `UTC+1`, por lo que la hora a la que se recibió el log es `11:06:16.807 UTC`. + +Es posible que la marca temporal no muestre el valor esperado porque la zona horaria está mal configurada. Para comprobar si este es el caso, ve a [Preferences][1] (Preferencias) y mira en la sección **Time zone** (Zona horaria). + +Si la zona horaria es correcta, extrae la marca temporal del mensaje para anular la que se muestra en el log. + +## Logs sin procesar + +Si tus logs sin procesar no muestran la marca temporal correcta en Datadog, [extrae](#extract-the-timestamp-value-with-a-parser) la marca temporal correcta de los logs sin procesar y [reasígnala](#define-a-log-date-remapper). + +#### Extraer el valor de la marca temporal con un analizador + +1. Ve a [Pipelines de logs][2] y haz clic en el pipeline que procesa los logs. +2. Haz clic en **Add Processor** (Agregar procesador). +3. Selecciona el tipo de procesador **Grok Parser** (Analizador Grok). +4. Utiliza [date() matcher][3] para extraer la fecha y pasarla a un atributo de fecha personalizado. Consulta el siguiente ejemplo, así como [ejemplos de parseo de fechas][4], para obtener más detalles. + +En un ejemplo de log como este: + +``` +2017-12-13 11:01:03 EST | INFO | (tagger.go:80 in Init) | starting the tagging system +``` + +Añade una regla de parseo como: + +``` +MyParsingRule %{date("yyyy-MM-dd HH:mm:ss z"):date} \| %{word:severity} \| \(%{notSpace:logger.name}:%{integer:logger.line}[^)]*\) \|.* +``` + +El resultado de la extracción de `MyParsingRule`: + +``` +{ + "date": 1513180863000, + "logger": { + "line": 80, + "name": "tagger.go" + }, + "severity": "INFO" +} +``` + +El atributo `date` almacena el valor `mytimestamp`. + +#### Definir un reasignador de fecha de log + +Añade un [Reasignador de fecha de log][5] para asegurarte de que el valor del atributo `date` anula la marca temporal actual del log. + +1. Ve a [Pipelines de logs][2] y haz clic en el pipeline que procesa los logs. +2. Haz clic en **Add Processor** (Agregar procesador). +3. Selecciona **Date remapper** (Reasignador de fecha) como el tipo de procesador. +4. Introduce un nombre para el procesador. +5. Agrega **date** (fecha) a la sección Set date attribute(s) (Establecer atributos de fecha). +6. Haz clic en **Create**. + +El siguiente log generado en `06:01:03 EST`, que corresponde a `11:01:03 UTC`, se visualiza correctamente como 12:01:03 (la zona horaria mostrada es UTC+1 en este caso). + +{{< img src="logs/guide/log_timestamp_5.png" alt="Panel de log que muestra la marca temporal correcta" style="width:70%;" >}} + +**Nota**: Cualquier modificación en un pipeline solo afecta a los nuevos logs, ya que todo el procesamiento se realiza en la ingesta. + +## Logs JSON + +Los logs de JSON se analizan automáticamente en Datadog. Dado que el atributo `status` del log es un [atributo reservado][4], pasa por operaciones de preprocesamiento para los logs JSON. + +En el ejemplo siguiente, la marca temporal real del log es el valor del atributo `mytimestamp` y no la marca temporal del log `Dec 13, 2017 at 14:16:45.158`. + +{{< img src="logs/guide/log_timestamp_6.png" alt="Panel del log que muestra la marca temporal del log que es distinta del valor del atributo mytimestamp en el mensaje" style="width:50%;">}} + +### Formatos de fecha admitidos + +Para asegurarte de que el valor del atributo `mytimestamp` anula la marca temporal actual del log que se está mostrando, debes añadirlo como atributo de fecha. + +1. Ve a tu [Pipeline de logs][2]. +2. Sitúate sobre Preprocessing for JSON Logs (Preprocesamiento para logs JSON) y haz clic en el icono del lápiz. +3. Añade `mytimestamp` a la lista de atributos de fecha. El reasignador de fechas busca cada uno de los atributos reservados en el orden en que aparecen en la lista. Para asegurarte de que la fecha procede del atributo `mytimestamp`, colócalo en primer lugar en la lista. +4. Haz clic en **Save** (Guardar). + +Hay formatos de fecha específicos que deben seguirse para que la reasignación funcione. Los formatos de fecha reconocidos son: [ISO8601][7], [UNIX (el formato EPOCH de milisegundos)][8] y [RFC3164][9]. + +Si utilizas un formato de fecha diferente, consulta [Formato de fecha personalizado](#custom-date-format). + +**Nota**: Cualquier modificación en el pipeline solo afecta a los nuevos logs, ya que todo el procesamiento se realiza en la ingesta. + +### Formato de fecha personalizado + +Si el formato de fecha no es admitido por defecto por el reasignador, puedes analizar la fecha utilizando un [Analizador Grok][5] y luego convertirla a un formato compatible. + +1. Ve al [Pipeline][2] que está procesando los logs. Si todavía no tienes un pipeline configurado para esos logs, crea un nuevo pipeline para ello. +2. Haz clic en **Add Processor** (Agregar procesador). +3. Selecciona el tipo de procesador **Grok Parser** (Analizador Grok). +4. Define la regla de parseo en función de tu formato de fecha. Consulta estos [ejemplos de parseo de fechas][4] para más detalles. +5. En la sección Advanced Settings (Configuración avanzada), añade `mytimestamp` a la sección `Extract from` para que este analizador se aplique únicamente al atributo personalizado `mytimestamp`. +6. Haz clic en **Create**. +7. Añade un [Reasignador de fecha de log][5] para asignar la marca temporal correcta a los nuevos logs. + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/account/preferences +[2]: https://app.datadoghq.com/logs/pipelines/ +[3]: /es/logs/log_configuration/parsing +[4]: /es/logs/log_configuration/parsing/#parsing-dates +[5]: /es/logs/log_configuration/processors/?tabs=ui#log-date-remapper +[6]: /es/logs/log_configuration/pipelines/?tab=date#preprocessing +[7]: https://www.iso.org/iso-8601-date-and-time-format.html +[8]: https://en.wikipedia.org/wiki/Unix_time +[9]: https://www.ietf.org/rfc/rfc3164.txt \ No newline at end of file diff --git a/content/es/logs/guide/mechanisms-ensure-logs-not-lost.md b/content/es/logs/guide/mechanisms-ensure-logs-not-lost.md new file mode 100644 index 0000000000000..93296357a5bdd --- /dev/null +++ b/content/es/logs/guide/mechanisms-ensure-logs-not-lost.md @@ -0,0 +1,43 @@ +--- +aliases: +- /es/logs/faq/log-collection-is-the-datadog-agent-losing-logs +further_reading: +- link: /logs/log_collection/ + tag: Documentación + text: Aprende a recopilar tus logs +- link: /logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +- link: /glossary/#tail + tag: Glosario + text: Entrada de glosario para "tail" (cola) +kind: guía +title: Mecanismos para asegurar que no se pierdan logs +--- + +**El Datadog Agent dispone de varios mecanismos para asegurar que no se pierda ningún log**. + +## Rotación de log + +Cuando se rota un archivo, el Agent sigue [supervisando][1] el archivo antiguo mientras empieza a seguir el archivo recién creado en paralelo. +Aunque el Agent continúa supervisando el archivo antiguo, se establece un tiempo de espera de 60 segundos después de la rotación del log para garantizar que el Agent utiliza sus recursos para suoervisar los archivos más recientes. + +## Problemas de red + +### Supervisión de archivos + +El Agent almacena un puntero para cada archivo supervisado. Si se produce un problema de conexión de red, el Agent deja de enviar logs hasta que se restablezca la conexión y retoma automáticamente el proceso donde se detuvo para garantizar que no se pierda ningún log. + +### Escucha de puertos + +Si el Agent está escuchando un puerto TCP o UDP y se enfrenta a un problema de red, los logs se almacenan en un buffer local hasta que la red vuelva a estar disponible. +Sin embargo, existen algunos límites para este buffer con el fin de evitar problemas de memoria. Los nuevos logs se descartan cuando el buffer está lleno. + +### Logs del contenedor + +En cuanto a los archivos, Datadog almacena un puntero por cada contenedor supervisado. Por lo tanto, en el caso de problemas de red, es posible que el Agent sepa qué logs no se han enviado todavía. +Sin embargo, si el contenedor supervisado se elimina antes de que la red vuelva a estar disponible, los logs ya no son accesibles. + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /es/glossary/#tail \ No newline at end of file diff --git a/content/es/logs/guide/remap-custom-severity-to-official-log-status.md b/content/es/logs/guide/remap-custom-severity-to-official-log-status.md new file mode 100644 index 0000000000000..b2848fcd62da7 --- /dev/null +++ b/content/es/logs/guide/remap-custom-severity-to-official-log-status.md @@ -0,0 +1,68 @@ +--- +aliases: +- /es/logs/faq/how-to-remap-custom-severity-values-to-the-official-log-status +further_reading: +- link: logs/log_collection/#custom-log-collection + tag: Documentación + text: Más información sobre la recogida de loguear con el Agent +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +kind: guía +title: Reasignación de valores de gravedad personalizados al estado del log oficial +--- + +Por defecto, [loguear Status Remapper][1] se basa en los [Estándares de severidad Syslog][2]. +Sin embargo, puede haber otros sistemas que tengan valores de gravedad diferentes y que quieras reasignar al estado oficial de loguear. +Esto es posible gracias al [Procesador de Categorías][3] que define un mapeo entre tus valores personalizados y los esperados. + +Esta página describe cómo hacerlo con 2 ejemplos: Niveles Bunyan y acceso web logs. + +## Acceso web logs + +El código de estado de la solicitud puede utilizarse para determinar el estado de loguear. Datadog integraciones utilice la siguiente asignación: + +* 2xx: OK +* 3xx: Aviso +* 4xx: Advertencia +* 5xx: Error + +Suponga que el código de estado de su loguear se almacena en el atributo `http.status_code`. +Añada un procesador de categoría en su canalización que cree un nuevo atributo para reflejar la asignación anterior: + +{{< img src="logs/guide/category_processor.png" alt="Category Processor " >}} + +A continuación, añada un remapeador de estado que utilice el atributo recién creado: + +{{< img src="logs/guide/log_status_remapper.png" alt="loguear status remapper" >}} + +## Niveles Bunyan + +Los niveles de Bunyan son similares a los de Syslog, pero sus valores se multiplican por 10. + +* 10 = rastrear +* 20 = DEBUG +* 30 = INFO +* 40 = ADVERTENCIA +* 50 = ERROR +* 60 = FATAL + +Suponga que el nivel de bunyan se almacena en el atributo `bunyan_level`. +Añada un Procesador de Categorías en su Pipeline que cree un nuevo atributo para reflejar el mapeo anterior: + +{{< img src="logs/guide/category_processor_bunyan.png" alt="category Processor bunyan" >}} + +A continuación, añada un remapeador de estado que utilice el atributo recién creado: + +{{< img src="logs/guide/status_remapper_bunyan.png" alt="loguear status remapper bunyan" >}} + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /es/logs/log_configuration/processors/#log-status-remapper +[2]: https://en.wikipedia.org/wiki/Syslog#Severity_level +[3]: /es/logs/log_configuration/processors/#category-processor \ No newline at end of file diff --git a/content/es/logs/guide/sending-events-and-logs-to-datadog-with-amazon-eventbridge-api-destinations.md b/content/es/logs/guide/sending-events-and-logs-to-datadog-with-amazon-eventbridge-api-destinations.md new file mode 100644 index 0000000000000..383e48c51a673 --- /dev/null +++ b/content/es/logs/guide/sending-events-and-logs-to-datadog-with-amazon-eventbridge-api-destinations.md @@ -0,0 +1,63 @@ +--- +further_reading: +- link: https://aws.amazon.com/blogs/compute/using-api-destinations-with-amazon-eventbridge/#sending-aws-events-to-datadog + tag: Blog + text: Blog de AWS con ejemplos de uso de destinos de API +kind: guía +title: Envío de eventos y logs a Datadog con destinos de API de Amazon EventBridge +--- + +{{< site-region region="gov" >}} +
El sitio Datadog para el gobierno no es compatible con Amazon EventBridge.
+{{< /site-region >}} + +Amazon EventBridge es un bus de eventos serverless que te permite crear aplicaciones basadas en eventos. EventBridge puede integrarse con tus servicios AWS, pero la función de destinos de API te permite enviar y recibir datos fuera de AWS utilizando las API. En esta guía se indican los pasos necesarios para enviar tus eventos y logs desde EventBridge a Datadog. Para obtener más información sobre el envío de tus eventos desde Datadog a EventBridge, consulta la [documentación de la integración EventBridge][1]. + +## Configuración + +Antes de empezar, necesitas una [cuenta Datadog][2] con [una clave de API][3] y también necesitas acceso a [destinos de API Amazon Eventbridge][4]. + +### Configuración + +1. Para añadir Datadog como destino API, sigue los pasos indicados en la [documentación de Amazon Crear un destino de API[5]. + - Utiliza la autorización de clave de API, con `DD-API-KEY` como nombre de tu clave y tu [clave de API Datadog][3] como valor. + - Para tu endpoint de destino, utiliza `https://{{< region-param key="http_endpoint" code="true" >}}/api/v2/logs` para logs y `https://api.{{< region-param key="dd_site" code="true" >}}/api/v1/events` para eventos, y configura `POST` como método HTTP. Para obtener más información sobre las diferencias entre logs y eventos, consulta [Reducir los riesgos relacionados con los datos][8]. + - Si utiliza el endpoint de eventos, debes incluir `title` y `text` como parámetros `body.field` en la conexión del destino de la API. Estos son los valores necesarios para `POST` al endpoint de eventos. Para obtener más información, consulta la documentación [Publicar un evento][9]. +2. Una vez configurado el destino, consulta la documentación de Amazon para [crear una regla EventBridge][10], donde configuras Datadog como tu destino. +3. Una vez configurada la regla con Datadog como destino, activa un evento publicando un evento para EventBridge. Para obtener más información sobre cómo enviar eventos a EventBridge desde Datadog, consulta la documentación [de la integración EventBridge][1]. Por ejemplo, para activar un evento de test [cargando los objetos a un bucket de S3][11] en tu cuenta, utiliza este comando AWS CloudShell: + + ```bash + echo "test" > testfile.txt + aws s3 cp testfile.txt s3://YOUR_BUCKET_NAME + ``` +4. Una vez que se envían los eventos y los logs, al cabo de unos cinco minutos los datos están disponibles en la [consola de logs][12] o el [Explorador de eventos][13] de Datadog, dependiendo del endpoint al que los estés enviando. + +## Resolución de problemas + +Para ver más detalles sobre las cargas útiles enviadas a Datadog y ver la respuesta de los endpoints de la API, configura una cola de Amazon SQS: +1. Crea una cola en [Amazon SQS][14]. +2. Ve a la [regla EventBridge][15] que has creado en la sección [Configuración](#configuration). +3. Selecciona la pestaña **Targets** (Destinos) y haz clic en **Edit** (Editar). +4. Amplía la sección **Additional settings** (Parámetros adicionales). +4. En la sección *Dead-letter queue* (Cola de mensajes fallidos), elige **Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue** (Seleccionar una cola de Amazon SQS en la cuenta AWS actual para utilizarla como cola de emnsajes fallidos). +5. Selecciona la cola SQS que acabas de crear. +6. Actualiza la regla. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: /es/integrations/amazon_event_bridge/ +[2]: https://www.datadoghq.com/free-datadog-trial/ +[3]: /es/account_management/api-app-keys/#api-keys +[4]: https://aws.amazon.com/eventbridge/ +[5]: https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-api-destinations.html#eb-api-destination-create +[8]: /es/data_security/#other-sources-of-potentially-sensitive-data/ +[9]: https://docs.datadoghq.com/es/api/latest/events/#post-an-event +[10]: https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html +[11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html +[12]: https://app.datadoghq.com/logs +[13]: https://app.datadoghq.com/event/explorer +[14]: https://console.aws.amazon.com/sqs/ +[15]: https://console.aws.amazon.com/events/ \ No newline at end of file diff --git a/content/es/logs/guide/setting-file-permissions-for-rotating-logs.md b/content/es/logs/guide/setting-file-permissions-for-rotating-logs.md new file mode 100644 index 0000000000000..52b27d258cbd8 --- /dev/null +++ b/content/es/logs/guide/setting-file-permissions-for-rotating-logs.md @@ -0,0 +1,118 @@ +--- +aliases: +- /es/logs/faq/setting-file-permissions-for-rotating-logs +further_reading: +- link: /logs/guide/log-parsing-best-practice/ + tag: FAQ + text: Análisis de logs - Prácticas recomendadas +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprender a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtener más información sobre los análisis +kind: guía +title: Configuración de permisos de archivos para la rotación de logs (Linux) +--- + +El Datadog Agent se ejecuta con el usuario `dd-agent` y el grupo `dd-agent`. Esto impide que el Datadog Agent acceda a logs en `/var/log`, ya que sólo son accesibles por un administrador raíz (o un administrador sudo). + +## Configurar permisos mediante ACL + +Para permitir el acceso de sólo lectura sólo a `datadog-agent`, [crea las ACL y modifica logrotate para conservar los cambios de los permisos][1]. + +### Comprobar que las ACL están habilitadas en tu sistema + +[Es necesario que las ACL estén habilitadas][2] en tu sistema de archivos para configurar permisos utilizando los métodos descritos en este artículo. Verifica que las ACL están habilitadas utilizando los comandos `getfacl` y `setfacl` para configurar permisos para el usuario `datadog-agent` en un directorio de test, por ejemplo: + +```shell +mkdir /var/log/test-dir +getfacl /var/log/test-dir/ +setfacl -m u:dd-agent:rx /var/log/test-dir +getfacl /var/log/test-dir/ +``` + +Si las ACL están habilitadas, los permisos configurados para `datadog-agent` aparecen en el resultado de getfacl. + +{{< img src="logs/faq/setting_file_permission.png" alt="Configuración de permisos de archivos" >}} + +### Concesión de permisos de lectura y ejecución en directorios de logs a dd-agent + +Una vez que hayas verificado que las ACL están habilitadas, concede permisos de lectura y ejecución al usuario `datadog-agent` en los directorios apropiados para la recopilación de logs. Por ejemplo, para conceder acceso a `/var/log/apache`, ejecuta: + +```shell +setfacl -m u:dd-agent:rx /var/log/apache +``` + +[Obtener más información sobre cómo configurar las ACL en Linux][3] + +### Configuración de permisos para la rotación de archivos de logs + +[Configurar los permisos][4] una vez no servirá para la rotación de logs, ya que logrotate no vuelve a aplicar la configuración de ACL. Para obtener una solución más permanente, añade una regla a logrotate para restablecer la ACL en un nuevo archivo: + +```shell +sudo touch /etc/logrotate.d/dd-agent_ACLs +``` + +Archivo de ejemplo: + +```text +/var/log/apache/*.log { + postrotate + /usr/bin/setfacl -m g:dd-agent:rx /var/log/apache/access.log + /usr/bin/setfacl -m g:dd-agent:rx /var/log/apache/error.log + endscript +} +``` + +Comprueba el estado de la ACL de un archivo con: + +```text +getfacl /var/log/apache/access.log +``` + +**Nota**: Para **PostgreSQL v10** y versiones anteriores, configura el permiso en **0700**. Para **PostgreSQL v11**, configúralo en **0700** o **0750**. Intentar iniciar un servidor con una carpeta de datos base que tenga permisos diferentes de 0700 o 0750 resultará en un fallo del proceso postmater. + +**Nota**: El directorio de gestión de logs de PostgreSQL no puede estar ubicado en el mismo directorio que la instalación base de PostgreSQL. + +## Configuración de permisos cuando las ACL no están presentes + +Cuando las ACL no estén presentes en un sistema, configura tus permisos basándote en el acceso de grupo. + +Por ejemplo, si tu servicio MySQL está gestionando logs en las siguientes localizaciones: + +```text +/var/log/mysql/mysql_error.log +/var/log/mysql/mysql-slow.log +``` + +Sus permisos están asociados al usuario 'mysql' y al grupo 'mysql' por defecto. Este esquema de gestión de logs deniega el acceso al archivo de logs a cualquier usuario que no pertenezca al grupo 'mysql'. Por lo general, es posible que veas algo así: + +```text +$ ls -l /var/log | grep -i mysql +drwxr-x--- 2 mysql mysql 4096 Feb 20 06:25 mysql +``` + +En este caso, el camino más fácil es proporcionar a todos acceso de lectura al archivo en la configuración de logrotate: + +```text +/var/log/mysql/mysql_error.log /var/log/mysql/mysql-slow.log { + + daily + rotate 7 + missingok + create 644 mysql adm + compress +} +``` + +Cada aplicación existente seguirá una nomenclatura similar. La ventaja es que evitas proporcionar acceso privilegiado a una cuenta individual y utilizas una práctica estandarizada. Esto te ayuda a mantener tus reglas de auditoría bajo control. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://help.ubuntu.com/community/FilePermissionsACLs +[2]: https://www.tecmint.com/secure-files-using-acls-in-linux +[3]: http://xmodulo.com/configure-access-control-lists-acls-linux.html +[4]: http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux \ No newline at end of file diff --git a/content/es/logs/log_collection/android.md b/content/es/logs/log_collection/android.md new file mode 100644 index 0000000000000..609b5c832cc1f --- /dev/null +++ b/content/es/logs/log_collection/android.md @@ -0,0 +1,514 @@ +--- +description: Recopila logs desde tus aplicaciones de Android. +further_reading: +- link: https://github.com/DataDog/dd-sdk-android + tag: Código fuente + text: dd-sdk-android Source code +- link: logs/explorer + tag: Documentación + text: Aprende a explorar tus logs +kind: documentación +title: Recopilación de logs de Android +--- + +## Información general + +Envía logs a Datadog desde tus aplicaciones de Android con [la biblioteca de registro del cliente `dd-sdk-android-logs` de Datadog][1] y aprovecha las siguientes características: + +* Loguear en Datadog en formato JSON de forma nativa. +* Añadir `context` y atributos personalizados adicionales a cada log enviado. +* Reenviar excepciones capturadas de Java o Kotlin. +* Registrar las direcciones IP reales de los clientes y los Agents de usuario. +* Uso optimizado de red con envíos masivos automáticos. + +## Configuración + +1. Añade la dependencia de Gradle declarando la biblioteca como una dependencia en el archivo `build.gradle` a nivel de módulo. Asegúrate de sustituir `x.x.x` en el siguiente ejemplo por la última versión de [dd-sdk-android-logs][2]. + + ```groovy + dependencies { + implementation "com.datadoghq:dd-sdk-android-logs:x.x.x" + } + ``` + +2. Inicializa el SDK de Datadog con el contexto de tu aplicación, el consentimiento de rastreo, así como el [token de cliente de Datadog][3]. Por motivos de seguridad, debes utilizar un token de cliente; no puedes utilizar [claves de API de Datadog][4] para configurar el SDK de Datadog, ya que se expondrían en el lado del cliente en el código de bytes APK de la aplicación de Android. + + `APP_VARIANT_NAME` especifica la variante de la aplicación que genera los datos. Se requiere en las credenciales de inicialización; utiliza tu valor `BuildConfig.FLAVOR` o una cadena vacía si no tienes variantes. El archivo `mapping.txt` de ProGuard apropiado se cargará automáticamente en el momento de la compilación, lo que te permitirá ver las stack traces de errores desenmascaradas. Para más información, consulta [Informe de fallas y Rastreo de errores de Android][5]. + + Para obtener más información sobre cómo configurar un token de cliente, consulta la [documentación sobre el token de cliente][3]. + + {{< site-region region="us" >}} + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + class SampleApplication : Application() { + override fun onCreate() { + super.onCreate() + val configuration = Configuration.Builder( + clientToken = , + env = , + variant = + ).build() + Datadog.initialize(this, configuration, trackingConsent) + } + } + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + public class SampleApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + Configuration configuration = + new Configuration.Builder(, , ) + .build(); + Datadog.initialize(this, configuration, trackingConsent); + } + } + ``` + {{% /tab %}} + {{< /tabs >}} + {{< /site-region >}} + + {{< site-region region="eu" >}} + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + class SampleApplication : Application() { + override fun onCreate() { + super.onCreate() + val configuration = Configuration.Builder( + clientToken = , + env = , + variant = + ) + .useSite(DatadogSite.EU1) + .build() + Datadog.initialize(this, configuration, trackingConsent) + } + } + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + public class SampleApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + Configuration configuration = + new Configuration.Builder(, , ) + .useSite(DatadogSite.EU1) + .build(); + Datadog.initialize(this, configuration, trackingConsent); + } + } + ``` + {{% /tab %}} + {{< /tabs >}} + {{< /site-region >}} + + {{< site-region region="us3" >}} + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + class SampleApplication : Application() { + override fun onCreate() { + super.onCreate() + val configuration = Configuration.Builder( + clientToken = , + env = , + variant = + ) + .useSite(DatadogSite.US3) + .build() + Datadog.initialize(this, configuration, trackingConsent) + } + } + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + public class SampleApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + Configuration configuration = + new Configuration.Builder(, , ) + .useSite(DatadogSite.US3) + .build(); + Datadog.initialize(this, configuration, trackingConsent); + } + } + ``` + {{% /tab %}} + {{< /tabs >}} + {{< /site-region >}} + + {{< site-region region="us5" >}} + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + class SampleApplication : Application() { + override fun onCreate() { + super.onCreate() + val configuration = Configuration.Builder( + clientToken = , + env = , + variant = + ) + .useSite(DatadogSite.US5) + .build() + Datadog.initialize(this, configuration, trackingConsent) + } + } + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + public class SampleApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + Configuration configuration = + new Configuration.Builder(, , ) + .useSite(DatadogSite.US5) + .build(); + Datadog.initialize(this, configuration, trackingConsent); + } + } + ``` + {{% /tab %}} + {{< /tabs >}} + {{< /site-region >}} + + {{< site-region region="gov" >}} + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + class SampleApplication : Application() { + override fun onCreate() { + super.onCreate() + val configuration = Configuration.Builder( + clientToken = , + env = , + variant = + ) + .useSite(DatadogSite.US1_FED) + .build() + Datadog.initialize(this, configuration, trackingConsent) + } + } + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + public class SampleApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + Configuration configuration = + new Configuration.Builder(, , ) + .useSite(DatadogSite.US1_FED) + .build(); + Datadog.initialize(this, configuration, trackingConsent); + } + } + ``` + {{% /tab %}} + {{< /tabs >}} + {{< /site-region >}} + + {{< site-region region="ap1" >}} + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + class SampleApplication : Application() { + override fun onCreate() { + super.onCreate() + val configuration = Configuration.Builder( + clientToken = , + env = , + variant = + ) + .useSite(DatadogSite.AP1) + .build() + Datadog.initialize(this, configuration, trackingConsent) + } + } + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + public class SampleApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + Configuration configuration = + new Configuration.Builder(, , ) + .useSite(DatadogSite.AP1) + .build(); + Datadog.initialize(this, configuration, trackingConsent); + } + } + ``` + {{% /tab %}} + {{< /tabs >}} + {{< /site-region >}} + + Para cumplir con la normativa GDPR, el SDK requiere el valor de consentimiento de rastreo en la inicialización. + El consentimiento de rastreo puede ser uno de los siguientes valores: + * `TrackingConsent.PENDING`: el SDK comienza a recopilar y procesar en lotes los datos, pero no los envía al endpoint de recopilación + de datos. El SDK espera al nuevo valor de consentimiento de rastreo para decidir qué hacer con los datos por lotes. + * `TrackingConsent.GRANTED`: el SDK comienza a recopilar los datos y los envía al endpoint de recopilación de datos. + * `TrackingConsent.NOT_GRANTED`: el SDK no recopila ningún dato. No podrás enviar manualmente ningún log, traza (trace), o + eventos de RUM. + + Para actualizar el consentimiento de rastreo una vez inicializado el SDK, llama a: `Datadog.setTrackingConsent()`. + El SDK cambia su comportamiento en función del nuevo consentimiento. Por ejemplo, si el consentimiento de rastreo actual es `TrackingConsent.PENDING` y lo actualizas a: + * `TrackingConsent.GRANTED`: el SDK envía todos los datos actuales procesados por lotes y los datos futuros directamente al endpoint de recopilación de datos. + * `TrackingConsent.NOT_GRANTED`: el SDK borra todos los datos procesados por lotes y no recopila datos futuros. + + Utiliza el método de utilidad `isInitialized` para comprobar si el SDK está correctamente inicializado: + + ```kotlin + if (Datadog.isInitialized()) { + // your code here + } + ``` + + Al redactar tu aplicación, puedes habilitar los logs de desarrollo invocando al método `setVerbosity`. Todos los mensajes internos de la biblioteca con una prioridad igual o superior al nivel proporcionado se loguean en Logcat de Android: + ```kotlin + Datadog.setVerbosity(Log.INFO) + ``` + +3. Configurar y activar la función de logs: + + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + val logsConfig = LogsConfiguration.Builder().build() + Logs.enable(logsConfig) + ``` + {{% /tab %}} + + {{% tab "Java" %}} + ```java + LogsConfiguration logsConfig = new LogsConfiguration.Builder().build(); + Logs.enable(logsConfig); + ``` + {{% /tab %}} + {{< /tabs >}} + +4. Configurar el registrador de Android: + + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + val logger = Logger.Builder() + .setNetworkInfoEnabled(true) + .setLogcatLogsEnabled(true) + .setRemoteSampleRate(100f) + .setBundleWithTraceEnabled(true) + .setName("") + .build() + ``` + {{% /tab %}} + + {{% tab "Java" %}} + ```java + Logger logger = new Logger.Builder() + .setNetworkInfoEnabled(true) + .setLogcatLogsEnabled(true) + .setRemoteSampleRate(100f) + .setBundleWithTraceEnabled(true) + .setName("") + .build(); + ``` + {{% /tab %}} + {{< /tabs >}} + +5. Envía una entrada personalizada de log directamente a Datadog con una de las siguientes funciones: + + ```kotlin + logger.d("A debug message.") + logger.i("Some relevant information ?") + logger.w("An important warning...") + logger.e("An error was met!") + logger.wtf("What a Terrible Failure!") + ``` + +6. Las excepciones detectadas pueden enviarse con un mensaje: + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + try { + doSomething() + } catch (e: IOException) { + logger.e("Error while doing something", e) + } + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + try { + doSomething(); + } catch (IOException e) { + logger.e("Error while doing something", e); + } + ``` + {{% /tab %}} + {{< /tabs >}} + + **Nota**: Todos los métodos de registro pueden tener un throwable adjunto. + +7. (Opcional) Proporciona un mapa junto a tu mensaje de log para añadir atributos al log emitido. Cada entrada del mapa se añade como un atributo. + + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + logger.i("onPageStarted", attributes = mapOf("http.url" to url)) + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + Map attributes = new HashMap<>(); + attributes.put("http.url", url); + logger.i("onPageStarted", null, attributes); + ``` + {{% /tab %}} + {{< /tabs >}} + +8. Si necesitas modificar algunos atributos en tus eventos de log antes del almacenamiento en lotes, puedes hacerlo proporcionando una implementación de `EventMapper` al inicializar la función de logs: + + {{< tabs >}} + {{% tab "Kotlin" %}} + ```kotlin + val logsConfig = LogsConfiguration.Builder() + // ... + .setEventMapper(logEventMapper) + .build() + ``` + {{% /tab %}} + {{% tab "Java" %}} + ```java + LogsConfiguration logsConfig = new LogsConfiguration.Builder() + // ... + .setEventMapper(logEventMapper) + .build(); + ``` + {{% /tab %}} + {{< /tabs >}} + + **Nota**: Si devuelves null (nulo) o una instancia diferente de la implementación de `EventMapper`, se eliminará el evento. + +## Registro avanzado + +### Inicialización del registrador + +Los siguientes métodos en `Logger.Builder` se pueden utilizar al inicializar el registrador para enviar logs a Datadog: + +| Método | Descripción | +|----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `setNetworkInfoEnabled(true)` | Añade el atributo `network.client.connectivity` a todos los logs. Los datos registrados por defecto son `connectivity` (`Wifi`, `3G`, `4G`...) y `carrier_name` (`AT&T - US`). `carrier_name` solo está disponible para la API de Android nivel 28+. | +| `setService()` | Establece `` como valor para el [atributo estándar][6] `service` adjunto a todos los logs enviados a Datadog. | +| `setLogcatlogsEnabled(true)` | Establécelo en `true` para utilizar Logcat como registrador. | +| `setBundleWithTraceEnabled(true)`| Establécelo en `true` (por defecto) para agrupar los logs con la traza activa en tu aplicación. Este parámetro te permite visualizar todos los logs enviados durante una traza específica utilizando el dashboard de Datadog. | +| `setBundleWithRumEnabled(true)`| Establécelo en `true` (por defecto) para agrupar los logs con el contexto RUM actual en tu aplicación. Este parámetro te permite visualizar todos los logs enviados mientras una Vista específica está activa utilizando Datadog RUM Explorer. | +| `setName()` | Establece `` como el valor para el atributo `logger.name` adjunto a todos los logs enviados a Datadog. | +| `setRemoteSampleRate()` | Establece la frecuencia de muestreo para este registrador. Todos los logs producidos por la instancia del registrador se muestrean aleatoriamente según la frecuencia de muestreo proporcionada (por defecto 1.0 = todos los logs). **Nota**: Los logs de Logcat no se muestrean. | +| `build()` | Crea una nueva instancia del registrador con todas las opciones configuradas. | + +### Configuración global + +A continuación, encuentra funciones para añadir/eliminar etiquetas y atributos a todos los logs enviados por un registrador dado. + +#### Etiquetas globales + +##### Añadir etiquetas + +Utiliza la función `addTag("", "")` para añadir etiquetas a todos los logs enviados por un registrador específico: + +```kotlin +// This adds a tag "build_type:debug" or "build_type:release" accordingly +logger.addTag("build_type", BuildConfig.BUILD_TYPE) + +// This adds a tag "device:android" +logger.addTag("device", "android") +``` + +El `` debe ser una `String`. + +##### Eliminar etiquetas + +Utiliza la función `removeTagsWithKey("")` para eliminar etiquetas de todos los logs enviados por un registrador específico: + +```kotlin +// This removes any tag starting with "build_type" +logger.removeTagsWithKey("build_type") +``` + +Para más información, consulta [Empezando con etiquetas][7]. + +#### Atributos globales + +##### Añadir atributos + +Por defecto, los siguientes atributos se añaden a todos los logs enviados por un registrador: + +* `http.useragent` y sus propiedades extraídas `device` y `OS` +* `network.client.ip` y sus propiedades geográficas extraídas (`country`, `city`) + +Utiliza la función `addAttribute("", "")` para añadir un atributo personalizado a todos los logs enviados por un registrador específico: + +```kotlin +// This adds an attribute "version_code" with an integer value +logger.addAttribute("version_code", BuildConfig.VERSION_CODE) + +// This adds an attribute "version_name" with a String value +logger.addAttribute("version_name", BuildConfig.VERSION_NAME) +``` + +El `` puede ser cualquier tipo elemental, `String`, o fecha. + +##### Eliminar atributos + +Utiliza la función `removeAttribute("", "")` para eliminar un atributo personalizado de todos los logs enviados por un registrador específico: + +```kotlin +// This removes the attribute "version_code" from all further log send. +logger.removeAttribute("version_code") + +// This removes the attribute "version_name" from all further log send. +logger.removeAttribute("version_name") +``` + +## Recopilación de lotes + +Todos los logs se almacenan primero en el dispositivo local por lotes. Cada lote sigue la especificación de admisión. Se envían en cuanto la red está disponible, y la batería tiene suficiente carga como para garantizar que el SDK de Datadog no afecte a la experiencia del usuario final. Si la red no está disponible mientras la aplicación está en primer plano, o si falla una carga de datos, el lote se guarda hasta que pueda enviarse correctamente. + +Esto significa que aunque los usuarios abran tu aplicación estando desconectados, no se perderá ningún dato. + +Los datos en disco se descartarán automáticamente si son demasiado antiguos para garantizar que el SDK no utilice demasiado espacio en disco. + +Antes de que el dato se suba a Datadog, se almacena en formato de texto en el directorio de la caché de tu aplicación. Esta carpeta de la caché está protegida por [Android's Application Sandbox][8], lo que significa que en la mayoría de los dispositivos estos datos no pueden ser leídos por otras aplicaciones. Sin embargo, si el dispositivo móvil está rooteado o alguien manipula el núcleo de Linux, los datos almacenados pueden llegar a ser legibles. + +## Extensiones + +### Timber + +Si tu código base existente utiliza Timber, puedes reenviar todos esos logs a Datadog automáticamente mediante la [biblioteca dedicada][9]. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-sdk-android/tree/develop/features/dd-sdk-android-logs +[2]: https://github.com/DataDog/dd-sdk-android/blob/develop/CHANGELOG.md +[3]: /es/account_management/api-app-keys/#client-tokens +[4]: /es/account_management/api-app-keys/#api-keys +[5]: /es/real_user_monitoring/error_tracking/android/#upload-your-mapping-file +[6]: /es/logs/processing/attributes_naming_convention/ +[7]: /es/getting_started/tagging/ +[8]: https://source.android.com/security/app-sandbox +[9]: https://github.com/DataDog/dd-sdk-android/tree/develop/integrations/dd-sdk-android-timber \ No newline at end of file diff --git a/content/es/logs/log_collection/flutter.md b/content/es/logs/log_collection/flutter.md new file mode 100644 index 0000000000000..0b80fccd02120 --- /dev/null +++ b/content/es/logs/log_collection/flutter.md @@ -0,0 +1,160 @@ +--- +description: Recopila datos de logs de tus proyectos de Flutter. +further_reading: +- link: https://github.com/DataDog/dd-sdk-flutter + tag: Código fuente + text: Código fuente dd-sdk-flutter +- link: logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +kind: documentación +title: Recopilación de logs de Flutter +--- +Envía logs a Datadog desde tus aplicaciones de Flutter con [el complemento de flutter de Datadog][1] y aprovecha las siguientes funciones: + +* Loguear en Datadog en formato JSON de forma nativa. +* Utiliza los atributos predeterminados y añade atributos personalizados a cada log enviado. +* Registra las direcciones IP reales de los clientes y los Agents de usuario. +* Aprovecha el uso optimizado de red con publicaciones masivas automáticas. + +## Configuración + +Para inicializar el SDK de Datadog Flutter para logs, consulta [Configuración][2]. + +Una vez inicializado el SDK de Datadog Flutter con un parámetro `LoggingConfiguration`, puedes crear un `DatadogLogger` y enviar logs a Datadog. + +```dart +final logConfiguration = DatadogLoggerConfiguration( + remoteLogThreshold: LogLevel.debug, + networkInfoEnabled: true, +); +final logger = DatadogSdk.instance.logs?.createLogger(logConfiguration); + +logger?.debug("A debug message."); +logger?.info("Some relevant information?"); +logger?.warn("An important warning..."); +logger?.error("An error was met!"); +``` + +También puedes crear registradores adicionales con diferentes servicios y nombres utilizando el método `createLogger`: + +```dart +final myLogger = DatadogSdk.instance.logs?.createLogger( + DatadogLoggerConfiguration( + service: 'com.example.custom_service', + name: 'Additional logger' + ) +); + +myLogger?.info('Info from my additional logger.'); +``` + +Para obtener más información sobre las opciones de registro disponibles, consulta la [Documentación de clase DatadogLoggerConfiguration][3]. + +## Gestionar etiquetas (tags) + +Las etiquetas establecidas en los registradores son locales para cada registrador. + +### Añadir etiquetas + +Utiliza el método `DatadogLogger.addTag` para añadir etiquetas a todos los logs enviados por un registrador específico: + +```dart +// This adds a "build_configuration:debug" tag +logger.addTag("build_configuration", "debug") +``` + +### Eliminar etiquetas + +Utiliza el método `DatadogLogger.removeTag` para eliminar etiquetas de todos los logs enviados por un registrador específico: + +```dart +// This removes any tag that starts with "build_configuration" +logger.removeTag("build_configuration") +``` + +Para más información, consulta [Empezando con etiquetas][4]. + +## Gestionar atributos + +Los atributos establecidos en los registradores son locales para cada registrador. + +### Atributos predeterminados + +Por defecto, los siguientes atributos se añaden a todos los logs enviados por un registrador: + +* `http.useragent` y sus propiedades extraídas `device` y `OS` +* `network.client.ip` y sus propiedades geográficas extraídas (`country`, `city`) +* `logger.version`, versión del SDK de Datadog +* `logger.thread_name`, (`main`, `background`) +* `version`, la versión de la aplicación del cliente extraída de `Info.plist` o de `application.manifest` +* `environment`, el nombre de entorno utilizado para inicializar el SDK + +### Añadir atributos + +Utiliza el método `DatadogLogger.addAttribute` para añadir un atributo personalizado a todos los logs enviados por un registrador específico: + +```dart +logger.addAttribute("user-status", "unregistered") +``` + +El `value` puede ser de la mayoría de los tipos admitidos por la [clase `StandardMessageCodec`][5]. + +### Eliminar atributos + +Utiliza el método `DatadogLogger.removeAttribute` para eliminar un atributo personalizado de todos los logs enviados por un registrador específico: + +```dart +// This removes the attribute "user-status" from all logs sent moving forward. +logger.removeAttribute("user-status") +``` + +## Personalización de la salida de log + +Por defecto, para las compilaciones de depuración, `DatadogLogger` imprime todos logs en la consola de Flutter en el formato: +``` +[{level}] message +``` + +Esto se puede personalizar estableciendo una `DatadogLoggerConfiguration.customConsoleLogFunction`. Para filtrar logs por debajo de un determinado nivel, establece este valor en `simpleConsolePrintForLevel`: + +```dart +final config = DatadogLoggerConfiguration( + // Other configuration options... + customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn), +); +``` + +También puedes reenviar logs de Datadog a otros paquetes de log, como [registrador][6], suministrando una función personalizada: + +```dart +var Logger logger; +void customDatadogLog(LogLevel level, + String message, + String? errorMessage, + String? errorKind, + StackTrace? stackTrace, + Map attributes,) { + // Assuming you have a Logger and custom level mapping function: + logger.log(mapLogLevels(level), message, error: errorKind, stackTrace: stackTrace); +} + +final datadogLogger = DatadogSdk.instance.logs?.createLogger( + DatadogLoggerConfiguration( + // Other configuration options... + customConsoleLogFunction: simpleConsolePrintForLevel(LogLevel.warn), + ); +); +``` + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: https://pub.dev/packages/datadog_flutter_plugin +[2]: /es/real_user_monitoring/mobile_and_tv_monitoring/setup/flutter +[3]: https://pub.dev/documentation/datadog_flutter_plugin/latest/datadog_flutter_plugin/DatadogLoggerConfiguration-class.html +[4]: /es/getting_started/tagging/ +[5]: https://api.flutter.dev/flutter/services/StandardMessageCodec-class.html +[6]: https://pub.dev/packages/logger \ No newline at end of file diff --git a/content/es/logs/log_collection/go.md b/content/es/logs/log_collection/go.md new file mode 100644 index 0000000000000..174036eea426c --- /dev/null +++ b/content/es/logs/log_collection/go.md @@ -0,0 +1,133 @@ +--- +aliases: +- /es/logs/languages/go +further_reading: +- link: https://www.datadoghq.com/blog/go-logging/ + tag: Blog + text: Cómo recopilar, normalizar y centralizar logs de Golang +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +- link: /logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +- link: /logs/explorer/#visualize + tag: Documentación + text: Realizar análisis de los logs +- link: /logs/faq/log-collection-troubleshooting-guide/ + tag: FAQ + text: Guía para solucionar problemas relacionados con la recopilación de logs +- link: /glossary/#tail + tag: Glosario + text: Entrada de glosario para "tail" (cola) +kind: documentación +title: Recopilación de logs de Go +--- + +Para enviar tus logs de Go a Datadog, loguea un archivo y luego [supervisa][11] ese archivo con tu Datadog Agent. Puedes utilizar la siguiente configuración con [logrus][1], una biblioteca de registro de código abierto. + +Datadog recomienda encarecidamente que configures tu biblioteca de registro para producir tus logs en JSON y evitar la necesidad de [reglas de parseo personalizadas][2]. + +## Configurar tu logger + +Para una configuración de Go clásica, abre un archivo `main.go` y pega el siguiente código: + +```go +package main + +import ( + log "github.com/sirupsen/logrus" +) + +func main() { + + // use JSONFormatter + log.SetFormatter(&log.JSONFormatter{}) + + // log an event as usual with logrus + log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout") +} +``` + +Puedes añadir metas a cualquier log si proporcionas un objeto JSON que desees ver en el evento de log. + +Estas metas pueden ser `hostname`, `username`, `customers`, `metric` o cualquier información que pueda ayudarte a solucionar problemas y entender lo que ocurre en tu aplicación Go. + +```go +package main + +import ( + log "github.com/sirupsen/logrus" +) + +func main() { + + // use JSONFormatter + log.SetFormatter(&log.JSONFormatter{}) + + // log an event with logrus + log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout") + + // for metadata, a common pattern is to reuse fields between logging statements by reusing + contextualizedLog := log.WithFields(log.Fields{ + "hostname": "staging-1", + "appname": "foo-app", + "session": "1ce3f6v" + }) + + contextualizedLog.Info("Simple event with global metadata") +} +``` + +## Configura tu Datadog Agent + +Una vez que [la recopilación de log está habilitada][3], configura la [recopilación de log personalizada][4] para supervisar tus archivos de log y enviar nuevos logs a Datadog. + +1. Crea una carpeta `go.d/` en el [directorio de configuración del Agent][5] `conf.d/`. +2. Crea un archivo `conf.yaml` en `go.d/` con el siguiente contenido: + + ```yaml + ##Log section + logs: + + - type: file + path: ".log" + service: + source: go + sourcecategory: sourcecode + ``` + +3. [Reinicia el Agent][6]. +4. Ejecuta el [subcomando de estado del Agent][7] y busca `go` en la sección `Checks` para confirmar que los logs se han enviado correctamente a Datadog. + +Si los logs están en formato JSON, Datadog [parsea los mensajes del log][7] de forma automática para extraer sus atributos. Utiliza el [Log Explorer][8] para ver tus logs y solucionar problemas relacionados. + +## Conectar logs y trazas + +Si APM está habilitado para esta aplicación, la correlación entre los logs de aplicación y trazas (traces) puede mejorarse siguiendo la [documentación de registro de APM Go][10] para añadir automáticamente trazas e IDs de tramos en tus logs. + +## Prácticas recomendadas + +* Asigna al registrador un nombre que se corresponda con la funcionalidad o servicio pertinente. +* Utiliza los niveles de log `DEBUG`, `INFO`, `WARNING` y `FATAL`. En Datadog, `FATAL` de Go se asigna a un nivel de gravedad de `Emergency`. +* Empieza registrando la información más importante. Amplía el alcance de tu registro con nuevas iteraciones. +* Utiliza metas para añadir contexto a cualquier log. Esto te permite filtrar rápidamente por usuarios, clientes, atributos empresariales, etc. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/sirupsen/logrus +[2]: /es/logs/log_configuration/parsing +[3]: /es/agent/logs/?tab=tailfiles#activate-log-collection +[4]: /es/agent/logs/?tab=tailfiles#custom-log-collection +[5]: /es/agent/configuration/agent-configuration-files/?tab=agentv6v7#agent-configuration-directory +[6]: /es/agent/configuration/agent-commands/?tab=agentv6v7#restart-the-agent +[7]: /es/agent/configuration/agent-commands/?tab=agentv6v7#agent-status-and-information +[8]: /es/logs/log_configuration/parsing/?tab=matchers +[9]: /es/logs/explorer/#overview +[10]: /es/tracing/other_telemetry/connect_logs_and_traces/go/ +[11]: /es/glossary/#tail \ No newline at end of file diff --git a/content/es/logs/log_collection/ios.md b/content/es/logs/log_collection/ios.md new file mode 100644 index 0000000000000..d271cb8f980ef --- /dev/null +++ b/content/es/logs/log_collection/ios.md @@ -0,0 +1,517 @@ +--- +description: Recopila logs desde tus aplicaciones de iOS. +further_reading: +- link: https://github.com/DataDog/dd-sdk-ios + tag: Código fuente + text: Código fuente dd-sdk-ios +- link: logs/explorer + tag: Documentación + text: Aprende a explorar tus logs +kind: documentación +title: Recopilación de logs de iOS +--- +## Información general + +Envía logs a Datadog desde tus aplicaciones de iOS con [la biblioteca de registro del cliente `dd-sdk-ios` de Datadog][1] y aprovecha las siguientes características: + +* Loguear en Datadog en formato JSON de forma nativa. +* Utilizar los atributos predeterminados y añadir atributos personalizados a cada log enviado. +* Registrar las direcciones IP reales de los clientes y los Agents de usuario. +* Aprovechar el uso optimizado de red con publicaciones masivas automáticas. + +La biblioteca `dd-sdk-ios` es compatible con todas las versiones de iOS 11 o posteriores. + +## Configuración + +1. Declara la biblioteca como una dependencia en función de tu Pack Manager: + +{{< tabs >}} +{{% tab "CocoaPods" %}} + +Puedes utilizar [CocoaPods][6] para instalar `dd-sdk-ios`: +``` +pod 'DatadogCore' +pod 'DatadogLogs' +``` + +[6]: https://cocoapods.org/ + +{{% /tab %}} +{{% tab "Swift Package Manager (SPM)" %}} + +Para integrar utilizando Swift Package Manager de Apple, añade lo siguiente como una dependencia a tu `Package.swift`: +```swift +.package(url: "https://github.com/Datadog/dd-sdk-ios.git", .upToNextMajor(from: "2.0.0")) +``` + +En tu proyecto, vincula las siguientes bibliotecas: +``` +DatadogCore +DatadogLogs +``` + +{{% /tab %}} +{{% tab "Carthage" %}} + +Puedes utilizar [Carthage][7] para instalar `dd-sdk-ios`: +``` +github "DataDog/dd-sdk-ios" +``` + +En Xcode, vincula los siguientes marcos: +``` +DatadogInternal.xcframework +DatadogCore.xcframework +DatadogLogs.xcframework +``` + +[7]: https://github.com/Carthage/Carthage + +{{% /tab %}} +{{< /tabs >}} + +2. Inicializa la biblioteca con el contexto de tu aplicación y tu [token de cliente de Datadog][2]. Por razones de seguridad, debes utilizar un token de cliente: no puedes utilizar [claves de API de Datadog][3] para configurar la biblioteca `dd-sdk-ios`, ya que estarían expuestas del lado del cliente en el código de bytes IPA de la aplicación iOS. + +Para obtener más información sobre cómo configurar un token de cliente, consulta la [documentación sobre el token de cliente][2]. + +{{< site-region region="us" >}} +{{< tabs >}} +{{% tab "Swift" %}} + +```swift +import DatadogCore +import DatadogLogs + +Datadog.initialize( + with: Datadog.Configuration( + clientToken: "", + env: "", + service: "" + ), + trackingConsent: trackingConsent +) + +Logs.enable() +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"" env:@""]; +configuration.service = @""; + +[DDDatadog initializeWithConfiguration:configuration + trackingConsent:trackingConsent]; + +[DDLogs enable]; +``` +{{% /tab %}} +{{< /tabs >}} +{{< /site-region >}} + +{{< site-region region="eu" >}} +{{< tabs >}} +{{% tab "Swift" %}} + +```swift +import DatadogCore +import DatadogLogs + +Datadog.initialize( + with: Datadog.Configuration( + clientToken: "", + env: "", + site: .eu1, + service: "" + ), + trackingConsent: trackingConsent +) + +Logs.enable() +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"" env:@""]; +configuration.service = @""; +configuration.site = [DDSite eu1]; + +[DDDatadog initializeWithConfiguration:configuration + trackingConsent:trackingConsent]; + +[DDLogs enable]; +``` +{{% /tab %}} +{{< /tabs >}} +{{< /site-region >}} + +{{< site-region region="us3" >}} +{{< tabs >}} +{{% tab "Swift" %}} + +```swift +import DatadogCore +import DatadogLogs + +Datadog.initialize( + with: Datadog.Configuration( + clientToken: "", + env: "", + site: .us3, + service: "" + ), + trackingConsent: trackingConsent +) + +Logs.enable() +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +@import DatadogObjc; + +DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"" env:@""]; +configuration.service = @""; +configuration.site = [DDSite us3]; + +[DDDatadog initializeWithConfiguration:configuration + trackingConsent:trackingConsent]; + +[DDLogs enable]; +``` +{{% /tab %}} +{{< /tabs >}} +{{< /site-region >}} + +{{< site-region region="us5" >}} +{{< tabs >}} +{{% tab "Swift" %}} + +```swift +import DatadogCore +import DatadogLogs + +Datadog.initialize( + with: Datadog.Configuration( + clientToken: "", + env: "", + site: .us5, + service: "" + ), + trackingConsent: trackingConsent +) + +Logs.enable() +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +@import DatadogObjc; + +DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"" env:@""]; +configuration.service = @""; +configuration.site = [DDSite us5]; + +[DDDatadog initializeWithConfiguration:configuration + trackingConsent:trackingConsent]; + +[DDLogs enable]; +``` +{{% /tab %}} +{{< /tabs >}} +{{< /site-region >}} + +{{< site-region region="gov" >}} +{{< tabs >}} +{{% tab "Swift" %}} + +```swift +import DatadogCore +import DatadogLogs + +Datadog.initialize( + with: Datadog.Configuration( + clientToken: "", + env: "", + site: .us1_fed, + service: "" + ), + trackingConsent: trackingConsent +) + +Logs.enable() +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +@import DatadogObjc; + +DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"" env:@""]; +configuration.service = @""; +configuration.site = [DDSite us1_fed]; + +[DDDatadog initializeWithConfiguration:configuration + trackingConsent:trackingConsent]; + +[DDLogs enable]; +``` +{{% /tab %}} +{{< /tabs >}} +{{< /site-region >}} + +{{< site-region region="ap1" >}} +{{< tabs >}} +{{% tab "Swift" %}} + +```swift +import DatadogCore +import DatadogLogs + +Datadog.initialize( + with: Datadog.Configuration( + clientToken: "", + env: "", + site: .ap1, + service: "" + ), + trackingConsent: trackingConsent +) + +Logs.enable() +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +@import DatadogObjc; + +DDConfiguration *configuration = [[DDConfiguration alloc] initWithClientToken:@"" env:@""]; +configuration.service = @""; +configuration.site = [DDSite ap1]; + +[DDDatadog initializeWithConfiguration:configuration + trackingConsent:trackingConsent]; + +[DDLogs enable]; +``` +{{% /tab %}} +{{< /tabs >}} +{{< /site-region >}} + +Para cumplir con la normativa GDPR, el SDK requiere el valor `trackingConsent` en la inicialización. +El valor `trackingConsent` puede ser uno de los siguientes: + +- `.pending`: el SDK comienza a recopilar y procesar los datos por lotes, pero no los envía a Datadog. El SDK espera al nuevo valor de consentimiento de rastreo para decidir qué hacer con los datos procesados por lotes. +- `.granted`: el SDK comienza a recopilar los datos y los envía a Datadog. +- `.notGranted`: el SDK no recopila ningún dato: los logs, trazas (traces) y eventos RUM no se envían a Datadog. + +Para cambiar el valor del consentimiento de rastreo una vez inicializado el SDK, utiliza la llamada a la API `Datadog.set(trackingConsent:)`. + +El SDK cambia su comportamiento según el nuevo valor. Por ejemplo, si el consentimiento de rastreo actual es `.pending`: + +- Si se cambia a `.granted`, el SDK envía todos los datos actuales y futuros a Datadog; +- Si se cambia a `.notGranted`, el SDK borra todos los datos actuales y deja de recopilar datos futuros. + +Antes de que los datos se carguen en Datadog, se almacenan en texto claro en el directorio de caché (`Library/Caches`) de tu [entorno de prueba de aplicaciones][6]. El directorio de caché no puede ser leído por ninguna otra aplicación instalada en el dispositivo. + +Al redactar tu aplicación, habilita los logs de desarrollo para loguear en consola todos los mensajes internos del SDK con una prioridad igual o superior al nivel proporcionado. + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +Datadog.verbosityLevel = .debug +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +DDDatadog.verbosityLevel = DDSDKVerbosityLevelDebug; +``` +{{% /tab %}} +{{< /tabs >}} + +3. Configurar el `Logger`: + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +let logger = Logger.create( + with: Logger.Configuration( + name: "", + networkInfoEnabled: true, + remoteLogThreshold: .info, + consoleLogFormat: .shortWith(prefix: "[iOS App] ") + ) +) +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +DDLoggerConfiguration *configuration = [[DDLoggerConfiguration alloc] init]; +configuration.networkInfoEnabled = YES; +configuration.remoteLogThreshold = [DDLogLevel info]; +configuration.printLogsToConsole = YES; + +DDLogger *logger = [DDLogger createWithConfiguration:configuration]; +``` +{{% /tab %}} +{{< /tabs >}} + +4. Envía una entrada personalizada de log directamente a Datadog con uno de los siguientes métodos: + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +logger.debug("A debug message.") +logger.info("Some relevant information?") +logger.notice("Have you noticed?") +logger.warn("An important warning...") +logger.error("An error was met!") +logger.critical("Something critical happened!") +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +[logger debug:@"A debug message."]; +[logger info:@"Some relevant information?"]; +[logger notice:@"Have you noticed?"]; +[logger warn:@"An important warning..."]; +[logger error:@"An error was met!"]; +[logger critical:@"Something critical happened!"]; +``` +{{% /tab %}} +{{< /tabs >}} + +**Nota:** Para añadir un log de iOS personalizado a una vista RUM recién creada, aplícalo con el método `viewDidAppear`. Si el log se aplica antes de que se produzca `viewDidAppear`, como en `viewDidLoad`, el log se aplica a la vista RUM anterior, que técnicamente sigue siendo la vista activa. + +5. (Opcional) Proporciona un mapa de `attributes` junto a tu mensaje de log para añadir atributos al log emitido. Cada entrada del mapa se añade como un atributo. + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +logger.info("Clicked OK", attributes: ["context": "onboarding flow"]) +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +[logger info:@"Clicked OK" attributes:@{@"context": @"onboarding flow"}]; +``` +{{% /tab %}} +{{< /tabs >}} + +## Registro avanzado + +### Inicialización + +Los siguientes métodos en `Logger.Configuration` se pueden utilizar al inicializar el registrador para enviar logs a Datadog: + +| Método | Descripción | +|---|---| +| `Logger.Configuration.networkInfoEnabled` | Añade atributos `network.client.*` a todos los logs. Los datos registrados por defecto son: `reachability` (`yes`, `no`, `maybe`), `available_interfaces` (`wifi`, `cellular` y más), `sim_carrier.name` (por ejemplo: `AT&T - US`), `sim_carrier.technology` (`3G`, `LTE` y más) y `sim_carrier.iso_country` (por ejemplo: `US`). | +| `Logger.Configuration.service` | Establece el valor para el [atributo estándar][4] `service` adjunto a todos los logs enviados a Datadog. | +| `Logger.Configuration.consoleLogFormat` | Envía logs a la consola del depurador. | +| `Logger.Configuration.remoteSampleRate` | Configura la frecuencia de muestreo de logs enviada a Datadog. | +| `Logger.Configuration.name` | Establece el valor del atributo `logger.name` adjunto a todos los logs enviados a Datadog. | + +### Configuración global + +Sigue los métodos que se indican a continuación para añadir o eliminar etiquetas y atributos a todos los logs enviados por un registrador determinado. + +#### Etiquetas globales + +##### Añadir etiquetas + +Utilice el método `addTag(withKey:value:)` para añadir etiquetas a todos los logs enviados por un registrador específico: + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +// Esto añade una etiqueta "build_configuration:debug" +logger.addTag(withKey: "build_configuration", value: "debug") +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +[logger addTagWithKey:@"build_configuration" value:@"debug"]; +``` +{{% /tab %}} +{{< /tabs >}} + +El `` debe ser una `String`. + +##### Eliminar etiquetas + +Utiliza el método `removeTag(withKey:)` para eliminar etiquetas de todos los logs enviados por un registrador específico: + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +// Esto elimina cualquier etiqueta que comienza por "build_configuration" +logger.removeTag(withKey: "build_configuration") +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +[logger removeTagWithKey:@"build_configuration"]; +``` +{{% /tab %}} +{{< /tabs >}} + +Para más información, consulta [Empezando con etiquetas][5]. + +#### Atributos globales + +##### Añadir atributos + +Por defecto, los siguientes atributos se añaden a todos los logs enviados por un registrador: + +* `http.useragent` y sus propiedades extraídas `device` y `OS` +* `network.client.ip` y sus propiedades geográficas extraídas (`country`, `city`) +* `logger.version`, versión del SDK de Datadog +* `logger.thread_name`(`main`, `background`) +* `version`, versión de la aplicación del cliente extraída de `Info.plist` +* `environment`, el nombre de entorno utilizado para inicializar el SDK + +Utiliza el método `addAttribute(forKey:value:)` para añadir un atributo personalizado a todos los logs enviados por un registrador específico: + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +// Esto añade un atributo "device-model" con un valor de cadena +logger.addAttribute(forKey: "device-model", value: UIDevice.current.model) +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +[logger addAttributeForKey:@"device-model" value:UIDevice.currentDevice.model]; +``` +{{% /tab %}} +{{< /tabs >}} + +`` puede ser cualquier elemento que se ajuste a `Encodable`, como `String`, `Date`, modelo de datos personalizado `Codable`, etc. + +##### Eliminar atributos + +Utiliza el método `removeAttribute(forKey:)` para eliminar un atributo personalizado de todos los logs enviados por un registrador específico: + +{{< tabs >}} +{{% tab "Swift" %}} +```swift +// Esto elimina el atributo "device-model" de todos los logs enviados en el futuro. +logger.removeAttribute(forKey: "device-model") +``` +{{% /tab %}} +{{% tab "Objective-C" %}} +```objective-c +[logger removeAttributeForKey:@"device-model"]; +``` +{{% /tab %}} +{{< /tabs >}} + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-sdk-ios +[2]: /es/account_management/api-app-keys/#client-tokens +[3]: /es/account_management/api-app-keys/#api-keys +[4]: /es/logs/processing/attributes_naming_convention/ +[5]: /es/getting_started/tagging/ +[6]: https://support.apple.com/guide/security/security-of-runtime-process-sec15bfe098e/web \ No newline at end of file diff --git a/content/es/logs/log_collection/nodejs.md b/content/es/logs/log_collection/nodejs.md new file mode 100644 index 0000000000000..9120aa7766534 --- /dev/null +++ b/content/es/logs/log_collection/nodejs.md @@ -0,0 +1,211 @@ +--- +aliases: +- /es/logs/languages/nodejs +further_reading: +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +- link: /logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +- link: /logs/explorer/#visualize + tag: Documentación + text: Realizar análisis de los logs +- link: /logs/faq/log-collection-troubleshooting-guide/ + tag: FAQ + text: Guía para solucionar problemas relacionados con la recopilación de logs +- link: /glossary/#tail + tag: Glosario + text: Entrada de glosario para "tail" (cola) +kind: documentación +title: Recopilación de logs de Node.js +--- + + +## Configurar tu logger + +Para enviar tus logs a Datadog, loguea un archivo y [supervisa][14] ese archivo con tu Datadog Agent. Utiliza la biblioteca de registro de [Winston][1] al log desde tu aplicación Node.js. + +Winston está disponible a través de [NPM][2], para empezar, debes añadir la dependencia a tu código: + +```text +npm install --save winston +``` + +`package.json` se actualiza con las dependencias correspondientes: + +```js +{ + "name": "...", + + //... + "dependencies": { + //... + "winston": "x.y.z", + //... + } +} +``` + +### Loguear a un archivo + +En tu archivo de arranque o en tu código, declara el registrador de la siguiente manera: + +{{< tabs >}} +{{% tab "Winston 3.0" %}} + +```js + +const { createLogger, format, transports } = require('winston'); + +const logger = createLogger({ + level: 'info', + exitOnError: false, + format: format.json(), + transports: [ + new transports.File({ filename: `${appRoot}/logs/.log` }), + ], +}); + +module.exports = logger; + +// Example logs +logger.log('info', 'Hello simple log!'); +logger.info('Hello log with metas',{color: 'blue' }); +``` + +{{% /tab %}} +{{% tab "Winston 2.0" %}} + +```js +var winston = require('winston'); + +var logger = new (winston.Logger)({ + transports: [ + new (winston.transports.File)({ + name: '', + filename: '.log', + json: true, + level: 'info' + }) + ] +}); + +// Example logs +logger.log('info', 'Hello simple log!'); +logger.info('Hello log with metas',{color: 'blue' }); +``` + +{{% /tab %}} +{{< /tabs >}} + +Comprueba el contenido del archivo `.log` para confirmar que Winston está registrando en JSON: + +```json +{"level":"info","message":"Hello simple log!","timestamp":"2015-04-23T16:52:05.337Z"} +{"color":"blue","level":"info","message":"Hello log with metas","timestamp":"2015-04-23T16:52:05.339Z"} +``` + +## Configura tu Datadog Agent + +Una vez que [la recopilación de log está habilitada][6], configura la [recopilación de log personalizada][7] para supervisar tus archivos de log y enviar nuevos logs a Datadog. + +1. Crea una carpeta `nodejs.d/` en el [directorio de configuración del Agent][5] `conf.d/`. +2. Crea un archivo `conf.yaml` en `nodejs.d/` con el siguiente contenido: + +```yaml +init_config: + +instances: + +##Log section +logs: + + - type: file + path: ".log" + service: + source: nodejs + sourcecategory: sourcecode +``` + +3. [Reinicia el Agent][9]. +4. Ejecuta el [subcomando de estado del Agent][10] y busca `nodejs` en la sección `Checks` para confirmar que los logs se han enviado correctamente a Datadog. + +Si los logs están en formato JSON, Datadog [parsea los mensajes del log][7] de forma automática para extraer sus atributos. Utiliza el [Log Explorer][8] para ver tus logs y solucionar problemas relacionados. + +## Conectar tus servicios al conjunto de logs y trazas (traces) + +Si tienes APM activado para esta aplicación, conecta tus logs y trazas añadiendo automáticamente los ID de traza (trace) y los ID de tramo (span), +`env`, `service` y `version` a tus logs mediante [las siguientes instrucciones de APM para Node.js][3] + +**Nota**: Si el rastreador APM inyecta `service` en tus logs, este reemplazará al valor definido en la configuración del Agent. + +## Registro de logs sin Agent + +Puedes poner en el flujo (stream) tus logs desde tu aplicación a Datadog sin instalar un Agent en tu host. Sin embargo, es recomendado que utilices un Agent para reenviar tus logs, ya que proporciona una gestión de conexión nativa. + +Utiliza el [transporte de HTTP Winston][4] para enviar tus logs directamente a través de la [API de log de Datadog][5]. +En tu archivo de arranque o en tu código, declara el registrador de la siguiente manera: + +```javascript +const { createLogger, format, transports } = require('winston'); + +const httpTransportOptions = { + host: 'http-intake.logs.{{< region-param key="dd_site" >}}', + path: '/api/v2/logs?dd-api-key=&ddsource=nodejs&service=', + ssl: true +}; + +const logger = createLogger({ + level: 'info', + exitOnError: false, + format: format.json(), + transports: [ + new transports.Http(httpTransportOptions), + ], +}); + +module.exports = logger; + +// Example logs +logger.log('info', 'Hello simple log!'); +logger.info('Hello log with metas',{color: 'blue' }); +``` + +**Nota:** También puedes utilizar el [Transporte de Datadog][13] avalado por la comunidad. + + +## Solucionar problemas + +Si tienes errores de búsqueda de DNS en tu aplicación, esto podría ser debido a excepciones logstash no capturadas. Debe añadirse un identificador como el siguiente: + +```js +var logstash = new winston.transports.Logstash({ ... }); +logstash.on('error', function(err) { + console.error(err); // replace with your own functionality here +}); +``` + +Asegúrate de que el parámetro `max_connect_retries` no está configurado en `1` (por defecto es `4`). + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/winstonjs/winston +[2]: https://www.npmjs.com +[3]: /es/tracing/other_telemetry/connect_logs_and_traces/nodejs/ +[4]: https://github.com/winstonjs/winston/blob/master/docs/transports.md#http-transport +[5]: /es/api/v1/logs/#send-logs +[6]: /es/agent/logs/?tab=tailfiles#activate-log-collection +[7]: /es/agent/logs/?tab=tailfiles#custom-log-collection +[8]: /es/agent/configuration/agent-configuration-files/?tab=agentv6v7#agent-configuration-directory +[9]: /es/agent/configuration/agent-commands/?tab=agentv6v7#restart-the-agent +[10]: /es/agent/configuration/agent-commands/?tab=agentv6v7#agent-status-and-information +[11]: /es/logs/log_configuration/parsing/?tab=matchers +[12]: /es/logs/explorer/#overview +[13]: https://github.com/winstonjs/winston/blob/master/docs/transports.md#datadog-transport +[14]: /es/glossary/#tail \ No newline at end of file diff --git a/content/es/logs/log_collection/php.md b/content/es/logs/log_collection/php.md new file mode 100644 index 0000000000000..472959b637d00 --- /dev/null +++ b/content/es/logs/log_collection/php.md @@ -0,0 +1,556 @@ +--- +aliases: +- /es/logs/languages/php +further_reading: +- link: https://www.datadoghq.com/blog/php-logging-guide + tag: Blog + text: Cómo recopilar, personalizar y analizar logs de PHP +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +- link: /logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +- link: /logs/explorer/#visualize + tag: Documentación + text: Realizar análisis de los logs +- link: /logs/faq/log-collection-troubleshooting-guide + tag: Documentación + text: Guía para solucionar problemas relacionados con la recopilación de logs +- link: /glossary/#tail + tag: Glosario + text: Entrada de glosario para "tail" (cola) +kind: documentación +title: Recopilación de logs de PHP +--- + +## Información general + +Para enviar tus logs de PHP a Datadog, loguea un archivo y luego [supervisa][14] ese archivo con tu Datadog Agent. En esta página, se detallan ejemplos de configuración para las bibliotecas de registro [Monolog][8], [Zend-Log][9] y [Symfony][10]. + +## Configuración + +### Instalación + +{{< tabs >}} +{{% tab "PHP Monolog" %}} + +Ejecuta este comando para utilizar [Composer][1] para añadir Monolog como una dependencia: + +```text +composer require "monolog/monolog" +``` + +Alternativamente, instala Monolog manualmente de la siguiente manera: + +1. Descarga Monolog del repositorio e inclúyelo en las bibliotecas. +2. Añade lo siguiente en el arranque de la aplicación para inicializar la instancia: + + ```php + }} + +### Configurar tu logger + +{{< tabs >}} +{{% tab "PHP Monolog" %}} + +La siguiente configuración habilita el formato JSON y redacta los logs y eventos en el archivo `application-json.log`. En tu código, añade un nuevo manejador después de la inicialización de la instancia de Monolog: + +```php + setFormatter($formatter); + + // vincular + $log->pushHandler($stream); + + // un ejemplo + $log->info('Adding a new user', array('username' => 'Seldaek')); +``` + +{{% /tab %}} +{{% tab "PHP Zend-Log" %}} + +La siguiente configuración habilita el formato JSON y redacta los logs y eventos en el archivo `application-json.log`. En tu código, añade un nuevo manejador después de la inicialización de la instancia de Zend-Log: + +```php +setFormatter($formatter); + + // vincular + $logger->addWriter($writer); + Zend\Log\Logger::registerErrorHandler($logger); +``` + +{{% /tab %}} +{{% tab "PHP Symfony" %}} + +Para configurar el formateador en tu configuración de Monolog, declara el campo de formateador de la siguiente manera: + +```yaml + monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + formatter: monolog.json_formatter +``` + +{{% /tab %}} +{{< /tabs >}} + +### Configurar el Datadog Agent + +Cuando tengas la [recopilación de logs activada][11], haz la siguiente configuración de la [recopilación de logs personalizada][4] para supervisar tus archivos de log y enviar logs nuevos a Datadog. + +1. Crea una carpeta `php.d/` en el [directorio de configuración del Agent][13] `conf.d/`. +2. Crea un archivo `conf.yaml` en `php.d/` con el siguiente contenido: + +```yaml +init_config: + +instances: + +## Sección de log +logs: + + - type: file + path: ".log" + service: "" + source: php + sourcecategory: sourcecode +``` + +## Conectar tus servicios entre logs y trazas (traces) + +Si APM está habilitado para esta aplicación, la correlación entre los logs de aplicación y trazas puede mejorarse siguiendo las [instrucciones de registro de APM PHP][10] para añadir automáticamente trazas e IDs de tramos en tus logs. + +## Añadir más contexto a los logs + +{{< tabs >}} +{{% tab "PHP Monolog" %}} + +Puede ser útil añadir contexto adicional a tus logs y eventos. Monolog proporciona métodos para establecer el contexto local del subproceso que luego se envía automáticamente con todos los eventos. Por ejemplo, para loguear un evento con datos contextuales: + +```php +info('Adding a new user', array('username' => 'Seldaek')); +``` + +El preprocesador de Monolog tiene una función que es una devolución de llamada simple y enriquece tus eventos con metadatos que puedes establecer (por ejemplo, el ID de sesión, o el ID de solicitud): + +```php + pushProcessor(function ($record) { + + // registrat el usuario actual + $user = Acme::getCurrentUser(); + $record['context']['user'] = array( + 'name' => $user->getName(), + 'username' => $user->getUsername(), + 'email' => $user->getEmail(), + ); + + // Añadir varias etiquetas + $record['ddtags'] = array('key' => 'value'); + + // Añadir varios contextos genéricos + $record['extra']['key'] = 'value'; + + return $record; + }); +``` + +{{% /tab %}} +{{% tab "PHP Zend-Log" %}} + +Puede ser útil añadir contexto adicional a tus logs y eventos. Zend-Log proporciona métodos para establecer el contexto local del subproceso que luego se envía automáticamente con todos los eventos. Por ejemplo, para loguear un evento con datos contextuales: + +```php +info('Adding a new user', array('username' => 'Seldaek')); +``` + +Consulta [la documentación del procesador de Zend][1] para obtener más información sobre cómo proporcionar información adicional a tus logs. + +[1]: https://docs.zendframework.com/zend-log/processors +{{% /tab %}} +{{% tab "PHP Symfony" %}} + +Sigue estos pasos para añadir contexto variable en tus logs utilizando un procesador de sesión. + +1. Implementar tu procesador de sesiones: + En el siguiente ejemplo, el procesador conoce la sesión actual y mejora el contenido del registro de log con información como `requestId`, `sessionId`, etc. + + ```php + session = $session; + } + + public function processRecord(array $record) { + if (null === $this->requestId) { + if ('cli' === php_sapi_name()) { + $this->sessionId = getmypid(); + } else { + try { + $this->session->start(); + $this->sessionId = $this->session->getId(); + } catch (\RuntimeException $e) { + $this->sessionId = '????????'; + } + } + $this->requestId = substr(uniqid(), -8); + $this->_server = array( + 'http.url' => (@$_SERVER['HTTP_HOST']).'/'.(@$_SERVER['REQUEST_URI']), + 'http.method' => @$_SERVER['REQUEST_METHOD'], + 'http.useragent' => @$_SERVER['HTTP_USER_AGENT'], + 'http.referer' => @$_SERVER['HTTP_REFERER'], + 'http.x_forwarded_for' => @$_SERVER['HTTP_X_FORWARDED_FOR'] + ); + $this->_post = $this->clean($_POST); + $this->_get = $this->clean($_GET); + } + $record['http.request_id'] = $this->requestId; + $record['http.session_id'] = $this->sessionId; + $record['http.url'] = $this->_server['http.url']; + $record['http.method'] = $this->_server['http.method']; + $record['http.useragent'] = $this->_server['http.useragent']; + $record['http.referer'] = $this->_server['http.referer']; + $record['http.x_forwarded_for'] = $this->_server['http.x_forwarded_for']; + + return $record; + } + + protected function clean($array) { + $toReturn = array(); + foreach(array_keys($array) as $key) { + if (false !== strpos($key, 'password')) { + // Do not add + } else if (false !== strpos($key, 'csrf_token')) { + // Do not add + } else { + $toReturn[$key] = $array[$key]; + } + } + + return $toReturn; + } + } + ``` + +2. Integrar el procesador con Symfony añadiendo lo siguiente: + + ```yaml + services: + monolog.processor.session_request: + class: Acme\Bundle\MonologBundle\Log\SessionRequestProcessor + arguments: [ @session ] + tags: + - { name: monolog.processor, method: processRecord } + ``` + +3. [Envía en un flujo](#configure-the-datadog-agent) el archivo JSON generado a Datadog. + +{{% /tab %}} +{{< /tabs >}} + +## Integración del marco de Monolog + +Monolog puede utilizarse con los siguientes marcos: + +* [Symfony v2+/v3+][3] +* [PPI][4] +* [Laravel][5] +* [Silex][6] +* [Lumen][7] + +Para integrar Monolog con tu marco, añade lo siguiente: + +```php + setFormatter($formatter); + + $monolog->pushHandler($stream); + return $r; +``` + +A continuación, configura tu registrador para Monolog. + +{{< tabs >}} +{{% tab "Symfony v2+/v3+" %}} + +En tu directorio de configuración `/path/to/config/directory/`, añade lo siguiente a `config_dev.yml` y `config_prod.yml`. Modifica el ejemplo para configurarlo para tus entornos de desarrollo y producción. + +```yaml +# app/config/config.yml +monolog: + +# Deja sin comentarios esta sección si deseas usar un procesador +# Processor : +# session_processor: +# class: Acme\Bundle\MonologBundle\Log\SessionRequestProcessor +# arguments: [ @session ] +# tags: +# - { name: monolog.processor, method: processRecord } + + json_formatter: + class: Monolog\Formatter\JsonFormatter + + handlers: + + # Configuración de envío de log + to_json_files: + # log to var/logs/(environment).log + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + # includes all channels (doctrine, errors, and so on) + channels: ~ + # use json formatter + formatter: monolog.json_formatter + # set the log level (for example: debug, error, or alert) + level: debug +``` + +{{% /tab %}} +{{% tab "PPI" %}} + +En tu directorio de configuración `/path/to/config/directory/`, añade lo siguiente a `config_dev.yml` y `config_prod.yml`. Modifica el ejemplo para configurarlo para tus entornos de desarrollo y producción. + +```yaml +monolog: + handlers: + + # Configuración de envío de log + to_json_files: + # log to var/logs/(environment).log + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + # use json formatter + formatter: monolog.json_formatter + # set the log level (for example: debug, error, or alert) + level: debug +``` + +{{% /tab %}} +{{% tab "Laravel" %}} + +
+La función \DDTrace\current_context() se presentó en la versión 0.61.0. +
+ +Añade lo siguiente: + +```php +getLogger(); + if (!$monolog instanceof \Monolog\Logger) { + return; + } + + // Opcional: utilice el formato JSON + $useJson = false; + foreach ($monolog->getHandlers() as $handler) { + if (method_exists($handler, 'setFormatter')) { + $handler->setFormatter(new \Monolog\Formatter\JsonFormatter()); + $useJson = true; + } + } + + // Inyecta la traza y el ID de tramo para conectar la entrada de log con la traza de APM + $monolog->pushProcessor(function ($record) use ($useJson) { + $context = \DDTrace\current_context(); + if ($useJson === true) { + $record['extra']['dd'] = [ + 'trace_id' => $context['trace_id'], + 'span_id' => $context['span_id'], + ]; + } else { + $record['message'] .= sprintf( + ' [dd.trace_id=%d dd.span_id=%d]', + $context['trace_id'], + $context['span_id'] + ); + } + return $record; + }); + } + + /** + * Bootstrap any application services. + * + * @return void + */ + public function boot() + { + // + } +} +``` + +{{% /tab %}} +{{% tab "Silex" %}} + +Añade lo siguiente: + +```php +extend('monolog', function($monolog, $app) { + $monolog->pushHandler(...); + // configure your logger below + return $monolog; + }); +``` + +{{% /tab %}} +{{% tab "Lumen" %}} + +Añade lo siguiente: + +```php +configureMonologUsing(function($monolog) { + $monolog->pushHandler(...); + // configure your logger below + }); + + return $app; +``` + +{{< /tabs >}} +{{< /tabs >}} + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[2]: /es/tracing/other_telemetry/connect_logs_and_traces/php/ +[3]: https://symfony.com/doc/current/logging.html#monolog +[4]: https://github.com/ppi/ppi-monolog-module +[5]: https://laravel.com/docs/9.x/logging#introduction +[6]: https://github.com/silexphp/Silex +[7]: https://lumen.laravel.com/docs/9.x +[8]: https://seldaek.github.io/monolog/ +[9]: https://framework.zend.com/ +[10]: https://symfony.com/ +[11]: /es/agent/logs/?tab=tailfiles#activate-log-collection +[12]: /es/agent/logs/?tab=tailfiles#custom-log-collection +[13]: /es/agent/configuration/agent-configuration-files/?tab=agentv6v7#agent-configuration-directory +[14]: /es/glossary/#tail \ No newline at end of file diff --git a/content/es/logs/log_collection/python.md b/content/es/logs/log_collection/python.md new file mode 100644 index 0000000000000..2cb11dc2900c0 --- /dev/null +++ b/content/es/logs/log_collection/python.md @@ -0,0 +1,144 @@ +--- +aliases: +- /es/logs/languages/python +further_reading: +- link: https://www.datadoghq.com/blog/python-logging-best-practices/ + tag: Blog + text: Cómo recopilar, personalizar y centralizar logs de Python +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/log_configuration/parsing + tag: Documentación + text: Obtén más información sobre el parseo +- link: /logs/explorer/ + tag: Documentación + text: Aprende a explorar tus logs +- link: /logs/faq/log-collection-troubleshooting-guide/ + tag: Documentación + text: Guía para solucionar problemas relacionados con la recopilación de logs +- link: /glossary/#tail + tag: Glosario + text: Entrada de glosario para "tail" (cola) +kind: documentación +title: Recopilación de logs de Python +--- + +## Información general + +Para enviar tus logs de Python a Datadog, configura un registrador de Python para loguear un archivo en tu host y luego [supervisa][12] ese archivo con el Datadog Agent. + +## Configurar tu logger + +Los logs de Python pueden ser complejos de manejar debido a los "tracebacks". Los tracesbacks hacen que los logs se dividan en varias líneas, lo que dificulta su asociación con el evento de log original. Para solucionar este problema, Datadog recomienda encarecidamente el uso de un formateador JSON al realizar el registro, de modo que puedas: + +* Asegúrarte de que cada stack trace está envuelta en el log correcto. +* Asegúrarte de que todos los atributos de un evento de log se extraen correctamente (gravedad, nombre del registrador, nombre del subproceso, etc.). + +Consulta los ejemplos de configuración de las siguientes bibliotecas de registro: + +* [JSON-log-formatter][1] +* [Python-json-logger][2] +* [django-datadog-logger][3]* + +*El [registrador de Python][6] tiene un parámetro `extra` para añadir atributos personalizados. Utiliza `DJANGO_Datadog_LOGGER_EXTRA_INCLUDE` para especificar una expresión regular que coincida con el nombre de los registradores para los que deseas añadir el parámetro `extra`. + +## Configurar el Datadog Agent + +Una vez activada la [recopilación de logs][7], configura la [recopilación de logs personalizada][8] para supervisar tus archivos de log y enviarlos a Datadog haciendo lo siguiente: + +1. Crea una carpeta `python.d/` en el directorio de configuración del Agent `conf.d/`. +2. Crea un archivo `conf.yaml` en el directorio `conf.d/python.d/` con el siguiente contenido: + ```yaml + init_config: + + instances: + + ##Log section + logs: + + - type: file + path: ".log" + service: "" + source: python + sourcecategory: sourcecode + # For multiline logs, if they start by the date with the format yyyy-mm-dd uncomment the following processing rule + #log_processing_rules: + # - type: multi_line + # name: new_log_start_with_date + # pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01]) + ``` +3. [Reinicia el Agent][5]. +4. Ejecuta el [subcomando de estado del Agent][7] y busca `python` en la sección `Checks` para confirmar que los logs se han enviado correctamente a Datadog. + +Si los logs están en formato JSON, Datadog [parsea los mensajes del log][7] de forma automática para extraer sus atributos. Utiliza el [Log Explorer][8] para ver tus logs y solucionar problemas relacionados. + +## Conectar tus servicios al conjunto de logs y trazas (traces) + +Si tienes APM activado para esta aplicación, conecta tus logs y trazas añadiendo automáticamente los ID de traza (trace) y los ID de tramo (span), `env`, `service` y `version` a tus logs mediante [las siguientes instrucciones de APM para Python][4]. + +**Nota**: Si el rastreador APM inyecta `service` en tus logs, este reemplazará al valor definido en la configuración del Agent. + +Una vez hecho esto, el log debe tener el siguiente formato: + +```xml +2019-01-07 15:20:15,972 DEBUG [flask.app] [app.py:100] [dd.trace_id=5688176451479556031 dd.span_id=4663104081780224235] - this is an example +``` + +Si los logs están en formato JSON, los valores de traza se extraen automáticamente si los valores están en el nivel superior o en los bloques de nivel superior `extra` o `record.extra`. A continuación, se muestran ejemplos de logs de JSON válidos en los que los valores de traza se analizan automáticamente. + +```json +{ + "message":"Hello from the private method", + "dd.trace_id":"18287620314539322434", + "dd.span_id":"8440638443344356350", + "dd.env":"dev", + "dd.service":"logs", + "dd.version":"1.0.0" +} +``` + +```json +{ + "message":"Hello from the private method", + "extra":{ + "dd.trace_id":"18287620314539322434", + "dd.span_id":"8440638443344356350", + "dd.env":"dev", + "dd.service":"logs", + "dd.version":"1.0.0" + } +} +``` + +```json +{ +"message":"Hello from the private method", + "record":{ + "extra":{ + "dd.trace_id":"1734396609740561719", + "dd.span_id":"17877262712156101004", + "dd.env":"dev", + "dd.service":"logs", + "dd.version":"1.0.0" + } + } +} +``` + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://pypi.python.org/pypi/JSON-log-formatter/ +[2]: https://github.com/madzak/python-json-logger +[3]: https://pypi.org/project/django-datadog-logger/ +[4]: /es/tracing/other_telemetry/connect_logs_and_traces/python +[5]: /es/agent/configuration/agent-commands/ +[6]: https://docs.python.org/3/library/logging.html#logging +[7]: /es/agent/logs/?tab=tailfiles#activate-log-collection +[8]: /es/agent/logs/?tab=tailfiles#custom-log-collection +[9]: /es/agent/configuration/agent-commands/?tab=agentv6v7#agent-status-and-information +[10]: /es/logs/log_configuration/parsing/ +[11]: /es/logs/explorer/#overview +[12]: /es/glossary/#tail \ No newline at end of file diff --git a/content/es/logs/log_collection/reactnative.md b/content/es/logs/log_collection/reactnative.md new file mode 100644 index 0000000000000..31c95c4436037 --- /dev/null +++ b/content/es/logs/log_collection/reactnative.md @@ -0,0 +1,193 @@ +--- +description: Recopila logs desde tus aplicaciones de React Native Mobile. +further_reading: +- link: https://github.com/DataDog/dd-sdk-reactnative + tag: Código fuente + text: Código fuente dd-sdk-reactnative +- link: logs/explorer + tag: Documentación + text: Aprende a explorar tus logs +kind: documentación +title: Recopilación de logs de React Native +--- + +Envía logs a Datadog desde tus aplicaciones de React Native Mobile con [la biblioteca de registro del cliente `dd-sdk-reactnative` de Datadog][1] y aprovecha las siguientes características: + +* Loguear en Datadog en formato JSON de forma nativa. +* Añade `context` y atributos personalizados adicionales a cada log enviado. +* Reenvíe excepciones capturadas de JavaScript. +* Registra las direcciones IP reales de los clientes y los Agents de usuario. +* Uso optimizado de red con envíos masivos automáticos. + +## Configuración + +1. Instala el paquete `@datadog/mobile-react-native` + +Para instalar con NPM, ejecuta: + +```sh + npm install @datadog/mobile-react-native +``` + +Para instalar con Yarn, ejecuta: + +```sh +yarn add @datadog/mobile-react-native +``` + +A continuación, instala el pod añadido: + +```sh +(cd ios && pod install) +``` + + Las versiones `1.0.0-rc5` y posteriores requieren que tengas `compileSdkVersion = 31` en la configuración de la aplicación de Android, lo que implica que debes utilizar Build Tools versión 31, Android Gradle Plugin versión 7 y Gradle versión 7 o posterior. Para modificar las versiones, cambia los valores del bloque `buildscript.ext` del archivo de nivel superior `build.gradle` de tu aplicación. Datadog recomienda utilizar la versión 0.67 o posterior de React Native. + +2. Inicializa la biblioteca con el contexto de tu aplicación, el consentimiento de rastreo, y el [token de cliente de Datadog][2] y el ID de aplicación generados al crear una aplicación RUM en la interfaz de usuario de Datadog (consulta [Empezando con la recopilación de React Native RUM][6] para obtener más información). Por razones de seguridad, debes utilizar un token de cliente; no puedes utilizar [claves de API de Datadog][3] para configurar la biblioteca `dd-sdk-reactnative`, ya que estarían expuestas en el lado del cliente en la aplicación móvil. Para obtener más información sobre cómo configurar un token de cliente, consulta la [documentación sobre tokens de cliente][2]. +{{< site-region region="us" >}} +```js +import { + DdSdkReactNative, + DdSdkReactNativeConfiguration +} from '@datadog/mobile-react-native'; + +const config = new DdSdkReactNativeConfiguration( + '', + '', + '', + true, // track user interactions (such as a tap on buttons). + true, // track XHR resources + true // track errors +); +config.site = 'US1'; +``` +{{< /site-region >}} +{{< site-region region="us3" >}} +```js +import { + DdSdkReactNative, + DdSdkReactNativeConfiguration +} from '@datadog/mobile-react-native'; + +const config = new DdSdkReactNativeConfiguration( + '', + '', + '', + true, // track user interactions (such as a tap on buttons). + true, // track XHR resources + true // track errors +); +config.site = 'US3'; +``` +{{< /site-region >}} +{{< site-region region="us5" >}} +```js +import { + DdSdkReactNative, + DdSdkReactNativeConfiguration +} from '@datadog/mobile-react-native'; + +const config = new DdSdkReactNativeConfiguration( + '', + '', + '', + true, // track User interactions (e.g.: Tap on buttons). + true, // track XHR Resources + true // track Errors +); +config.site = 'US5'; + +await DdSdkReactNative.initialize(config); +``` +{{< /site-region >}} +{{< site-region region="eu" >}} +```js +import { + DdSdkReactNative, + DdSdkReactNativeConfiguration +} from '@datadog/mobile-react-native'; + +const config = new DdSdkReactNativeConfiguration( + '', + '', + '', + true, // track User interactions (e.g.: Tap on buttons). + true, // track XHR Resources + true // track Errors +); +config.site = 'EU1'; +``` +{{< /site-region >}} +{{< site-region region="gov" >}} +```js +import { + DdSdkReactNative, + DdSdkReactNativeConfiguration +} from '@datadog/mobile-react-native'; + +const config = new DdSdkReactNativeConfiguration( + '', + '', + '', + true, // track User interactions (e.g.: Tap on buttons). + true, // track XHR Resources + true // track Errors +); +config.site = 'US1_FED'; +``` +{{< /site-region >}} +{{< site-region region="ap1" >}} +```js +import { + DdSdkReactNative, + DdSdkReactNativeConfiguration +} from '@datadog/mobile-react-native'; + +const config = new DdSdkReactNativeConfiguration( + '', + '', + '', + true, // track User interactions (e.g.: Tap on buttons). + true, // track XHR Resources + true // track Errors +); +config.site = 'AP1'; +``` +{{< /site-region >}} + + +3. Importar el registrador de React Native: + + ```javascript + import { DdLogs } from '@datadog/mobile-react-native'; + ``` + +4. Envía una entrada personalizada de log directamente a Datadog con una de las siguientes funciones: + + ```javascript + DdLogs.debug('A debug message.', { customAttribute: 'something' }) + DdLogs.info('Some relevant information ?', { customCount: 42 }) + DdLogs.warn('An important warning...', {}) + DdLogs.error('An error was met!', {}) + ``` + + **Nota**: Todos los métodos de registro pueden tener un objeto de contexto con atributos personalizados. + +## Recopilación de lotes + +Todos los logs se almacenan primero en el dispositivo local por lotes. Cada lote sigue la especificación de admisión. Se envían en cuanto la red está disponible, y la batería tiene suficiente carga como para garantizar que el SDK de Datadog no afecte a la experiencia del usuario final. Si la red no está disponible mientras la aplicación está en primer plano, o si falla una carga de datos, el lote se guarda hasta que pueda enviarse correctamente. + +Esto significa que aunque los usuarios abran tu aplicación estando desconectados, no se perderá ningún dato. + +Los datos en disco se descartarán automáticamente si son demasiado antiguos para garantizar que el SDK no utilice demasiado espacio en disco. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-sdk-reactnative +[2]: /es/account_management/api-app-keys/#client-tokens +[3]: /es/account_management/api-app-keys/#api-keys +[4]: /es/logs/processing/attributes_naming_convention/ +[5]: /es/tagging/ +[6]: /es/real_user_monitoring/reactnative/?tab=us \ No newline at end of file diff --git a/content/es/logs/log_collection/roku.md b/content/es/logs/log_collection/roku.md new file mode 100644 index 0000000000000..9d4562b0a3c8a --- /dev/null +++ b/content/es/logs/log_collection/roku.md @@ -0,0 +1,199 @@ +--- +description: Recopila logs desde tu canal de Roku. +further_reading: +- link: https://github.com/DataDog/dd-sdk-roku + tag: Código fuente + text: Código fuente dd-sdk-roku +- link: logs/explorer + tag: Documentación + text: Aprende a explorar tus logs +kind: documentación +title: Recopilación de logs de Roku +--- + +{{< site-region region="gov" >}} +
La recopilación de logs de Roku no está disponible en el sitio de Datadog US1-FED.
+{{< /site-region >}} + +{{< site-region region="us,us3,us5,eu,ap1" >}} +
La recopilación de logs de Roku está en fase beta.
+{{< /site-region >}} + +Envía logs a Datadog desde tu canal de Roku con [la biblioteca de registro `dd-sdk-roku` de Datadog][1] y aprovecha las siguientes funciones: + +* Loguear en Datadog en formato JSON de forma nativa. +* Añadir `context` y atributos personalizados adicionales a cada log enviado. +* Registra las direcciones IP reales de los clientes y los Agents de usuario. +* Uso optimizado de red con envíos masivos automáticos. + +## Configuración + +1. Añade la dependencia a tu proyecto utilizando `ROPM`, o descarga el [último archivo zip][7] y extráelo en tu proyecto. + + ```shell + ropm install datadog-roku + ``` + +2. Inicializa la biblioteca con tu [token de cliente de Datadog][2] y el ID de aplicación generado al crear una nueva aplicación RUM en la interfaz de usuario de Datadog (consulta [Empezando con la recopilación de Roku RUM][6] para obtener más información). Por razones de seguridad, debes usar un token de cliente: no puedes usar [claves de API de Datadog][3] para configurar la biblioteca `dd-sdk-roku`, ya que estarían expuestas del lado del cliente en el paquete del canal de Roku. + + Para obtener más información sobre cómo configurar un token de cliente, consulta la [documentación sobre el token de cliente][2]. + + {{< site-region region="us" >}} + ```brightscript + sub RunUserInterface(args as dynamic) + screen = CreateObject("roSGScreen") + scene = screen.CreateScene("MyScene") + screen.show() + + datadogroku_initialize({ + clientToken: "", + applicationId: "" + site: "us1", + env: "", + sessionSampleRate: 100, ' the percentage (integer) of sessions to track + launchArgs: args + }) + + ' complete your channel setup here + end sub + ``` + {{< /site-region >}} + + {{< site-region region="eu" >}} + ```brightscript + sub RunUserInterface(args as dynamic) + screen = CreateObject("roSGScreen") + scene = screen.CreateScene("MyScene") + screen.show() + + datadogroku_initialize({ + clientToken: "", + applicationId: "" + site: "eu1", + env: "", + sessionSampleRate: 100, ' the percentage (integer) of sessions to track + launchArgs: args + }) + + ' complete your channel setup here + end sub + ``` + {{< /site-region >}} + + {{< site-region region="us3" >}} + ```brightscript + sub RunUserInterface(args as dynamic) + screen = CreateObject("roSGScreen") + scene = screen.CreateScene("MyScene") + screen.show() + + datadogroku_initialize({ + clientToken: "", + applicationId: "" + site: "us3", + env: "", + sessionSampleRate: 100, ' the percentage (integer) of sessions to track + launchArgs: args + }) + + ' complete your channel setup here + end sub + ``` + {{< /site-region >}} + + {{< site-region region="us5" >}} + ```brightscript + sub RunUserInterface(args as dynamic) + screen = CreateObject("roSGScreen") + scene = screen.CreateScene("MyScene") + screen.show() + + datadogroku_initialize({ + clientToken: "", + applicationId: "" + site: "us5", + env: "", + sessionSampleRate: 100, ' the percentage (integer) of sessions to track + launchArgs: args + }) + + ' complete your channel setup here + end sub + ``` + {{< /site-region >}} + + {{< site-region region="ap1" >}} + ```brightscript + sub RunUserInterface(args as dynamic) + screen = CreateObject("roSGScreen") + scene = screen.CreateScene("MyScene") + screen.show() + + datadogroku_initialize({ + clientToken: "", + applicationId: "" + site: "ap1", + env: "", + sessionSampleRate: 100, ' the percentage (integer) of sessions to track + launchArgs: args + }) + + ' complete your channel setup here + end sub + ``` + {{< /site-region >}} + + +3. (Opcional) Cuando escribas tu aplicación, puedes habilitar el desarrollo de logs estableciendo el atributo `datadogVerbosity` en el nodo global. Todos los mensajes internos en la biblioteca con una prioridad igual o superior al nivel proporcionado se registran en la salida telnet de tu dispositivo de Roku: + + ```brightscript + ' 0 = none; 1 = error; 2 = warning; 3 = info; 4 = verbose; + m.globalNode.addFields({ datadogVerbosity: 2 }) + ``` + +4. Envía una entrada personalizada de log directamente a Datadog con una de las siguientes funciones: + + ```brightscript + msg = "A log message" + m.global.datadogLogsAgent.callfunc("logOk", msg, {}) + m.global.datadogLogsAgent.callfunc("logDebug", msg, {}) + m.global.datadogLogsAgent.callfunc("logInfo", msg, {}) + m.global.datadogLogsAgent.callfunc("logNotice", msg, {}) + m.global.datadogLogsAgent.callfunc("logWarn", msg, {}) + m.global.datadogLogsAgent.callfunc("logError", msg, {}) + m.global.datadogLogsAgent.callfunc("logCritical", msg, {}) + m.global.datadogLogsAgent.callfunc("logAlert", msg, {}) + m.global.datadogLogsAgent.callfunc("logEmergency", msg, {}) + ``` + + +5. (Opcional) Proporciona una matriz asociativa (AssocArray) junto a tu mensaje de log para añadir atributos al log emitido. Cada entrada de la AssocArray se añade como un atributo. + + ```brightscript + m.global.datadogLogsAgent.callfunc( + "logInfo", + "Video started", + { video_id: 42, video_type: "advert"} + ) + ``` + +## Recopilación de lotes + +Todos los logs se almacenan primero en el dispositivo local por lotes. Cada lote sigue la especificación de admisión. Se envían en cuanto la red está disponible. Si la red no está disponible mientras la aplicación está abierta, o si falla una carga de datos, el lote se guarda hasta que pueda enviarse correctamente. + +Para garantizar que el SDK no utilice demasiado espacio en disco, los datos del disco se descartan automáticamente si son demasiado antiguos. + +**Nota**: Antes de que los datos se carguen en Datadog, son almacenados en texto claro en el [directorio de cache][8] de tu canal, lo que significa que estos datos no pueden ser leídos por otras aplicaciones. El sistema operativo puede desalojar los datos en cualquier momento, lo que podría causar pérdida de datos en algunos casos poco frecuentes. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/DataDog/dd-sdk-roku +[2]: /es/account_management/api-app-keys/#client-tokens +[3]: /es/account_management/api-app-keys/#api-keys +[4]: /es/logs/processing/attributes_naming_convention/ +[5]: /es/tagging/ +[6]: /es/real_user_monitoring/mobile_and_tv_monitoring/setup/roku/?tab=us +[7]: https://github.com/DataDog/dd-sdk-roku/releases +[8]: https://developer.roku.com/fr-fr/docs/developer-program/getting-started/architecture/file-system.md#cachefs \ No newline at end of file diff --git a/content/es/logs/log_collection/ruby.md b/content/es/logs/log_collection/ruby.md new file mode 100644 index 0000000000000..c9f93287149f6 --- /dev/null +++ b/content/es/logs/log_collection/ruby.md @@ -0,0 +1,214 @@ +--- +aliases: +- /es/logs/languages/ruby +further_reading: +- link: https://github.com/roidrage/lograge + tag: Código fuente + text: Documentación de Lograge +- link: /logs/log_configuration/processors + tag: Documentación + text: Aprende a procesar tus logs +- link: /logs/faq/log-collection-troubleshooting-guide/ + tag: FAQ + text: Guía para solucionar problemas relacionados con la recopilación de logs +- link: https://www.datadoghq.com/blog/managing-rails-application-logs/ + tag: Blog + text: Cómo recopilar, personalizar y gestionar logs de aplicación de Rails +- link: https://www.datadoghq.com/blog/log-file-control-with-logrotate/ + tag: Blog + text: Cómo gestionar archivos de log con logrotate +- link: /glossary/#tail + tag: Glosario + text: Entrada de glosario para "tail" (cola) +kind: documentación +title: Recopilación de logs de Ruby on Rails +--- + +## Información general + +Para enviar tus logs a Datadog, loguea un archivo con [`Lograge`][1] y [supervisa][11] este archivo con tu Datadog Agent. Cuando configures el registro con Ruby, ten en cuenta los [atributos reservados][2]. + +Con Lograge, puedes transformar el formato estándar de log basado en texto, como en este ejemplo: + +```text +Started GET "/" for 127.0.0.1 at 2012-03-10 14:28:14 +0100 +Processing by HomeController#index as HTML + Rendered text template within layouts/application (0.0ms) + Rendered layouts/_assets.html.erb (2.0ms) + Rendered layouts/_top.html.erb (2.6ms) + Rendered layouts/_about.html.erb (0.3ms) + Rendered layouts/_google_analytics.html.erb (0.4ms) +Completed 200 OK in 79ms (Views: 78.8ms | ActiveRecord: 0.0ms) +``` + +Al siguiente formato JSON del log, que proporciona más estructura: + +```json +{ + "timestamp": "2016-01-12T19:15:19.118829+01:00", + "level": "INFO", + "logger": "Rails", + "method": "GET", + "path": "/jobs/833552.json", + "format": "json", + "controller": "jobs", + "action": "show", + "status": 200, + "duration": 58.33, + "view": 40.43, + "db": 15.26 +} +``` + +## Instala y configura tu registrador + +{{< tabs >}} +{{% tab "Lograge" %}} + +1. Añade el gem `lograge` a tu proyecto: + ```ruby + gem 'lograge' + ``` +2. En tu archivo de configuración, establece lo siguiente para configurar Lograge: + ```ruby + # Lograge config + config.lograge.enabled = true + + # This specifies to log in JSON format + config.lograge.formatter = Lograge::Formatters::Json.new + + ## Disables log coloration + config.colorize_logging = false + + # Log to a dedicated file + config.lograge.logger = ActiveSupport::Logger.new(Rails.root.join('log', "#{Rails.env}.log")) + + # This is useful if you want to log query parameters + config.lograge.custom_options = lambda do |event| + { :ddsource => 'ruby', + :params => event.payload[:params].reject { |k| %w(controller action).include? k } + } + end + ``` + **Nota**: Lograge también puede añadir información contextual a tus logs. Consulta la [documentación de Lograge][1] para obtener más detalles. + +Para ver un ejemplo más detallado de esta configuración, consulta [Cómo recopilar, personalizar y gestionar logs de aplicación de Rails][2]. + +### RocketPants + +Para configurar Lograge para controladores `rocket_pants`, en el archivo `config/initializers/lograge_rocketpants.rb` (la localización puede variar dependiendo de tu proyecto): + +```ruby +# Come from here: +# https://github.com/Sutto/rocket_pants/issues/111 +app = Rails.application +if app.config.lograge.enabled + ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber| + case subscriber + when ActionController::LogSubscriber + Lograge.unsubscribe(:rocket_pants, subscriber) + end + end + Lograge::RequestLogSubscriber.attach_to :rocket_pants +end +``` + +[1]: https://github.com/roidrage/lograge#installation +[2]: https://www.datadoghq.com/blog/managing-rails-application-logs +{{% /tab %}} +{{% tab "Grape" %}} + +1. Añade el gem `grape_logging` a tu proyecto: + + ```ruby + gem 'grape_logging' + ``` +2. Añade la configuración adicional a Grape: + + ```ruby + use GrapeLogging::Middleware::RequestLogger, + instrumentation_key: 'grape', + include: [ GrapeLogging::Loggers::Response.new, + GrapeLogging::Loggers::FilterParameters.new ] + ``` +3. Crea el archivo `config/initializers/instrumentation.rb` y añade la siguiente configuración: + + ```ruby + # Subscribe to grape request and log with a logger dedicated to Grape + grape_logger = Logging.logger['Grape'] + ActiveSupport::Notifications.subscribe('grape') do |name, starts, ends, notification_id, payload| + grape_logger.info payload + end + ``` + +{{% /tab %}} +{{< /tabs >}} +## Configurar el Datadog Agent + +Cuando tengas la [recopilación de logs activada][3], configura la [recopilación de logs personalizada][4] para supervisar tus archivos de log y enviarlos a Datadog. + +1. Crea una carpeta `ruby.d/` en el [directorio de configuración del Agent][5] `conf.d/`. +2. Crea un archivo `conf.yaml` en `ruby.d/` con el siguiente contenido: + ```yaml + logs: + - type: file + path: ".log" + service: + source: ruby + sourcecategory: sourcecode + ## Uncomment the following processing rule for multiline logs if they + ## start by the date with the format yyyy-mm-dd + #log_processing_rules: + # - type: multi_line + # name: new_log_start_with_date + # pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01]) + ``` +4. [Reinicia el Agent][6]. +5. Ejecuta el [subcomando de estado del Agent][8] y busca `ruby` en la sección `Checks` para confirmar que los logs se han enviado correctamente a Datadog. + +Si los logs están en formato JSON, Datadog [parsea los mensajes del log][7] de forma automática para extraer sus atributos. Utiliza el [Log Explorer][8] para ver tus logs y solucionar problemas relacionados. + +## Conectar logs y trazas + +Si APM está habilitado para esta aplicación, puedes mejorar la conexión entre los logs de aplicación y las trazas (traces) siguiendo la [documentación de registro de APM Ruby][7] para añadir automáticamente trazas e IDs de tramos en tus logs. + +## Prácticas recomendadas + +Añade contexto adicional (usuario, sesión, acción y métricas) a tus logs cuando sea posible. + +En lugar de registrar mensajes de cadena simples, puedes utilizar hashes de log como se muestra en el siguiente ejemplo: + +```ruby +my_hash = {'user' => '1234', 'button_name'=>'save','message' => 'User 1234 clicked on button saved'}; +logger.info(my_hash); +``` + +El hash se convierte en JSON y se pueden realizar análisis para `user` y `button_name`: + +```json +{ + "timestamp": "2016-01-12T19:15:18.683575+01:00", + "level": "INFO", + "logger": "WelcomeController", + "message": { + "user": "1234", + "button_name": "save", + "message": "User 1234 clicked on button saved" + } +} +``` +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://github.com/roidrage/lograge +[2]: /es/logs/log_configuration/attributes_naming_convention/#reserved-attributes +[3]: /es/agent/logs/?tab=tailfiles#activate-log-collection +[4]: /es/agent/logs/?tab=tailfiles#custom-log-collection +[5]: /es/agent/configuration/agent-configuration-files/?tab=agentv6v7#agent-configuration-directory +[6]: /es/agent/configuration/agent-commands/#restart-the-agent +[7]: /es/tracing/other_telemetry/connect_logs_and_traces/ruby/ +[8]: /es/agent/configuration/agent-commands/?tab=agentv6v7#agent-status-and-information +[9]: /es/logs/log_configuration/parsing +[10]: /es/logs/explorer/ +[11]: /es/glossary/#tail \ No newline at end of file diff --git a/content/es/logs/log_configuration/_index.md b/content/es/logs/log_configuration/_index.md new file mode 100644 index 0000000000000..d9b51de86e5b1 --- /dev/null +++ b/content/es/logs/log_configuration/_index.md @@ -0,0 +1,60 @@ +--- +aliases: +- /es/logs/processing +description: Procesa, mejora, controla y gestiona tus logs desde la página de configuración + de logs +further_reading: +- link: /data_security/pci_compliance/ + tag: Documentación + text: Configura una organización de Datadog que cumpla con la normativa PCI +- link: https://www.datadoghq.com/blog/logging-without-limits/ + tag: Blog + text: Más información sobre Logging without Limits* +- link: https://www.datadoghq.com/blog/log-pipeline-scanner-datadog/ + tag: Blog + text: Investiga el procesamiento de log con el Datadog Log Pipeline Scanner +- link: /logs/guide/ + tag: Guía + text: Guías adicionales sobre el registro con Datadog +kind: Documentación +title: Configuración de log +--- + +## Información general + +Datadog Logging without Limits* desacopla la ingestión y la indexación de logs. Elige qué logs indexar y conservar, o archivar, y gestiona la configuración y los controles a nivel general desde la página de configuración de log en [**Logs > Pipelines**][1]. + +**Nota**: Consulta [Cumplimiento de PCI DSS][2] para obtener información sobre configurar una organización de Datadog que cumpla con PCI. + +## Opciones de configuración + +- Controla cómo se procesan tus logs con [pipelines][3] y [procesadores][4]. +- Configura [atributos y alias][5] para unificar tu entorno de logs. +- [Genera métricas a partir de la ingesta de logs][6] como forma rentable de resumir los datos de log a partir de todo un flujo (stream) ingerido. +- Establece un control detallado de tu presupuesto de gestión de logs con [índices de log][7]. +- Reenvía el contenido de logs a tu propio bucket de almacenamiento alojado en la nube para conservarlo como [archivo][8] para futuras auditorías de cumplimiento o para solucionar problemas. +- [Recupera un archivo][9] para analizar o investigar eventos de log antiguos o excluidos de la indexación. +- Restringe [el acceso a datos de logs][10] con consultas de restricción. + +## Log Explorer + +Una vez que hayas completado la configuración, comienza a investigar y solucionar problemas de logs en el [Log Explorer][11]. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +
+*Logging without Limits es una marca registrada de Datadog, Inc. + +[1]: https://app.datadoghq.com/logs/pipelines +[2]: /es/data_security/pci_compliance/ +[3]: /es/logs/log_configuration/pipelines +[4]: /es/logs/log_configuration/processors +[5]: /es/logs/log_configuration/attributes_naming_convention/ +[6]: /es/logs/log_configuration/logs_to_metrics/ +[7]: /es/logs/log_configuration/indexes +[8]: /es/logs/log_configuration/archives/ +[9]: /es/logs/log_configuration/rehydrating +[10]: /es/logs/guide/logs-rbac/ +[11]: /es/logs/explorer/ \ No newline at end of file diff --git a/content/es/logs/log_configuration/archives.md b/content/es/logs/log_configuration/archives.md new file mode 100644 index 0000000000000..a1197d76b28e1 --- /dev/null +++ b/content/es/logs/log_configuration/archives.md @@ -0,0 +1,468 @@ +--- +aliases: +- /es/logs/s3/ +- /es/logs/gcs/ +- /es/logs/archives/s3/ +- /es/logs/archives/gcs/ +- /es/logs/archives/gcp/ +- /es/logs/archives/ +description: Reenvía todos tus logs ingeridos al almacenamiento a largo plazo. +further_reading: +- link: /logs/archives/rehydrating + tag: Documentación + text: Aprende a acceder a tu contenido de logs archivados en Datadog +- link: /logs/explorer/ + tag: Documentación + text: Más información sobre Log Explorer +- link: /logs/logging_without_limits/ + tag: Documentación + text: Más información sobre Logging without Limits* +kind: documentación +title: Archivos de log +--- + +## Información general + +Configura tu cuenta de Datadog para reenviar todos los logs ingestados (ya sea que esté [indexado][1] o no) a un sistema de almacenamiento en la nube de tu propiedad. Conserva tus logs en un archivo optimizado para el almacenamiento durante más tiempo y cumple los requisitos de conformidad, al tiempo que mantienes la auditabilidad para investigaciones ad hoc, con [Recuperación][2]. + +{{< img src="logs/archives/log_forwarding_archives_tab.png" alt="Pestaña Archivo en la página Reenvío de log" style="width:100%;">}} + +Ve a la página [**Log Forwarding**][3] (Reenvío de log) para configurar un archivo para el reenvío de logs ingeridos a tu propio bucket de almacenamiento alojado en la nube. + +1. Si aún no lo has hecho, configura una [integración] de Datadog (#set-up-an-integration) para tu proveedor de nube. +2. Crea un [bucket de almacenamiento](#create-a-storage-bucket). +3. Establece [permisos](#set-permissions) en `read` o `write` en ese archivo. +4. [Enruta tus logs](#route-your-logs-to-a-bucket) hacia y desde ese archivo. +5. Establece la [configuración avanzada](#advanced-settings) como cifrado, clase de almacenamiento y etiquetas (tags). +6. [Valida](#validation) tu configuración y busca posibles errores de configuración que Datadog podría detectar por ti. + +Consulta cómo [archivar tus logs con Pipelines de observabilidad][4] si deseas dirigir tus logs a un archivo optimizado para el almacenamiento directamente desde tu entorno. + +## Configurar un archivo + +### Establecer una integración + +{{< tabs >}} +{{% tab "AWS S3" %}} + +{{< site-region region="gov" >}} +
La delegación de roles de AWS no es compatible con el sitio Datadog for Government. Deben utilizarse claves de acceso.
+{{< /site-region >}} + +Si aún no está configurada, configura [la integración de AWS][1] para la cuenta de AWS que contiene tu bucket de S3. + +* En el caso general, se trata de crear un rol que Datadog pueda utilizar para integrarse con AWS S3. +* Específicamente para las cuentas AWS GovCloud o China, utiliza claves de acceso como alternativa a la delegación de roles. + +[1]: /es/integrations/amazon_web_services/?tab=automaticcloudformation#setup +{{% /tab %}} +{{% tab "Azure Storage" %}} + +Configura [la integración de Azure][1] dentro de la suscripción que contiene tu nueva cuenta de almacenamiento, si aún no lo has hecho. Esto implica [crear un registro de aplicación que Datadog pueda utilizar][2] para integrarla. + +**Nota:** No se admite el archivado en Azure ChinaCloud, GermanyCloud y GovCloud. + +[1]: https://app.datadoghq.com/account/settings#integrations/azure +[2]: /es/integrations/azure/?tab=azurecliv20#integrating-through-the-azure-portal +{{% /tab %}} + +{{% tab "Google Cloud Storage" %}} + +Configura la [integración de Google Cloud][1] para el proyecto que contiene tu bucket de almacenamiento de GCS, si aún no lo has hecho. Esto implica [crear una cuenta de servicio de Google Cloud que Datadog pueda utilizar][2] para integrarla. + +[1]: https://app.datadoghq.com/account/settings#integrations/google-cloud-platform +[2]: /es/integrations/google_cloud_platform/?tab=datadogussite#setup +{{% /tab %}} +{{< /tabs >}} + +### Crear un bucket de almacenamiento + +{{< site-region region="gov" >}} +
El envío de logs a un archivo queda fuera del entorno GovCloud de Datadog, que está fuera del control de Datadog. Datadog no será responsable de ningún log que haya salido del entorno GovCloud de Datadog, incluidas, entre otras, las obligaciones o requisitos que el usuario pueda tener en relación con FedRAMP, DoD Impact Levels, ITAR, cumplimiento de las normas de exportación, residencia de datos o normativas similares aplicables a dicho log.
+{{< /site-region >}} + +{{< tabs >}} +{{% tab "AWS S3" %}} + +Entra en tu [consola de AWS][1] y [crea un bucket de S3][2] al que enviar tus archivos. + +**Notas:** + +- No pongas tu bucket a disposición del público. +- Para los sitios [US1, US3 y US5][3], consulta [Precios de AWS][4] para conocer las tarifas de transferencia de datos entre regiones y cómo pueden verse afectados los costes de almacenamiento en la nube. Considera la posibilidad de crear tu bucket de almacenamiento en `us-east-1` para gestionar tus tarifas de transferencia de datos entre regiones. + +[1]: https://s3.console.aws.amazon.com/s3 +[2]: https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html +[3]: /es/getting_started/site/ +[4]: https://aws.amazon.com/s3/pricing/ +{{% /tab %}} + +{{% tab "Azure Storage" %}} + +* Ve a tu [Portal de Azure][1] y [crea una cuenta de almacenamiento][2] a la que enviar tus archivos. Asigna un nombre a tu cuenta de almacenamiento, selecciona el tipo de cuenta de rendimiento estándar o **Block blobs** premium y selecciona el nivel de acceso **hot** (activo) o **cool** (inactivo). +* Crea un servicio de **contenedor** en esa cuenta de almacenamiento. Toma nota del nombre del contenedor ya que necesitarás añadirlo en la Página de archivo de Datadog. + +**Nota:** No establezcas [políticas de inmutabilidad][3] porque los últimos datos deben ser reescritos en algunos casos poco frecuentes (típicamente un tiempo de inactividad). + +[1]: https://portal.azure.com/#blade/HubsExtension/BrowseResource/resourceType/Microsoft.Storage%2FStorageAccounts +[2]: https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal +[3]: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-immutability-policies-manage +{{% /tab %}} + +{{% tab "Google Cloud Storage" %}} + +Accede a tu [cuenta de Google Cloud][1] y [crea un bucket de GCS][2] al que enviar tus archivos. En **Choose how to control access to objects** (Elige cómo controlar el acceso a los objetos), selecciona **Set object-level and bucket-level permissions** (Configurar permisos a nivel de objeto y a nivel de bucket). + +**Nota:** No añadas una [política de retención][3] porque los últimos datos deben ser reescritos en algunos casos poco frecuentes (típicamente un tiempo de inactividad). + +[1]: https://console.cloud.google.com/storage +[2]: https://cloud.google.com/storage/docs/quickstart-console +[3]: https://cloud.google.com/storage/docs/bucket-lock +{{% /tab %}} +{{< /tabs >}} + +### Establecer permisos + +Solo los usuarios de Datadog con el [permiso`logs_write_archive`][5] pueden crear, modificar o eliminar configuraciones de archivo de log. + +{{< tabs >}} +{{% tab "AWS S3" %}} + +1. [Crear una política][1] con las siguientes sentencias de permiso: + + ```json + { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "DatadogUploadAndRehydrateLogArchives", + "Effect": "Allow", + "Action": ["s3:PutObject", "s3:GetObject"], + "Resource": [ + "arn:aws:s3:::/*", + "arn:aws:s3:::/*" + ] + }, + { + "Sid": "DatadogRehydrateLogArchivesListBucket", + "Effect": "Allow", + "Action": "s3:ListBucket", + "Resource": [ + "arn:aws:s3:::", + "arn:aws:s3:::" + ] + } + ] + } + ``` + * Los permisos `GetObject` y `ListBucket` permiten [recuperar a partir de archivos][2]. + * El permiso `PutObject` es suficiente para cargar archivos. + * Asegúrate de que el valor del recurso en las acciones `s3:PutObject` y `s3:GetObject` termina con `/*` porque estos permisos se aplican a objetos dentro de los buckets. + +2. Edita los nombres de los buckets. +3. Opcionalmente, especifica las rutas que contienen tus archivos de log. +4. Adjunta la nueva política al rol de integración de Datadog. + * Ve a **Roles** en la consola de AWS IAM. + * Localiza el rol utilizado por la integración de Datadog. Por defecto se llama **DatadogIntegrationRole**, pero el nombre puede variar si tu organización le ha cambiado el nombre. Haz clic en el nombre del rol para abrir la página de resumen del rol. + * Haz clic en **Add permissions** (Añadir permisos), y luego en **Attach policies** (Adjuntar políticas). + * Introduce el nombre de la política creada anteriormente. + * Haz clic en **Attach policies** (Adjuntar políticas). + + +[1]: https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html +[2]: /es/logs/archives/rehydrating/ +{{% /tab %}} +{{% tab "Azure Storage" %}} + +1. Concede a la aplicación de Datadog el permiso para escribir y recuperar desde tu cuenta de almacenamiento. +2. Selecciona tu cuenta de almacenamiento en la [página Cuentas de almacenamiento][1], ve a **Access Control (IAM)** (Control de acceso (IAM)) y selecciona**Add -> Add Role Assignment** (Añadir -> Añadir asignación del rol). +3. Introduce el rol denominado **Storage Blob Data Contributor**, selecciona la aplicación de Datadog que creaste para integrarse con Azure y selecciona guardar. + +{{< img src="logs/archives/logs_azure_archive_permissions.png" alt="Añadir el rol Storage Blob Data Contributor a tu aplicación de Datadog." style="width:75%;">}} + +[1]: https://portal.azure.com/#blade/HubsExtension/BrowseResource/resourceType/Microsoft.Storage%2FStorageAccounts +{{% /tab %}} +{{% tab "Google Cloud Storage" %}} + +1. Concede a tu cuenta de servicio de Datadog Google Cloud permisos para escribir tus archivos en tu bucket. +2. Selecciona la entidad principal de la cuenta de servicio de Datadog Google Cloud en la [página de administración de Google Cloud IAM][1] y selecciona **Edit principal** (Editar entidad principal). +3. Haz clic en **ADD ANOTHER ROLE** (AÑADIR OTRO ROL), selecciona el rol **Storage Object Admin** y selecciona guardar. + + {{< img src="logs/archives/gcp_role_storage_object_admin-2.png" alt="Añade el rol Storage Object Admin a tu cuenta de servicio de Datadog Google Cloud." style="width:75%;">}} + +[1]: https://console.cloud.google.com/iam-admin/iam +{{% /tab %}} +{{< /tabs >}} + +### Dirige tus logs a un bucket + +Ve a la página de [Reenvío de log][6] y selecciona **Add a new archive** (Añadir un nuevo archivo) en la pestaña **Archives** (Archivos). + +**Notas:** +* Solo los usuarios de Datadog con el [permiso `logs_write_archive`][5] pueden completar este paso y el siguiente. +* Para archivar logs en Azure Blob Storage es necesario registrarse en la aplicación. Consulta las instrucciones [en la página de integración de Azure][7], y establece el "sitio" en la parte derecha de la página de documentación en "US". Los Registros de aplicación creados con fines de archivado solo necesitan el rol "Storage Blob Data Contributor". Si tu bucket de almacenamiento se encuentra en una suscripción que está siendo supervisada a través de un recurso de Datadog, se mostrará una advertencia acerca de que el Registro de aplicación es redundante. Puedes ignorar esta advertencia. +* Si tu bucket restringe el acceso de red a las IP especificadas, añade las IP de los webhooks de {{< region-param key="ip_ranges_url" link="true" text="IP ranges list">}} a la lista de permitidos. + +{{< tabs >}} +{{% tab "AWS S3" %}} + +Selecciona la combinación de cuenta y rol de AWS adecuada para tu bucket de S3. + +Introduce el nombre de tu bucket. **Opcional**: introduce un directorio de prefijo para todo el contenido de tus archivos de log. + +{{< img src="logs/archives/logs_archive_aws_setup.png" alt="Configura tu información de bucket de S3 en Datadog" style="width:75%;">}} + +{{% /tab %}} +{{% tab "Azure Storage" %}} + +Selecciona el tipo de archivo **Azure Storage**, y el inquilino y cliente de Azure para la aplicación de Datadog que tiene el rol Storage Blob Data Contributor en tu cuenta de almacenamiento. + +Introduce el nombre de tu cuenta de almacenamiento y el nombre de contenedor para tu archivo. **Opcional**: introduce un directorio de prefijo para todo el contenido de tus archivos de log. + +{{< img src="logs/archives/logs_archive_azure_setup.png" alt="Configura tu información de cuenta de almacenamiento de Azure en Datadog" style="width:75%;">}} + + +{{% /tab %}} +{{% tab "Google Cloud Storage" %}} + +Selecciona el tipo de archivo **GCS** y la cuenta de servicio de GCS que tenga permisos para escribir en tu bucket de almacenamiento. + +Introduce el nombre de tu bucket. **Opcional**: introduce un directorio de prefijo para todo el contenido de tus archivos de log. + +{{< img src="logs/archives/logs_archive_gcp_setup.png" alt="Configura tu información de cuenta de almacenamiento de Azure en Datadog" style="width:75%;">}} + +{{% /tab %}} +{{< /tabs >}} + +### Configuración avanzada + +#### Permisos de Datadog + +Por defecto: + +* Todos los usuarios Admin de Datadog pueden crear, editar y reordenar. Consulta [Configurar archivos múltiples](#multiple-archives) para obtener más información. +* Todos los usuarios de Datadog Admin y Standard pueden recuperar desde archivos. +* Todos los usuarios, incluidos los Read Only (solo lectura) de Datadog, pueden acceder a logs recuperados. + +Utiliza este paso de configuración opcional para asignar roles en ese archivo y restringir quién puede: + +* Editar ese archivo de configuración. Consulta el permiso [`logs_write_archive`][9]. +* Recuperar desde ese archivo. Consulta los permisos [`logs_read_archives`][10] y [`logs_write_historical_view`][11]. +* Acceder a logs recuperados en caso de que utilices el permiso legacy [`read_index_data`][12]. + +{{< img src="logs/archives/archive_restriction.png" alt="Restrinfir el acceso a archivos y logs recuperados" style="width:75%;">}} + +#### Etiquetas de Datadog + +Utiliza este paso de configuración opcional para: + +* Incluir todas las etiquetas de log en tus archivos (activado por defecto en todos los archivos nuevos). **Nota**: Esto aumenta el tamaño de los archivos resultantes. +* Añadir etiquetas en los logs recuperados de acuerdo con tu política de Consultas de restricción. Consulta el permiso [`logs_read_data`][13]. + +{{< img src="logs/archives/tags_in_out.png" alt="Configurar etiquetas de archivo" style="width:75%;">}} + +#### Definir el tamaño máximo de escaneado + +Utiliza este paso de configuración opcional para definir el volumen máximo de datos de log (en GB) que se pueden escanear para la recuperación en tus archivos de log. + +Para los archivos con un tamaño máximo de escaneado definido, todos los usuarios deben estimar el tamaño del escaneado antes de que se les permita iniciar una recuperación. Si el tamaño de escaneado estimado es superior al permitido para ese archivo, los usuarios deben reducir el intervalo en el que solicitan la recuperación. La reducción del intervalo reducirá el tamaño del escaneado y permitirá al usuario iniciar una recuperación. + +{{< img src="logs/archives/max_scan_size.png" alt="Definir el tamaño máximo de escaneado en el archivo" style="width:75%;">}} + +{{< site-region region="us3" >}} +#### Reglas del cortafuegos + +{{< tabs >}} +{{% tab "Azure storage" %}} + +No se admiten reglas de cortafuegos. + +{{% /tab %}} +{{< /tabs >}} + +{{< /site-region >}} +#### Clase de almacenamiento + +{{< tabs >}} +{{% tab "AWS S3" %}} + +Puedes [establecer una configuración del ciclo de vida en tu bucket de S3][1] para realizar una transición automática de tus archivos de log a clases de almacenamiento óptimas. + +La [recuperación][2] solo admite las siguientes clases de almacenamiento: + +* S3 Standard +* S3 Standard-IA +* S3 One Zone-IA +* Recuperación instantánea de S3 Glacier + +Si deseas recuperar a partir de archivos de otra clase de almacenamiento, primero debes moverlos a una de las clases de almacenamiento admitidas mencionadas anteriormente. + +[1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-set-lifecycle-configuration-intro.html +[2]: /es/logs/archives/rehydrating/ +{{% /tab %}} +{{% tab "Azure Storage" %}} + +El archivado y la [recuperación][1] solo admiten los siguientes niveles de acceso: + +- Nivel de acceso activo +- Nivel de acceso inactivo + +Si deseas recuperar a partir de archivos de otro nivel de acceso, primero debes moverlos a uno de los niveles admitidos mencionados anteriormente. + +[1]: /es/logs/archives/rehydrating/ +{{% /tab %}} +{{< /tabs >}} + +#### Cifrado del lado del servidor (SSE) + +{{< tabs >}} +{{% tab "AWS S3" %}} + +##### SSE-S3 + +El cifrado predeterminado para los buckets de Amazon S3 es el cifrado del lado del servidor con claves de administración de Amazon S3 ([SSE-S3][1]). + +Para confirmar que tu bucket de S3 está cifrado con SSE-S3: + +1. Navega hasta tu bucket de S3. +1. Haz clic en la pestaña **Properties** (Propiedades). +1. En la sección **Default Encryption** (Cifrado por defecto), comprueba que el **Encryption key type** (Tipo de clave de cifrado) es **Amazon S3 managed keys (SSE-S3)** (Claves administradas de Amazon S3 (SSE-S3)). + +##### SSE-KMS + +Como alternativa, Datadog admite el cifrado del lado del servidor con una CMK de [AWS KMS][2]. Para habilitarla, sigue estos pasos: + +1. Crea tu CMK. +2. Adjunta una política de CMK a tu CMK con el siguiente contenido, sustituyendo según corresponda el número de cuenta de AWS y el nombre de rol de Datadog IAM: + +``` +{ + "Id": "key-consolepolicy-3", + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "Enable IAM User Permissions", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam:::root" + }, + "Action": "kms:*", + "Resource": "*" + }, + { + "Sid": "Allow use of the key", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam:::role/" + }, + "Action": [ + "kms:Encrypt", + "kms:Decrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + "kms:DescribeKey" + ], + "Resource": "*" + }, + { + "Sid": "Allow attachment of persistent resources", + "Effect": "Allow", + "Principal": { + "AWS": "arn:aws:iam:::role/" + }, + "Action": [ + "kms:CreateGrant", + "kms:ListGrants", + "kms:RevokeGrant" + ], + "Resource": "*", + "Condition": { + "Bool": { + "kms:GrantIsForAWSResource": "true" + } + } + } + ] +} +``` + +3. Ve a la pestaña **Properties** (Propiedades) en tu bucket de S3 y selecciona **Default Encryption** (Cifrado por defecto). Elige la opción "AWS-KMS", selecciona tu ARN de CMK y selecciona guardar. + +Para cualquier cambio en las claves de KSM existentes, ponte en contacto con el [soporte de Datadog][3] para obtener más ayuda. + +[1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html +[2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html +[3]: /es/help/ +{{% /tab %}} + +{{< /tabs >}} + +### Validación + +Una vez que los ajustes del archivo se hayan configurado correctamente en tu cuenta de Datadog, tus pipelines de procesamiento comenzarán a enriquecer todos los logs que se ingieran en Datadog. Estos logs se reenvían posteriormente a tu archivo. + +Sin embargo, después de crear o actualizar las configuraciones de los archivos, pueden pasar varios minutos antes de que se intente la siguiente carga de archivos. La frecuencia con la que se cargan los archivos puede variar. **Consulta tu bucket de almacenamiento de nuevo en 15 minutos** para asegurarte de que los archivos se están cargando correctamente desde tu cuenta de Datadog. + +Después, si el archivo sigue en estado pendiente, comprueba tus filtros de inclusión para asegurarte de que la consulta es válida y coincide con eventos de log en [Live Tail][14]. Cuando Datadog no consigue cargar logs en un archivo externo, debido a cambios involuntarios en la configuración o los permisos, el archivo de log correspondiente aparece resaltado en la página de configuración. + +{{< img src="logs/archives/archive_errors_details.png" alt="Comprueba que tus archivos están correctamente configurados" style="width:100%;">}} + +Pasa el ratón por encima del archivo para ver los detalles del error y las acciones a realizar para resolver el problema. También se genera un evento en el [Log Explorer][15]. Puedes crear un monitor para estos eventos con el fin de detectar y solucionar fallos rápidamente. + +## Múltiples archivos + +Si se definen múltiples archivos, los logs introducen el primer archivo en función del filtro. + +{{< img src="logs/archives/log_forwarding_archives_multiple.png" alt="Los logs introducen el primer archivo con el que coincide el filtro." style="width:100%;">}} + +Es importante ordenar los archivos con cuidado. Por ejemplo, si creas un primer archivo filtrado con la etiqueta `env:prod` y un segundo archivo sin ningún filtro (el equivalente a `*`), todos tus logs de producción irían a un bucket o ruta de almacenamiento, y el resto iría al otro. + +## Formato de los archivos + +Los archivos de log que Datadog reenvía a tu bucket de almacenamiento están en formato JSON comprimido (`.json.gz`). Utilizando el prefijo que indiques (o `/` si no hay ninguno), los archivos se almacenan en una estructura de directorios que indica en qué fecha y a qué hora se generaron los archivos de almacenamiento, como la siguiente: + +``` +/my/bucket/prefix/dt=20180515/hour=14/archive_143201.1234.7dq1a9mnSya3bFotoErfxl.json.gz +/my/bucket/prefix/dt=/hour=/archive_..json.gz +``` + +Esta estructura de directorios simplifica el proceso de consulta de tus archivos de log históricos en función de su fecha. + +Dentro del archivo JSON comprimido, el contenido de cada evento tiene el siguiente formato: + +```json +{ + "_id": "123456789abcdefg", + "date": "2018-05-15T14:31:16.003Z", + "host": "i-12345abced6789efg", + "source": "source_name", + "service": "service_name", + "status": "status_level", + "message": "2018-05-15T14:31:16.003Z INFO rid='acb-123' status=403 method=PUT", + "attributes": { "rid": "abc-123", "http": { "status_code": 403, "method": "PUT" } }, + "tags": [ "env:prod", "team:acme" ] +} +``` + +## Lectura adicional + +{{< partial name="whats-next/whats-next.html" >}} + +
+*Logging without Limits es una marca registrada de Datadog, Inc. + +[1]: /es/logs/indexes/#exclusion-filters +[2]: /es/logs/archives/rehydrating/ +[3]: https://app.datadoghq.com/logs/pipelines/log-forwarding +[4]: /es/observability_pipelines/archive_logs/ +[5]: /es/account_management/rbac/permissions/?tab=ui#logs_write_archives +[6]: https://app.datadoghq.com/logs/pipelines/archives +[7]: /es/integrations/azure/ +[8]: https://ip-ranges.datadoghq.com/ +[9]: /es/account_management/rbac/permissions#logs_write_archives +[10]: /es/account_management/rbac/permissions#logs_read_archives +[11]: /es/account_management/rbac/permissions#logs_write_historical_view +[12]: /es/account_management/rbac/permissions#logs_read_index_data +[13]: /es/account_management/rbac/permissions#logs_read_data +[14]: /es/logs/explorer/live_tail/ +[15]: /es/service_management/events/explorer/ \ No newline at end of file diff --git a/content/es/logs/log_configuration/online_archives.md b/content/es/logs/log_configuration/online_archives.md new file mode 100644 index 0000000000000..9a7af7ca3a579 --- /dev/null +++ b/content/es/logs/log_configuration/online_archives.md @@ -0,0 +1,99 @@ +--- +algolia: + tags: + - Archivos en línea +description: Capacidades rentables de consulta en directo en la retención de logs + a largo plazo +further_reading: +- link: /logs/log_configuration/indexes/#indexes-filters + tag: Documentación + text: Filtros de índice +- link: /logs/log_configuration/indexes/#exclusion-filters + tag: Documentación + text: Filtros de exclusión +- link: https://www.datadoghq.com/blog/online-archives-datadog/ + tag: Blog + text: Análisis e investigación histórica de logs con Archivos en línea +kind: documentación +private: true +title: Archivos en línea +--- + +
+La disponibilidad de Archivos en línea es limitada. Para solicitar acceso, ponte en contacto con el soporte de Datadog. +
+ +## Información general + +Archivos en línea es una solución de almacenamiento de logs que proporciona 15 meses o más de almacenamiento, consultas en tiempo real y funciones analíticas para tus logs en Datadog. + +Los equipos de seguridad, cumplimiento normativo e ingeniería a menudo necesitan consultar logs por intervalos de tiempo largos. Las brechas de seguridad se detectan a menudo después de semanas, si no meses, de una incidencia y las revisiones de cumplimiento legal y procesos de auditoría pueden requerir logs que se remontan a más de un año. Sin embargo, las necesidades de análisis a largo plazo no se limitan a los equipos de seguridad. Los equipos de ingeniería que realizan análisis a largo plazo de gran cardinalidad, año tras año, sobre millones de entidades como usuarios, hosts, direcciones IP, etc., trabajan mejor con logs que con métricas. + +Archivos en línea te permite conservar y buscar todos tus datos de log durante 15 meses o más. Los equipos de seguridad, cumplimiento normativo e ingeniería pueden abordar casos de uso que requieran investigación y análisis históricos, como auditorías de seguridad, o analizar tendencias de cardinalidad muy alta durante largos periodos y correlacionar los análisis forenses del sistema de métricas con el comportamiento de las aplicaciones y los usuarios de los datos de log. + +## Activación de Archivos en línea + +Los Archivos en línea se configuran por índice de log. Los [filtros de índice][1] que se aplican a ese índice también se aplican a los Archivos en línea. + +**Nota**: Sin embargo, los [filtros de exclusión][2] y las cuotas diarias de ese índice no se aplican a los Archivos en línea. Por ejemplo, puedes optar por indexar solo los logs de errores y conservar todos los logs en los Archivos en línea excluyendo de los índices los archivos que no contengan logs de errores. + +Configurar Archivos en línea en la página de [Configuración de índices de logs][3]: + +1. Ve a [**Logs > Configuration > Indexes**][3] (Logs > Configuración > Índices). +2. Edita el índice que deseas activar con Archivos en línea. +3. Activa Archivos en línea en el paso 3 de la configuración del índice. + +{{< img src="logs/log_configuration/online_archives/enabling.png" alt="Cómo activar archivos de logs" style="width:100%;">}} + +## Búsqueda en Archivos en línea + +Selecciona Archivos en línea en el menú desplegable del Logs Explorer para empezar a buscar en Archivos en línea en lugar de en índices. Este menú desplegable se encuentra junto al selector de tiempo. Puedes ajustar el selector de tiempo al marcar opciones preestablecidas, hasta 3 meses, o al marcar la vista de calendario para buscar más atrás en el tiempo. + + +{{< img src="logs/log_configuration/online_archives/searching.png" alt="Cómo buscar tu archivo en línea" style="width:100%;">}} + +Puedes [buscar][4] al escribir las consultas en la barra de búsqueda o al seleccionar la faceta correspondiente en el panel de facetas. + +**Notas**: +- No se puede exportar logs del Archivo en línea a dashboards, notebooks, o monitores. +- La vista de Transacciones y patrones no está disponible para los Archivos en línea. + +## Análisis en Archivos en línea + +Cambia a Analytics (Análisis) seleccionando **Group into Fields** (Agrupar por campos) o **Visualize as Timeseries/Top List/Table** (Visualizar como serie temporal/lista principal/tabla). + +Configurar el tipo de almacenamiento en **Online Archives** (Archivos en línea) te permite consultar Archivos en línea en lugar de índices. Puedes volver a **Indexes** (Índices) en cualquier momento. + +## Enviar selectivamente logs a Archivos en línea e Índices + +Puedes establecer la configuración para enviar ciertos logs a Archivos en línea mientras que otros van a un índice basado en atributos de log y etiquetas (tags). Mezcla y combina logs entre tipos de almacenamiento según tus casos de uso de registro y estrategia de retención. + +Para configurar tipos de almacenamiento, utiliza filtros de índice que se apliquen a Archivos en línea y utiliza filtros de exclusión de índice que no se apliquen a Archivos en línea. + +Aquí encontrarás ejemplos de diferentes estrategias de retención de logs y cómo aplicarlas: + +### El equipo de ingeniería quiere muestrear logs de depuración en índices conservando todos los logs en Archivos en línea + +1. Crea un índice para todos los logs con el filtro `*`. +2. Activa Archivos en línea para este índice. +3. Añade un filtro de exclusión en el índice `status:Debug` con un porcentaje de exclusión fijado en el 90%. Este filtro de exclusión solo se aplica al índice. + +{{< img src="logs/log_configuration/online_archives/retain.png" alt="Cómo excluir elementos del índice" style="width:100%;">}} + +### El equipo de seguridad quiere conservar todos sus logs en Archivos en línea, pero ninguno en los índices + +1. Crea un índice para los logs de seguridad con el filtro `team:security`. +2. Activa Archivos en línea para este índice. +3. Añade un filtro de exclusión `*` en el índice para filtrar todos los logs del índice, pero no de Archivos en línea. + +{{< img src="logs/log_configuration/online_archives/exclusion.png" alt="Cómo excluir elementos del índice" style="width:100%;">}} + +### Desactivar Archivos en línea +Selecciona el índice en el que deseas desactivar Archivos en línea y, a continuación, coloca el conmutador Archivos en línea en la posición OFF (DESACTIVADO). + +**Nota:** El orden de los índices es importante, ya que los logs `team:security` van al primer índice que coincide con el filtro de índice en caso de que haya varios índices. + +[1]: /es/logs/log_configuration/indexes/#indexes-filters +[2]: /es/logs/log_configuration/indexes/#exclusion-filters +[3]: https://app.datadoghq.com/logs/pipelines/indexes +[4]: https://app.datadoghq.com/logs \ No newline at end of file diff --git a/content/es/logs/log_configuration/processors.md b/content/es/logs/log_configuration/processors.md new file mode 100644 index 0000000000000..64169174f57d3 --- /dev/null +++ b/content/es/logs/log_configuration/processors.md @@ -0,0 +1,774 @@ +--- +aliases: +- /es/logs/processing/processors/ +description: Analizar tus logs con el procesador Grok +further_reading: +- link: /logs/log_configuration/pipelines + tag: Documentación + text: Descubrir los pipelines de Datadog +- link: /logs/logging_without_limits/ + tag: Documentación + text: Logging without Limits* +- link: /logs/explorer/ + tag: Documentación + text: Aprender a explorar tus logs +kind: documentación +title: Procesadores +--- + +## Información general + +Un procesador se ejecuta dentro de un [pipeline][1] para completar una acción de estructuración de datos y generar atributos para enriquecer tus logs. + +{{< img src="logs/log_configuration/processor/processor_overview.png" alt="Procesadores" style="width:100%" >}} + +En la sección de [configuración de parámetros de logs][1], puedes configurar procesadores como el [Analizador Grok](#grok-parser) o el [reasignador de datos(#remapper) para extraer, crear y reasignar atributos para enriquecer tus logs y mejorar las búsquedas con facetas. + +**Notas**: + +- Los logs estructurados deben enviarse en un formato válido. Si la estructura contiene caracteres no válidos para el análisis, deben eliminarse en el nivel del Agent utilizando la función [mask_sequences][2]. + +- Una práctica recomendada es utilizar como máximo 20 procesadores por pipeline. + +## Analizador Grok + +Crea reglas grok personalizadas para analizar el mensaje completo o un atributo específico de tu evento sin procesar. Para obtener más información, consulta la [sección Análisis][2]. Una práctica recomendada es utilizar como máximo 10 reglas de análisis en un procesador grok. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador Grok en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/grok_parser.png" alt="Analizador Grok" style="width:80%;" >}} + +Haz clic en **Parse my logs** (Analizar mis logs) para configurar un conjunto de tres reglas de análisis para los logs que circulan a través del pipeline subyacente. A partir de ahí, refina los nombres de los atributos y, si es necesario, añade nuevas reglas para otros tipos de logs. Esta función requiere que los logs correspondientes se indexen y fluyan. Puedes desactivar temporalmente o reducir los filtros de exclusión para que esto funcione correctamente. + +Selecciona una muestra haciendo clic en ella para activar su evaluación con la regla de análisis y mostrar el resultado en la parte inferior de la pantalla. + +Se pueden guardar hasta cinco muestras con el procesador y cada muestra puede tener hasta 5000 caracteres de longitud. Todas las muestras presentan un estado (`match` o `no match`), que destaca si una de las reglas de análisis del analizador grok coincide con la muestra. + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del analizador Grok: + +```json +{ + "type": "grok-parser", + "name": "Parsing Log message", + "is_enabled": true, + "source": "message", + "samples": ["sample log 1", "sample log 2"], + "grok": {"support_rules": "", "match_rules": ""} +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|----------------------|------------------|----------|---------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `source` | Cadena | Sí | Nombre del atributo de log a analizar. Por defecto: `message`. | +| `samples` | Matriz de cadenas | No | Lista de (hasta 5) muestras de logs para este analizador grok. | +| `grok.support_rules` | Cadena | Sí | Lista de reglas de compatibilidad para tu analizador grok. | +| `grok.match_rules` | Cadena | Sí | Lista de reglas de coincidencia para tu analizador grok. | + + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Reasignador de fechas de logs + +A medida que Datadog recibe logs, les coloca una marca de tiempo utilizando el valor o los valores de cualquiera de estos atributos predeterminados: + +* `timestamp` +* `date` +* `_timestamp` +* `Timestamp` +* `eventTime` +* `published_date` + +Si tus logs tienen fechas en un atributo que no están en este lista, utiliza el procesador del reasignador de fechas de logs para definir la marca de tiempo oficial del log como su atributo de fecha: + +
+Los formatos de fecha reconocidos son: ISO8601, UNIX (formato EPOCH en milisegundos) y RFC3164. +
+ +Si tus logs no tienen una marca de tiempo que se ajuste a los formatos enumerados anteriormente, utiliza el procesador de Grok para extraer la hora epoch de la marca de tiempo para un atributo nuevo. El reasignador de fechas utiliza el atributo recién definido. + +Para ver cómo se puede analizar un formato personalizado de fecha y hora en Datadog, consulta [Análisis de fechas][3]. + +**Notas**: + +* Los eventos de logs pueden enviarse dentro de las 18 horas pasadas y las 2 futuras. +* A partir de la norma ISO 8601-1:2019, el formato básico es `T[hh][mm][ss]` y el formato ampliado es `T[hh]:[mm]:[ss]`. Las versiones anteriores omitían la T (que representa la hora) en ambos formatos. +* Si tus logs no contienen ninguno de los atributos predeterminados y no has definido su propio atributo de fecha, Datadog coloca una marca de tiempo con la fecha de recepción en los logs. +* Si se aplican varios procesadores de reasignación de fechas de logs a un determinado log del pipeline, se tiene en cuenta el último (según el orden del pipeline). + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador de reasignación de fechas de logs en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/date_remapper.png" alt="Definir un atributo de fecha" style="width:80%;" >}} + +{{< img src="logs/log_configuration/processor/date_remapper_example.png" alt="Hora y fecha en el panel lateral del Explorador de logs" style="width:80%;" >}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del reasignador de fechas de logs: + +```json +{ + "type": "date-remapper", + "name": "Define como fecha oficial del log", + "is_enabled": false, + "sources": [""] +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|-------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | no | Nombre del procesador. | +| `is_enabled` | Booleano | no | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | Sí | Matriz de atributos de origen. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Reasignador de estados de logs + +Utiliza el procesador de reasignación de estados para asignar atributos como estado oficial a tus logs. Por ejemplo, añade un nivel de gravedad de log a tus logs con el reasignador de estado. + +{{< img src="logs/processing/processors/log_post_severity_bis.png" alt="Nivel de gravedad del log tras la reasignación" style="width:40%;" >}} + +Cada valor de estado entrante se asigna de la siguiente manera: + +* Los números enteros de 0 a 7 asignan según las [normas de gravedad de syslog][4]. +* Las cadenas que empiezan por **emerg** o **f** (sin distinción entre mayúsculas y minúsculas) asignan a **emerg (0)**. +* Las cadenas que empiezan por **a** (sin distinción entre mayúsculas y minúsculas) asignan a **alert (1)**. +* Las cadenas que empiezan por **c** (sin distinción entre mayúsculas y minúsculas) asignan a **critical (2)**. +* Las cadenas que empiezan por **e** (sin distinción entre mayúsculas y minúsculas) que no coinciden con `emerg` asignan a **error (3)** +* Las cadenas que empiezan por **w** (sin distinción entre mayúsculas y minúsculas) asignan a **warning (4)**. +* Las cadenas que empiezan por **n** (sin distinción entre mayúsculas y minúsculas) asignan a **notice (5)**. +* Las cadenas que empiezan por **i** (sin distinción entre mayúsculas y minúsculas) asignan a **info (6)**. +* Las cadenas que empiezan por **d**, **t**, **v**, **trace** o **verbose** (sin distinción entre mayúsculas y minúsculas) asignan a **debug (7)**. +* Las cadenas que empiezan por **o** o **s**, o que coinciden con **OK** o **Success** (sin distinción entre mayúsculas y minúsculas) asignan a **OK**. +* Todos los demás se asignan a **info (6)**. + +**Nota**: Si se aplican varios procesadores de reasignación de estado de log a un determinado log del pipeline, sólo se tendrá en cuenta el primero (según el orden del pipeline). + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador de reasignación de estados de logs en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/severity_remapper.png" alt="Reasignación de la gravedad de logs" style="width:60%;" >}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del reasignador de estados de logs: + +```json +{ + "type": "status-remapper", + "name": "Define como el estado oficial del log", + "is_enabled": true, + "sources": [""] +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|-------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | Sí | Matriz de atributos de origen. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Reasignador de servicios + +El procesador de reasignación de servicios asigna uno o más atributos a tus logs como servicio oficial. + +**Nota**: Si se aplican varios procesadores de reasignación de servicios a un determinado log del pipeline, sólo se tendrá en cuenta el primero (según el orden del pipeline). + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador de reasignación de servicios de logs en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/service_remapper.png" alt="Procesador de reasignación de servicios" style="width:80%;" >}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del reasignador de servicios de logs: + +```json +{ + "tipo": "servicio-remapper", + "name": "Define como servicio oficial del log", + "is_enabled": true, + "sources": [""] +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|-------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | Sí | Matriz de atributos de origen. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Reasignador de mensajes de logs + +`message` es un atributo clave en Datadog. Su valor se muestra en la columna **Content** (Contenido) del Explorador de los para proporcionar contexto sobre el log. Puedes utilizar la barra de búsqueda para encontrar un log mediante el mensaje del log. + +Utiliza el procesador de reasignación de mensajes de logs para definir uno o más atributos como mensaje oficial del log. Define más de un atributo para los casos en los que los atributos no existan y haya una alternativa disponible. Por ejemplo, si los atributos de mensaje definidos son `attribute1`, `attribute2` y `attribute3`, y `attribute1` no existe, se utiliza `attribute2`. Del mismo modo, si `attribute2` no existe, se utiliza `attribute3`. + +Para definir los atributos de los mensajes, utiliza primero el [procesador de creación de cadenas](#string-builder-processor) para crear un nuevo atributo de cadena para cada uno de los atributos que quieras utilizar. A continuación, utiliza el reasignador de mensajes de logs para reasignar los atributos de cadena como mensaje. + +**Nota**: Si se aplican varios procesadores de reasignación de mensajes de logs a un determinado log del pipeline, sólo se tendrá en cuenta el primero (según el orden del pipeline). + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador de reasignación de mensajes de logs en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/message_processor.png" alt="Procesador de mensajes" style="width:80%;">}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del reasignador de mensajes de logs: + +```json +{ + "type": "message-remapper", + "name": "Define como mensaje oficial del log", + "is_enabled": true, + "sources": ["msg"] +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|-------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | Sí | Matriz de atributos de origen. Por defecto: `msg`. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Reasignador + +El procesador de reasignación reasigna cualquier atributo o etiqueta de origen a otro atributo u otra etiqueta de destino. Por ejemplo, reasigna `user` por `firstname` para dirigir tus logs en el Explorador de logs: + +{{< img src="logs/procesar/processors/attribute_post_remapping.png" alt="Atributo tras la reasignación" style="width:60%;">}} + +Las restricciones de nombre de etiquetas/atributos se explican en la [documentación sobre atributos y etiquetas][5]. Algunas restricciones adicionales, aplicadas como `:` o `,`, no están permitidas en los nombres de etiquetas/atributos de destino. + +Si el objetivo del reasignador es un atributo, el reasignador también puede intentar convertir el valor a un nuevo tipo (`String`, `Integer` o `Double`). Si la conversión no es posible, se conserva el tipo original. + +**Nota**: El separador decimal para `Double` debe ser `.`. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador de reasignación en la [página de **Pipelines**][1]. Por ejemplo, reasigna `user` a `user.firstname`. + +{{< img src="logs/log_configuration/processor/remapper.png" alt="Procesador de reasignación de atributos" style="width:80%;" >}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del reasignador: + +```json +{ + "type": "attribute-remapper", + "name": "Remap to ", + "is_enabled": true, + "source_type": "attribute", + "sources": [""], + "target": "", + "target_type": "tag", + "target_format": "integer", + "preserve_source": false, + "override_on_conflict": false +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|------------------------|------------------|----------|--------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `source_type` | Cadena | No | Define si la fuente es el `attribute` o la `tag` del log. Por defecto: `attribute`. | +| `sources` | Matriz de cadenas | Sí | Matriz de atributos o etiquetas de origen | +| `target` | Cadena | Sí | Nombre final de atributo o etiqueta al que reasignar las fuentes. | +| `target_type` | Cadena | No | Define si el objetivo es el `attribute` o la `tag` del log. Por defecto: `attribute`. | +| `target_format` | Cadena | No | Define si el valor del atributo debe convertirse a otro tipo. Valores posibles: `auto`, `string` o `integer`. Valor por defecto: `auto`. Si se configura como `auto`, no se aplica ninguna conversión. | +| `preserve_source` | Booleano | No | Elimina o conserva el elemento de origen reasignado. Por defecto: `false`. | +| `override_on_conflict` | Booleano | No | Anula o no el elemento de destino, si ya está configurado. Por defecto: `false`. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Analizador de URL + +El procesador del analizador de URL extrae los parámetros de consulta y otros parámetros importantes de una URL. Cuando está configurado, se generan los siguientes atributos: + +{{< img src="logs/procesar/processors/url_processor.png" alt="Procesador de URL" style="width:80%;" >}} + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador del analizador de URL en la [página **Pipelines**][1]: + +{{< img src="logs/procesar/processors/url_processor.png" alt="Cuadro del procesador de URL" style="width:80%;" >}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +```json +{ + "type": "url-parser", + "name": "Analiza la URL del atributo http.url.", + "is_enabled": true, + "sources": ["http.url"], + "target": "http.url_details" +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|----------------------------------------------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | No | Matriz de atributos de origen. Por defecto: `http.url`. | +| `target` | Cadena | Sí | Nombre del atributo principal que contiene todos los detalles extraídos de `sources`. Por defecto: `http.url_details`. | + +{{% /tab %}} +{{< /tabs >}} + +## Analizador del agente de usuario + +El procesador del analizador del agente de usuario toma un atributo `useragent` y extrae datos del sistema operativo, del navegador, del dispositivo y otros datos del usuario. Cuando está configurado, se generan los siguientes atributos: + +{{< img src="logs/procesar/processors/useragent_processor.png" alt="Procesador de agente de usuario" style="width:80%;">}} + +**Nota**: Si tus logs contienen agentes de usuario codificados (por ejemplo, logs IIS), configura este procesador para **decodificar la URL** antes del análisis. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador del agente de usuario en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/useragent_processor.png" alt="Cuadro del procesador de agente de usuario" style="width:80%;" >}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del analizador de agente de usuario: + +```json +{ + "type": "user-Agent-parser", + "name": "Analiza para extraer toda su información de agente de usuario", + "is_enabled": true, + "sources": ["http.useragent"], + "target": "http.useragent_details", + "is_encoded": false +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|-----------------------------------------------------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | No | Matriz de atributos de origen. Por defecto: `http.useragent`. | +| `target` | Cadena | Sí | Nombre del atributo principal que contiene todos los detalles extraídos de `sources`. Por defecto: `http.useragent_details`. | +| `is_encoded` | Booleano | No | Define si el atributo de origen está codificado con URL o no. Por defecto: `false`. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Procesador de categorías + +Utiliza el procesador de categorías para añadir un nuevo atributo (sin espacios ni caracteres especiales en el nombre del nuevo atributo) a un log que coincida con una consulta de búsqueda proporcionada. A continuación, utiliza categorías para crear grupos para una vista analítica (por ejemplo, grupos de URL, grupos de máquinas, entornos, y buckets de tiempos de respuesta). + +**Notas**: + +* La sintaxis de la consulta es la que aparece en la barra de búsqueda del [Explorador de logs][6]. Esta consulta puede hacerse sobre cualquier atributo o etiqueta de log, sea o no una faceta. También se pueden utilizar comodines en la consulta. +* Una vez que el log ha coincidido con una de las consultas del procesador, se detiene. Asegúrate de que estén bien ordenados, en caso de que un log pueda coincidir con varias consultas. +* Los nombres de las categorías deben ser únicos. +* Una vez definidas las categorías en el procesador de categorías, puedes asignarlas al estado del log utilizando el [Reasignador de estados de logs](#log-status-remapper). + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador de categorías en la [página **Pipelines**][1]. Por ejemplo, para categorizar tus logs de acceso web basándote en el valor del rango de código de estado (`"OK" for a response code between 200 and 299, "Notice" for a response code between 300 and 399, ...`), añade este procesador: + +{{< img src="logs/log_configuration/processor/category_processor.png" alt="Procesador de categorías" style="width:80%;" >}} + +Este procesador genera el siguiente resultado: + +{{< img src="logs/log_configuration/processor/category_processor_result.png" alt="Resultado del procesador de categorías" style="width:80%;" >}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del procesador de categorías: + +```json +{ + "tipo": "category-processor", + "name": "Asigna un valor personalizado al atributo ", + "is_enabled": true + "categories": [ + {"filter": {"query": ""}, "name": ""}, + {"filter": {"query": ""}, "name": ""} + ], + "target": "" +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|-----------------|----------|------------------------------------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false` | +| `categories` | Matriz de objetos | Sí | Matriz de filtros para hacer coincidir o no un log y su `name` correspondiente, para asignar un valor personalizado al log. | +| `target` | Cadena | Sí | Nombre del atributo de destino cuyo valor está definido por la categoría coincidente. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Procesador aritmético + +Utiliza el procesador aritmético para añadir un nuevo atributo (sin espacios ni caracteres especiales en el nombre del nuevo atributo) a un log con el resultado de la fórmula proporcionada. Esto reasigna diferentes atributos de tiempo con diferentes unidades en un único atributo, o computa operaciones en atributos del mismo log. + +Una fórmula de procesador aritmético puede utilizar paréntesis y operadores aritméticos básicos: `-`, `+`, `*`, `/`. + +Por defecto, si falta un atributo se omite un cálculo. Selecciona *Replace missing attribute by 0* (Sustituir atributo omitido por 0) para rellenar automáticamente los valores de atributos omitidos con 0 y asegurarte de que se realiza el cálculo. + +**Notas**: + +* Un atributo puede aparecer como ausente, si no se encuentra en los atributos del log o si no puede convertirse en un número. +* Cuando se utiliza el operador `-`, añade espacios antes y después, ya que los nombres de atributos como `start-time` pueden contener guiones. Por ejemplo, la siguiente fórmula debe incluir espacios espacios antes y después del operador `-`: `(end-time - start-time) / 1000`. +* Si el atributo de destino ya existe, se sobrescribe con el resultado de la fórmula. +* Los resultados se redondean al noveno decimal. Por ejemplo, si el resultado de la fórmula es `0.1234567891`, el valor real almacenado para el atributo es `0.123456789`. +* Si necesitas escalar una unidad de medida, utiliza el filtro para escalas. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador aritmético en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/arithmetic_processor.png" alt="Procesador aritmético" style="width:80%;">}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del procesador aritmético: + +```json +{ + "type": "arithmetic-processor", + "name": "", + "is_enabled": true, + "expression": "", + "target": "", + "is_replace_missing": false +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|----------------------|---------|----------|----------------------------------------------------------------------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `expression` | Cadena | Sí | Operación aritmética entre uno o varios atributos de logs. | +| `target` | Cadena | Sí | Nombre del atributo que contiene el resultado de la operación aritmética. | +| `is_replace_missing` | Booleano | No | Si `true`, sustituye todos los atributos que faltan de `expression` por 0, `false` omite la operación si falta un atributo. Por defecto: `false`. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Procesador del creador de cadenas + +Utilice el procesador del creador de cadenas para añadir un nuevo atributo (sin espacios ni caracteres especiales) a una log con el resultado de la plantilla proporcionada. Esto permite agregar diferentes atributos o cadenas sin procesar en un único atributo. + +La plantilla está definida tanto por texto sin formato como por bloques con la sintaxis `%{attribute_path}`. + +**Notas**: + +* Este procesador sólo acepta atributos con valores o una matriz de valores en el bloque (consulta los ejemplos de la sección de la interfaz de usuario a continuación). +* Si no se puede utilizar un atributo (objeto o matriz de objetos), se sustituye por una cadena vacía o se omite toda la operación en función de tu selección. +* Si ya existe un atributo de destino, se sobrescribe con el resultado de la plantilla. +* Los resultados de una plantilla no pueden superar los 256 caracteres. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador del creador de cadenas en la [página **Pipelines**][1]: + +{{< img src="logs/log_configuration/processor/stringbuilder_processor.png" alt="Procesador del creador de cadenas" style="width:80%;">}} + +Con el siguiente log, utiliza la plantilla `Request %{http.method} %{http.url} was answered with response %{http.status_code}` para devolver un resultado. Por ejemplo: + + +```json +{ + "http": { + "method": "GET", + "status_code": 200, + "url": "https://app.datadoghq.com/users" + }, + "array_ids": [123, 456, 789], + "array_users": [ + {"first_name": "John", "last_name": "Doe"}, + {"first_name": "Jack", "last_name": "London"} + ] +} +``` + +Devuelve lo siguiente: + +```text +La solicitud GET https://app.datadoghq.com/users ha sido respondida con 200 +``` + +**Nota**: `http` es un objeto y no puede utilizarse en un bloque (`%{http}` falla), mientras que `%{http.method}`, `%{http.status_code}` o `%{http.url}` devuelven el valor correspondiente. Los bloques pueden utilizarse en matrices de valores o en un atributo específico de una matriz. + +* Por ejemplo, añadir el bloque `%{array_ids}` devuelve: + + ```text + 123,456,789 + ``` + +* `%{array_users}` no devuelve nada porque es una lista de objetos. Sin embargo, `%{array_users.first_name}` devuelve una lista de los `first_name` contenidos en la matriz: + + ```text + John,Jack + ``` + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del procesador del creador de cadenas: + +```json +{ + "type": "string-builder-processor", + "name": "", + "is_enabled": true, + "template": "", + "target": "", + "is_replace_missing": true +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|----------------------|---------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si el procesador está habilitado o no, por defecto es `false`. | +| `template` | Cadena | Sí | Una fórmula con uno o más atributos y texto sin formato. | +| `target` | Cadena | Sí | El nombre del atributo que contiene el resultado de la plantilla. | +| `is_replace_missing` | Booleano | No | Si es `true`, sustituye todos los atributos que faltan de `template` por una cadena vacía. Si es `false`, omite la operación para los atributos que faltan. Por defecto: `false`. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Analizador GeoIP + +El analizador GeoIP toma un atributo de una dirección IP y extrae información de continente, país, subdivisión o ciudad (si está disponible) en la ruta del atributo de destino. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +{{< img src="logs/log_configuration/processor/geoip_processor.png" alt="Procesador GeoIP" style="width:80%;">}} + +La mayoría de los elementos contienen un atributo `name` y `iso_code` (o `code` para continente). `subdivision` es el primer nivel de subdivisión que utiliza el país, como "Estados" para Estados Unidos o "Departamentos" para Francia. + +Por ejemplo, el analizador GeoIP extrae una localización del atributo `network.client.ip` y lo almacena en el atributo `network.client.geoip`: + +{{< img src="logs/log_configuration/processor/geoip_example_blurred.png" alt="Ejemplo de GeoIP" style="width:60%;">}} + +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del analizador GeoIP: + +```json +{ + "type": "geo-ip-parser", + "name": "Analiza los elementos de geolocalización del atributo network.client.ip", + "is_enabled": true, + "sources": ["red.client.ip"], + "target": "red.client.geoip" +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|---------------------------------------------------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | No | Matriz de atributos de origen. Por defecto: `network.client.ip`. | +| `target` | Cadena | Sí | Nombre del atributo principal que contiene todos los detalles extraídos de `sources`. Por defecto: `network.client.geoip`. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Procesador de búsqueda + +Utiliza el procesador de búsqueda para definir una reasignación entre un atributo de log y un valor legible por el ser humano guardado en una [tabla de referencia][1] o en la tabla de asignación de procesadores. + +Por ejemplo, puedes utilizar el procesador de búsqueda para asignar un ID interno de servicio a un nombre de servicio legible por el ser humano. También puedes utilizarlo para comprobar si la dirección MAC que acaba de intentar conectarse al entorno de producción pertenece a tu lista de máquinas robadas. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +El procesador de búsqueda realiza las siguientes acciones: + +* Comprueba si el log actual contiene el atributo de origen. +* Comprueba si el valor del atributo de origen existe en la tabla de asignación. + * Si existe, crea el atributo de destino con el valor correspondiente en la tabla. + * Opcionalmente, si no encuentra el valor en la tabla de asignación, crea un atributo de destino con el valor auxiliar predeterminado, configurado en el campo `fallbackValue`. Puedes introducir manualmente una lista de pares `source_key,target_value` o cargar un archivo CSV en la pestaña **Manual Mapping** (Asignación manual). + + {{< img src="logs/log_configuration/processor/lookup_processor_manual_mapping.png" alt="Procesador de búsqueda" style="width:80%;">}} + + El límite de tamaño de la tabla de asignaciones es de 100 Kb. Este límite se aplica a todos los procesadores de consulta de la plataforma. Sin embargo, las tablas de referencia admiten archivos de mayor tamaño. + + * Opcionalmente, si no encuentra el valor en la tabla de asignaciones, crea un atributo de destino con el valor de la tabla de referencia. Puedes seleccionar un valor para una [tabla de referencias][101] en la pestaña **Reference Table** (Tabla de referencias). + + {{< img src="logs/log_configuration/processor/lookup_processor_reference_table.png" alt="Procesador de búsqueda" + style="width:80%;">}} + + +[101]: /es/integrations/guide/reference-tables/ + +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del procesador de búsqueda: + +```json +{ + "type": "lookup-processor", + "name": "", + "is_enabled": true, + "source": "", + "target": "", + "lookup_table": ["key1,value1", "key2,value2"], + "default_lookup": "" +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|------------------|------------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | Sí | Si el procesador está habilitado o no. Por defecto: `false`. | +| `source` | Cadena | Sí | Atributo de origen utilizado para realizar la búsqueda. | +| `target` | Cadena | Sí | Nombre del atributo que contiene el valor correspondiente en la lista de asignaciones o la `default_lookup` si no se encuentra en la lista de asignaciones. | +| `lookup_table` | Matriz de cadenas | Sí | Tabla de asignación de valores para el atributo de origen y sus valores de atributo de destino asociados, con el formato [ "source_key1,target_value1", "source_key2,target_value2" ]. | +| `default_lookup` | Cadena | No | Valor para configurar el atributo de destino, si no se encuentra el valor de origen en la lista. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +## Reasignador de trazas + +Existen dos formas de mejorar la correlación entre trazas y logs de aplicaciones: + +1. Sigue la documentación sobre [cómo inyectar un ID de rastreo en logs de aplicaciones][8]. Por defecto, las integraciones de logs se encargan del resto de la configuración. + +2. Utilice el procesador del reasignador de trazas para definir un atributo de log como su ID de rastreo asociado. + +{{< tabs >}} +{{% tab "UI" (IU) %}} + +Define el procesador del reasignador de trazas en la [página **Pipelines**][1]. Introduce la ruta de atributo del ID de rastreo en el cuadro del procesador, de la siguiente manera: + +{{< img src="logs/log_configuration/processor/trace_processor.png" alt="Procesador del ID de rastreo" style="width:80%;">}} + +[1]: https://app.datadoghq.com/logs/pipelines +{{% /tab %}} +{{% tab "API" %}} + +Utiliza el [endpoint de API de pipeline para logs de Datadog][1] con la siguiente carga útil JSON del reasignador de trazas: + +```json +{ + "type": "rastrear-id-remapper", + "name": "Define dd.trace_id como id de rastreo oficial asociado a este log", + "is_enabled": true, + "sources": ["dd.trace_id"] +} +``` + +| Parámetro | Tipo | Obligatorio | Descripción | +|--------------|------------------|----------|--------------------------------------------------------| +| `type` | Cadena | Sí | Tipo de procesador. | +| `name` | Cadena | No | Nombre del procesador. | +| `is_enabled` | Booleano | No | Si los procesadores están habilitados o no. Por defecto: `false`. | +| `sources` | Matriz de cadenas | No | Matriz de atributos de origen. Por defecto: `dd.trace_id`. | + +[1]: /es/api/v1/logs-pipelines/ +{{% /tab %}} +{{< /tabs >}} + +**Nota**: rastrear Los ID de rastreo y de tramo (span) no se muestran en tus logs o en tus atributos de logs en la interfaz de usuario. + +## Leer más + +{{< partial name="whats-next/whats-next.html" >}} + +
+*Logging without Limits es una marca registrada de Datadog, Inc. + +[1]: /es/logs/log_configuration/pipelines/ +[2]: /es/logs/log_configuration/parsing/ +[3]: /es/logs/log_configuration/parsing/?tab=matchers#parsing-dates +[4]: https://en.wikipedia.org/wiki/Syslog#Severity_level +[5]: /es/logs/log_collection/?tab=host#attributes-and-tags +[6]: /es/logs/search_syntax/ +[7]: /es/integrations/guide/reference-tables/ +[8]: /es/tracing/other_telemetry/connect_logs_and_traces/ \ No newline at end of file diff --git a/content/fr/containers/cluster_agent/commands.md b/content/fr/containers/cluster_agent/commands.md index cb5f22d696144..bb7ee1e7baf4a 100644 --- a/content/fr/containers/cluster_agent/commands.md +++ b/content/fr/containers/cluster_agent/commands.md @@ -34,22 +34,83 @@ Voici les commandes disponibles pour les Agents de cluster de Datadog : `datadog-cluster-agent flare ` : Tout comme l'Agent de nœud, l'Agent de cluster peut agréger les logs et les configurations utilisés et transmettre une archive à l'équipe d'assistance. Ils peuvent également être condensés et utilisés localement. **Remarque :** cette commande est exécutée depuis le pod de l'Agent de cluster. -## Options de l'Agent de cluster +## Variables dʼenvironnement de lʼAgent de cluster + +{{< tabs >}} +{{% tab "Datadog Operator" %}} +Définir les variables dʼenvironnement de lʼAgent de cluster sous `override.clusterAgent.env` : + +{{< code-block lang="yaml" filename="datadog-agent.yaml" >}} +apiVersion: datadoghq.com/v2alpha1 +kind: DatadogAgent +metadata: + name: datadog +spec: + override: + clusterAgent: + env: + - name: + value: +{{< /code-block >}} + +{{% /tab %}} +{{% tab "Helm" %}} +Définir les variables dʼenvironnement de lʼAgent de cluster sous `clusterAgent.env`: +{{< code-block lang="yaml" filename="datadog-values.yaml" >}} +clusterAgent: + env: + - name: + value: +{{< /code-block >}} + +{{% /tab %}} +{{< /tabs >}} Les variables d'environnement suivantes sont prises en charge : `DD_API_KEY` : Votre [clé d'API Datadog][1]. +`DD_CLUSTER_CHECKS_ENABLED` +: Active les checks de cluster avec Autodiscovery. Valeur par défaut : `false`. + +`DD_CLUSTER_AGENT_AUTH_TOKEN` +: Token de 32 caractères qui doit être partagé entre l'Agent de nœud et l'Agent de cluster Datadog. + +`DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME` +: Nom du service Kubernetes via lequel les Agents de cluster sont exposés. Valeur par défaut : `datadog-cluster-agent`. + +`DD_CLUSTER_NAME` +: Nom du cluster. Il est ajouté en tant que tag d'instance sur toutes les configurations de check de cluster. + +`DD_CLUSTER_CHECKS_ENABLED` +: Lorsque la valeur est true, active la logique de distribution sur lʼAgent de cluster leader. Valeur par défaut : `false`. + +`DD_CLUSTER_CHECKS_NODE_EXPIRATION_TIMEOUT` +: Période (en secondes) après laquelle les Agents de nœud sont considérés comme défaillants et sont supprimés du pool. Valeur par défaut : `30` secondes. + +`DD_CLUSTER_CHECKS_WARMUP_DURATION` +: Délai (en secondes) entre l'acquisition du leadership et le démarrage de la logique de check de cluster. Permet à tous les Agents basés de nœud de s'enregistrer en premier. Valeur par défaut : `30` secondes. + +`DD_CLUSTER_CHECKS_CLUSTER_TAG_NAME` +: 65%match +Nom du tag d'instance défini avec l'option `DD_CLUSTER_NAME`. Valeur par défaut : `cluster_name`. + +`DD_CLUSTER_CHECKS_EXTRA_TAGS` +: Ajoute des tags supplémentaires aux métriques de checks de cluster. + +`DD_CLUSTER_CHECKS_ADVANCED_DISPATCHING_ENABLED` +: Lorsque la valeur est true, lʼAgent de cluster leader recueille les statistiques des exécuteurs de checks au niveau du cluster afin d'optimiser la logique de répartition des checks. Valeur par défaut : `false`. + +`DD_CLUSTER_CHECKS_CLC_RUNNERS_PORT` +: Le port utilisé par le client de lʼAgent de cluster pour atteindre les exécuteurs de checks au niveau du cluster et collecter leurs statistiques. Valeur par défaut : `5005`. + `DD_HOSTNAME` : Hostname à utiliser pour l'Agent de cluster Datadog. `DD_ENV` : Permet de définir le tag `env` pour les données émises par l'Agent de cluster. Uniquement recommandé lorsque l'Agent de cluster surveille des services dans un seul environnement. -`DD_CLUSTER_AGENT_CMD_PORT` -: Port devant être utilisé par l'Agent de cluster Datadog. Valeur par défaut : `5005`. - `DD_USE_METADATA_MAPPER` : Active le mappage des métadonnées de cluster. Valeur par défaut : `true`. @@ -62,23 +123,17 @@ Les variables d'environnement suivantes sont prises en charge : `DD_LEADER_LEASE_DURATION` : Utilisé seulement si l'élection de leader est activée. Valeur par défaut : 60 secondes. -`DD_CLUSTER_AGENT_AUTH_TOKEN` -: Token de 32 caractères qui doit être partagé entre l'Agent de nœud et l'Agent de cluster Datadog. - `DD_KUBE_RESOURCES_NAMESPACE` : Configure l'espace de nommage où l'Agent de cluster crée les ConfigMaps nécessaires pour l'élection de leader, la collecte d'événements (facultative) et l'autoscaling des pods horizontaux. -`DD_CLUSTER_AGENT_KUBERNETES_SERVICE_NAME` -: Nom du service Kubernetes via lequel les Agents de cluster sont exposés. Valeur par défaut : `datadog-cluster-agent`. - `DD_KUBERNETES_INFORMERS_RESYNC_PERIOD` : Fréquence (en secondes) des interrogations du serveur d'API afin de resynchroniser le cache local. La valeur par défaut est de 5 minutes, soit `300` secondes. `DD_KUBERNETES_INFORMERS_RESTCLIENT_TIMEOUT` : Délai d'expiration (en secondes) de la communication du client avec le serveur d'API. Valeur par défaut : 60 secondes. -`DD_EXPVAR_PORT` -: Port à utiliser pour la récupération des variables publiques [expvar][3] à partir de l'Agent de cluster Datadog. Valeur par défaut : `5000`. +`DD_METRICS_PORT` +: Port devant être utilisé pour exposer les métriques de l'Agent de cluster Datadog. Valeur par défaut : `5000`. `DD_EXTERNAL_METRICS_PROVIDER_BATCH_WINDOW` : Délai d'attente (en secondes) pour traiter un lot de métriques provenant de plusieurs Autoscalers. Valeur par défaut : `10` secondes. @@ -95,31 +150,12 @@ Les variables d'environnement suivantes sont prises en charge : `DD_EXTERNAL_METRICS_LOCAL_COPY_REFRESH_RATE` : Fréquence de resynchronisation du cache local des métriques traitées avec le stockage global. Utile lorsqu'il existe plusieurs réplicas de l'Agent de cluster. -`DD_CLUSTER_CHECKS_ENABLED` -: Active les checks de cluster avec Autodiscovery. Valeur par défaut : `false`. - `DD_EXTRA_CONFIG_PROVIDERS` : Fournisseurs de configuration Autodiscovery supplémentaires à utiliser. `DD_EXTRA_LISTENERS` : Écouteurs Autodiscovery supplémentaires à exécuter. -`DD_CLUSTER_NAME` -: Nom du cluster. Il est ajouté en tant que tag d'instance sur toutes les configurations de check de cluster. - -`DD_CLUSTER_CHECKS_CLUSTER_TAG_NAME` -: 65%match -Nom du tag d'instance défini avec l'option `DD_CLUSTER_NAME`. Valeur par défaut : `cluster_name`. - -`DD_CLUSTER_CHECKS_NODE_EXPIRATION_TIMEOUT` -: Période (en secondes) après laquelle les Agents de nœud sont considérés comme défaillants et sont supprimés du pool. Valeur par défaut : `30` secondes. - -`DD_CLUSTER_CHECKS_WARMUP_DURATION` -: Délai (en secondes) entre l'acquisition du leadership et le démarrage de la logique de check de cluster. Permet à tous les Agents basés de nœud de s'enregistrer en premier. Valeur par défaut : `30` secondes. - -`DD_CLUSTER_CHECKS_EXTRA_TAGS` -: Ajoute des tags supplémentaires aux métriques de checks de cluster. - `DD_PROXY_HTTPS` : Définit un serveur proxy pour les requêtes HTTPS. @@ -129,6 +165,12 @@ Nom du tag d'instance défini avec l'option `DD_CLUSTER_NAME`. Valeur par défau `DD_PROXY_NO_PROXY` : Définit une liste de hosts qui doivent ignorer le proxy. La liste est séparée par des espaces. +`DD_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_INIT_RESOURCES_CPU` +: Configure la demande et la limite de CPU pour les conteneurs init. + +`DD_ADMISSION_CONTROLLER_AUTO_INSTRUMENTATION_INIT_RESOURCES_MEMORY` +: Configure la demande en mémoire et la limite de CPU pour les conteneurs init. + ## Pour aller plus loin {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/fr/containers/troubleshooting/hpa.md b/content/fr/containers/troubleshooting/hpa.md new file mode 100644 index 0000000000000..d29fead422bfc --- /dev/null +++ b/content/fr/containers/troubleshooting/hpa.md @@ -0,0 +1,127 @@ +--- +further_reading: +- link: https://www.datadoghq.com/blog/datadog-cluster-agent/ + tag: Blog + text: Présentation de l'Agent de cluster Datadog +- link: /containers/guide/cluster_agent_autoscaling_metrics + tag: Documentation + text: Mettre à l'échelle vos charges de travail Kubernetes en fonction d'une métrique + Datadog +title: Dépannage de métriques custom Server et HPA +--- + +## Commandes status et flare de l'Agent de cluster + +Si vous rencontrez des difficultés avec votre serveur de métriques custom : + +* Vérifiez que la couche agrégation et les certificats sont bien configurés. +* Assurez-vous que les métriques utilisées pour l'autoscaling sont disponibles. Lorsque vous créez le HPA (Horizontal Pod Autoscaler), l'Agent de cluster Datadog analyse le manifeste et envoie une requête à Datadog pour tenter de récupérer la métrique. Si le nom de la métrique n'est pas correct ou que la métrique n'existe pas dans votre compte Datadog, l'erreur suivante est générée : + + ```text + 2018-07-03 13:47:56 UTC | ERROR | (datadogexternal.go:45 in queryDatadogExternal) | Returned series slice empty + ``` + +Exécutez la commande `agent status` pour afficher le statut du fournisseur de métriques externes : + +```text + Custom Metrics Provider + ======================= + External Metrics + ================ + ConfigMap name: datadog-hpa + Number of external metrics detected: 2 +``` + +Les erreurs liées au fournisseur de métriques externes s'affichent lorsque vous exécutez cette commande. Si vous souhaitez obtenir des informations plus détaillées, exécutez la commande flare : `agent flare`. + +La commande flare génère un fichier zip contenant le fichier `custom-metrics-provider.log`. Son contenu ressemble à ceci : + +```text + Custom Metrics Provider + ======================= + External Metrics + ================ + ConfigMap name: datadog-hpa + Number of external metrics detected: 2 + + hpa: + - name: nginxext + - namespace: default + labels: + - cluster: eks + metricName: redis.key + ts: 1532042322 + valid: false + value: 0 + + hpa: + - name: nginxext + - namespace: default + labels: + - dcos_version: 1.9.4 + metricName: docker.mem.limit + ts: 1.532042322 + valid: true + value: 268435456 +``` + +Si le flag de la métrique `Valid` est défini sur `false`, la métrique n'est pas prise en compte dans le pipeline de l'Autoscaler de pods horizontaux. + +## Description du manifeste du HPA + +Si le message suivant apparaît lors de la description du manifeste du HPA : + +```text +Conditions: + Type Status Reason Message + ---- ------ ------ ------- + AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale + ScalingActive False FailedGetExternalMetric the HPA was unable to compute the replica count: unable to get external metric default/nginx.net.request_per_s/&LabelSelector{MatchLabels:map[string]string{kube_container_name: nginx,},MatchExpressions:[],}: unable to fetch metrics from external metrics API: the server could not find the requested resource (get nginx.net.request_per_s.external.metrics.k8s.io) + +``` + +Alors la configuration RBAC ou la connectivité du service pour le fournisseur de métriques n'est probablement pas correcte. Assurez-vous que `kubectl api-versions` renvoie ceci : + +```text +% kubectl get apiservices +NAME SERVICE AVAILABLE AGE +... +v1beta1.external.metrics.k8s.io default/datadog-cluster-agent-metrics-api True 57s +``` + +Les métriques externes du service dʼAPI s'affiche avec `true` si le service dʼAPI, le service et le mappage de port dans le pod correspondent tous. De même, l'adresse de lʼAgent de cluster doit avoir les autorisations RBAC appropriées. Assurez-vous d'avoir créé les ressources à l'étape [Enregistrer le fournisseur de métriques externes][1]. + +Si l'erreur suivante s'affiche lorsque vous inspectez le manifeste du HPA : + +```text +Warning FailedComputeMetricsReplicas 3s (x2 over 33s) horizontal-pod-autoscaler failed to get nginx.net.request_per_s external metric: unable to get external metric default/nginx.net.request_per_s/&LabelSelector{MatchLabels:map[string]string{kube_container_name: nginx,},MatchExpressions:[],}: unable to fetch metrics from external metrics API: the server is currently unable to handle the request (get nginx.net.request_per_s.external.metrics.k8s.io) +``` + +Assurez-vous que l'Agent de cluster Datadog est en cours d'exécution et que le service qui expose le port `8443` (dont le nom est enregistré dans APIService) est disponible. + +## Différences de valeurs dans Datadog et dans Kubernetes + +Comme Kubernetes développe automatiquement vos ressources, le HPA prend une décision de mise à l'échelle basée sur la valeur de la métrique fournie par lʼAgent de cluster. LʼAgent de cluster demandera et stockera la valeur exacte de la métrique renvoyée par l'API Datadog. Si votre HPA utilise une cible avec `type: Value`, cette valeur de métrique exacte est fournie au HPA. Si votre HPA utilise `type: AverageValue`, cette valeur de métrique est divisée par le nombre actuel de répliques. + +C'est pourquoi vous pouvez voir des valeurs renvoyées ainsi : + +```text +% kubectl get datadogmetric +NAME ACTIVE VALID VALUE REFERENCES UPDATE TIME +example-metric True True 7 hpa:default/example-hpa 21s + +% kubectl get hpa +NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE +example-hpa Deployment/nginx 3500m/5 (avg) 1 3 2 24 +``` + +La valeur de `7` a été divisée par les répliques `2` pour obtenir la moyenne de `3.5`. Les deux types sont pris en charge par le HPA, il suffit de prendre en compte le type lors de la configuration de votre requête et de la valeur cible. Consultez le guide relatif à l[Agent de cluster pour obtenir des exemples de configuration][2]. + +*Remarque* : par défaut, l'Agent de cluster Datadog traite les métriques définies dans les différents manifestes du HPA et récupère les valeurs auprès de Datadog toutes les 30 secondes. De même, Kubernetes interroge l'Agent de cluster Datadog toutes les 30 secondes par défaut. Ce processus étant effectué de manière asynchrone, la règle ci-dessus ne s'applique pas systématiquement, en particulier si la métrique varie. Les deux fréquences sont toutefois paramétrables afin de limiter les problèmes éventuels. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/containers/guide/cluster_agent_autoscaling_metrics +[2]: /fr/containers/guide/cluster_agent_autoscaling_metrics/?tab=helm#value-vs-averagevalue-for-the-target-metric \ No newline at end of file diff --git a/content/fr/integrations/guide/aws-integration-troubleshooting.md b/content/fr/integrations/guide/aws-integration-troubleshooting.md index a66d492c43cfb..4cf2b3ad76aa0 100644 --- a/content/fr/integrations/guide/aws-integration-troubleshooting.md +++ b/content/fr/integrations/guide/aws-integration-troubleshooting.md @@ -58,26 +58,39 @@ Lors de l'installation de l'Agent sur un host AWS, il est possible que des hosts ### Métadonnées EC2 avec IMDS v2 -Dans la [configuration de votre Agent][5], si le paramètre `ec2_prefer_imdsv2` est défini sur `true` (valeur par défaut : `false`), l'Agent demande des métadonnées EC2 à l'aide de Service des métadonnées d'instance Version 2 (IMDSv2), qui offre un meilleur niveau de sécurité en ce qui concerne l'accès aux métadonnées. Dans certaines situations, une configuration supplémentaire peut être requise dans AWS. Par exemple, il est parfois nécessaire d'utiliser un Agent conteneurisé sur une instance EC2 standard. Consultez la rubrique [Passer à l'utilisation de Service des métadonnées d'instance Version 2][6] pour en savoir plus. +Dans certaines situations, la configuration du [IMDSv2][5] d'EC2 empêche à lʼAgent d'accéder aux métadonnées, ce qui le conduit à se rabattre sur le fournisseur de nom d'hôte `os` au lieu de `aws`, comme le montre la sortie de `agent status`. Dans les environnements conteneurisés, il est possible que l'endpoint de métadonnées EC2 soit verrouillé, en raison de l'attribution de rôles/identifiants IAM aux pods s'exécutant dans le cluster Kubernetes. Ces opérations sont généralement réalisées par les outils `Kube2IAM` et `kiam`. Pour corriger ce problème, modifiez votre configuration `Kube2IAM` ou `kiam` de façon à autoriser l'accès à cet endpoint. +L'API AWS permet de désactiver IMDSv1, que lʼAgent utilise par défaut. Si tel est le cas, mais si IMDSv2 est activé et accessible, définissez le paramètre `ec2_prefer_imdsv2` sur `true` (`false` par défaut) dans la [configuration de votre Agent][6]. Consultez la documentation [Transition to using Instance Metadata service Version 2][7] (en anglais) pour en savoir plus. + +IMDSv2, dans sa configuration par défaut, refuse les connexions dont le nombre de sauts IP est supérieur à un, c'est-à-dire les connexions qui sont passées par une adresse IP de passerelle. Cela peut poser des problèmes lorsque lʼAgent est exécuté dans un conteneur avec un réseau autre que celui du host, car le runtime fait passer le trafic du conteneur par une adresse IP de passerelle virtuelle. Cette situation est fréquente dans les déploiements dʼECS. Les options suivantes peuvent remédier à ce problème : + + * [Augmenter le nombre maximal de sauts pour atteindre au moins `2`][8]. Cela peut avoir des conséquences sur la sécurité des données stockées dans l'IMDS, car cela permet à des conteneurs autres que lʼAgent d'accéder également à ces données. + * Utiliser le hostname détecté par cloud-init, en [définissant `providers.eks.ec2.useHostnameFromFile` sur true][9]. + * Exécuter lʼAgent dans l'espace de nommage UTS du host, en [attribuant la valeur true à `agents.useHostNetwork`][10]. + + ## Tags -### Hosts conservant des tags AWS après la suppression de l'intégration AWS EC2 +### Hosts conservant des tags AWS après la suppression de l'intégration Amazon EC2 L'intégration AWS vous permet de recueillir des données depuis CloudWatch. Vous pouvez également installer l'Agent Datadog directement sur chaque instance EC2, afin de récupérer les données et les tags. Si vous utilisez ces deux approches pour recueillir des données, le backend de Datadog fusionne les données provenant de l'intégration et de l'Agent Datadog au sein d'un unique objet host. -Si vous avez supprimé l'intégration AWS, mais que vous continuez à exécuter l'Agent Datadog sur vos instances EC2, les hosts de votre compte Datadog possèdent toujours les anciens tags de host qui étaient recueillis depuis AWS. Ce comportement est intentionnel ; cela n'indique pas que l'intégration AWS ou AWS EC2 est toujours activée. +Si vous avez supprimé l'intégration AWS, mais que vous continuez à exécuter l'Agent Datadog sur vos instances EC2, les hosts de votre compte Datadog possèdent toujours les anciens tags de host qui étaient recueillis depuis AWS. Ce comportement est intentionnel ; cela n'indique pas que l'intégration AWS ou Amazon EC2 est toujours activée. Pour vérifier si l'intégration est activée, consultez la rubrique Apps Running du host en question depuis la liste d'infrastructures. Sinon, consultez la synthèse des métriques et créez un notebook basé sur votre host. -Si vous souhaitez supprimer définitivement les tags de host AWS d'un host, utilisez l'[endpoint Remove host tags][7]. +Si vous souhaitez supprimer définitivement les tags de host AWS d'un host, utilisez l'[endpoint de l'API Remove host tags][11]. [1]: /fr/integrations/amazon_web_services/ -[2]: /fr/integrations/faq/error-datadog-not-authorized-sts-assume-role/#pagetitle +[2]: /fr/integrations/guide/error-datadog-not-authorized-sts-assume-role/#pagetitle [3]: /fr/agent/ [4]: /fr/help/ -[5]: https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml -[6]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#instance-metadata-transition-to-version-2 -[7]: /fr/api/latest/tags/#remove-host-tags \ No newline at end of file +[5]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html +[6]: https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml +[7]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#instance-metadata-transition-to-version-2 +[8]: https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html +[9]: https://github.com/DataDog/helm-charts/blob/58bf52e4e342c79dbec95659458f7de8c5de7e6c/charts/datadog/values.yaml#L1683-L1688 +[10]: https://github.com/DataDog/helm-charts/blob/58bf52e4e342c79dbec95659458f7de8c5de7e6c/charts/datadog/values.yaml#L930-L937 +[11]: /fr/api/latest/tags/#remove-host-tags \ No newline at end of file diff --git a/content/fr/integrations/guide/mongo-custom-query-collection.md b/content/fr/integrations/guide/mongo-custom-query-collection.md index 61db87ff6640e..5bd24be7cdaf4 100644 --- a/content/fr/integrations/guide/mongo-custom-query-collection.md +++ b/content/fr/integrations/guide/mongo-custom-query-collection.md @@ -1,12 +1,15 @@ --- -title: Recueillir des métriques custom Mongo -kind: guide further_reading: - - link: /integrations/mongo/ - tag: Documentation - text: Intégration Datadog/Mongo +- link: /integrations/mongo/ + tag: Documentation + text: En savoir plus sur l'intégration MongoDB +kind: guide +title: Recueillir des métriques custom MongoDB --- -Pour recueillir des métriques custom avec l'intégration Datadog/Mongo, utilisez l'option `custom_queries` dans le fichier `conf.d/mongo.d/conf.yaml` à la racine du [répertoire de configuration de votre Agent][1]. Consultez le fichier d'exemple [mongo.d/conf.yaml][2] pour en savoir plus. + +## Présentation + +Pour recueillir des métriques custom avec l'intégration [Datadog/MongoDB][8], utilisez l'option `custom_queries` dans le fichier `conf.d/mongo.d/conf.yaml` à la racine du [répertoire de configuration de votre Agent][1]. Consultez le fichier d'exemple [mongo.d/conf.yaml][2] pour en savoir plus. ## Configuration @@ -14,6 +17,7 @@ Pour recueillir des métriques custom avec l'intégration Datadog/Mongo, utilise * **`metric_prefix`** : chaque métrique commence par le préfixe défini. * **`query`** : il s'agit de la requête [Mongo runCommand][3] à exécuter en tant qu'objet JSON. **Remarque** : l'Agent prend uniquement en charge les requêtes `count`, `find` et `aggregates`. +* **`database`** : Il s'agit de la base de données MongoDB à partir de laquelle les métriques sont collectées. * **`fields`** : option ignorée pour les requêtes `count`. Il s'agit d'une liste représentant chaque champ sans aucun ordre spécifique. Ignore les champs non spécifiés et manquants. Chaque `fields` doit comporter trois informations : * `field_name` : le nom du champ à partir duquel récupérer les données. * `name` : le suffixe ajouté à la valeur metric_prefix pour former le nom complet de la métrique. Si le `type` est `tag`, cette colonne est traitée en tant que tag et appliquée à chaque métrique recueillie par cette requête spécifique. @@ -23,7 +27,7 @@ Pour recueillir des métriques custom avec l'intégration Datadog/Mongo, utilise ## Exemples -Pour les exemples ci-dessous, la méthode de collecte mongo `user_collection` est utilisée : +Pour les exemples ci-dessous, la méthode de collecte Mongo `user_collection` est utilisée : ```text { name: "foo", id: 12345, active: true, age:45, is_admin: true} @@ -135,7 +139,7 @@ Cela génère une métrique `gauge` `mongo.example3.user.age` avec deux tags : ### Validation -Pour vérifier le résultat, recherchez les métriques à l'aide du [Metrics Explorer][5] : +Pour vérifier le résultat, recherchez les métriques à l'aide du [Metrics Explorer][5]. ### Debugging @@ -151,4 +155,5 @@ Pour vérifier le résultat, recherchez les métriques à l'aide du [Metrics Exp [4]: /fr/agent/guide/agent-commands/#restart-the-agent [5]: /fr/metrics/explorer/ [6]: /fr/agent/guide/agent-commands/#agent-status-and-information -[7]: /fr/agent/guide/agent-log-files/ \ No newline at end of file +[7]: /fr/agent/guide/agent-log-files/ +[8]: /fr/integrations/mongodb \ No newline at end of file diff --git a/content/fr/logs/guide/log-parsing-best-practice.md b/content/fr/logs/guide/log-parsing-best-practice.md index 966b1499fc393..57fa185bae6e2 100644 --- a/content/fr/logs/guide/log-parsing-best-practice.md +++ b/content/fr/logs/guide/log-parsing-best-practice.md @@ -1,19 +1,20 @@ --- -title: "Parsing de log\_: bonnes pratiques à adopter" -kind: guide aliases: - - /fr/logs/faq/log-parsing-best-practice +- /fr/logs/faq/log-parsing-best-practice further_reading: - - link: /logs/log_configuration/processors - tag: Documentation - text: Apprendre à traiter vos logs - - link: /logs/log_configuration/parsing - tag: Documentation - text: En savoir plus sur le parsing - - link: /logs/faq/how-to-investigate-a-log-parsing-issue/ - tag: FAQ - text: "Comment étudier un problème de parsing de log\_?" +- link: /logs/log_configuration/processors + tag: Documentation + text: Apprendre à traiter vos logs +- link: /logs/log_configuration/parsing + tag: Documentation + text: En savoir plus sur le parsing +- link: /logs/faq/how-to-investigate-a-log-parsing-issue/ + tag: FAQ + text: Comment étudier un problème de parsing de log ? +kind: guide +title: 'Parsing de log : bonnes pratiques à adopter' --- + Datadog vous permet de définir des parsers afin d'extraire toutes les informations pertinentes figurant dans vos logs. Consultez [notre documentation][1] pour en savoir plus sur le langage de parsing et sur ses applications. Cet article décrit comment procéder au parsing d'un log à partir du log du Collector de l'Agent Datadog : @@ -23,13 +24,13 @@ Cet article décrit comment procéder au parsing d'un log à partir du log du Co ``` 1. **Ajoutez toujours en commentaire à votre règle l'exemple de log sur lequel vous travaillez** : - {{< img src="logs/faq/parsing_best_practice_1.png" alt="bonne_pratique_parsing_1" >}} + {{< img src="logs/faq/parsing_best_practice_1.png" alt="bonne_pratique_parsing_1" >}} Il est possible de tester votre règle de parsing dans un exemple de log. Cet exemple simplifie la rédaction initiale de la règle et peut s'avérer utile si jamais vous cherchez à résoudre un problème ou à prendre en charge un nouveau format de log. 2. **Pour que le parsing ne cible qu'un seul attribut, utilisez l'astérisque (*) ** : - vous n'avez pas besoin de rédiger une règle de parsing du premier coup. Vérifiez un par un les attributs de votre règle en ajoutant un astérisque `.*` à la fin de la règle. Cela vous permet d'obtenir un résultat pour tout contenu suivant la fin de votre règle. + Il n'est pas nécessaire d'écrire une règle de parsing du log entier en une seule fois. Vérifiez un par un les attributs de votre règle en ajoutant un astérisque `.*` à la fin de la règle. Vous obtiendrez ainsi tous les résultats correspondant à la fin de votre règle. Ici, vous voulez par exemple parser la date du log, peu importe ce qui suit. Créez la règle ci-dessous : - {{< img src="logs/faq/parsing_best_practice_2.png" alt="bonne_pratique_parsing_2" >}} + {{< img src="logs/faq/parsing_best_practice_2.png" alt="bonne_pratique_parsing_2" >}} Vous savez alors que la date est parsée correctement. Vous pouvez maintenant passer à l'attribut suivant : la gravité. Vous devez commencer par échapper la barre verticale (il est obligatoire d'échapper les caractères spéciaux), puis faire correspondre le mot : {{< img src="logs/faq/parsing_best_practice_3.png" alt="bonne_pratique_parsing_3" >}} @@ -48,7 +49,7 @@ Cet article décrit comment procéder au parsing d'un log à partir du log du Co 4. **KeyValue** : sachez qu'il existe un filtre keyvalue vous permettant d'extraire automatiquement tous vos attributs. - Consultez [les exemples][3] pour en savoir plus + Consultez [nos exemples][3] pour en savoir plus. 5. **Ignorer une partie de votre message de log qui ne devrait pas être extraite en tant qu'attributs** : reprenons l'exemple : diff --git a/content/fr/metrics/explorer.md b/content/fr/metrics/explorer.md index 705bcfa759ff9..ca3de93792717 100644 --- a/content/fr/metrics/explorer.md +++ b/content/fr/metrics/explorer.md @@ -18,27 +18,23 @@ La page [Metrics Explorer][1] est une interface simple qui vous permet d'explore ## Graphiques -Cliquez sur la zone de texte **Graph** pour afficher la liste des métriques que vous avez envoyées à Datadog au cours des dernières 24 heures. Commencez à saisir du texte pour filtrez les métriques, puis cliquez sur une métrique pour la sélectionner. Chaque métrique que vous sélectionnez génère un graphique mis à jour en temps réel sur la droite de la page. +Utilisez l'éditeur de requêtes pour personnaliser le graphique affiché sur la page du Metrics Explorer. -Utilisez les options au-dessus des graphiques pour spécifier un intervalle et la taille du graphique. +Vous pouvez indiquer la période dans le coin supérieur droit de la page. La valeur par défaut est **Past 1 Hour**. -{{< img src="metrics/explorer/graphs.png" alt="Metrics Explorer" style="width:80%;" >}} +{{< img src="metrics/explorer/metrics_explorer.png" alt="Le Metrics Explorer affichant deux requêtes sur un graphique à barres" style="width:80%;" >}} -**Remarque** : la case **Calculate as count where applicable** apparaît lorsque la métrique est de type `RATE`. - -Les métriques qui n'ont pas été transmises lors des dernières 24 heures ne sont pas indiquées dans le menu déroulant. Vous pouvez ajouter manuellement ces métriques à vos graphiques en saisissant leur nom ou leur requête complète. +Les métriques qui n'ont pas été transmises lors des dernières 24 heures ne sont pas indiquées dans lʼéditeur de requêtes. Vous pouvez ajouter manuellement ces métriques à vos graphiques en saisissant leur nom ou leur requête complète. ### Scope -Définissez un contexte de filtrage en sélectionnant ou en recherchant des valeurs de tags depuis la zone de texte **Over**. Vous pouvez par exemple utiliser cette zone pour afficher uniquement les valeurs de métrique associées à un host, un cluster, un environnement ou encore une région spécifique. - -### Groupes - -Définissez les règles de regroupement en sélectionnant ou en recherchant des clés de tags depuis la zone de texte **One graph per**. Vous pouvez par exemple créer un graphique différent pour chaque host, conteneur, région, environnement, etc. d'une même métrique. Les métriques associées à des tags au format `:` peuvent être regroupées. +Définissez un contexte de filtrage en sélectionnant ou en recherchant des valeurs de tags depuis la zone de texte **from**. Vous pouvez par exemple utiliser cette zone pour afficher uniquement les valeurs de métrique associées à un host, un cluster, un environnement ou encore une région spécifique. ### Agrégation spatiale -Définissez l'[agrégation spatiale][5] à utiliser pour combiner les valeurs d'une métrique à l'aide de la zone de texte **On each graph, aggregate with the**. Les options proposées sont : +Définissez l'[agrégation spatiale][5] utilisée pour combiner les valeurs d'une métrique. + +Les options possibles sont les suivantes : * Moyenne des valeurs transmises (par défaut) * Maximum des valeurs transmises @@ -47,20 +43,13 @@ Définissez l'[agrégation spatiale][5] à utiliser pour combiner les valeurs d' **Remarque** : les options proposées peuvent varier en fonction du type de métrique sélectionné. -### Options +### Fonctions et formules -Le Metrics Explorer vous permet de modifier les options suivantes : - -* Ajouter le préfixe `` au titre des graphiques : cette option est vide par défaut. -* Afficher jusqu'à `` graphiques en même temps : la valeur par défaut est 20. +Vous pouvez éventuellement ajouter des fonctions à votre requête en utilisant le bouton fonction. Toutes les fonctions ne sont pas disponibles pour tous les types de métriques. Pour plus d'informations, référez-vous à la documentation relative à la [création de requête][6]. ### Exporter -Utilisez les boutons en bas à gauche pour exporter tous vos graphiques vers un nouveau timeboard ou un timeboard existant. Pour exporter un graphique spécifique, cliquez sur l'icône d'exportation en haut à droite de celui-ci. - -### Snapshot - -Pour créer un snapshot d'un graphique spécifique, cliquez sur l'icône de partage en haut à droite de celui-ci. Sélectionnez ensuite l'option **Send snapshot…** dans le menu déroulant qui s'affiche. +Exportez votre graphique vers un dashboard ou un notebook à l'aide des boutons situés en haut à droite. Vous pouvez également utiliser **Split Graph in Notebook** pour visualiser les données divisées en graphiques individuels par région, service, ou environnement. ## Pour aller plus loin @@ -69,5 +58,6 @@ Pour créer un snapshot d'un graphique spécifique, cliquez sur l'icône de part [1]: https://app.datadoghq.com/metric/explorer [2]: /fr/notebooks/ [3]: /fr/dashboards/#screenboards -[4]: /fr/dashboards/#timeboards -[5]: /fr/metrics/introduction/#space-aggregation \ No newline at end of file +[4]: /fr/dashboards/#get-started +[5]: /fr/metrics/introduction/#space-aggregation +[6]: https://docs.datadoghq.com/fr/dashboards/querying/#advanced-graphing \ No newline at end of file diff --git a/content/fr/monitors/guide/non_static_thresholds.md b/content/fr/monitors/guide/non_static_thresholds.md new file mode 100644 index 0000000000000..d8b7ae155c6c3 --- /dev/null +++ b/content/fr/monitors/guide/non_static_thresholds.md @@ -0,0 +1,183 @@ +--- +further_reading: +- link: /monitors/types/composite/ + tag: Documentation + text: Monitor composite +- link: /monitors/types/anomaly/ + tag: Documentation + text: Monitor d'anomalie +title: Comment surveiller des seuils non statiques +--- + +## Présentation + +Un monitor de métrique typique déclenche une alerte si une seule métrique dépasse un certain seuil. Par exemple, vous pouvez définir une alerte qui se déclenche si l'utilisation de votre disque dépasse 80 %. Cette approche est efficace pour de nombreux cas d'utilisation, mais que se passe-t-il lorsque le seuil est une variable plutôt qu'un nombre absolu ? + +Les monitors alimentés par Watchdog (à savoir [anomaly][1] et [outlier][2]) sont particulièrement utiles lorsqu'il n'existe pas de définition expliquant le fait que votre métrique n'est pas juste. Cependant, dans la mesure du possible, vous devriez utiliser des moniteurs classiques avec des conditions d'alerte adaptées pour maximiser la précision et minimiser le délai d'alerte pour votre cas d'utilisation spécifique. + +Ce guide couvre les cas d'utilisation courants dʼalertes sur les seuils non statiques : + - [Alerte sur une métrique qui sort des **variations saisonnières**](#seuil-saisonnier) + - [Alerte basée sur la valeur d'une autre métrique de **référence**](#seuil-de-reference) + +## Seuil saisonnier + +### Contexte + +Vous êtes le chef d'équipe en charge d'un site de commerce électronique. Vous souhaitez : +- recevoir des alertes en cas de baisse inattendue du trafic sur votre page d'accueil +- capturer les incidents plus localisés, comme ceux qui affectent les fournisseurs d'accès à Internet publics +- couvrir des scénarios dʼéchecs inconnus + +Le trafic de votre site web varie d'une nuit à l'autre et d'un jour de semaine à l'autre. Il n'existe pas de chiffre absolu permettant de quantifier ce que signifie une baisse inattendue. Toutefois, le trafic suit un schéma prévisible qui vous permet de considérer une différence de 10 % comme pouvant indiquer un problème de façon fiable, comme pour un incident localisé affectant les fournisseurs d'accès à Internet publics. + +{{< img src="monitors/guide/non_static_thresholds/seasonal_line_graph.png" alt="Graphique linéaire dʼune métique saisonnière ou périodique" style="width:100%;" >}} + +### Monitor + +Votre équipe mesure le nombre de connexions sur votre serveur web NGINX à l'aide de la métrique [`nginx.requests.total_count`][3]. + +La **requête** se compose de 3 parties : +1. Une requête pour obtenir le nombre actuel de demandes. +2. Une requête pour obtenir le nombre de demandes à la même heure une semaine auparavant. +3. les requêtes en formule, qui calculent le rapport entre les deux premières requêtes. + +Décidez ensuite de l'agrégation temporelle : +- Vous choisissez l'intervalle. Plus la période est longue, plus le système évalue de données pour détecter une anomalie. Les périodes plus longues peuvent également donner lieu à des alertes plus nombreuses du monitor. Commencez donc par une heure, puis adaptez votre choix à vos besoins. +- Vous choisissez l'agrégation. Puisqu'il s'agit d'une métrique count effectuant un ratio, `average` (ou `sum`) est un bon choix. + +Le seuil affiché dans la capture d'écran ci-dessous a été configuré sur 0,9 pour tenir compte d'une différence de 10 % entre la valeur de la première requête (actuelle) et celle de la deuxième requête (semaine précédente). + +{{< tabs >}} +{{% tab "Configuration dʼIU" %}} +{{< img src="monitors/guide/non_static_thresholds/seasonal_threshold_config.png" alt="Configuration pour ajouter le décalage temporel week_before à la requête de métrique et définir la formule a/b" style="width:100%;" >}} +{{% /tab %}} + +{{% tab "JSON Example" %}} +``` json +{ + "name": "[Seasonal threshold] Amount of connection", + "type": "query alert", + "query": "sum(last_10m):sum:nginx.requests.total_count{env:prod} by {datacenter} / week_before(sum:nginx.requests.total_count{env:prod} by {datacenter}) <= 0.9", + "message": "Le nombre de connexions est inférieur à celui dʼhier de {{value}} !", + "tags": [], + "options": { + "thresholds": { + "critical": 0.9 + }, + "notify_audit": false, + "require_full_window": false, + "notify_no_data": false, + "renotify_interval": 0, + "include_tags": true, + "new_group_delay": 60, + "silenced": {} + }, + "priority": null, + "restricted_roles": null +} +``` +{{% /tab %}} +{{< /tabs >}} + +## Seuil de référence + +### Contexte +Vous êtes le chef de l'équipe d'assurance qualité, responsable du processus de paiement de votre site de commerce électronique. Vous voulez vous assurer que vos clients ont une bonne expérience et qu'ils peuvent acheter vos produits sans problème. Le taux d'erreur en est un indicateur. + +Le trafic n'est pas le même tout au long de la journée, de sorte que 50 erreurs/minute le vendredi soir sont moins inquiétantes que 50 erreurs/minute le dimanche matin. La surveillance d'un taux d'erreur plutôt que des erreurs elles-mêmes vous donne un aperçu fiable de ce que sont des métriques saines et malsaines. + +Vous êtes alerté lorsque le taux d'erreur est élevé, mais aussi lorsque le volume des occurrences est suffisamment important. + +### Monitor + +Créer 3 monitors au total : +1. [Monitor de métrique pour alerter sur le nombre total dʼoccurrences](#monitor-de-metrique-pour-alerter-sur-le-nombre-total-d-occurrences) +1. [Monitor de métrique pour calculer le taux d'erreur] (#monitor-de-metrique-pour-calculer-le-taux-d-erreur) +1. [Monitor composite qui déclenche une alerte si les deux premiers monitors sont en état ALERTE] (#monitor-composite) + +#### Monitor de métrique pour recevoir une alerte sur le nombre total dʼoccurrences + +Le premier monitor suit le nombre total dʼoccurrences, qu'il s'agisse de succès ou d'échecs. Ce monitor détermine si le taux d'erreur doit déclencher une alerte. + +{{< tabs >}} +{{% tab "UI Configuration" %}} + {{< img src="monitors/guide/non_static_thresholds/reference_total_hits.png" alt="Configuration de monitor de métrique avec une formule pour calculer le nombre total dʼoccurrences" style="width:100%;" >}} + +{{% /tab %}} + +{{% tab "JSON Example" %}} +``` +{ + "name": "Nombre dʼoccurrences", + "type": "query alert", + "query": "sum(last_5m):sum:shopist.checkouts.failed{env:prod} by {region}.as_count() + sum:shopist.checkouts.success{env:prod} by {region}.as_count() > 4000", + "message": "Il y a eu plus de 4 000 occurrences pour cette région !", + "tags": [], + "options": { + "thresholds": { + "critical": 1000 + }, + "notify_audit": false, + "require_full_window": false, + "notify_no_data": false, + "renotify_interval": 0, + "include_tags": true, + "new_group_delay": 60 + } +} + +``` +{{% /tab %}} +{{< /tabs >}} + +#### Monitor de métrique pour calculer le taux d'erreur + +Le deuxième monitor calcule le taux d'erreur. Créez une requête sur le nombre d'erreurs divisé par le nombre total d'occurrences pour obtenir le taux d'erreur `a / a+b` : + +{{< tabs >}} +{{% tab "UI Configuration" %}} + {{< img src="monitors/guide/non_static_thresholds/reference_error_rate.png" alt="Configuration de monitor de métrique avec une formule pour calculer le taux dʼerreur" style="width:100%;" >}} +{{% /tab %}} + +{{% tab "JSON Example" %}} +``` +{ + "name": "Taux dʼerreur", + "type": "query alert", + "query": "sum(last_5m):sum:shopist.checkouts.failed{env:prod} by {region}.as_count() / (sum:shopist.checkouts.failed{env:prod} by {region}.as_count() + sum:shopist.checkouts.success{env:prod} by {region}.as_count()) > 0.5", + "message": "Le taux dʼerreur est actuellement de {{value}} ! Faites attention !", + "tags": [], + "options": { + "thresholds": { + "critical": 0.5 + }, + "notify_audit": false, + "require_full_window": false, + "notify_no_data": false, + "renotify_interval": 0, + "include_tags": true, + "new_group_delay": 60 + } +} + +``` + +{{% /tab %}} +{{< /tabs >}} + + +#### Monitor composite + +Le dernier monitor est un monitor composite, qui n'envoie une alerte que si les deux monitors précédents sont également tous deux dans un état **ALERT**. + +{{< img src="monitors/guide/non_static_thresholds/reference_composite_monitor_config.png" alt="Exemple de configuration de monitor composite affichant la logique booléenne à alerter si les deux monitors sont en état ALERT" style="width:100%;" >}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/monitors/types/anomaly/ +[2]: /fr/monitors/types/outlier/ +[3]: /fr/integrations/nginx/?tab=host#data-collected +[4]: /fr/account_management/billing/usage_metrics/#types-of-usage +[5]: /fr/logs/log_configuration/logs_to_metrics/#logs-usage-metrics \ No newline at end of file diff --git a/content/fr/real_user_monitoring/guide/devtools-tips.md b/content/fr/real_user_monitoring/guide/devtools-tips.md new file mode 100644 index 0000000000000..7e4da44dbb303 --- /dev/null +++ b/content/fr/real_user_monitoring/guide/devtools-tips.md @@ -0,0 +1,57 @@ +--- +further_reading: +- link: /real_user_monitoring/browser + tag: Documentation + text: Surveillance Browser avec RUM +- link: /logs/log_collection/javascript + tag: Documentation + text: Collecte de logs à partir des navigateurs +kind: guide +title: Conseils pour l'utilisation des outils de développement du navigateur +--- + +## Présentations + +Ce guide fournit quelques conseils pour l'utilisation de outils de développement (DevTools) qui sont inclus dans les navigateurs modernes pour déboguer une application instrumentée avec un SDK de navigateur Datadog. + +## S'assurer que les numéros de fichier et de ligne correspondent dans la console DevTools + +Le SDK du navigateur instrumente les fonctions de la console (`console.error`, mais aussi `.log`, `.info` et `.warn`) pour collecter des données sur le comportement de l'application. +Cela peut conduire à ce que la console DevTool affiche un numéro de ligne et un fichier incorrects, comme indiqué ci-dessous : +{{< img src="real_user_monitoring/guide/devtools-tips/issue_console.png" alt="Console DevTools affichant un problème dû à un fichier et des numéros de ligne erronés pour une instruction console.error.">}} + +Dans l'image ci-dessus, la fonction `console.error` est instrumentée. Remarquez qu'au lieu d'afficher le fichier et le numéro de ligne sur lesquels cette instruction a été appelée, `VM505:1`, la console affiche `datadog-rum.js:1`. + +### L'ajout de scripts à la liste des données à ignorer de votre navigateur pour afficher le bon fichier et numéro de ligne. + +La plupart des navigateurs permettent aux développeurs de sélectionner des scripts et de les ajouter à une liste de données ignorées. Pour afficher le bon fichier et numéro de ligne, vous pouvez ajouter les scripts suivants à la liste des données à ignorer de votre navigateur : `datadog-rum*.js` et `datadog-logs*.js`. + +Vous trouverez ci-dessous un exemple d'emplacement de cette fonctionnalité dans Google Chrome. +{{< img src="real_user_monitoring/guide/devtools-tips/script_ignore_list.png" alt="Comment ajouter un script à la liste des données à ignorer dans Google Chrome.">}} + +Dans lʼonglet de la console, développez la sortie de lʼinstruction de la console. Cliquez avec le bouton droit de la souris sur chaque script que vous souhaitez ignorer et sélectionnez l'option **add script to ignore list**. +**Remarque** : la liste des données à ignorer peut être gérée dans **Developer Tools > Settings > Ignore List** + +Cette méthode fonctionne bien lorsque vous utilisez les [méthodes d'installation CDN (sync/async)][3]. Si vous utilisez la méthode du paquet NPM, assurez-vous que `sourcemaps` est activé. Sinon, le code du SDK peut être intégré au code de votre application, ce qui empêche DevTools d'ignorer le SDK. + +Un autre avantage de l'utilisation de la liste des données à ignorer est visible dans le volet du réseau : +{{< img src="real_user_monitoring/guide/devtools-tips/network_initiator.png" alt="Initiateur réseau sʼaffichant correctement après lʼajout de scripts à la liste des données à ignorer.">}} + +Au lieu d'afficher le SDK du navigateur en tant qu'initiateur de la requête, le fichier et le numéro de ligne corrects sont affichés pour l'application. + +## Supprimer les nuisances dans lʼonglet du réseau + +Les SDK des navigateurs envoient plusieurs requêtes réseau pour enregistrer le comportement d'une application. Cela peut générer un nombre important de lignes dans lʼonglet du réseau, ce qui rend difficile l'identification des demandes initiées par votre application. La plupart des navigateurs vous permettent de filtrer les requêtes provenant des SDK du navigateur. + +Voici un exemple de cette fonctionnalité dans Google Chrome : +{{< img src="real_user_monitoring/guide/devtools-tips/network_ignore_intake.png" alt="Volet réseau filtrant les requêtes du SDK du navigateur.">}} + +Dans lʼonglet réseau, ajoutez un filtre `-url:intake-datadoghq.com` (mettez à jour le pattern pour qu'il corresponde à l'url de lʼ[admission de votre datacenter][1], ou à celle de votre [proxy][2]). + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/getting_started/site +[2]: /fr/real_user_monitoring/guide/proxy-rum-data +[3]: /fr/real_user_monitoring/browser/setup/#choose-the-right-installation-method \ No newline at end of file diff --git a/content/fr/real_user_monitoring/guide/enable-rum-shopify-store.md b/content/fr/real_user_monitoring/guide/enable-rum-shopify-store.md new file mode 100644 index 0000000000000..0567d2395d22c --- /dev/null +++ b/content/fr/real_user_monitoring/guide/enable-rum-shopify-store.md @@ -0,0 +1,70 @@ +--- +further_reading: +- link: /real_user_monitoring/guide/rum-for-product-analytics/ + tag: Documentation + text: Utiliser la solution RUM et Session Replay pour l'analyse des produits +- link: /real_user_monitoring/guide/alerting-with-conversion-rates/ + tag: Documentation + text: Alertes avec des taux de conversion +kind: guide +title: Activer la solution RUM pour votre boutique Shopify +--- + +## Présentation + +Comprendre comment les clients interagissent avec vos pages web est crucial pour le succès de votre boutique en ligne. + +Ce guide explique comment vous pouvez mettre en place le Real User Monitoring (la surveillance des utilisateurs réels) pour votre boutique Shopify. + +## Implémentation + +1. Connectez-vous à votre volet d'administration Shopify. +2. Sous **Sales channels**, cliquez sur **Online Store**. + + {{< img src="real_user_monitoring/guide/enable-rum-shopify-store/enable-rum-shopify-1.png" alt="Activer la solution RUM pour votre boutique Shopify" style="width:30%;">}} + +3. Un nouveau menu s'ouvre, cliquez sur **Themes**. + + {{< img src="real_user_monitoring/guide/enable-rum-shopify-store/enable-rum-shopify-2.png" alt="Activer la solution RUM pour votre boutique Shopify" style="width:30%;">}} + +4. Cliquez sur le bouton **Edit code** de votre thème actuel. + + {{< img src="real_user_monitoring/guide/enable-rum-shopify-store/enable-rum-shopify-2.png" alt="Activer la solution RUM pour votre boutique Shopify" >}} + +5. Sous le répertoire **Layout**, trouvez le fichier principal de votre thème **theme.liquid**. Cliquez sur le fichier pour le modifier. + + {{< img src="real_user_monitoring/guide/enable-rum-shopify-store/enable-rum-shopify-4.png" alt="Activer la solution RUM pour votre boutique Shopify" style="width:30%;">}} + +6. Initialisez le SDK RUM Browser en ajoutant l'extrait de code du SDK dans le tag ``. Pour en savoir plus sur la méthode d'installation à choisir, consultez la [documentation relative la surveillance Browser avec RUM][1]. + + {{< img src="real_user_monitoring/guide/enable-rum-shopify-store/enable-rum-shopify-5.png" alt="Activer la solution RUM pour votre boutique Shopify" >}} + +7. Cliquez sur le bouton **Save** pour enregistrer vos modifications. + +La mise à jour ressemble à ce qui suit dans l'IU de Shopify : + + {{< img src="real_user_monitoring/guide/enable-rum-shopify-store/enable-rum-shopify-6.png" alt="Activer la solution RUM pour votre boutique Shopify" style="width:50%;">}} + +Pour plus d'informations sur l'édition du code du thème, consultez la [documentation de Shopify][2]. + +## Commencer à explorer + +Une fois que vous avez initialisé le SDK RUM Browser, vous pouvez commencer à utiliser le Real User Monitoring avec votre boutique Shopify. + +Vous pouvez par exemple : + +- Obtenir des informations précieuses sur le comportement de vos clients en +prenant des décisions fondées sur des données pour améliorer votre magasin +- Augmenter la conversion en observant les sessions enrichies des enregistrements des navigateurs avec [Session Replay][3]. +- Utiliser [l'analyse d'entonnoir][4] pour mieux comprendre le parcours du client, ou +- [Générer des métriques][5] à partir de ces sessions nouvellement capturées + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/real_user_monitoring/browser/setup/#choose-the-right-installation-method/ +[2]: https://help.shopify.com/en/manual/online-store/themes/theme-structure/extend/edit-theme-code +[3]: /fr/real_user_monitoring/session_replay/browser/ +[4]: /fr/product_analytics/journeys/funnel_analysis +[5]: /fr/real_user_monitoring/platform/generate_metrics/ \ No newline at end of file diff --git a/content/fr/real_user_monitoring/guide/enable-rum-squarespace-store.md b/content/fr/real_user_monitoring/guide/enable-rum-squarespace-store.md new file mode 100644 index 0000000000000..622a19235a43a --- /dev/null +++ b/content/fr/real_user_monitoring/guide/enable-rum-squarespace-store.md @@ -0,0 +1,63 @@ +--- +further_reading: +- link: /real_user_monitoring/guide/rum-for-product-analytics/ + tag: Documentation + text: Utiliser la solution RUM et Session Replay pour l'analyse des produits +- link: /real_user_monitoring/guide/alerting-with-conversion-rates/ + tag: Documentation + text: Alertes avec des taux de conversion +kind: guide +title: Activer la solution RUM pour votre boutique Squarespace +--- + +## Présentation + +Comprendre comment les clients interagissent avec vos pages web est crucial pour le succès de votre boutique en ligne. + +Ce guide explique comment vous pouvez mettre en place le Real User Monitoring (la surveillance des utilisateurs réels) pour votre boutique Squarespace. + +## Implémentation + +1. Connectez-vous à votre volet d'administration Squarespace et cliquez sur **Settings**. + + {{< img src="real_user_monitoring/guide/enable-rum-squarespace-store/enable-rum-squarespace-1.png" alt="Activer la solution RUM pour votre boutique Squarespace" style="width:30%;">}} + +2. Sous **Settings**, cliquez sur **Advanced**. + + {{< img src="real_user_monitoring/guide/enable-rum-squarespace-store/enable-rum-squarespace-2.png" alt="Activer la solution RUM pour votre boutique Squarespace" style="width:30%;">}} + +3. Dans le menu ouvert, cliquez sur **Code Injection**. + + {{< img src="real_user_monitoring/guide/enable-rum-squarespace-store/enable-rum-squarespace-3.png" alt="Activer la solution RUM pour votre boutique Squarespace" style="width:30%;">}} + +4. Initialisez le SDK RUM Browser en ajoutant l'extrait de code du SDK dans la section **Header**. Pour en savoir plus sur la méthode d'installation à choisir, consultez la [documentation relative la surveillance Browser avec RUM][1]. + + {{< img src="real_user_monitoring/guide/enable-rum-squarespace-store/enable-rum-squarespace-4.png" alt="Activer la solution RUM pour votre boutique Squarespace" >}} + +5. Cliquez sur le bouton **Save** pour enregistrer vos modifications. + + {{< img src="real_user_monitoring/guide/enable-rum-squarespace-store/enable-rum-squarespace-5.png" alt="Activer la solution RUM pour votre boutique Squarespace" style="width:50%;">}} + +Pour obtenir plus d'informations sur l'injection de code, consultez la [documentation de Squarespace][2]. + +## Commencer à explorer + +Une fois que vous avez initialisé le SDK RUM Browser, vous pouvez commencer à utiliser le Real User Monitoring avec votre boutique Squarespace. + +Vous pouvez par exemple : + +- Obtenir des informations précieuses sur le comportement de vos clients en +prenant des décisions fondées sur des données pour améliorer votre magasin +- Augmenter la conversion en observant les sessions enrichies des enregistrements des navigateurs avec [Session Replay][3]. +- Utiliser [l'analyse d'entonnoir][4] pour mieux comprendre le parcours du client, ou +- [Générer des métriques][5] à partir de ces sessions nouvellement capturées + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/real_user_monitoring/browser/setup/#choose-the-right-installation-method/ +[2]: https://support.squarespace.com/hc/en-us/articles/205815908-Using-code-injection +[3]: /fr/real_user_monitoring/session_replay/browser/ +[4]: /fr/product_analytics/journeys/funnel_analysis/ +[5]: /fr/real_user_monitoring/generate_metrics/ \ No newline at end of file diff --git a/content/fr/real_user_monitoring/guide/sampling-browser-plans.md b/content/fr/real_user_monitoring/guide/sampling-browser-plans.md new file mode 100644 index 0000000000000..128ac7ba29581 --- /dev/null +++ b/content/fr/real_user_monitoring/guide/sampling-browser-plans.md @@ -0,0 +1,237 @@ +--- +aliases: +- /fr/real_user_monitoring/guide/sampling-browser-and-browser-premium/ +description: Découvrez comment personnaliser votre configuration d'échantillonnage + de RUM Browser et RUM Browser & Session Replay. +further_reading: +- link: /real_user_monitoring/browser/ + tag: Documentation + text: En savoir plus sur la surveillance Browser RUM +kind: guide +title: Mettre à jour votre configuration pour RUM Browser et l'échantillonnage de + RUM Browser et Session Replay +--- + +## Présentation + +Lors de l'instrumentation d'une [application RUM Browser][1], définissez la fréquence d'échantillonnage pour le nombre total de sessions utilisateur que vous souhaitez collecter et le pourcentage de sessions utilisateur collectées qui incluent les fonctionnalités [RUM Browser & Session Replay][2]. + +Ce guide fournit un exemple de personnalisation du nombre de sessions Browser RUM & Session Replay que vous souhaitez collecter à partir du nombre total de sessions utilisateur dans Datadog. + +## Configuration + +Le paramètre `sessionReplaySampleRate` est un pourcentage de `sessionSampleRate`. + +Cette fonctionnalité nécessite le SDK Browser Datadog v3.0.0 ou ultérieur. + +
+Le SDK Browser Datadog v4.20.0 introduit le paramètre d'initialisation sessionReplaySampleRate, supprimant les paramètres d'initialisation premiumSampleRate et replaySampleRate. +
+
+Le SDK Browser Datadog v5.0.0 introduit deux changements de comportement majeurs : + +- Seules les sessions qui ont enregistré une rediffusion sont considérées comme étant Browser RUM & Session Replay. +- La valeur par défaut du paramètre d'initialisation sessionReplaySampleRate est `0`. Les versions précédentes du SDK utilisent `100`. +
+Lorsqu'une session est créée, la solution RUM la suit comme suit : + +- [**RUM Browser**][2] : les sessions, les vues, les actions, les ressources, les tâches longues et les erreurs sont collectées. +- [**RUM Browser & Session Replay**]][2] : tout ce qui provient du RUM Browser est collecté, y compris les enregistrements de rediffusions. + +Vous pouvez définir deux paramètres d'initialisation pour contrôler la façon dont les sessions sont surveillées : + +- Le paramètre `sessionSampleRate` définit le pourcentage global des sessions surveillées. Par défaut, il prend pour valeur `100%`, afin de surveiller toutes les sessions. +- Le paramètre `sessionReplaySampleRate` est appliqué **après** le taux d'échantillonnage global. Il définit le pourcentage de sessions surveillées en tant que données RUM Browser & Session Replay. Par défaut, il prend pour valeur `0`, afin de ne pas surveiller chaque session en tant que données RUM Browser & Session Replay. + +Pour surveiller toutes vos sessions en tant que données RUM Browser : + +
+ Dernière version + +``` +datadogRum.init({ + .... + sessionSampleRate: 100, + sessionReplaySampleRate: 0 +}); +``` + +
+ +
+ avantv4.30.0 + +``` +datadogRum.init({ + .... + sampleRate: 100, + sessionReplaySampleRate: 0 +}); +``` + +
+ +
+ avantv4.20.0 + +``` +datadogRum.init({ + .... + sampleRate: 100, + premiumSampleRate: 0 +}); +``` + +
+ +
+ avantv4.10.2 + +``` +datadogRum.init({ + .... + sampleRate: 100, + replaySampleRate: 0 +}); +``` + +
+ +Pour surveiller toutes vos sessions en tant que données RUM Browser & Session Replay : + +
+ Dernière version + +``` +datadogRum.init({ + .... + sessionSampleRate: 100, + sessionReplaySampleRate: 100 +}); +``` + +
+ +
+ avantv4.30.0 + +``` +datadogRum.init({ + .... + sampleRate: 100, + sessionReplaySampleRate: 100 +}); +``` + +
+ +
+ avantv4.20.0 + +``` +datadogRum.init({ + .... + sampleRate: 100, + premiumSampleRate: 100 +}); +``` + +
+ + +
+ avantv4.10.2 + +``` +datadogRum.init({ + .... + sampleRate: 100, + replaySampleRate: 100 +}); +``` + +
+ +Utilisez le curseur pour définir le pourcentage de sessions RUM Browser & Session Replay collectées par rapport au pourcentage de sessions utilisateur totales collectées pour votre application. + +{{< img src="real_user_monitoring/browser/example-initialization-snippet.mp4" alt="Exemple dʼextrait dʼinitialisation pour une application sur navigateur avec des pourcebtages personnalisés" video="true" width="100%" >}} + +Si vous définissez `sessionSampleRate` sur 60 et `sessionReplaySampleRate` sur 50, 40 % des sessions sont abandonnées, 30 % des sessions sont collectées en tant que RUM Browser et 30 % des sessions sont collectées en tant que RUM Browser & Session Replay. + +
+ Dernière version + +``` +datadogRum.init({ + .... + sessionSampleRate: 60, + sessionReplaySampleRate: 50 +}); +``` + +
+ +
+ avantv4.30.0 + +``` +datadogRum.init({ + .... + sampleRate: 60, + sessionReplaySampleRate: 50 +}); +``` + +
+ +
+ avantv4.20.0 + +``` +datadogRum.init({ + .... + sampleRate: 60, + premiumSampleRate: 50 +}); +``` + +
+ +
+ avantv4.10.2 + +``` +datadogRum.init({ + .... + sampleRate: 60, + replaySampleRate: 50 +}); +``` + +
+ +À partir de la version 5.0.0, afin de suivre 100 % des sessions qui atteignent un état personnalisé en tant que RUM Browser & Session Replay : + +``` +datadogRum.init({ + .... + sessionSampleRate: 100, + sessionReplaySampleRate: 100, + startSessionReplayRecordingManually: true, +}); + +// lorsque lʼétat personnalisé est atteint +datadogRum.startSessionReplayRecording() +``` + +Avec l'utilisation de `startSessionReplayRecordingManually: true`, les sessions qui n'appellent pas `startSessionReplayRecording()` sont considérées comme des RUM Browser. + +Pour en savoir plus sur le tagging et l'exploration des attributs, référez-vous à la section [Survellance Browser][3]. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/real_user_monitoring/browser#setup +[2]: https://www.datadoghq.com/pricing/?product=real-user-monitoring--session-replay#real-user-monitoring--session-replay +[3]: /fr/real_user_monitoring/browser#tagging \ No newline at end of file diff --git a/content/fr/serverless/guide/extension_motivation.md b/content/fr/serverless/guide/extension_motivation.md index 09046d11e6ce8..c2e466085f395 100644 --- a/content/fr/serverless/guide/extension_motivation.md +++ b/content/fr/serverless/guide/extension_motivation.md @@ -13,11 +13,11 @@ Les extensions AWS Lambda s'exécutent au sein de l'environnement d'exécution Si vous avez configuré les [fonctionnalités sans serveur Datadog][2] avant le lancement officiel de l'extension Lambda Datadog, vous utilisez probablement le [Forwarder Datadog][3] pour envoyer des métriques custom, des métriques optimisées, des traces et des logs. -Il existe d'importantes différences entre l'extension Lambda et le Forwarder. Ainsi, dans certaines situations, il est plus intéressant d'utiliser l'extension plutôt que le Forwarder, et inversement. Cette page décrit les différents aspects à prendre en compte si vous songez à migrer depuis le Forwarder vers l'extension Lambda. +Il existe d'importantes différences entre l'extension Lambda et le Forwarder. Cette page décrit les différents aspects à prendre en compte si vous songez à migrer depuis le Forwarder vers l'extension Lambda. ### Différences fonctionnelles -{{< img src="serverless/serverless_monitoring_installation_instructions.png" alt="Instrumenter des applications sans serveur AWS" style="width:100%;">}} +{{< img src="serverless/serverless_monitoring_installation_instructions.png" alt="Instrumenter des applications sans serveur AWS" style="width:100%;">}} Bien qu'il soit désormais recommandé d'utiliser l'extension Lambda à la place du Forwarder pour recueillir des données de télémétrie à partir de fonctions Lambda, seul le Forwarder doit être utilisé pour recueillir des métadonnées et les ajouter aux logs d'autres services AWS, notamment API Gateway, AppSync et Lambda@Edge. @@ -25,12 +25,16 @@ Bien qu'il soit désormais recommandé d'utiliser l'extension Lambda à la place L'extension Lambda Datadog présente plusieurs avantages par rapport au Forwarder Datadog : -- **Pas de logs CloudWatch** : le Forwarder extrait les données de télémétrie des logs, puis les envoie à Datadog. À l'inverse, l'extension Lambda Datadog envoie les données de télémétrie directement à Datadog, ce qui réduit ainsi vos coûts associés aux logs CloudWatch. +- **Pas de logs CloudWatch** : le Forwarder extrait les données de télémétrie des logs, puis les envoie à Datadog. À l'inverse, l'extension Lambda Datadog envoie les données de télémétrie directement à Datadog, ce qui réduit ainsi vos coûts associés aux logs CloudWatch et à la fonction Lambda du Forwarder. - **Configuration simplifiée** : l'extension Lambda Datadog peut être ajoutée en tant que couche Lambda afin d'envoyer les données de télémétrie directement à Datadog, vous évitant ainsi d'avoir à configurer un filtre d'abonnement pour le groupe de logs CloudWatch de chaque nouvelle fonction Lambda. ### Contrepartie -L'extension [augmente la charge de vos fonctions Lambda][4] par rapport aux fonctions sans instrumentation. Cette surcharge entraîne une hausse de vos coûts AWS et de votre simultanéité Lambda, et risque de nuire aux performances des démarrages à froid. Dans la plupart des cas, ces ralentissements ne limitent **pas** les performances de votre fonction. D'après les résultats des derniers benchmarks Datadog, la hausse des coûts découlant de l'utilisation de l'extension Lambda demeure inférieure (ou similaire, pour la transmission de données depuis des régions distantes) aux frais supplémentaires liés à l'utilisation du Forwarder. +L'extension [augmente la charge de vos fonctions Lambda][4] par rapport aux fonctions sans instrumentation. en raison du chargement de lʼextension lors de démarrages à froid et à lʼenvoi dʼun grand nombre de données de télémétrie à Datadog. Dans la plupart des cas, ces ralentissements ne limitent **pas** les performances de votre fonction. D'après les résultats des derniers benchmarks Datadog, la hausse des coûts découlant de l'utilisation de l'extension Lambda demeure inférieure aux frais supplémentaires liés à l'utilisation du Forwarder. + +### Conclusion + +Si vous souhaitez uniquement collecter des logs, en particulier à partir de nombreuses fonctions Lambda il est judicieux de continuer à utiliser le Forwarder de Datadog. Si vous collectez également des métriques et des traces à partir de vos fonctions Lambda, nous vous recommandons de migrer vers l'extension Lambda Datadog. ## Migrer vers l'extension Lambda Datadog diff --git a/content/fr/synthetics/guide/email-validation.md b/content/fr/synthetics/guide/email-validation.md new file mode 100644 index 0000000000000..7c68c7761020a --- /dev/null +++ b/content/fr/synthetics/guide/email-validation.md @@ -0,0 +1,67 @@ +--- +description: Vérifier un e-mail et son contenu avec des étapes de test Browser. +further_reading: +- link: /synthetics/browser_tests/actions + tag: Documentation + text: En savoir plus sur les étapes des tests Browser +- link: /synthetics/browser_tests/advanced_options/ + tag: Documentation + text: Configurer des options avancées pour les étapes +kind: documentation +title: Utiliser la vérification d'e-mails dans des tests Browser +--- + +## Présentation + +Le parcours utilisateur des applications Web contient généralement des étapes de déclenchement et d'envoi d'e-mails. Par exemple, il est souvent nécessaire de vérifier une adresse e-mail après la création d'un compte, d'envoyer des e-mails de réinitialisation de mot de passe, un envoi dʼe-mail pour signaler une confirmation dʼachat ou encore de confirmer des commandes ou des envois de formulaires de contact. + +Pour maintenir une bonne expérience utilisateur sur votre site web, il faut s'assurer que les mécanismes de courrier électronique de votre application fonctionnent correctement. + +## Créer une variable d'e-mail + +Pour ajouter une variable dʼe-mail appelée `EMAIL` : + +1. Cliquez sur **Variables** et sélectionnez **Email** dans le menu déroulant. +2. Cliquez sur **Add Variable** pour pouvoir utiliser la variable lorsque vous lancez lʼenregistrement. + +{{< img src="synthetics/guide/email-validation/adding-variable.mp4" alt="Créer une variable d'e-mail" video="true" width="100%">}} + +La variable dʼe-mail génère une boîte de réception unique gérée par Datadog à chaque exécution de test, ce qui permet à vos tests de navigateur de s'exécuter sans conflit. + +## Enregistrer des étapes + +Une fois que vous avez créé une variable dʼe-mail, vous pouvez [confirmer que l'email a été envoyé correctement] (#confirmer-que-l-email-a-ete-envoyé) après un déclencheur intégré à lʼapp. + +Cliquez sur **Start Recording** et enregistrez toutes les étapes menant au déclenchement de l'e-mail avec votre variable d'e-mail. Cliquez sur l'icône en forme de main dans une variable pour injecter sa valeur dans la saisie de texte d'un formulaire ou d'un champ. + +{{< img src="synthetics/guide/email-validation/record-steps.mp4" alt="Enregistrer des étapes" video="true" width="100%">}} + +Après avoir enregistré vos étapes pour remplir le formulaire, cliquez sur le bouton **Sign Up** pour déclencher un e-mail de notification. Un e-mail adapté à cette session d'enregistrement est envoyé à la boîte aux lettres de Datadog, par exemple `838-n3q-q2y.6238933596@synthetics.dtdg.co`. + +### Confirmer l'envoi d'un e-mail + +Pour confirmer que lʼe-mail a été envoyé, cliquez sur **Assertion** et sélectionnez **Test that an email was received**. Pour vous assurer que votre courriel respecte des directives spécifiques en matière de contenu, vous pouvez ajouter des vérifications supplémentaires sur l'objet et le corps du message. + +{{< img src="synthetics/guide/email-validation/assertion-step.mp4" alt="Ajouter une assertion" video="true" width="100%">}} + +Dans cet exemple, l'assertion est réussie si l'objet de l'e-mail est `Welcome to Shopist!`, si le corps du message contient la phrase `Your verification code is...` et si le code de vérification correspond à l'expression rationnelle `\d{1,6}`. + +### Parcourir les liens d'un e-mail + +Pour que votre test de navigateur parcoure les liens contenus dans les e-mails envoyés : + +1. Cliquez sur **Navigation** et sélectionnez **Go to email and click link**. Cliquez sur **Next**. +2. L'e-mail contenant les liens que vous souhaitez tester apparaît dans la boîte de réception. Cliquez sur **Next**. +3. Sélectionnez le lien auquel vous voulez que le test de votre navigateur accède. L'URL de l'iframe ou de la fenêtre contextuelle est immédiatement mise à jour avec le lien spécifié. Cliquez sur **Save Navigation Step**. +4. L'iframe redirige vers l'URL de la page associée. Poursuivez l'enregistrement de vos étapes. + +Dans cet exemple, le test de navigateur examine l'e-mail `Welcome to Shopist`, clique sur le lien `Verify your email by clicking here` et confirme que le mécanisme d'enregistrement de l'utilisateur fonctionne comme prévu. + +{{< img src="synthetics/guide/email-validation/navigation-step.mp4" alt="Ajouter une étape Navigation" video="true" width="100%">}} + +Comme dernière étape de votre test de navigateur, créez une assertion pour confirmer que le contenu de `div` déclenche la vérification correcte du compte. Par exemple, la page contient `Your account is now verified`. + + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} \ No newline at end of file diff --git a/content/fr/synthetics/guide/popup.md b/content/fr/synthetics/guide/popup.md index cce094a33748a..1746198f3a4f6 100644 --- a/content/fr/synthetics/guide/popup.md +++ b/content/fr/synthetics/guide/popup.md @@ -1,39 +1,45 @@ --- -title: Gestion des fenêtres contextuelles lors des tests Browser -kind: guide further_reading: - - link: https://www.datadoghq.com/blog/browser-tests/ - tag: Blog - text: Surveillance de l'expérience utilisateur avec les tests Browser de Datadog - - link: synthetics/browser_tests - tag: Documentation - text: Configurer un test Browser +- link: https://www.datadoghq.com/blog/browser-tests/ + tag: Blog + text: Surveillance de l'expérience utilisateur avec les tests Browser de Datadog +- link: synthetics/browser_tests + tag: Documentation + text: En savoir plus sur les tests de navigateurs Synthetic +kind: guide +title: Gestion des fenêtres contextuelles lors des tests Browser --- +## Présentation + +Ce guide décrit comment gérer les fenêtres contextuelles telles que les fenêtres modales ou d'applications dans un [test de navigateur][5] Synthetic. + ## Fenêtres modales ### JavaScript Les tests Browser Synthetic gèrent automatiquement les [fenêtres modales JavaScript][1] : - - Les fenêtres modales `alert` sont fermées. - - Une réponse `Lorem Ipsum` est fournie pour les fenêtres modales `prompt` et `confirm`. + + - Les `alert` modales sont immédiatement ignorées pour OK. + - Les `prompt` modales sont remplies par `Lorem Ipsum` pour les tests sur Google Chrome ou Microsoft Edge. + - Les `confirm` modaux qui demandent une confirmation sont acceptés. ### Authentification de base -Pour les fenêtres contextuelles d'authentification de base, spécifiez les identifiants requis dans la configuration de votre test Browser, sous [**Advanced options > HTTP Auth**][2] : +Pour les fenêtres contextuelles d'authentification de base, spécifiez les identifiants requis dans la configuration de votre test Browser, sous [**Advanced Options**][2] : -{{< img src="synthetics/guide/popup/http_auth_option.png" alt="Fenêtre contextuelle d'authentification de base">}} +{{< img src="synthetics/guide/popup/http_authentication.png" alt="Fenêtre contextuelle dʼauthentification de base" style="width:90%" >}} -## Fenêtres contextuelles d'application +## Fenêtres contextuelles d'applications ### Fenêtres contextuelles ancrées Si une fenêtre contextuelle apparaît à un moment spécifique de votre parcours, vous pouvez enregistrer une étape pour la fermer et autoriser l'échec de cette étape à l'aide de l'[option correspondante][3]. Votre test saura ainsi comment réagir si jamais une telle fenêtre s'affiche. Dans le cas contraire, l'étape échoue sans que cela entraîne l'échec de l'ensemble du test. -{{< img src="synthetics/guide/popup/allow_fail_option.png" alt="Autoriser l'échec d'une fenêtre pour gérer une fenêtre contextuelle" width="90%">}} +{{< img src="synthetics/guide/popup/allow_fail_option.png" alt="Autoriser l'échec d'une fenêtre pour gérer une fenêtre contextuelle" style="width:60%" >}} ### Déplacer les fenêtres contextuelles -S'il n'est pas possible de prédire à quel moment ces fenêtres contextuelles apparaissent, adressez-vous au tiers qui fournit la fenêtre contextuelle afin de vérifier s'il est possible de créer une règle empêchant l'affichage de la fenêtre contextuelle pendant l'exécution du test Browser. Il peut par exemple s'agir d'un cookie à ajouter dans les [les **options avancées** dédiées][2] de votre test. +S'il n'est pas possible de prédire à quel moment ces fenêtres contextuelles apparaissent, adressez-vous au tiers qui fournit la fenêtre contextuelle afin de vérifier s'il est possible de créer une règle empêchant l'affichage de la fenêtre contextuelle pendant l'exécution du test Browser. Il peut par exemple s'agir d'un cookie à ajouter dans la [section **Advanced Options**][2] de votre test. Sinon, vous pouvez employer l'une des méthodes suivantes afin de garantir la fermeture de la fenêtre contextuelle et le bon fonctionnement de votre test : * Créez une [assertion JavaScript][4] au début de votre test Browser pour essayer régulièrement de fermer la fenêtre : @@ -63,4 +69,5 @@ Sinon, vous pouvez employer l'une des méthodes suivantes afin de garantir la fe [1]: https://javascript.info/alert-prompt-confirm [2]: /fr/synthetics/browser_tests/#test-configuration [3]: /fr/synthetics/browser_tests/advanced_options/#optional-step -[4]: /fr/synthetics/browser_tests/actions#test-your-ui-with-custom-javascript \ No newline at end of file +[4]: /fr/synthetics/browser_tests/actions#test-your-ui-with-custom-javascript +[5]: /fr/synthetics/browser_tests \ No newline at end of file diff --git a/content/fr/synthetics/guide/synthetic-test-monitors.md b/content/fr/synthetics/guide/synthetic-test-monitors.md new file mode 100644 index 0000000000000..f0b08b661c190 --- /dev/null +++ b/content/fr/synthetics/guide/synthetic-test-monitors.md @@ -0,0 +1,70 @@ +--- +description: Découvrez les monitors Synthetic créés à partir de vos tests Synthetic. +further_reading: +- link: /monitors/manage/ + tag: Documentation + text: Apprendre à générer les monitors +- link: /monitors/guide/integrate-monitors-with-statuspage/ + tag: Documentation + text: Découvrez comment intégrer les monitors avec Statuspage. +- link: /synthetics/metrics/ + tag: Documentation + text: En savoir plus sur les métriques de la surveillance Synthetic +kind: guide +title: Utiliser des monitors de test Synthetic +--- + +## Présentation + +Lorsque vous créez un test Synthetic, Datadog crée automatiquement un monitor associé. Vous pouvez configurer des notifications lorsque le monitor du test Synthetic envoie une alerte. + +{{< img src="synthetics/guide/synthetics_test_monitors/synthetic_test_monitor.png" alt="Monitor de test Synthetic" style="width:100%;">}} + +## Créer un monitor de test Synthetic + +
Vous ne pouvez pas créer ni importer de monitor de test Synthetic dans Monitors.
+ +Créez un monitor dans la section **Configure the monitor for this test** pour envoyer des notifications lorsqu'un test Synthetic échoue. Les monitors sont associés au test Synthetic que vous créez et sont liés aux conditions dʼalertes définies dans votre configuration de test Synthetic. Pour utiliser l'attribut du monitor et des variables de tags, créez un [monitor de métriques][1]. + +{{< img src="synthetics/guide/synthetics_test_monitors/configure_the_monitor_for_this_test.png" alt="Créer un monitor dans votre test Synthetic" style="width:90%;">}} + +Renommez le monitor pour le rechercher sur la page [**Manage Monitors**][2]. Pour trouver un monitor de test Synthetic, filtrez par `type:synthetics` dans la barre de recherche. Vous pouvez utiliser des [variables conditionnelles][3] de monitor pour caractériser le message de notification en fonction de l'état du test. + +Le monitor de test Synthetic s'intègre aux canaux de notification tels que les e-mails, Slack, Pagerduty et Microsoft Teams. Pour en savoir plus, référez-vous à la section [Notifications][4]. + +Si vous avez plusieurs couches de notifications (par exemple, vous notifiez un plus grand nombre d'équipes si un test Synthetic envoie une alerte plus longue), Datadog recommande d'activer la [renotification][5] sur vos monitors Synthetic. + +## Affiner les notifications d'un monitor + +En fonction de votre stratégie en matière de gestion des incidents, il se peut que vous souhaitiez impliquer plusieurs équipes lorsqu'un test Synthetic donne lieu à des alertes. Pour notifier l'équipe B uniquement en cas d'alertes ultérieures à la première, entourez le message de notification destiné à l'équipe B par `{{#is_renotify}}` et `{{/is_renotify}`. Utilisez les [variables conditionnelles][3] pour caractériser davantage le message de notification en fonction des attributs du monitor. + +{{< img src="synthetics/guide/synthetics_test_monitors/renotification_toggle.png" alt="Sélectionnez la période dʼattente pendant entre deux alertes du monitor" style="width:90%;">}} + +Pour permettre au monitor donnant lʼalerte de renotifier, cliquez sur la bascule à gauche de `If this monitor stays in alert status renotify every` et sélectionnez une option temporelle dans le menu déroulant. + +## Intégrez votre monitor de test Synthetic à Statuspage + +Si vous utilisez [Atlassian Statuspage][6] pour avoir une visibilité sur le temps de fonctionnement de vos applications et services, vous pouvez mettre à jour l'état de vos systèmes avec les notifications de monitor de test Synthetic. + +{{< img src="synthetics/guide/synthetics_test_monitors/statuspage_monitor_setup.png" alt="Ajouter une adresse e-mail Statuspage et un état au nom du monitor dans votre test Synthetic" style="width:95%;">}} + +1. Référez-vous à la [documentation de Statuspage][7] pour générer une adresse électronique spécifique à un composant. +2. Ajoutez l'adresse électronique générée dans le message de notification de votre test. Par exemple, `@custom-statuspage-email@notifications.statuspage.io`. +3. Personnalisez le nom du monitor pour qu'il renvoie `UP` ou `DOWN` en fonction de l'état du test. Par exemple, `{{#is_alert}}DOWN{{/is_alert}}{{#is_recovery}}UP{{/is_recovery}}`. +4. Remplissez la section relatives aux notifications du monitor et ajoutez un résumé dans le nom du monitor. Par exemple, `Shopist Checkout Functionality`. +5. Une fois que vous avez configuré votre monitor, cliquez sur **Save & Exit**. + +Pour en savoir plus, consultez la section [Intégrer des monitors avec Statuspage][8]. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/monitors/types/metric/ +[2]: /fr/monitors/manage/ +[3]: /fr/monitors/notify/variables/?tab=is_alert#conditional-variables +[4]: /fr/monitors/notify/#integrations/ +[5]: /fr/monitors/notify/#renotify +[6]: https://support.atlassian.com/statuspage/ +[7]: https://support.atlassian.com/statuspage/docs/get-started-with-email-automation/ +[8]: /fr/monitors/guide/integrate-monitors-with-statuspage/ \ No newline at end of file diff --git a/content/fr/synthetics/guide/using-synthetic-metrics.md b/content/fr/synthetics/guide/using-synthetic-metrics.md new file mode 100644 index 0000000000000..4ebcf30e6a7b7 --- /dev/null +++ b/content/fr/synthetics/guide/using-synthetic-metrics.md @@ -0,0 +1,69 @@ +--- +description: Découvrez comment utiliser les métriques Synthetic générales dans vos + monitors. +further_reading: +- link: /monitors/types/metric/ + tag: Documentation + text: En savoir plus sur les monitors de métriques +- link: /monitors/manage/ + tag: Documentation + text: Apprendre à gérer les monitors +- link: /synthetics/metrics/ + tag: Documentation + text: En savoir plus sur les métriques de la surveillance Synthetic +kind: guide +title: Utiliser les métriques d'estimation de l'utilisation +--- + +## Présentation + +Vous pouvez utiliser les [métriques][1] générées par vos tests Synthetic pour créer des [monitors de métriques][2] en plus du [monitor Synthetic créé avec votre test][3]. + +{{< img src="synthetics/guide/using-synthetic-metrics/metric-monitor.png" alt="Exemple de monitor de métrique permettant de recevoir une alerte lorsqu'un trop grand nombre de tests génèrent un échec en intégration continue" style="width:95%;" >}} + +Les monitors de métrique peuvent être utilisés pour : + +- Surveiller le temps de réponse total +- Analyser des mesures de temps HTTP précises telles que le DNS, la résolution DNS et la connexion TCP +- Accéder aux tags ajoutés aux métriques issues des tests Synthetic + +Ce guide décrit la marche à suivre pour configurer un monitor de métrique avec une métrique générale telle que `synthetics.test_runs`. + +## Créer un monitor de métrique + + +{{< img src="synthetics/guide/using-synthetic-metrics/metric-monitor-setup.png" alt="Exemple de monitor de métrique permettant de recevoir une alerte lorsqu'un trop grand nombre de tests génèrent un échec en intégration continue" style="width:95%;" >}} + +1. Pour créer un monitor de métrique, accédez à [Monitors > New Monitor][4] et sélectionnez **Metric**. + +2. Sélectionnez une méthode de détection pour personnaliser les conditions d'alerte de votre monitor. Par exemple, vous pouvez créer un monitor de métrique basé sur une alerte de seuil. + + Alerte de seuil + : Une alerte se déclenche chaque fois qu'une métrique dépasse un certain seuil. + + Alerte de changement + : Une alerte se déclenche lorsque le delta entre des valeurs est plus élevé que le seuil. + + Détection d'anomalies + : Une alerte se déclenche chaque fois qu'une métrique dévie d'un pattern attendu. + + Alerte en cas de singularité + : Une alerte se déclenche lorsqu'un membre d'un groupe se comporte différemment de ses pairs. + + Alerte de prévision + : Une alerte se déclenche lorsque Datadog prédit qu'une métrique s'apprête à franchir un seuil. + +3. Dans la section **Define the metric**, saisissez une métrique de surveillance Synthetic telle que `synthetics.test_runs`. Vous pourrez ensuite appliquer un filtre en fonction du statut, des codes de réponse ou du comportement à adopter pour les nouvelles tentatives. + +4. Définissez les conditions d'alerte et ajoutez un message de notification. + +5. Définissez les autorisations de modification, puis cliquez sur **Create**. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/synthetics/metrics/ +[2]: /fr/monitors/types/metric/ +[3]: /fr/synthetics/guide/synthetic-test-monitors/ +[4]: https://app.datadoghq.com/monitors/create/metric \ No newline at end of file diff --git a/content/fr/tracing/guide/setting_up_apm_with_kubernetes_service.md b/content/fr/tracing/guide/setting_up_apm_with_kubernetes_service.md new file mode 100644 index 0000000000000..d3ff7833f6f01 --- /dev/null +++ b/content/fr/tracing/guide/setting_up_apm_with_kubernetes_service.md @@ -0,0 +1,170 @@ +--- +further_reading: +- link: /containers/kubernetes/apm/ + tag: Documentation + text: Configurer la collecte de trace +- link: /containers/cluster_agent/admission_controller + tag: Documentation + text: Contrôleur d'admission +kind: guide +title: Configuration de lʼAPM avec le service Kubernetes +--- + +## Présentation + +Dans Kubernetes, les traceurs Datadog peuvent envoyer des données à lʼAgent Datadog de trois façons : Unix Domain Socket (UDS), lʼadresse IP du host ou le service Kubernetes. Chaque option garantit que lorsqu'un pod d'application envoie des données à lʼAPM, celles-ci sont acheminées vers un pod de lʼAgent Datadog sur le même nœud. Cette stratégie a pour but d'équilibrer le trafic et de garantir l'exactitude du tagging de vos données. Datadog vous recommande d'utiliser UDS pour envoyer des données. + +Toutefois, si les volumes `hostPath` requis pour UDS (et les ports `hostPort` requis pour l'utilisation de lʼadresse IP du host) ne sont pas disponibles, vous pouvez utiliser le service Kubernetes comme alternative. + +Ce guide décrit comment procéder à une configuration à lʼide dʼun service Kubernetes pour envoyer des données à lʼAgent Datadog. + +## Configuration de service + +Dans Kubernetes 1.22, la fonction [Internal Traffic Policy][1] permet de définir la configuration `internalTrafficPolicy: Local` sur un service. Lorsqu'elle est définie, le trafic d'un pod d'application est dirigé vers le pod en aval du service *sur le même nœud*. + +Si vous avez installé lʼAgent Datadog en utilisant [le chart Helm][3] de Datadog ou lʼ[Operator Datadog][4] sur des clusters avec Kubernetes v1.22.0+, un service pour lʼAgent avec `internalTrafficPolicy: Local` est automatiquement créé pour vous. Vous devez également activer l'option du port APM pour votre Agent avec la configuration ci-dessous. + +### Configuration de l'Agent +{{< tabs >}} +{{% tab "Operator Datadog" %}} + +Mettez à jour votre `datadog-agent.yaml` pour que `features.apm.enabled` devienne `true`. + +```yaml +apiVersion: datadoghq.com/v2alpha1 +kind: DatadogAgent +metadata: + name: datadog +spec: + #(...) + features: + apm: + enabled: true +``` + +{{% k8s-operator-redeploy %}} + +{{% /tab %}} +{{% tab "Helm" %}} + +Mettez à jour votre `datadog-values.yaml` pour que `datadog.apm.portEnabled` devienne `true`. + +```yaml +datadog: + apm: + portEnabled: true +``` + +{{% k8s-helm-redeploy %}} + +{{% /tab %}} +{{< /tabs >}} + +## Configuration de l'application +Vous pouvez configurer votre application pour qu'elle utilise le service Kubernetes en utilisant le contrôleur d'admission de lʼAgent de cluster ou en effectuant une configuration manuelle. + +### Contrôleur d'admission de lʼAgent de cluster +Le contrôleur d'admission de [lʼAgent de cluster][2] peut injecter la configuration de la connectivité de lʼAPM dans vos conteneurs. Les options sont `hostip`, `socket` ou `service`. Choisissez le mode `service` pour que le contrôleur d'admission ajoute la variable dʼenvironnement `DD_AGENT_HOST` pour le nom DNS du service. + +{{< tabs >}} +{{% tab "Datadog Operator" %}} +Modifiez votre fichier `datadog-agent.yaml` comme suit : + +```yaml +apiVersion: datadoghq.com/v2alpha1 +kind: DatadogAgent +metadata: + name: datadog +spec: + #(...) + features: + apm: + enabled: true + admissionController: + enabled: true + agentCommunicationMode: service +``` + +{{% k8s-operator-redeploy %}} + +{{% /tab %}} +{{% tab "Helm" %}} + +Modifiez votre fichier `datadog-values.yaml` comme suit : + +```yaml +clusterAgent: + admissionController: + enabled: true + configMode: service +``` + +{{% k8s-helm-redeploy %}} + +{{% /tab %}} +{{< /tabs >}} + +**Remarque :** dans les environnements en nœuds mixtes (Linux/Windows), lʼAgent de cluster et son contrôleur d'admission sont relatifs au déploiement de Linux. Cela peut entraîner l'injection de mauvaises variables dʼenvironnement pour la connectivité du service dans les pods Windows. + +### Configuration manuelle +Pour une configuration manuelle, définissez la variable dʼenvironnement `DD_AGENT_HOST` dans le manifeste de votre pod, avec une valeur de `..svc.cluster.local`. + +```yaml + #(...) + spec: + containers: + - name: "" + image: "" + env: + - name: DD_AGENT_HOST + value: ..svc.cluster.local +``` + +Remplacez `` par le nom du service et remplacez `` par lʼespace de nommage du service. + +Par exemple, si votre définition de votre service ressemble à ce qui suit : + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: datadog + namespace: monitoring + labels: + #(...) +spec: + selector: + app: datadog + ports: + - protocol: UDP + port: 8125 + targetPort: 8125 + name: dogstatsdport + - protocol: TCP + port: 8126 + targetPort: 8126 + name: traceport + internalTrafficPolicy: Local +``` + +Alors, définissez la valeur de `DD_AGENT_HOST` sur `datadog.monitoring.svc.cluster.local`. + +```yaml + #(...) + spec: + containers: + - name: "" + image: "" + env: + - name: DD_AGENT_HOST + value: datadog.monitoring.svc.cluster.local +``` + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://kubernetes.io/docs/concepts/services-networking/service-traffic-policy/ +[2]: /fr/containers/cluster_agent/admission_controller +[3]: https://github.com/DataDog/helm-charts/blob/main/charts/datadog/values.yaml +[4]: /fr/containers/datadog_operator \ No newline at end of file diff --git a/content/fr/tracing/other_telemetry/connect_logs_and_traces/php.md b/content/fr/tracing/other_telemetry/connect_logs_and_traces/php.md new file mode 100644 index 0000000000000..2e445843e8885 --- /dev/null +++ b/content/fr/tracing/other_telemetry/connect_logs_and_traces/php.md @@ -0,0 +1,191 @@ +--- +aliases: +- /fr/tracing/connect_logs_and_traces/php +code_lang: php +code_lang_weight: 70 +description: Associez vos logs PHP à vos traces pour les mettre en corrélation dans + Datadog. +further_reading: +- link: tracing/trace_collection/custom_instrumentation + tag: Documentation + text: Instrumenter vos applications manuellement pour créer des traces +- link: tracing/glossary/ + tag: Documentation + text: Explorer vos services, ressources et traces +- link: https://www.datadoghq.com/blog/request-log-correlation/ + tag: GitHub + text: Corréler automatiquement vos logs de requête avec vos traces +- link: /logs/guide/ease-troubleshooting-with-cross-product-correlation/ + tag: Guide + text: Bénéficiez de diagnostics simplifiés grâce à la mise en corrélation entre + produits. +kind: documentation +title: Mettre en corrélation vos logs PHP avec vos traces +type: multi-code-lang +--- + +## Injection automatique + +À partir de la version `0.89.0`, le traceur PHP injecte automatiquement les identifiants de corrélation des traces dans les logs d'application. Pour activer l'injection automatique, définissez la variable d'environnement `DD_LOGS_INJECTION` (paramètre INI `datadog.logs_injection`) sur `true`. + +Le traceur PHP prend en charge les loggers conformes au standard PSR-3, tels que [Monolog][4] ou [Laminas Log][5]. + +
+ Remarque : configurez votre bibliothèque de journalisation de façon à ce que vos logs soient générés au format JSON. De cette façon : + +
+ +### Configurer l'injection dans les logs + +Si vous ne l'avez pas encore fait, configurez le tracer PHP avec `DD_ENV`, `DD_SERVICE` et `DD_VERSION` afin d'ajouter les tags `env`, `service` et `version` dans vos logs de manière optimale (voir la section [Tagging de service unifié][6] pour en savoir plus). + +Le traceur PHP offre différents moyens de configurer l'injection des identifiants de corrélation des traces dans vos logs : +- [En ajoutant les identifiants de corrélation des traces dans le contexte du log](#ajouter-les-identifiants-de-correlation-des-traces-dans-le-contexte-du-log) +- [En utilisant des placeholders dans votre message](#utiliser-des-placeholders-dans-votre-message) + +#### Ajouter les identifiants de corrélation des traces dans le contexte du log (#ajouter-les-identifiants-de-correlation-des-traces-dans-le-contexte-du-log) + +Par défaut, le traceur PHP ajoute les identifiants de corrélation des traces dans le contexte du log. + +Par exemple, si vous utilisez la bibliothèque [Monolog][4] dans une application Laravel comme suit : + +```php +use Illuminate\Support\Facades\Log; +# ... +Log::debug('Hello, World!'); +``` + +Le traceur PHP ajoute les identifiants de corrélation des traces disponibles au contexte du log. Le message ci-dessus peut ainsi devenir : + +``` +[2022-12-09 16:02:42] production.DEBUG: Hello, World! {"dd.trace_id":"1234567890abcdef","dd.span_id":"1234567890abcdef","dd.service":"laravel","dd.version":"8.0.0","dd.env":"production","status":"debug"} +``` + +**Remarque** : si votre message contient un placeholder ou qu'un ID de trace y est déjà présent, le traceur PHP n'ajoute **pas** les identifiants de corrélation des traces au contexte du log. + +#### Utiliser des placeholders dans votre message {#utiliser-des-placeholders-dans-votre-message} + +Vous pouvez utiliser des placeholders dans votre message pour injecter automatiquement les identifiants de corrélation des traces dans vos logs. Le traceur PHP prend en charge les placeholders suivants : +- `%dd.trace_id%` : l'ID de la trace +- `%dd.span_id%` : l'ID de la span +- `%dd.service%` : le nom du service +- `%dd.version%` : la version du service +- `%dd.env%` : l'environnement du service + +Les placeholders sont sensibles à la casse et doivent être placés entre des caractères `%`. + +Par exemple, si vous utilisez la bibliothèque [Monolog][4] dans une application Laravel , vous pouvez configurer l'injection dans un message de log comme suit : + +```php +use Illuminate\Support\Facades\Log; +# ... +Log::info('Hello, World! [%dd.trace_id% %dd.span_id% %status%]'); +``` + +Le traceur PHP remplace les placeholders par les valeurs correspondantes. Le message du log peut ainsi devenir : + +``` +[2022-12-09 16:02:42] production.INFO: Hello, World! [dd.trace_id="1234567890abcdef" dd.span_id="1234567890abcdef" status="info"] +``` + +**Remarque** : les crochets sont obligatoires si vous prévoyez d'utiliser les règles de parsing par défaut fournies dans le [pipeline de log][7] PHP. Si vous utilisez une règle de parsing personnalisée, vous pouvez omettre les crochets si vous le souhaitez. + + +## Injection manuelle + +
+Remarque : la fonction \DDTrace\current_context(), ajoutée dans la version 0.61.0, renvoie les identifiants des traces en tant que nombre décimal. +
+ +Pour associer vos logs et vos traces, vos logs doivent contenir les attributs `dd.trace_id` et `dd.span_id`, qui contiennent respectivement votre ID de trace et votre ID de span. + +Si vous n’utilisez pas une [intégration de log de Datadog][1] pour parser vos logs, des règles de parsing de log personnalisées doivent s’assurer que `dd.trace_id` et `dd.span_id` sont parsés en tant que chaînes de caractères et remappés via le [remappeur de traces][2]. Pour en savoir plus, consultez la section [Les logs corrélés ne s'affichent pas dans le volet des ID de trace][3]. + +Par exemple, ces deux attributs seront ajoutés à vos logs de la manière suivante : + +```php + +``` + +Si le logger implémente la [bibliothèque **monolog/monolog**][4], utilisez `Logger::pushProcessor()` pour ajouter automatiquement les identifiants à tous les messages de log. Pour monolog v1, ajoutez la configuration suivante : + +```php +pushProcessor(function ($record) { + $record['message'] .= sprintf( + ' [dd.trace_id=%s dd.span_id=%s]', + \DDTrace\logs_correlation_trace_id(), + \dd_trace_peek_span_id() + ); + return $record; + }); +?> +``` + +Pour monolog v2, ajoutez la configuration suivante : + +```php +pushProcessor(function ($record) { + return $record->with(message: $record['message'] . sprintf( + ' [dd.trace_id=%s dd.span_id=%s]', + \DDTrace\logs_correlation_trace_id(), + \dd_trace_peek_span_id() + )); + }); + ?> +``` + +Si votre application utilise le format JSON pour les logs, vous pouvez ajouter une clé de premier niveau `dd` contenant le `trace_id` et le `span_id` au lieu d'ajouter le `trace_id` et le `span_id` dans le message du log : + +```php +pushProcessor(function ($record) use ($context) { + $record['dd'] = [ + 'trace_id' => \DDTrace\logs_correlation_trace_id(), + 'span_id' => \dd_trace_peek_span_id() + ]; + + return $record; + }); +?> +``` + +Pour monolog v3, ajoutez la configuration suivante : + +```php +pushProcessor(function ($record) { + $record->extra['dd'] = [ + 'trace_id' => \DDTrace\logs_correlation_trace_id(), + 'span_id' => \dd_trace_peek_span_id() + ]; + return $record; + }); +?> +``` + +Si vous ingérez vos logs au format JSON, accédez à la section [Prétraitement de logs JSON][8] et ajoutez `extra.dd.trace_id` dans le champ **Trace Id Attributes**. + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/logs/log_collection/php/ +[2]: /fr/logs/log_configuration/processors/#trace-remapper +[3]: /fr/tracing/troubleshooting/correlated-logs-not-showing-up-in-the-trace-id-panel/?tab=custom +[4]: https://github.com/Seldaek/monolog +[5]: https://github.com/laminas/laminas-log +[6]: /fr/getting_started/tagging/unified_service_tagging +[7]: /fr/logs/log_configuration/pipelines +[8]: https://app.datadoghq.com/logs/pipelines/remapping \ No newline at end of file diff --git a/content/fr/tracing/trace_collection/automatic_instrumentation/_index.md b/content/fr/tracing/trace_collection/automatic_instrumentation/_index.md new file mode 100644 index 0000000000000..2c297d9371905 --- /dev/null +++ b/content/fr/tracing/trace_collection/automatic_instrumentation/_index.md @@ -0,0 +1,122 @@ +--- +algolia: + tags: + - apm automatic instrumentation +further_reading: +- link: /tracing/glossary/ + tag: Documentation + text: Termes et concepts d'APM +kind: documentation +title: Instrumentation automatique +--- + +## Présentation + +L'instrumentation automatique vous permet de créer automatiquement des spans pour votre application. Vous pouvez ainsi capturer des données d'observabilité à partir d'un large éventail d'opérations standard et de frameworks populaires, et ce en limitant les interventions manuelles. L'instrumentation automatique de votre application peut être configurée lors de l'installation de l'Agent Datadog grâce à l'[instrumentation en une étape][5], ou en [ajoutant manuellement les bibliothèques de tracing Datadog][6] dans votre code. + +## Cas d'utilisation + +L'instrumentation automatique peut être utile dans les cas suivants : + +- Pour capturer des données d'observabilité essentielles avec les bibliothèques et les langages courants, le tout sans configuration complexe. +- Pour activer la surveillance en temps réel avec des paramètres pré-configurés et ainsi analyser sans attendre les performances de votre application. +- Pour simplifier votre système d'observabilité lorsqu'aucune [instrumentation personnalisée][7] n'est requise. + +## Prise en main + +Suivez la documentation correspondant à votre méthode d'instrumentation automatique pour en savoir plus : + +{{< tabs >}} +{{% tab "Instrumentation en une étape (bêta)" %}} + +Si vous installez ou mettez à jour l'Agent Datadog en ayant sélectionné l'option **Enable APM Instrumentation (beta)**, l'Agent est installé et configuré pour activer APM. Vous pourrez ainsi instrumenter automatiquement votre application sans étape d'installation ou de configuration supplémentaire. + +Pour commencer, lisez la documentation [Instrumentation en une étape][1]. + +[1]: /fr/tracing/trace_collection/automatic_instrumentation/single-step-apm + +{{% /tab %}} + +{{% tab "Bibliothèques Datadog" %}} + +Pour instrumenter automatiquement votre application à l'aide des bibliothèques Datadog : + +1. [Installez et configurez l'Agent](#installer-et-configurer-l-agent). +2. [Ajoutez la bibliothèque de tracing Datadog dans votre code](#instrumenter-votre-application). + +### Installer et configurer l'Agent + +Installez et configurez l'Agent Datadog de façon à ce qu'il reçoive les traces provenant de votre application instrumentée. Par défaut, l'Agent Datadog est configuré pour recevoir les traces dans votre fichier `datadog.yaml` avec l'option `enabled: true` sous `apm_config`. Il détecte les données de trace sur `http://localhost:8126`. + +Pour les environnements conteneurisés, suivez les liens ci-dessous pour activer la collecte de traces au sein de l'Agent Datadog. + +#### Conteneurs + +1. Définissez `apm_non_local_traffic: true` dans la section `apm_config` de votre [fichier de configuration principal `datadog.yaml`][8]. +2. Consultez les instructions de configuration spécifiques pour vous assurer que l'Agent est configuré de façon à recevoir des traces dans un environnement conteneurisé : + +{{< partial name="apm/apm-containers.html" >}} + +
+ +3. Le client de tracing tente d'envoyer les traces au socket de domaine Unix `/var/run/datadog/apm.socket` par défaut. Si le socket n'existe pas, les traces sont envoyées à `http://localhost:8126`. + + Si vous souhaitez spécifier un autre socket, host ou port, utilisez la variable d'environnement `DD_TRACE_AGENT_URL`. Par exemple : + + ``` + DD_TRACE_AGENT_URL=http://custom-hostname:1234 + DD_TRACE_AGENT_URL=unix:///var/run/datadog/apm.socket + + ``` + + Là encore, le client de tracing tente d'envoyer les statistiques au socket de domaine Unix `/var/run/datadog/dsd.socket`. Si le socket n'existe pas, les statistiques sont envoyées à `http://localhost:8125`. + +{{< site-region region="us3,us5,eu,gov,ap1" >}} + +4. Définissez `DD_SITE` dans l'Agent Datadog sur {{< region-param key="dd_site" code="true" >}} pour vous assurer que l'Agent envoie les données au bon site Datadog. + +{{< /site-region >}} + +#### AWS Lambda + +Pour configurer la solution APM Datadog dans AWS Lambda, consultez la documentation dédiée au [tracing de fonctions sans serveur][9]. + +#### Autres environnements + +Le tracing est disponible pour d'autres d'environnements tels que [Heroku][10], [Cloud Foundry][11], [AWS Elastic Beanstalk][12] et [Azure App Services][13]. + +Pour les autres environnements, consultez la documentation relative aux [intégrations][14] pour l'environnement qui vous intéresse. [Contactez l'assistance][15] si vous rencontrez des problèmes de configuration. + +### Instrumenter votre application + +Configurez votre application pour envoyer des traces en utilisant l'une des bibliothèques de tracing Datadog officielles suivantes : + +{{< partial name="apm/apm-languages.html" >}} + +
+ +Pour instrumenter une application écrite dans un langage qui n'est pas pris en charge par une bibliothèque officielle, consultez la liste des [bibliothèques de tracing de notre communauté][1]. + +[1]: /fr/developers/community/libraries/#apm-tracing-client-libraries +[8]: /fr/agent/configuration/agent-configuration-files/#agent-main-configuration-file +[9]: /fr/tracing/serverless_functions/ +[10]: /fr/agent/basic_agent_usage/heroku/#installation +[11]: /fr/integrations/cloud_foundry/#trace-collection +[12]: /fr/integrations/amazon_elasticbeanstalk/ +[13]: /fr/infrastructure/serverless/azure_app_services/#overview +[14]: /fr/integrations/ +[15]: /fr/help/ +{{% /tab %}} +{{< /tabs >}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + + +[2]: /fr/tracing/trace_collection/custom_instrumentation/dd_libraries/ +[3]: /fr/tracing/trace_collection/custom_instrumentation/otel_instrumentation +[4]: /fr/tracing/trace_collection/custom_instrumentation/opentracing/ +[5]: /fr/tracing/trace_collection/automatic_instrumentation/single-step-apm +[6]: /fr/tracing/trace_collection/automatic_instrumentation/dd_libraries/ +[7]: /fr/tracing/trace_collection/custom_instrumentation/ \ No newline at end of file diff --git a/content/fr/tracing/trace_explorer/visualize.md b/content/fr/tracing/trace_explorer/visualize.md new file mode 100644 index 0000000000000..24ae7703d6c07 --- /dev/null +++ b/content/fr/tracing/trace_explorer/visualize.md @@ -0,0 +1,102 @@ +--- +description: Affichez les spans dans une liste ou regroupez-les dans des séries temporelles, + des top lists et plus encore. +further_reading: +- link: tracing/trace_explorer/ + tag: Documentation + text: Trace Explorer +kind: documentation +title: Visualisations de spans +--- + +## Présentation + +Les visualisations définissent la manière dont les données des spans interrogées sont affichées. Sélectionnez les visualisations appropriées pour faire apparaître des informations utiles, comme une **liste** pour les événements individuels, ou des **séries temporelles** ou des **top lists** pour les données agrégées. + +## Vue List + +Le présentation sous forme de liste regroupe les spans qui correspondent au contexte sélectionné, définis par la [requête de barre de recherche][1] et un [intervalle][2]. + +Dans le tableau, choisissez les informations pertinentes à afficher sous forme de colonnes. Vous pouvez **gérer les colonnes** du tableau de deux façons différentes : + +- vous pouvez interagir avec la ligne d'en-tête du tableau pour **trier**, **réorganiser** ou **supprimer** des colonnes. +- vous pouvez également sélectionner une facette dans le volet des facettes à gauche, ou dans le volet latéral des traces après avoir cliqué sur une span spécifique, afin dʼ**ajouter** une colonne pour un champ. Vous pouvez également ajouter des colonnes à partir du bouton **Options**. + +{{< img src="tracing/trace_explorer/visualize/list_view_table_controls.mp4" alt="Configuration du tableau dʼaffichage" video=true style="width:80%;">}} + +Le tri par défaut des spans dans la visualisation sous forme de liste se fait par horodatage, avec les spans les plus récentes en haut. Pour faire apparaître en premier les spans dont la valeur est la plus basse ou la plus élevée pour une mesure, ou pour trier vos spans lexicographiquement en fonction de la valeur d'un tag, spécifiez cette colonne comme étant la colonne **by**. + + +La configuration des colonnes est stockée avec d'autres éléments de votre contexte de dépannage dans les vues enregistrées. + +La `Latency Breakdown` de la trace peut manquer pour certaines spans si la trace est malformée ou incomplète. Par exemple, les échantillonneurs error et rare capturent des morceaux de traces, sans la garantie de capturer la trace dans son intégralité. Dans ce cas, les données sont omises pour éviter d'afficher des informations incohérentes ou trompeuses sur les temps de latence qui n'auraient de sens que si la trace était complète. + +Lorsque la requête est filtrée sur les spans dʼerreurs, sélectionnez l'option **Group into Issues** pour visualiser une liste des problèmes de lʼ[Error Tracking][5] au lieu des spans dʼerreurs individuelles. Cliquez sur n'importe quel problème de la liste pour ouvrir le volet des problèmes et accéder à des informations supplémentaires sur ce groupe d'erreurs. + +{{< img src="tracing/trace_explorer/visualize/trace_explorer_issue_grouping.png" alt="Problème de regroupement de lʼError Tracking" style="width:100%;">}} + +Dans les détails du problème, cliquez sur `See all errors` pour afficher les spans dʼerreurs individuelles regroupées sous ce problème. + +**Remarque** : rétablissez le regroupement dʼ`Errors` pour visualiser les erreurs individuelles, y compris les erreurs sans empreinte digitale, c'est-à-dire les erreurs sans problème associé. + +## Série temporelle + +Faites appel à des séries temporelles pour visualiser l'évolution d'une seule [mesure][3] (ou d'un nombre unique de valeurs de tags) pour un intervalle donné. Vous pouvez également fractionner les données en utilisant l'un des trois [tags][2] (regroupement). + +**Remarque** : le [Live Explorer][4] (15 minutes) permet de regrouper les données en fonction d'une seule dimension. + +Les vues agrégées utilisent des options de requête supplémentaires pour définir la **dimension de tag mesurée**, les dimensions à utiliser pour le **regroupement** de la requête et la **période d'agrégation**. Par exemple : + +1. Choisissez d'afficher la mesure `Duration`. + + {{< img src="tracing/trace_explorer/visualize/group_by_measured_dimension.png" alt="Dimension mesurée" style="width:100%;">}} + +2. Sélectionnez la fonction d'agrégation pour la mesure `Duration`. La sélection d'une mesure vous permet de choisir la fonction d'agrégation alors que la sélection d'un attribut qualitatif affiche le compte unique. + + {{< img src="tracing/trace_explorer/visualize/group_by_aggregation_function.png" alt="Fonction dʼagrégation" style="width:100%;">}} + +3. Regroupez la requête par dimension, comme `Resource`. + + {{< img src="tracing/trace_explorer/visualize/group_by_dimension.png" alt="Fractionner une dimension" style="width:100%;">}} + +4. Choisissez d'afficher un certain nombre de valeurs élevées ou basses en fonction du tag sélectionné. + + {{< img src="tracing/trace_explorer/visualize/group_by_top_bottom.png" alt="X valeurs élevées et basses" style="width:100%;">}} + +5. Choisissez la période de rollup, par exemple `10min`. + + {{< img src="tracing/trace_explorer/visualize/group_by_rollup_period.png" alt="Période de rollup" style="width:100%;">}} + +La série temporelle suivante du Trace Explorer montre l'évolution des dix premiers noms de ressources du `shopist-web-ui` du service selon le 95e centile de `Duration` au cours des quatre dernières heures : + +{{< img src="tracing/trace_explorer/visualize/timeseries_view.png" alt="Vue des séries temporelles" style="width:100%;">}} + +Les séries temporelles vous permettent de choisir des options d'affichage supplémentaires : l'**intervalle de cumul**, si les résultats doivent être **affichés** sous forme de **barres** (recommandé pour les nombres et les nombres uniques), de **lignes** (recommandé pour les agrégations statistiques) ou de **zones**, et le **jeu de couleurs**. + +## Top list + +Utilisez une top list pour visualiser un nombre de spans, un nombre des tags uniques ou une mesure divisée par une dimension de tag. + +Par exemple, la top list suivante montre les dix premiers utilisateurs du site web qui ont rencontré une erreur lors du paiement au cours de la journée écoulée, sur la base du nombre de spans. + +{{< img src="tracing/trace_explorer/visualize/top_list_view.png" alt="Vue en top list" style="width:100%;">}} + +## Tableau + +Utilisez un tableau pour visualiser les valeurs les plus élevées dʼun maximum de trois combinaisons de dimensions en fonction d'une mesure choisie ou du nombre de spans. + +**Remarque** : la visualisation sous forme de tableau regroupée sur la base d'une seule mesure est identique à celle d'une Top List. Seule la présentation diffère. + +Le tableau suivant montre le nombre de spans dʼerreurs par `Env`, `Service`, et `Error type`. + +{{< img src="tracing/trace_explorer/visualize/table_view.png" alt="Présentation sous forme de tableau" style="width:100%;">}} + +## Pour aller plus loin + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /fr/tracing/trace_explorer/query_syntax/#search-syntax +[2]: /fr/tracing/trace_explorer/query_syntax/#time-range +[3]: /fr/tracing/trace_explorer/facets/#quantitative-facets-measures +[4]: /fr/tracing/trace_explorer/?tab=timeseriesview#live-search-for-15-minutes +[5]: /fr/tracing/error_tracking/ \ No newline at end of file diff --git a/content/fr/tracing/troubleshooting/connection_errors.md b/content/fr/tracing/troubleshooting/connection_errors.md index 86d1c7580f981..0deba145c2a75 100644 --- a/content/fr/tracing/troubleshooting/connection_errors.md +++ b/content/fr/tracing/troubleshooting/connection_errors.md @@ -180,7 +180,7 @@ Si votre application et l'Agent Datadog ne sont pas conteneurisés, l'applicatio Si l'Agent Datadog indique que l'APM n'effectue pas d'écoute, vérifiez qu'il n'y a aucun conflit pour le port 8126. Le composant APM de l'Agent Datadog utilise ce port par défaut. Si vous ne parvenez pas à isoler la cause à l'origine de votre problème, [contactez l'assistance Datadog][4] en prenant soin de partager : -- Les informations à propos de l'environnement au sein duquel vous déployez l'application et l'Agent Datadog +- Les informations à propos de l'environnement au sein duquel vous déployez l'application et l'Agent Datadog. - Si vous utilisez des proxies, les informations à propos de leur configuration - Si vous essayez de remplacer le port 8126 par défaut par un autre port, les informations à propos de ce port - Un [flare de l'Agent Datadog][5] @@ -189,33 +189,40 @@ Si vous ne parvenez pas à isoler la cause à l'origine de votre problème, [con #### Vérifier la configuration du réseau -Dans les configurations conteneurisées, l'envoi de traces à `localhost` ou `127.0.0.1` ne fonctionne généralement pas, car l'Agent Datadog est également conteneurisé et situé à un autre emplacement. **Remarque** : AWS ECS sur Fargate et AWS EKS sur Fargate constituent des exceptions à cette règle. +Dans les configurations conteneurisées, l'envoi de traces à `localhost` ou `127.0.0.1` ne fonctionne généralement pas, car l'Agent Datadog est également conteneurisé et situé à un autre emplacement. **Remarque** : Amazon ECS sur Fargate et AWS EKS sur Fargate constituent des exceptions à cette règle. Assurez-vous que le processus de connexion entre l'application et l'Agent Datadog respecte les exigences de cette configuration. -Vérifiez notamment que l'Agent Datadog a accès au port `8126` et que votre application peut transmettre des traces à l'emplacement de l'Agent Datadog. +Spécifiquement, vérifiez que lʼAgent Datadog a accès au port `8126` (ou au port que vous avez défini) et que votre application est en mesure de diriger des traces vers lʼemplacement de lʼAgent Datadog. +Pour ce faire, vous pouvez exécuter la commande suivante à partir du conteneur de l'application, en remplaçant les variables `{agent_ip}` et `{agent_port}` : -Consultez la [documentation relative à la configuration de l'APM dans l'application][6] pour procéder à ces vérifications. +``` +curl -X GET http://{agent_ip}:{agent_port}/info +``` + +Si cette commande échoue, votre conteneur ne peut pas accéder à lʼAgent. Référez-vous aux sections suivantes pour obtenir des indications sur les causes possibles de ce problème. + +Consultez la [documentation relative à la configuration d'APM dans l'application][6] pour procéder à ces vérifications. #### Identifier à quel emplacement votre bibliothèque de tracing essaye d'envoyer des traces -À l'aide des logs d'erreur indiqués ci-dessus pour chaque langue, vérifiez à quel emplacement vos traces sont envoyées. +À l'aide des logs d'erreur indiqués ci-dessus pour chaque langage, vérifiez à quel emplacement vos traces sont envoyées. Consultez le tableau ci-dessous pour obtenir des exemples de configuration. Certains déploiements requièrent des configurations réseau supplémentaires. Elles sont décrites dans la documentation des produits. -| Configuration | `DD_AGENT_HOST` | +| Implémentation | `DD_AGENT_HOST` | |---------|------------------| -| [AWS ECS sur EC2][7] | Évaluation avec l'endpoint de métadonnées d'Amazon EC2 | -| [AWS ECS sur Fargate][8] | Ne pas définir `DD_AGENT_HOST` | +| [Amazon ECS sur EC2][7] | Évaluation avec l'endpoint de métadonnées d'Amazon EC2 | +| [Amazon ECS sur Fargate][8] | Ne pas définir `DD_AGENT_HOST` | | [AWS EKS sur Fargate][9] | Ne pas définir `DD_AGENT_HOST` | | [AWS Elastic Beanstalk avec un seul conteneur][10] | IP de passerelle (généralement `172.17.0.1`) | | [AWS Elastic Beanstalk avec plusieurs conteneurs][11] | Lien pointant vers le nom du conteneur de l'Agent Datadog | -| [Kubernetes][12] | 1) [Socket de domaine Unix][20], 2) [`status.hostIP`][13] ajouté manuellement ou 3) par l'intermédiaire du [contrôleur d'admission][14] | -| [AWS EKS (pas sur Fargate)][15] | 1) [Socket de domaine Unix][20], 2) [`status.hostIP`][13] ajouté manuellement ou 3) par l'intermédiaire du [contrôleur d'admission][14] | -| [Agent Datadog et conteneurs Docker d'application][16] | Conteneur de l'Agent Datadog | +| [Kubernetes][12] | 1) [Socket de domaine Unix][13], 2) [`status.hostIP`][14] ajouté manuellement, ou 3) via le [Contrôleur d'admission][15]. Si vous utilisez TCP, vérifiez les [stratégies de réseau][21] appliquées sur votre conteneur. | +| [AWS EKS (pas sur Fargate)][16] | 1) [Socket de domaine Unix][13], 2) [`status.hostIP`][14] ajouté manuellement ou 3) par l'intermédiaire du [Contrôleur d'admission][14] | +| [Agent Datadog et conteneurs Docker d'application][17] | Conteneur de l'Agent Datadog | -**Remarque à propos des serveurs Web** : si les données de la section `agent_url` des [logs de lancement du traceur][1] ne correspondent pas à celles de la variable d'environnement `DD_AGENT_HOST` transmise, vérifiez comment les variables d'environnement sont mises en cascade pour ce serveur. Par exemple, en PHP, il existe un paramètre supplémentaire permettant de veiller à ce qu'[Apache][17] ou que [Nginx][18] récupère correctement la variable d'environnement `DD_AGENT_HOST`. +**Remarque à propos des serveurs Web** : si les données de la section `agent_url` des [logs de lancement du traceur][1] ne correspondent pas à celles de la variable d'environnement `DD_AGENT_HOST` transmise, vérifiez comment les variables d'environnement sont mises en cascade pour ce serveur. Par exemple, en PHP, il existe un paramètre supplémentaire permettant de veiller à ce qu'[Apache][18] ou que [Nginx][19] récupère correctement la variable d'environnement `DD_AGENT_HOST`. Si votre bibliothèque de tracing envoie les traces correctement en respectant votre configuration, passez à l'étape suivante. @@ -247,16 +254,16 @@ APM Agent ``` Si la configuration ne contient pas d'erreur, mais que vous continuez à recevoir des erreurs de connexion, [contactez l'assistance Datadog][4] en prenant soin de partager : -- Les informations à propos de l'environnement au sein duquel vous déployez l'application et l'Agent Datadog +- Les informations à propos de l'environnement au sein duquel vous déployez l'application et l'Agent Datadog. - Si vous utilisez des proxies, les informations à propos de leur configuration - Tous les fichiers de configuration utilisés pour configurer l'application et l'Agent Datadog - Les logs de lancement ou de debugging du traceur qui décrivent l'erreur de connexion -- Un [flare de l'Agent][5] Datadog ; pour les conteneurs dédiés, envoyez le flare depuis le [conteneur dédié à l'Agent de trace][19] +- Un [flare de l'Agent][5] Datadog ; pour les conteneurs dédiés, envoyez le flare depuis le [conteneur dédié à l'Agent de trace][20] [1]: /fr/tracing/troubleshooting/tracer_startup_logs/ [2]: /fr/tracing/troubleshooting/tracer_debug_logs/ -[3]: /fr/agent/guide/agent-commands/#agent-information +[3]: /fr/agent/configuration/agent-commands/#agent-information [4]: /fr/help/ [5]: /fr/agent/troubleshooting/send_a_flare/ [6]: https://app.datadoghq.com/apm/service-setup @@ -266,11 +273,12 @@ Si la configuration ne contient pas d'erreur, mais que vous continuez à recevoi [10]: /fr/integrations/amazon_elasticbeanstalk/?tab=singlecontainer#trace-collection [11]: /fr/integrations/amazon_elasticbeanstalk/?tab=multiplecontainers#trace-collection [12]: /fr/agent/kubernetes/apm/ -[13]: https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#capabilities-of-the-downward-api -[14]: /fr/agent/cluster_agent/admission_controller/ -[15]: /fr/integrations/amazon_eks/#setup -[16]: /fr/agent/docker/apm/#tracing-from-other-containers -[17]: /fr/tracing/setup_overview/setup/php/?tab=containers#apache -[18]: /fr/tracing/setup_overview/setup/php/?tab=containers#nginx -[19]: /fr/agent/troubleshooting/send_a_flare/?tab=agentv6v7#trace-agent -[20]: /fr/containers/kubernetes/apm/?tabs=daemonsetuds#configure-the-datadog-agent-to-accept-traces +[13]: /fr/containers/kubernetes/apm/?tabs=daemonsetuds#configure-the-datadog-agent-to-accept-traces +[14]: https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#capabilities-of-the-downward-api +[15]: /fr/agent/cluster_agent/admission_controller/ +[16]: /fr/integrations/amazon_eks/#setup +[17]: /fr/agent/docker/apm/#tracing-from-other-containers +[18]: /fr/tracing/trace_collection/dd_libraries/php/?tab=containers#apache +[19]: /fr/tracing/trace_collection/dd_libraries/php/?tab=containers#nginx +[20]: /fr/agent/troubleshooting/send_a_flare/?tab=agentv6v7#trace-agent +[21]: https://kubernetes.io/docs/concepts/services-networking/network-policies/ \ No newline at end of file diff --git a/content/ja/api/latest/cases-projects/_index.md b/content/ja/api/latest/cases-projects/_index.md new file mode 100644 index 0000000000000..7a49f9d6b0542 --- /dev/null +++ b/content/ja/api/latest/cases-projects/_index.md @@ -0,0 +1,3 @@ +--- +title: ケースプロジェクト +--- diff --git a/content/ja/api/latest/container-images/_index.md b/content/ja/api/latest/container-images/_index.md new file mode 100644 index 0000000000000..c689a183a3dec --- /dev/null +++ b/content/ja/api/latest/container-images/_index.md @@ -0,0 +1,3 @@ +--- +title: コンテナイメージ +--- diff --git a/content/ja/api/latest/containers/_index.md b/content/ja/api/latest/containers/_index.md new file mode 100644 index 0000000000000..2f41631ffd725 --- /dev/null +++ b/content/ja/api/latest/containers/_index.md @@ -0,0 +1,3 @@ +--- +title: コンテナ +--- diff --git a/content/ja/api/latest/dora-metrics/_index.md b/content/ja/api/latest/dora-metrics/_index.md new file mode 100644 index 0000000000000..8d218d59de904 --- /dev/null +++ b/content/ja/api/latest/dora-metrics/_index.md @@ -0,0 +1,3 @@ +--- +title: DORA メトリクス +--- diff --git a/content/ja/api/latest/service-scorecards/_index.md b/content/ja/api/latest/service-scorecards/_index.md new file mode 100644 index 0000000000000..f7f9d906a2932 --- /dev/null +++ b/content/ja/api/latest/service-scorecards/_index.md @@ -0,0 +1,3 @@ +--- +title: サービススコアカード +--- diff --git a/content/ja/developers/integrations/marketplace_offering.md b/content/ja/developers/integrations/marketplace_offering.md index 2ee43c7ea5989..111e98a73df90 100644 --- a/content/ja/developers/integrations/marketplace_offering.md +++ b/content/ja/developers/integrations/marketplace_offering.md @@ -20,7 +20,7 @@ type: documentation --- ## 概要 -[Datadog Marketplace][2] は、テクノロジーパートナーが Datadog ユーザー向けに提供する有償製品を出品できるデジタルマーケットプレイスです。 +[Datadog Marketplace][2] は、テクノロジーパートナーが Datadog ユーザー向けに提供する有償製品を出品できるデジタルマーケットプレイスです。 **Integrations** ページには、Datadog とテクノロジーパートナーの両者によって構築されたインテグレーションが無料で含まれていますが、**Marketplace** ページは、Datadog のお客様とテクノロジーパートナーが Agent ベースまたは API ベースのインテグレーション、ソフトウェアライセンス、プロフェッショナルサービスなどのさまざまな製品を売買するための商用プラットフォームです。 @@ -43,7 +43,7 @@ Datadog Marketplace では、以下の種類の製品がサポートされてい Marketplace パートナーには、すぐに使えるインテグレーションを出品しているテクノロジーパートナーにはない、独自の特典があります。 -- ブログ記事、プレスリリースへの引用、ソーシャルメディアへの掲載など、**市場開拓コラボレーション**と、パートナーの成長を加速させることに焦点を当てた営業およびマーケティングの専門リソースへのアクセスを提供します。 +- ブログ記事、プレスリリースへの引用、ソーシャルメディアの拡散などを含む**市場開拓コラボレーション**で、パートナーの成長を加速させることに焦点を当てた専用の営業およびマーケティングリソースへのアクセスが提供されます。 - 社内のセールスイネーブルメントのための**トレーニングおよびサポート**。 - カンファレンス、イベント ([Datadog DASH][20] など) を割引料金で**スポンサーする独占的な機会**。 - ユーザー発見から**新規リードを創出**します。 diff --git a/content/ja/glossary/terms/investigator.md b/content/ja/glossary/terms/investigator.md new file mode 100644 index 0000000000000..2a4999d0b13e8 --- /dev/null +++ b/content/ja/glossary/terms/investigator.md @@ -0,0 +1,6 @@ +--- +core_product: +- cloud siem +title: Investigator +--- +Investigator は、影響を受けるエンティティから別のエンティティにピボットし、ユーザーの行動とそれがクラウド環境に与える影響を確認するために使用できるグラフィカルインターフェイスです。 \ No newline at end of file diff --git a/content/ja/glossary/terms/sast.md b/content/ja/glossary/terms/sast.md index 59fd58da43f5d..4df5a227d0dfe 100644 --- a/content/ja/glossary/terms/sast.md +++ b/content/ja/glossary/terms/sast.md @@ -4,6 +4,7 @@ core_product: - appsec synonyms: - static analysis +- コード分析 title: スタティックアプリケーションセキュリティテスト (SAST) --- diff --git a/content/ja/infrastructure/containers/configuration.md b/content/ja/infrastructure/containers/configuration.md index ade853c70f2ca..29f59f09b7311 100644 --- a/content/ja/infrastructure/containers/configuration.md +++ b/content/ja/infrastructure/containers/configuration.md @@ -83,26 +83,27 @@ password::::== | Resource | 最低限必要な Agent のバージョン | 最低限必要な Cluster Agent のバージョン* | 最低限必要な Helm チャートのバージョン | Kubernetes の最小バージョン | |---|---|---|---|---| -| ClusterRoleBindings | 7.27.0 | 1.19.0 | 2.30.9 | 1.14.0 | -| ClusterRoles | 7.27.0 | 1.19.0 | 2.30.9 | 1.14.0 | -| クラスター | 7.27.0 | 1.12.0 | 2.10.0 | 1.17.0 | -| CronJobs | 7.27.0 | 7.40.0 | 2.15.5 | 1.16.0 | -| DaemonSets | 7.27.0 | 1.14.0 | 2.16.3 | 1.16.0 | -| デプロイ | 7.27.0 | 1.11.0 | 2.10.0 | 1.16.0 | -| Ingresses | 7.27.0 | 1.22.0 | 2.30.7 | 1.21.0 | -| ジョブ | 7.27.0 | 1.13.1 | 2.15.5 | 1.16.0 | -| ネームスペース | 7.27.0 | 7.41.0 | 2.30.9 | 1.17.0 | -| ノード | 7.27.0 | 1.11.0 | 2.10.0 | 1.17.0 | -| PersistentVolumes | 7.27.0 | 1.18.0 | 2.30.4 | 1.17.0 | -| PersistentVolumeClaims | 7.27.0 | 1.18.0 | 2.30.4 | 1.17.0 | -| ポッド | 7.27.0 | 1.11.0 | 2.10.0 | 1.17.0 | -| ReplicaSet | 7.27.0 | 1.11.0 | 2.10.0 | 1.16.0 | -| RoleBindings | 7.27.0 | 1.19.0 | 2.30.9 | 1.14.0 | -| ロール | 7.27.0 | 1.19.0 | 2.30.9 | 1.14.0 | -| ServiceAccounts | 7.27.0 | 1.19.0 | 2.30.9 | 1.17.0 | -| サービス | 7.27.0 | 1.11.0 | 2.10.0 | 1.17.0 | -| Statefulsets | 7.27.0 | 1.15.0 | 2.20.1 | 1.16.0 | -| VerticalPodAutoscalers | 7.27.0 | 7.46.0 | 3.6.8 | 1.16.0 | +| ClusterRoleBindings | 7.33.0 | 1.19.0 | 2.30.9 | 1.14.0 | +| ClusterRoles | 7.33.0 | 1.19.0 | 2.30.9 | 1.14.0 | +| クラスター | 7.33.0 | 1.18.0 | 2.10.0 | 1.17.0 | +| CronJobs | 7.33.0 | 7.40.0 | 2.15.5 | 1.16.0 | +| DaemonSets | 7.33.0 | 1.18.0 | 2.16.3 | 1.16.0 | +| デプロイ | 7.33.0 | 1.18.0 | 2.10.0 | 1.16.0 | +| HorizontalPodAutoscalers | 7.33.0 | 7.51.0 | 2.10.0 | 1.1.1 | +| Ingresses | 7.33.0 | 1.22.0 | 2.30.7 | 1.21.0 | +| ジョブ | 7.33.0 | 1.18.0 | 2.15.5 | 1.16.0 | +| ネームスペース | 7.33.0 | 7.41.0 | 2.30.9 | 1.17.0 | +| ノード | 7.33.0 | 1.18.0 | 2.10.0 | 1.17.0 | +| PersistentVolumes | 7.33.0 | 1.18.0 | 2.30.4 | 1.17.0 | +| PersistentVolumeClaims | 7.33.0 | 1.18.0 | 2.30.4 | 1.17.0 | +| ポッド | 7.33.0 | 1.18.0 | 3.9.0 | 1.17.0 | +| ReplicaSet | 7.33.0 | 1.18.0 | 2.10.0 | 1.16.0 | +| RoleBindings | 7.33.0 | 1.19.0 | 2.30.9 | 1.14.0 | +| ロール | 7.33.0 | 1.19.0 | 2.30.9 | 1.14.0 | +| ServiceAccounts | 7.33.0 | 1.19.0 | 2.30.9 | 1.17.0 | +| サービス | 7.33.0 | 1.18.0 | 2.10.0 | 1.17.0 | +| Statefulsets | 7.33.0 | 1.15.0 | 2.20.1 | 1.16.0 | +| VerticalPodAutoscalers | 7.33.0 | 7.46.0 | 3.6.8 | 1.16.0 | **注**: バージョン 1.22 以降、Cluster Agent のバージョン番号は、バージョン 7.39.0 以降、Agent のリリース番号に従います。 @@ -188,7 +189,7 @@ Process Agent と Cluster Agent の両コンテナに環境変数を設定しま {{% /tab %}} {{< /tabs >}} -## 参考資料 +## その他の参考資料 {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/ja/integrations/guide/azure-portal.md b/content/ja/integrations/guide/azure-portal.md index 7f6333eefe17f..61f27352a890e 100644 --- a/content/ja/integrations/guide/azure-portal.md +++ b/content/ja/integrations/guide/azure-portal.md @@ -186,10 +186,15 @@ Azure Active Directory (Azure AD) のログには、特定のテナントのサ | Region not supported | Azure リソースは、Datadog へのログの送信をサポートしていないリージョンにあります。 | | Datadog Agent not configured | Datadog Agent がインストールされていない仮想マシンは、Datadog にログを発行しません。 | -### Virtual machine agent +### Datadog Agent 拡張機能 + +{{< tabs >}} +{{% tab "VM 拡張機能" %}} サブスクリプション内の仮想マシン (VM) のリストを表示するには、左側のサイドバーで **Virtual machine agent** を選択します。このページでは、拡張機能として Datadog Agent を VM にインストールできます。 +{{< img src="integrations/guide/azure_native_manual_setup/azure_native_vm_extension.png" alt="Azure の Datadog リソース (Virtual machine Agent が選択され、Install extension オプションが強調表示されています)" responsive="true" style="width:90%;">}} + VM ごとに、次の情報が表示されます。 | 列 | 説明 | @@ -202,15 +207,48 @@ VM ごとに、次の情報が表示されます。 | Install method | Chef、Azure VM 拡張機能など、Datadog Agent のインストールに使用される特定のツール。 | | Sending logs | Datadog Agent が Datadog にログを送信しているかどうか。 | -#### Install +#### インストール + +VM 拡張機能を利用して Azure で直接 Datadog Agent をインストールできます。Datadog Agent のインストール方法は以下の通りです。 + +1. 適切な VM を選択します。 +2. **Install Extension** をクリックします。 +3. ポータルで、デフォルトのキーを使用して Agent をインストールすることの確認が求められます。**OK** を選択してインストールを開始します。Agent がインストールされてプロビジョニングされるまで、Azure はステータスを `Installing` (インストール中) と表示します。Datadog Agent がインストールされると、ステータスが `Installed` (インストール済み) に変わります。 + +##### アンインストール + +Datadog Agent が Azure VM 拡張機能でインストールされた場合 + +1. 適切な VM を選択します。 +2. **Uninstall Agent** をクリックします。 + +Agent が別の方法でインストールされている場合、Datadog リソースを使って Agent をデプロイまたは削除することはできませんが、このページには引き続き Agent に関する情報が表示されます。 + +{{% /tab %}} +{{% tab "AKS クラスター拡張機能" %}} + +Datadog AKS クラスター拡張機能を使用すると、Azure AKS 内に Datadog Agent をネイティブにデプロイできるため、サードパーティの管理ツールの複雑さを回避できます。 + +#### インストール + +AKS クラスター拡張機能を使って Datadog Agent をインストールするには -Datadog Agent をインストールするには、適切な VM を選択し、**Install Agent** をクリックします。ポータルで、デフォルトのキーを使用して Agent をインストールすることの確認が求められます。**OK** を選択してインストールを開始します。Agent がインストールされてプロビジョニングされるまで、Azure はステータスを `Installing` (インストール中) と表示します。Datadog Agent がインストールされると、ステータスが `Installed` (インストール済み) に変わります。 +1. 左サイドバーの **Monitored Resources** セクションにある AKS クラスターをクリックします。 +2. AKS クラスターの左サイドバーから、**Settings** の下にある **Extensions + applications** を選択します。 +3. `Datadog AKS Cluster Extension` を検索して選択します。 +4. **Create** をクリックし、表示される指示に従って [Datadog の資格情報][1]と [Datadog のサイト][2]を使用してください。 #### アンインストール -Datadog Agent が Azure VM 拡張機能とともにインストールされている場合は、適切な VM を選択して、**Uninstall Agent** をクリックすることで、Agent をアンインストールできます。 +1. 左サイドバーの **Monitored Resources** セクションにある AKS クラスターをクリックします。 +2. AKS クラスターの左サイドバーから、**Settings** の下にある **Extensions + applications** を選択します。 +3. Datadog AKS クラスター拡張機能 (その **Type** は `Datadog.AKSExtension`) を選択します。 +4. **Uninstall** をクリックします。 -Agent が別の方法でインストールされた場合、Datadog リソースを使用して Agent をデプロイまたは削除することはできませんが、Agent に関する情報は引き続きこのページに反映されます。 +[1]: /ja/account_management/api-app-keys/ +[2]: /ja/getting_started/site/ +{{% /tab %}} +{{< /tabs >}} ### App Service extension @@ -225,7 +263,7 @@ Agent が別の方法でインストールされた場合、Datadog リソース | App service plan | アプリサービス用に構成された特定のプラン | | Extension version | Datadog 拡張機能バージョン番号 | -#### Install +#### インストール [Datadog 拡張機能][6]をインストールするには、適切なアプリを選択し、**Install Extension** をクリックします。ポータルで、拡張機能をインストールすることの確認が求められます。**OK** を選択してインストールを開始します。これにより、アプリが再起動し、次の設定が追加されます。 @@ -260,11 +298,11 @@ Azure ポータルは、API キーの読み取り専用ビューを提供しま Azure Datadog インテグレーションにより、Datadog Agent を VM またはアプリサービスにインストールできます。デフォルトのキーが選択されていない場合、Datadog Agent のインストールは失敗します。 -### Cloud Security Posture Management +### Cloud Security Management Misconfigurations -左サイドバーの `Cloud Security Posture Management` を選択し、[Cloud Security Posture Management][8] の構成を行います。 +左サイドバーの `Cloud Security Posture Management` を選択し、[Cloud Security Management Misconfigurations (CSM Misconfigurations)][8] の構成を行います。 -デフォルトでは、CSPM は有効になっていません。CSPM を有効にするには、`Enable Datadog Cloud Security Posture Management` を選択し、**Save** をクリックします。これにより、Datadog リソースに関連するすべてのサブスクリプションに対して Datadog CSPM が有効になります。 +デフォルトでは、CSM Misconfigurations は有効になっていません。CSM Misconfigurations を有効にするには、`Enable Datadog Cloud Security Posture Management` を選択し、**Save** をクリックします。これにより、Datadog リソースに関連するすべてのサブスクリプションに対して Datadog CSM Misconfigurations が有効になります。 無効にする場合は、チェックを外して **Save** をクリックします。 @@ -282,4 +320,4 @@ Azure Datadog インテグレーションにより、Datadog Agent を VM また [5]: https://docs.microsoft.com/en-us/azure/azure-monitor/essentials/diagnostic-settings [6]: /ja/serverless/azure_app_services [7]: /ja/serverless/azure_app_services/#requirements -[8]: /ja/security/cspm/ \ No newline at end of file +[8]: /ja/security/cloud_security_management/misconfigurations/ \ No newline at end of file diff --git a/content/ja/logs/error_tracking/manage_data_collection.md b/content/ja/logs/error_tracking/manage_data_collection.md index 9ba2decd588ca..49b6b808ee3da 100644 --- a/content/ja/logs/error_tracking/manage_data_collection.md +++ b/content/ja/logs/error_tracking/manage_data_collection.md @@ -10,7 +10,7 @@ further_reading: is_beta: true kind: ドキュメント private: true -title: PHP +title: Manage Data Collection --- ## 概要 @@ -24,7 +24,7 @@ Error Tracking に含まれるデータは以下の 2 つの方法で定義で ルールとレート制限は、どちらも [**Logs** > **Error Tracking** > **Settings**][1] ページで構成できます。 -## ブラウザテスト +## ルール ルールでは、Error Tracking に取り込むエラーを選択できます。 diff --git a/content/ja/logs/explorer/advanced_search.md b/content/ja/logs/explorer/advanced_search.md new file mode 100644 index 0000000000000..99e1ac10a77b2 --- /dev/null +++ b/content/ja/logs/explorer/advanced_search.md @@ -0,0 +1,90 @@ +--- +disable_toc: false +further_reading: +- link: logs/explorer/analytics + tag: ドキュメント + text: ログ分析の実行 +- link: /logs/explorer/export + tag: ドキュメント + text: ログエクスプローラーからビューをエクスポートする +- link: /logs/explorer/saved_views/ + tag: ドキュメント + text: 保存ビューについて +kind: ドキュメント +title: 高度な検索 +--- + +## 概要 + +ログ検索の結果をさらに絞り込む必要がある場合は、[サブクエリ](#filter-logs-with-subqueries)を使って、セカンダリロググループと結果を比較したり、[リファレンステーブル](#filter-logs-based-on-reference-tables)のデータを使ってログをフィルタリングします。 + +## サブクエリによるログのフィルタリング + +
サブクエリによるログのフィルタリングはベータ版です。
+ +サブクエリは、セカンダリクエリの結果に基づいてクエリの結果をフィルタリングしたい場合に使用します。2 つの例については、[サブクエリの例](#subquery-examples)を参照してください。 + +サブクエリフィルターを追加するには + +1. [ログエクスプローラー][1]に移動します。 +1. 検索バーにクエリを入力して、ログをフィルタリングします。これがメインのクエリです。 +1. **+ Add** をクリックします。 +1. **Add Query Filter** セクションで、**Logs** を選択します。 + +これにより、クエリエディターに新しい要素がもたらされます。 + +{{< img src="logs/explorer/advanced_search/subquery.png" alt="メイン検索クエリの下のサブクエリエディター" style="width:95%;" >}} + +1. **where** フィールドで、ドロップダウンメニューを使用して、相関させたい属性を選択します。利用可能な属性は、メインクエリで返されたログに基づいています。 +1. **from** フィールドにサブクエリフィルターを定義します。 +1. サブクエリフィルターの前にある **Select Column** ドロップダウンメニューで、サブクエリの結果をグループ化して並べ替えたい属性を選択します。 +1. **IN** または **NOT IN** のどちらの演算子を使用するかを選択します。 + - **IN** 演算子を用いた結果は、サブクエリの結果にも含まれる属性値を持つログのみを含みます。例えば、`service:a` によって生成されたログで、`service:b` のトップユーザーの一人であるユーザーに関連付けられているものだけを見たい場合です。 + - **NOT IN** 演算子を用いた結果は、サブクエリの結果に含まれる属性値を持つログを除外します。例えば、`status:error` のログのみを表示したい場合、それに関連するユーザーが最終的に `status:success` のログを持つ `status:error` ログも除外したいとします。詳しい例については、[時代遅れまたは上書きされたログのフィルタリング](#filter-outdated-or-supersed-logs)を参照してください。 +1. オプションで、照合するサブクエリの属性値の数を減らします。デフォルト値および最大値は `1000` です。**top** (最も頻度の高い値) または **bottom** (最も頻度の低い値) のどちらかを選択します。 + +### サブクエリの例 + +以下は、ログから必要な情報を取得するためにサブクエリを使用する必要があるシナリオです。 + +#### 時代遅れまたは上書きされたログのフィルタリング + +E コマースプラットフォームを運営しているとします。顧客が注文しようとするたびにログが生成されます。Web サイトの継続的な問題によって失われた潜在的な購入の総額を理解するために、ログを分析したいとします。 + +しかし、注文が正常に完了するまでに何度も失敗する可能性があることに気づきます。つまり、その特定の注文 ID では、検索結果に `status:error` ログと `status:success` ログの両方のログエントリがあります。2 つのクエリから一意な注文 ID のリストを抽出した場合、この注文 ID は両方に表示されることになります。サブクエリを使用すると、相互に排他的なリストを取得できます。 + +この例では、あなたは最終的に成功しなかった注文のログにのみ関心があります。サブクエリ機能を使用して、最終的に成功した注文を除外するには + +1. `status:success` ログ用のサブクエリを定義します。 +1. サブクエリの結果セットから注文を除外するには、**NOT IN** 演算子を選択します。 + +{{< img src="logs/explorer/advanced_search/filter_outdated_example.png" alt="成功した注文を除外するためのセットアップを示すクエリエディター" style="width:100%;" >}} + +#### 異なるログソース間の相関付け + +`network_directory` という名前のサービスがあり、組織内のすべての内部ネットワークリソースと、それらのリソースへのアクセスを監視しているとします。このサービスによって生成されるログイベントには、標準的な属性 (`host`、`service`、`source` など) と、クライアントの IP アドレスのようなカスタム属性があります。 + +さらに、すべての内部アセット (インフラストラクチャー、従業員のデバイスなど) を追跡する別のサービス、`device-manager` もあります。 + +現在進行中の攻撃を調査中で、ほぼすべてのエンドポイントで API リクエストが大幅に増加していることに気付きました。まず、異常なリクエスト量に関連する IP アドレスを特定し、それらをファイアウォールレベルでブロックしたいと考えています。しかし、内部サービスはこれらエンドポイントの主要な利用者の一部であるため、誤ってブロックすることを避けるためにクエリ結果から除外する必要があります。 + +この例では、`service:network_directory` をメインのクエリとして使用し、次に `device-manager` サービス用のサブクエリフィルターを定義して、認識されたデバイスからの結果を除外します。 + +{{< img src="logs/explorer/advanced_search/narrow_dataset_example.png" alt="認識されたデバイスの結果を除外するためのセットアップを示すクエリエディター" style="width:100%;" >}} + +## リファレンステーブルに基づくログのフィルター + +
リファレンステーブルはベータ版です。40,000 行を超えるリファレンステーブルは、ログのフィルタリングには使用できません。リファレンステーブルの作成および管理方法の詳細については、リファレンステーブルによるカスタムメタデータの追加を参照してください。
+ +リファレンステーブルを使用すると、メタデータとログを組み合わせて、アプリケーションの問題を解決するための詳細な情報を提供できます。リファレンステーブルに基づいてクエリフィルターを追加し、検索クエリを実行します。この機能の作成と管理の詳細については、[リファレンステーブル][2]ガイドを参照してください。 + +リファレンステーブルを使用してクエリフィルターを適用するには、クエリエディターの横にある `+ Add` ボタンをクリックし、**Reference Table** を選択します。次の例では、リファレンステーブルクエリフィルターを使用して、脅威インテリジェンスリファレンステーブルから悪意のある IP アドレスを含むすべての最近のログを検索します。 + +{{< img src="logs/explorer/advanced_search/reference_tables_logs.png" alt="リファレンステーブルの検索オプションがハイライトされた Datadog ログエクスプローラー" border="true" popup="true" style="width:100%;" >}} + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/logs +[2]: /ja/integrations/guide/reference-tables/?tab=manualupload \ No newline at end of file diff --git a/content/ja/logs/log_configuration/pipeline_scanner.md b/content/ja/logs/log_configuration/pipeline_scanner.md new file mode 100644 index 0000000000000..c75a7cd236375 --- /dev/null +++ b/content/ja/logs/log_configuration/pipeline_scanner.md @@ -0,0 +1,66 @@ +--- +disable_toc: false +further_reading: +- link: https://www.datadoghq.com/blog/log-pipeline-scanner-datadog/ + tag: ブログ + text: Datadog Log Pipeline Scanner でログ処理を調査する +- link: /logs/log_configuration/pipelines/ + tag: ドキュメント + text: ログパイプラインについて +- link: /logs/log_configuration/processors/ + tag: ドキュメント + text: ログプロセッサーについて +kind: ドキュメント +title: パイプラインスキャナー +--- + +## 概要 + +Log Pipeline Scanner を使用すると、ログパイプラインをリアルタイムでスキャンし、特定のログをトレースして、どのパイプラインと処理ルールがそのフィールドに変更を加えたかを特定できます。組織は、膨大なログの処理にログパイプラインに依存し、 各チームは、セキュリティ監視、コンプライアンス監査、DevOps など、特定のユースケースに合わせてログを再構築、リッチ化しています。 + +Pipeline Scanner を使用して、 + +- パースされていないログ、タグの欠落、ログ構造の予期せぬ変更など、ログ処理の問題をトラブルシューティングします。 +- 競合する、または冗長な処理ルールを特定し、削除します。 +- ログパイプラインを経由するログがセキュリティおよびコンプライアンス要件を満たしていることを確認します。 + +{{< img src="logs/log_configuration/pipeline_scanner/pipeline_scanner.png" alt="クエリに一致する 2 つのログ、選択されたログの詳細、クエリされたログを変更している 2 つのパイプラインを表示する Pipeline Scanner" style="width:80%;" >}} + +## ログを変更しているパイプラインとプロセッサーの特定 + +Pipeline Scanner は、検索クエリに一致するログをサンプリングし、それらが通過している異なる処理ステップでアノテーションを付けます。これにより、ログに対するすべての変更を特定できるようになります。 + +1. [ログエクスプローラー][1]に移動します。 +1. どのパイプラインやプロセッサーがログを変更しているかを調べたいログをクリックします。 +1. パネル右上の Pipeline Scanner アイコンをクリックします。アイコンにカーソルを合わせると、`View pipelines for similar logs` と表示されます。 +  または、ログパネルで属性をクリックし、**Scan pipelines for** を選択します。 +1. [Pipeline Scanner][2] ページで、クエリをさらに絞り込むことができます。このクエリはセッション開始後に変更することはできません。 +1. **Launch this session** をクリックします。 +  次の 15 分間、クエリに一致するログには、どのパイプラインとプロセッサーがそれらのログを変更しているかという情報がタグ付けされます。スキャナーの Live Tail は、どのパイプラインといくつのパイプラインがそれぞれのログに一致するかを示します。 +1. ログをクリックすると、そのログに一致するパイプラインとプロセッサーのリストが表示されます。Live Tail はこの時点で一時停止されます。 + +右側のパネルでパイプラインとプロセッサーを変更できます。変更した内容は、すでに処理されたログには影響しません。更新されたパイプラインとプロセッサーによって変更された新しいログを表示するには、**Play** をクリックします。 + +Pipeline Scanner には、ログパイプラインページからもアクセスできます。 + +1. [ログパイプライン][3]に移動します。 +2. **Pipeline Scanner** をクリックします。 +3. 検査したいログのクエリを定義します。 + +### 制限 + +Pipeline Scanner を使用するには `logs_write_pipelines` 権限が必要です。詳細は[ログ管理 RBAC 権限][4]を参照してください。 + +起動できるセッションの数には以下の制限があります。 + +- 同時セッションは最大 3 つ。 +- 12 時間のスライディングウィンドウで最大 12 セッション。 + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/logs +[2]: https://app.datadoghq.com/logs/pipelines?query=source:* +[3]: https://app.datadoghq.com/logs/pipelines +[4]: /ja/account_management/rbac/permissions/#log-management \ No newline at end of file diff --git a/content/ja/security/application_security/enabling/compatibility/_index.md b/content/ja/security/application_security/enabling/compatibility/_index.md index 3ae90229c3ddd..5d9d704b024b8 100644 --- a/content/ja/security/application_security/enabling/compatibility/_index.md +++ b/content/ja/security/application_security/enabling/compatibility/_index.md @@ -10,18 +10,7 @@ title: 互換性要件 type: multi-code-lang --- -各言語のトレーシングライブラリに対して、以下の ASM 機能をサポートしています。 - - -| ASM の機能 | Java | .NET | Node.js | Python | Go | Ruby | PHP | -| -------------------------------- | ----------------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------|----------------------------| -| Threat Detection| 1.8.0 | 2.23.0 | 3.13.1 | 1.9.0 | 1.47.0 | 1.9.0| 0.84.0 | -| Threat Protection | 1.9.0 | 2.26.0 | 3.19.0| 1.10.0 | v1.50.0| 1.11.0 | 0.86.0 | -| オープンソースソフトウェア (OSS) の脆弱性管理 | 1.1.4 | 2.16.0 |Node.js 12+ の場合は 2.23.0、Node.js 14+ の場合は 3.10.0 | 1.5.0 | 非対応| 非対応| 非対応| -| コードレベルの脆弱性管理 (ベータ版) |1.15.0| 非公開ベータ版 | NodeJS 12+ の場合は 2.32.0、NodeJS 14+ の場合は 3.19.0 | 非公開ベータ版 | 非対応
| 非対応| 非対応| - - -フレームワークの互換性と機能サポートの詳細については、アプリケーションの言語を選択してください。 +{{% asm-libraries-capabilities %}} {{< partial name="security-platform/appsec-languages.html" >}} diff --git a/content/ja/sensitive_data_scanner/library_rules.md b/content/ja/sensitive_data_scanner/library_rules.md new file mode 100644 index 0000000000000..dcd92ed508652 --- /dev/null +++ b/content/ja/sensitive_data_scanner/library_rules.md @@ -0,0 +1,131 @@ +--- +further_reading: +- link: /sensitive_data_scanner/ + tag: ドキュメント + text: 機密データスキャナーのセットアップ +kind: ドキュメント +title: ライブラリルール +--- + +## 概要 + +スキャンルールライブラリとは、メールアドレスやクレジットカード番号、API キー、認証トークンなどの一般的なパターンを検出するための、あらかじめ定義されたルールをまとめたコレクションです。 + +{{< whatsnext desc="ライブラリのルールは、以下のカテゴリーに分類されます。">}} + {{< nextlink href="/sensitive_data_scanner/library_rules#secrets-and-credentials">}}シークレットと資格情報{{< /nextlink >}} + {{< nextlink href="/sensitive_data_scanner/library_rules#credit-cards-and-banking">}}クレジットカードと銀行取引情報{{< /nextlink >}} + {{< nextlink href="/sensitive_data_scanner/library_rules#personal-identifiable-information-pii">}}個人を特定できる情報 (PII){{< /nextlink >}} + {{< nextlink href="/sensitive_data_scanner/library_rules#network-and-device-information">}}ネットワークとデバイスの情報{{< /nextlink >}} +{{< /whatsnext >}} + +これらのルールは Datadog でも確認することができます。 + +1. [機密データスキャナー][1]に移動します。 +1. ページの右上にある **Scanning Rules Library** をクリックします。 +1. ライブラリからスキャングループにルールを追加するには: + a. 追加したいルールを選択します。 + b. **Add Rules to Scanning Group** をクリックします。 + c. [機密データスキャナーの設定][2]の手順に従い、設定を完了します。 + +## シークレットと資格情報 + +| ライブラリルール | デフォルトのキーワード | +| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| AWS アクセスキー ID スキャナー | aws_access_key_id、access key、aws access | +| AWS シークレットアクセスキースキャナー | aws_secret_access_key、credentials、secret access key、secret key、set-awscredential | +| Dynatrace トークンスキャナー | dynatrace、token | +| Facebook アクセストークンスキャナー | facebook、access、token | +| Gitlab トークンスキャナー | gitlab、token | +| Instagram トークンスキャナー | Instagram、token | +| JSON Web トークンスキャナー | \- | +| Mailchimp API キースキャナー | mailchimp、api key | +| Mailgun API キースキャナー | mailgun、api key | +| Okta API トークンスキャナー | okta、api token | +| Slack アクセストークンスキャナー | slack、access、token | +| Stripe API キースキャナー | stripe、api key | +| Stripe 制限付き API キースキャナー | stripe、api key | +| Twilio API キースキャナー | twilio、api key | +| Square アクセストークンスキャナー | square、access、token | +| Square OAuth シークレットスキャナー | square、oauth、secret、authorization、authentication | +| Google API キースキャナー | g_places_key、gcp api key、gcp key、google cloud key、google-api-key、google-cloud-apikeys、googlekey、x-goog-api-key | +| Google OAuth アクセストークンスキャナー | google、oauth、 access、token、authorization、authentication | +| RSA 秘密鍵スキャナー | rsa、private key | +| Send Grid API トークンスキャナー | send grid、api token | +| Heroku API キースキャナー | heroku、api key | +| SSH キースキャナー | ssh、ssh key | +| PGP 秘密鍵スキャナー | pgp、key | +| Paypal Braintree アクセストークンスキャナー | paypal、braintree、access、token | +| Amazon マーケットプレイス Web サービス認証トークンスキャナー | amazon、marketplace、aws、auth、token、authorization、authentication | +| Azure 個人用アクセストークンスキャナー | azure、access、token | +| Azure SQL 接続文字列スキャナー | azure、sql、connection string | +| Azure サブスクリプションキースキャナー | azure、subscription key | +| Bearer トークンスキャナー | bearer、token | +| Checkout.com シークレットスキャナー | checkout、secret | +| Databricks 個人用アクセストークンスキャナー | databricks、access、token | +| Docker Swarm 参加トークンスキャナー | docker、docker swarm、join token | +| Docker Swarm アンロックキースキャナー | docker、docker swarm、unlock key | +| Github アクセストークンスキャナー | github、access、token | +| Github 更新トークンスキャナー | github、refresh token | +| JIRA API トークンスキャナー | jira、api token | +| LinkedIn シークレットスキャナー | linkedin、secret | +| Shopify アクセストークンスキャナー | shopify、access、token | +| Shopify 共有シークレットスキャナー | shopify、shared secret | +| Slack Webhook シークレットスキャナー | slack、webhook、secret | + +## クレジットカードと銀行取引情報 + +| ライブラリルール | デフォルトのキーワード | +| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Twitter シークレットスキャナー | twitter、secret | +| Visa カードスキャナー (4x4 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、electron、pan、payment account number、payment card number、pcn、union pay、visa | +| Visa カードスキャナー (2x8 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、electron、pan、payment account number、payment card number、pcn、union pay、visa | +| Visa カードスキャナー (1x16 & 1x19 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、electron、pan、payment account number、payment card number、pcn、union pay、visa | +| MasterCard スキャナー (4x4 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、mastercard、mc、pan、payment account number、payment card number、pcn、union pay | +| MasterCard スキャナー (2x8 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、mastercard、mc、pan、payment account number、payment card number、pcn、union pay | +| MasterCard スキャナー (1x16 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、mastercard、mc、pan、payment account number、payment card number、pcn、union pay | +| Discover カードスキャナー (4x4 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、discover、pan、payment account number、payment card number、pcn | +| Discover カードスキャナー (2x8 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、discover、pan、payment account number、payment card number、pcn | +| Discover カードスキャナー (1x16 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、discover、pan、payment account number、payment card number、pcn | +| American Express カードスキャナー (4+6+5 桁) | account number、american express、amex、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、pan、payment account number、payment card number、pcn、union pay | +| American Express カードスキャナー (4+4+4+3 桁) | account number、american express、amex、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、pan、payment account number、payment card number、pcn、union pay | +| American Express カードスキャナー (8+7 桁) | account number、american express、amex、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、pan、payment account number、payment card number、pcn、union pay | +| American Express カードスキャナー (1x15 桁) | account number、american express、amex、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、pan、payment account number、payment card number、pcn、union pay | +| Diners カードスキャナー (4+6+4 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、diners club、mastercard、mc、pan、payment account number、payment card number、pcn | +| Diners カードスキャナー (4+4+4+2 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、diners club、mastercard、mc、pan、payment account number、payment card number、pcn | +| Diners カードスキャナー (8+6 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、diners club、mastercard、mc、pan、payment account number、payment card number、pcn | +| Diners カードスキャナー (1x14 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、diners club、mastercard、mc、pan、payment account number、payment card number、pcn | +| JCB カードスキャナー (4x4 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、japanese card bureau、jcb、pan、payment account number、payment card number、pcn | +| JCB カードスキャナー (2x8 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、japanese card bureau、jcb、pan、payment account number、payment card number、pcn | +| JCB カードスキャナー (1x16 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、japanese card bureau、jcb、pan、payment account number、payment card number、pcn | +| Maestro カードスキャナー (4x4 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、mastercard、mc、pan、payment account number、payment card number、pcn | +| Maestro カードスキャナー (2x8 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、mastercard、mc、pan、payment account number、payment card number、pcn | +| Maestro カードスキャナー (1x16 桁) | account number、bank card、card、card num、card number、cc #、ccn、check card、credit、credit card#、dankort、debit、debit card、mastercard、mc、pan、payment account number、payment card number、pcn | +| 標準 IBAN コードスキャナー | bank account、bank acct、checking account、checking acct、deposit account、deposit acct、savings account、savings acct、chequing account、chequing acct、iban、account code、account number、accountno#、accountnumber#、bban、customer account id、customer account number、customer bank account id、sepa | + +## 個人を特定できる情報 (PII) + +| ライブラリルール | デフォルトのキーワード | +| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 標準メールアドレススキャナー | \- | +| 米国パスポートスキャナー | passport、travel document | +| 米国車両識別番号スキャナー | fahrgestellnummer、niv、numarul de identificare、numarul seriei de sasiu、numer vin、número de identificação do veículo、número de identificación de automóviles、numéro d'identification du véhicule、vehicle identification number、vin、vin numeris | +| 英国国民保険番号スキャナー | national health service、nhs | +| カナダ社会保険番号スキャナー | canada healthcare number、msp number、personal healthcare number、phn、soins de santé | + +## ネットワークとデバイスの情報 + +| ライブラリルール | デフォルトのキーワード | +| ---------------------------------------- | ---------------- | +| IPv4 アドレススキャナー | \- | +| IPv6 アドレススキャナー | \- | +| 標準 MAC アドレススキャナー | \- | +| HTTP Basic 認証ヘッダースキャナー | \- | +| HTTP Cookie スキャナー | cookie | +| HTTP URL スキャナー | \- | + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/organization-settings/sensitive-data-scanner/ +[2]: /ja/sensitive_data_scanner/?#add-scanning-rules \ No newline at end of file diff --git a/content/ja/sensitive_data_scanner/regular_expression_syntax.md b/content/ja/sensitive_data_scanner/regular_expression_syntax.md new file mode 100644 index 0000000000000..958ab1426c4b6 --- /dev/null +++ b/content/ja/sensitive_data_scanner/regular_expression_syntax.md @@ -0,0 +1,225 @@ +--- +disable_toc: false +further_reading: +- link: /sensitive_data_scanner/ + tag: ドキュメント + text: 機密データスキャナーの設定 +kind: ドキュメント +title: 正規表現の構文 +--- + +## 概要 + +[Sensitive Data Scanner][1] では、スキャンルールによってデータ内でマッチする機密情報を検出します。機密情報のスキャンのために[スキャンルールライブラリ][2]のルールを使用することも、正規表現 (regex) パターンを使ってカスタムスキャンルールを作成することも可能です。Sensitive Data Scanner の正規表現構文は、[PCRE2][3] のサブセットです。 + +{{< whatsnext desc=“カスタムルールで使用可能な正規表現構文は以下のカテゴリーに分けられます。" >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#alternation" >}}交替{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#assertions" >}}アサーション{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#ascii-classes" >}}ASCII クラス{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#character-classes" >}}文字クラス{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#character-escapes" >}}文字のエスケープ{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#custom-character-classes" >}}カスタム文字クラス{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#groups" >}}グループ{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#quantifiers" >}}量指定子{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#quoting" >}}クォート{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#setting-flags" >}}フラグの設定{{< /nextlink >}} + {{< nextlink href="sensitive_data_scanner/regular_expression_syntax#unicode-properties" >}}Unicode プロパティ{{< /nextlink >}} +{{< /whatsnext >}} + +## 交替 + +交替を使うと、最初に一致する式を選ぶことができます。交替内の式は空のままにすることができ、これにより何にでも一致し、交替式全体がオプションになります。 + +| 正規表現構文 | 説明 | +| ------------------| ---------------------------------------- | +| `...\|...\|...` | 交替。 | +| `...\|...\|` | 空式との交替。 | + +## アサーション + +| アサーション | 説明 | +| --------- | ------------------------------------------------------------------------------ | +| `\b ` | 単語境界。 | +| `\B` | 単語境界でない。 | +| `^` | 行頭。 | +| `$` | 行末。 | +| `/A` | テキストの開始。 | +| `\z` | テキストの終わり。 | +| `\Z` | テキストの終わり (または、テキストの終わりの直前にある `\n` の前)。 | + +## ASCII クラス + +[カスタム文字クラス](#custom-character-classes)で使用できる名前クラスで、例えば `[[:ascii:]]` などです。これらは ASCII 文字にのみマッチします。 + +| 名前クラス | 説明 | +| ----------- | ------------------------------------------------- | +| `alnum` | 英数字。 | +| `alpha` | アルファベット。 | +| `ascii` | 任意の ASCII 文字。 | +| `blank` | スペースまたはタブ。 | +| `cntrl` | 制御文字。 | +| `digit` | 任意の数字。 | +| `graph` | 任意のグラフィック文字または印刷文字 (スペースは不可)。| +| `lower` | 任意の小文字。 | +| `print` | 印刷可能な文字 (スペースを含む)。 | +| `punct` | 任意の句読点文字。 | +| `space` | 空白文字。 | +| `upper` | 任意の大文字。 | +| `word` | `/w` と同じ。 | +| `xdigit` | 任意の 16 進数。 | + +## 文字エスケープ + +| 正規表現構文 | 説明 | +| --------------- | -------------------------------------------------------------------- | +| `\xhh` | 16 進コード `hh` を持つ文字をエスケープします (2 桁まで使用可能)。 | +| `\x{hhhhhh}` | 16 進コード `hhhhhh` を持つ文字をエスケープします (1 桁から 6 桁まで)。 | +| `\a` | ベル `(\x{7})` をエスケープします。 | +| `\b` | バックスペース `(\x{8})` をエスケープします。これはカスタム文字クラス (例えば `[\b]`) でのみ動作し、それ以外では単語境界として扱われます。 | +| `\cx` | 制御シーケンスをエスケープします。`x` は `A-Z` (大文字または小文字) です。例: `\cA` = `\x{0}`, `\cB` = `\x{1}`,... `\cZ` = `\x{19}`。 | +| `\e` | ASCII エスケープ文字 (`\x{1B}`) をエスケープします。 | +| `\f` | フォームフィード (`\x{C}`) をエスケープします。 | +| `\n` | 改行 (`\x{A}`) をエスケープします。 | +| `\r` | 復帰改行をエスケープ (`\x{D}`) します。 | +| `\t` | タブをエスケープ (`\x{9}`) します。 | +| `\v` | 垂直タブ (`\x{B}`) をエスケープします。 | + +## 文字クラス + +| 正規表現構文 | 説明 | +| --------------- | --------------------------------------------------------------------------------------------- | +| `.` | 任意の文字にマッチ (`\n` 以外) します。`s` フラグを有効にすると `\n` を含むすべての文字にマッチします。| +| `\d` | 任意の ASCII 数字 (`[0-9]`) にマッチします。 | +| `\D ` | `\d` でマッチしないものにマッチします。 | +| `\h` | スペースまたはタブにマッチします (`[\x{20}\t]`)。 | +| `\H` | `\h` とマッチしないものにマッチします。 | +| `\s` | 任意の ASCII 空白文字にマッチします (`[\r\n\t\x{C}\x{B}\x{20}]`)。 | +| `\S` | `\s` とマッチしないものにマッチします。 | +| `\v` | ASCII の縦書きスペースにマッチします (`[\x{B}\x{A}\x{C}\x{D}]`)。 | +| `\V` | `\v` とマッチしないものにマッチします。 | +| `\w` | 任意の ASCII 単語文字 (`[a-zA-Z0-9_]`) にマッチします。 | +| `\W` | `\w` とマッチしないものにマッチします。 | +| `\p{x}` | Unicode プロパティ `x` にマッチするものにマッチします。完全なリストは [Unicode プロパティ](#unicode-properties)を参照してください。| + +## カスタム文字クラス + +| 正規表現構文 | 説明 | +| ------------------------------- | ----------------------------------------------------------------------------------- | +|`[...]` | 括弧内にリストされた任意の文字にマッチします。 | +| `[^...]` | 括弧の中にリストされていないものにマッチします。 | +| `[a-zA-Z]` | 大文字でも小文字でも `A - Z` の範囲内のものにマッチします。 | +| `[\s\w\d\S\W\D\v\V\h\H\p{x}...]`| 上記で定義された他のクラスも使用可能です (リテラルとして扱われる `.` を除く)。 | +| `[[:ascii_class:]]` | 特殊な名前の [ASCII クラス](#ascii-classes)にマッチします。 | +| `[[:^ascii_class:]]` | 反転した [ASCII クラス](#ascii-classes)にマッチします。 | + +## グループ + +優先順位の変更やフラグの設定にはグループを使用します。Sensitive Data Scanner ではキャプチャは使用されないため、キャプチャグループは非キャプチャグループと同じように動作します。同様に、キャプチャグループ名も無視されます。 + +| 正規表現構文 | 説明 | +| ------------------------------------------------------ | ---------------------- | +| `(...)` | キャプチャグループ。 | +| `(?...)` | 名前付きキャプチャグループ。 | +| `(?P...)` | 名前付きキャプチャグループ。 | +| `(?'name'...)` | 名前付きキャプチャグループ。 | +| `(?:...)` | 非キャプチャグループ。 | + +## フラグの設定 + +正規表現の動作を変更するにはフラグを使います。フラグを指定する方法は 2 つあります。 +1. `(?imsx:...)`: 非キャプチャグループ内の式にのみ適用されるフラグを設定します。 +2. `(?imsx)...`: 現在のグループの残りの部分に適用されるフラグを設定します。 + +`-` の後に記載されたフラグは、以前に設定されていた場合は解除されます。 + +`imsx`フラグの設定を解除するには `(?-imsx)` を使用します。 + +### 使用可能なフラグ + +| フラグ | 名前 | 説明 | +| ---- | ---------------- | ------------------------------------------------------------------------------------- | +| `i` | 大文字小文字を区別しない | 大文字と小文字の両方にマッチします。 | +| `m` | 複数行モード | `^` と `$` は行頭と行末にマッチします。 | +| `s` | 単一行 | 通常は `\n` 以外の文字にマッチする `.` が任意の文字にマッチするようにします。 | +| `x` | 拡張 | 空白文字は無視されます (カスタム文字クラスを除く)。 | + +## 引用 + +正規表現構文 `\Q...\E` を使うと、`\Q` と `\E` の間をすべてリテラルとして扱えます。 + + +## 量指定子 + +量指定子は前の式を繰り返します。Greedy は、できるだけ多く繰り返し、マッチを見つけるために必要なときだけ繰り返しを減らします。Lazy は最小限の繰り返しを行い、必要に応じて繰り返しを増やします。 + +| 正規表現構文 | 説明 | +| ------------ | ----------------------------------------------------------------------------- | +| `?` | `0` または `1` 回繰り返します (Greedy)。 | +| `??` | `0` または `1` 回繰り返します (Lazy)。 | +| `+` | `1` 回以上繰り返します (Greedy)。 | +| `+?` | `1` 回以上繰り返します (Lazy)。 | +| `*` | `0` 回以上繰り返します (Greedy)。 | +| `*?` | `0` 回以上繰り返します (Lazy)。 | +| `{n}` | ちょうど `n` 回繰り返します (Lazy 修飾子はここで受け付けられますが、無視されます)。 | +| `{n,m}` | 最低でも `n` 回、最大でも `m` 回繰り返します (Greedy)。 | +| `{n,m}?` | 最低でも `n 回`、最大でも `m` 回繰り返します (Lazy)。 | +| `{n,}` | 少なくとも `n` 回繰り返します (Greedy)。 | +| `{n,}?` | 少なくとも `n` 回繰り返します (Lazy)。 | + +**注**: `{,m}` は無効で、リテラルとして扱われます。同様に、中括弧の中に空白を入れるなどの構文の違いは、量化指定をリテラルとして扱います。 + +## Unicode プロパティ + +文字クラス `\p{x}` における `x` の Unicode プロパティです。 + +| Unicode プロパティ| 説明 | +| ------------------| --------------------- | +| `C` | その他 | +| `Cc` | Control | +| `Cf` | 形式 | +| `Cn` | 未割り当て | +| `Co` | 私用 | +| `Cs` | 代理 | +| `L` | 文字 | +| `Ll` | 小文字 | +| `Lm` | 修飾文字 | +| `Lo` | その他の文字 | +| `Lt` | タイトルケース文字 | +| `Lu` | 大文字 | +| `M` | マーク | +| `Mc` |スペーシングマーク | +| `Me` | 囲みマーク | +| `Mn` | ノンスペーシングマーク | +| `N` | 数値 | +| `Nd` | 10 進数 | +| `Nl` | 文字による数 | +| `No` | その他の数 | +| `P` | 句読点 | +| `Pc` | コネクタ句読点 | +| `Pd` | ダッシュ句読点 | +| `Pe` | クローズ句読点 | +| `Pf` | 終止句読点 | +| `Pi` | 開始句読点 | +| `Po` | その他の句読点 | +| `Ps` | 開放句読点 | +| `S` | 記号 | +| `Sc` | 通貨記号 | +| `Sk` | 修飾記号 | +| `Sm` | 数学記号 | +| `So` | その他の記号 | +| `Z` | 区切り文字 | +| `Zl` | 行区切り記号 | +| `Zp` | 段落区切り記号 | +| `Zs` | スペース区切り記号 | + +スクリプト名はスクリプトの任意の文字にマッチさせるために使用できます。使用できる文字は以下の通りです。 + +`アドラム語`、`アホム語`、`アナトリア象形文字`、`アラビア語`、`アルメニア語`、`アヴェスタ語`、`バリ語`、`バムン語`、`バッサ・ヴァー`、`バタク語`、`ベンガル語`、`バイクスキ語`、`ボポモフォ`、`ブラーフミー`、`点字`、`ブギス語`、`ブヒッド語`、`カナダ先住民文字`、`カリア語`、`カフカス・アルバニア語`、`チャクマ語`、`チャム語`、`チェロキー語`、`コラシュム語`、`共通語`、`コプト語`、`楔形文字`、`キュプロス文字`、`キュプロ・ミノア語`、`キリル文字`、`デゼレト文字`、`デーヴァナーガリー文字`、`ディヴェース・アクル語`、`ドグラ語`、`デュプロイ語`、`エジプト象形文字`、`エルバサン語`、`エリマイ語`、`エチオピア語`、`グルジア語`、`グラゴル文字`、`ゴート文字`、`グランタ文字`、`ギリシャ語`、`グジャラート語`、`グンジャラ・ゴンディ語`、`グルムキー語`、`漢字`、`ハングル`、`ハニフィ・ロヒンギャ語`、`ハヌヌー語`、`ハトラン語`、`ヘブライ語`、`ひらがな`、`インペリアル・アラム語`、`継承文字`、`碑文パフラヴィ語`、`碑文パルティア語`、`ジャワ語`、`カイティ語`、`カンナダ語`、`カタカナ`、`カヤー・リ語`、`カローシュティー文字`、`契丹小字`、`クメール語`、`コージキ語`、`フダワディ語`、`ラオ語`、`ラテン語`、`レプチャ語`、`リンブ語`、`線文字A`、`線文字B`、`リス語`、`リキア語`、`リディア語`、`マハジャニ語`、`マカサル語`、`マラヤーラム語`、`マンディア語`、`マニ教文字`、`マルチェン語`、`マサラム・ゴンディ語`、`メデファイドリン語`、`メータイ・マイエク語`、`メンデ・キカクイ語`、`メロエ筆記体`、`メロエ象形文字`、`ミャオ語`、`モディ語`、`モンゴル語`、`モロ語`、`ムルタニ語`、`ミャンマー語`、`ナバタイ語`、`ナンディナガリ語`、`新タイ・ルー語`、`ネワ語`、`ンコ語`、`女書`、`オガム文字`、`オル・チキ文字`、`古ハンガリー文字`、`古イタリック文字`、`古北アラビア語`、`古ペルム文字`、`古ペルシア語`、`古ソグド語`、`古南アラビア語`、`古トルコ語`、`古ウイグル語`、`オリヤー語`、`オセージ語`、`オスマニア文字`、`パハウ・モン語`、`パルミラ文字`、`パウ・チン・ハウ文字`、`ファグス・パ文字`、`フェニキア文字`、`詩篇パフラヴィ語`、`レジャン語`、`ルーン文字`、`サマリア文字`、`サウラスター語`、`シャーラダ語`、`ショー文字`、`シッダム文字`、`サインライティング`、`シンハラ語`、`ソグド語`、`ソラ・ソンペン語`、`ソヨンボ文字`、`スンダ語`、`シロティ・ナーグリ文字`、`シリア語`、`タガログ語`、`タグバンワ語`、`タイ・レ語`、`タイ・タム語`、`タイ・ベト語`、`タクリ語`、`タミル語`、`タンサ語`、`タングート文字`、`テルグ語`、`ターナ文字`、`タイ語`、`チベット語`、`ティフィナグ文字`、`ティルフタ語`、`トト語`、`ウガリット文字`、`ヴァイ語`、`ヴィトクチ語`、`ワンチョ語`、`ワラン・チティ文字`、`イェズィーディー語`、`イ語`、`ザナバザル方形文字` + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ja/sensitive_data_scanner/ +[2]: /ja/sensitive_data_scanner/library_rules/ +[3]: https://www.pcre.org/current/doc/html/pcre2syntax.html \ No newline at end of file diff --git a/content/ja/serverless/aws_lambda/installation/_index.md b/content/ja/serverless/aws_lambda/installation/_index.md new file mode 100644 index 0000000000000..ab9adee7055cc --- /dev/null +++ b/content/ja/serverless/aws_lambda/installation/_index.md @@ -0,0 +1,48 @@ +--- +aliases: +- /ja/serverless/installation/installing_the_library/ +- /ja/serverless/installation +further_reading: +- link: /serverless/configuration/ + tag: ドキュメント + text: サーバーレスモニタリングの構成 +- link: /integrations/amazon_lambda/ + tag: ドキュメント + text: AWS Lambda インテグレーション +kind: ドキュメント +title: AWS Lambda のためのサーバーレスモニタリングのインストール +--- + +## クイックスタート + +Datadog を初めて利用する場合は、[Datadog アカウントにサインアップ][1]して、[AWS Lambda][2] の Datadog Agent インストール手順に従って、Datadog を素早く始めるために Lambda 関数をインスツルメントします。手順を完了すると、Lambda 関数がリアルタイムのメトリクス、ログ、トレースを Datadog に送信するように構成されます。 + +{{< beta-callout-private url="https://docs.google.com/forms/d/e/1FAIpQLScw8XBxCyN_wjBVU2tWm-zX5oPIGF7BwUKcLSHY6MJsem259g/viewform?usp=sf_link" >}} +Datadog の UI から直接 AWS Lambda を一括インスツルメンテーションすることに興味はありますか?参加を希望する場合は、今後実施予定のリモート Lambda インスツルメンテーションの非公開ベータ版へのアクセスをリクエストしてください。 +{{< /beta-callout-private >}} + +クイックスタートプロセスでは、Lambda 関数をその場で構成します。Lambda 関数を恒久的にインスツルメントするには、次のセクションの詳細なインストール手順を参照してください。 + +## インストール手順 + +詳細なインストール方法については、以下の Lambda ランタイムを選択してください。 + +{{< partial name="serverless/getting-started-languages.html" >}} + +## 高度な構成 + +インストールが終わり、テレメトリー収集の設定が済んだら、[高度な構成][3]を使って以下を行います。 + +- タグを使ってメトリクス、トレース、ログを接続する +- API Gateway、AppSync、Step Functions などの AWS リソースからテレメトリーを収集する +- 個々の Lambda 呼び出しのリクエストとレスポンスのペイロードを取得する +- Lambda 関数のエラーをソースコードにリンクする +- ログまたはトレースから機密情報をフィルタリングまたはスクラブする + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/signup/ +[2]: https://app.datadoghq.com/signup/agent#lambda +[3]: /ja/serverless/configuration/ \ No newline at end of file diff --git a/content/ja/serverless/guide/serverless_package_too_large.md b/content/ja/serverless/guide/serverless_package_too_large.md index e971ea2737f85..b3e726b12db0c 100644 --- a/content/ja/serverless/guide/serverless_package_too_large.md +++ b/content/ja/serverless/guide/serverless_package_too_large.md @@ -17,7 +17,7 @@ title: サーバーレスパッケージが大きすぎるエラーのトラブ - 関数コードをインスツルメントする言語固有のライブラリと - 観測データを集計し、バッファリングし、Datadog のバックエンドに転送する拡張機能。 -AWS CLI コマンド [`aws lambda get-layer-version`][3] で Datadog Lambda レイヤーの内容やサイズを検査します。例えば、以下のコマンドを実行すると、_Datadog-{{< latest-lambda-layer-version layer="node-example-version" >}} version {{< latest-lambda-layer-version layer="node" >}} と _Datadog-Extension version {{< latest-lambda-layer-version layer="extension" >}} の Lambda レイヤーをダウンロードするリンクが得られ、圧縮されていないサイズ (合わせて約 30MB) を検査することが可能です。解凍サイズはレイヤーやバージョンによって異なります。以下の例のレイヤー名とバージョン番号は、アプリケーションで使用されているものに置き換えてください。 +AWS CLI コマンド [`aws lambda get-layer-version`][3] を使用して Datadog Lambda レイヤーの内容とサイズを確認します。例えば、以下のコマンドを実行すると、_Datadog-{{< latest-lambda-layer-version layer="node-example-version" >}} バージョン {{< latest-lambda-layer-version layer="node" >}} と _Datadog-Extension バージョン {{< latest-lambda-layer-version layer="extension" >}} の Lambda レイヤーをダウンロードするリンクが得られ、圧縮されていないサイズ (合わせて約 30MB) を確認することができます。解凍サイズはレイヤーやバージョンによって異なります。以下の例のレイヤー名とバージョン番号は、アプリケーションで使用されているものに置き換えてください。 ``` aws lambda get-layer-version \ diff --git a/content/ja/serverless/libraries_integrations/cli.md b/content/ja/serverless/libraries_integrations/cli.md index ebd40714c93b2..a3e2196ef77b8 100644 --- a/content/ja/serverless/libraries_integrations/cli.md +++ b/content/ja/serverless/libraries_integrations/cli.md @@ -188,7 +188,7 @@ datadog-ci lambda flare -f -c -e --w | `--dry-run` | `-d` | Datadog サポートに送信される収集データをプレビューします。 | `false` | -## ヘルプ +## コミュニティ 製品のフィードバックや質問については、[Slack の Datadog コミュニティ](https://chat.datadoghq.com/)の `#serverless` チャンネルに参加してください。 diff --git a/content/ja/serverless/libraries_integrations/extension.md b/content/ja/serverless/libraries_integrations/extension.md index 131e759ed0b55..3876d79aa1d0e 100644 --- a/content/ja/serverless/libraries_integrations/extension.md +++ b/content/ja/serverless/libraries_integrations/extension.md @@ -70,7 +70,7 @@ COPY datadog-init /app/datadog-init サーバーレスアプリケーションをデプロイすると、コードへの変更を含むバージョンの Serverless-Init で実行されます。 -## ヘルプ +## コミュニティ 製品のフィードバックや質問については、[Slack の Datadog コミュニティ](https://chat.datadoghq.com/)の `#serverless` チャンネルに参加してください。 diff --git a/content/ja/service_management/events/explorer/analytics.md b/content/ja/service_management/events/explorer/analytics.md new file mode 100644 index 0000000000000..5028772a84dbf --- /dev/null +++ b/content/ja/service_management/events/explorer/analytics.md @@ -0,0 +1,27 @@ +--- +kind: ドキュメント +title: 分析 +--- + +## 概要 + +イベント分析は、トラブルシューティングと監視のためのビュー、データ集計、グループ化機能でイベントエクスプローラーページを拡張します。次を制御することができます。 + +- 分析するビューセットをフィルタリングするクエリ +- データのグループ化に使用するディメンション +- 集計やグループ化を可視化する方法 + +分析ビジュアライゼーションをエクスポートして、ダッシュボードまたはノートブックにウィジェットを作成できます。 + +### 分析クエリの構築 + +クエリを使用して、イベント分析に何を表示するかを制御できます。 + +1. グラフ化する属性またはタグを選択し、ファセットとして追加します。ファセットをグラフ化すると、変数の一意のカウントが表示されます。 + {{< img src="service_management/events/explorer/facet-to-graph.png" alt="グラフ化できるファセットのリストを表示します。" style="width:100%;" >}} +2. ファセットを使用してグラフをグループ化します。ここで使用できるようにするには、ファセットとして属性を追加する必要があります。 + {{< img src="service_management/events/explorer/split-graph.png" alt="データをグループ化できるファセットのリストを表示します。" style="width:100%;" >}} +3. グラフの時間間隔を選択します。グローバルタイムフレームを変更すると、使用可能なタイムステップ値のリストが変更されます。結果は、時系列、表、またはトップリストとして表示できます。 + {{< img src="service_management/events/explorer/time-interval.png" alt="デフォルトの 5 秒を含む、可能な時間間隔のリストを表示します。" style="width:100%;" >}} +4. 選択したメジャーに応じて、上位と下位のどちらの値を表示するかを選択します。 + {{< img src="service_management/events/explorer/display-values.png" alt="値を上から表示するか下から表示するかを選択します。" style="width:100%;" >}} \ No newline at end of file diff --git a/content/ja/service_management/events/explorer/searching.md b/content/ja/service_management/events/explorer/searching.md new file mode 100644 index 0000000000000..aa9be7332dd9c --- /dev/null +++ b/content/ja/service_management/events/explorer/searching.md @@ -0,0 +1,49 @@ +--- +further_reading: +- link: logs/explorer/search_syntax + tag: ドキュメント + text: ログ検索構文 +kind: ドキュメント +title: 検索構文 +--- + +## 概要 + +イベント検索は[ログ検索構文][1]を使用します。ログ検索と同様に、イベント検索は以下を許可します。 + +- `AND`、`OR`、および `-` 演算子 +- ワイルドカード +- エスケープ文字 +- `key:value` でタグとファセットを検索する +- `@` プレフィックスで属性内を検索する + +## クエリの例 + +`source:(github OR chef)` +: GitHub または Chef からのイベントを表示します。 + +`host:(i-0ade23e6 AND db.myapp.com)` +: `i-0ade23e6` および `db.myapp.com` からのイベントを表示します。 + +`service:kafka` +: `kafka` サービスからのイベントを表示します。 + +`status:error` +: `error` ステータスのイベントを表示します (サポートされるステータス: `error`、`warning`、`info`、`ok`)。 + +`availability-zone:us-east-1a` +: `us-east-1a` AWS アベイラビリティーゾーン (AZ) でイベントを表示します。 + +`container_id:foo*` +: ID が `foo` で始まるすべてのコンテナからのイベントを表示します。 + +`@evt.name:foo` +: 属性 `evt.name` が `foo` と等しいイベントを表示します。 + +詳細については、[ログ検索構文][1]を参照してください。 + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ja/logs/explorer/search_syntax/ \ No newline at end of file diff --git a/content/ja/tests/containers.md b/content/ja/tests/containers.md new file mode 100644 index 0000000000000..451bdfd00574d --- /dev/null +++ b/content/ja/tests/containers.md @@ -0,0 +1,309 @@ +--- +aliases: +- /ja/continuous_integration/setup_tests/containers +- /ja/continuous_integration/tests/containers +further_reading: +- link: /tests + tag: ドキュメント + text: Test Visibility について +kind: ドキュメント +title: コンテナ内のテスト +--- + +{{< site-region region="gov" >}} +
選択したサイト ({{< region-param key="dd_site_name" >}}) では現在 Test Visibility は利用できません。
+{{< /site-region >}} + +## 概要 + +ビルド内で自分で起動したコンテナ内でテストを実行する場合 (たとえば、[`docker run`][1] または [`docker-compose`][2] を使用)、使用している CI プロバイダーに応じて以下の環境変数をコンテナに転送します。これにより、Datadog トレーサーによるビルド情報の自動検出が可能になります。 + +さらに、[言語別のテストインスツルメンテーション手順][3]に記載されているとおり、トレーサーの構成に必要な環境変数で渡す必要があります (`DD_SERVICE`、`DD_ENV`、およびコンテナ内からアクセス可能な、有効な `DD_TRACE_AGENT_URL` など)。 + +{{< tabs >}} +{{% tab "AppVeyor" %}} + +- `APPVEYOR` +- `APPVEYOR_BUILD_ID` +- `APPVEYOR_BUILD_NUMBER` +- `APPVEYOR_BUILD_FOLDER` +- `APPVEYOR_REPO_PROVIDER` +- `APPVEYOR_REPO_NAME` +- `APPVEYOR_REPO_BRANCH` +- `APPVEYOR_REPO_COMMIT` +- `APPVEYOR_REPO_TAG_NAME` +- `APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH` +- `APPVEYOR_REPO_COMMIT_MESSAGE` +- `APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED` +- `APPVEYOR_REPO_COMMIT_AUTHOR` +- `APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL` + +[AppVeyor により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://www.appveyor.com/docs/environment-variables/ +{{% /tab %}} +{{% tab "Azure Pipelines" %}} + +- `TF_BUILD` +- `BUILD_DEFINITIONNAME` +- `BUILD_BUILDID` +- `BUILD_SOURCESDIRECTORY` +- `BUILD_REPOSITORY_URI` +- `BUILD_SOURCEBRANCH` +- `BUILD_SOURCEVERSION` +- `BUILD_SOURCEVERSIONMESSAGE` +- `BUILD_REQUESTEDFORID` +- `BUILD_REQUESTEDFOREMAIL` +- `SYSTEM_TEAMFOUNDATIONSERVERURI` +- `SYSTEM_TEAMPROJECTID` +- `SYSTEM_JOBID` +- `SYSTEM_TASKINSTANCEID` +- `SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI` +- `SYSTEM_PULLREQUEST_SOURCEBRANCH` +- `SYSTEM_PULLREQUEST_SOURCECOMMITID` +- `SYSTEM_STAGEDISPLAYNAME` +- `SYSTEM_JOBDISPLAYNAME` + +[Azure Pipelines により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops +{{% /tab %}} +{{% tab "Bitbucket Pipelines" %}} + +- `BITBUCKET_PIPELINE_UUID` +- `BITBUCKET_BUILD_NUMBER` +- `BITBUCKET_CLONE_DIR` +- `BITBUCKET_REPO_FULL_NAME` +- `BITBUCKET_GIT_SSH_ORIGIN` +- `BITBUCKET_COMMIT` +- `BITBUCKET_BRANCH` +- `BITBUCKET_TAG` + +[Bitbucket Pipelines により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/ +{{% /tab %}} +{{% tab "Bitrise" %}} + +- `BITRISE_BUILD_SLUG` +- `BITRISE_TRIGGERED_WORKFLOW_ID` +- `BITRISE_BUILD_NUMBER` +- `BITRISE_BUILD_URL` +- `BITRISE_SOURCE_DIR` +- `GIT_REPOSITORY_URL` +- `BITRISE_GIT_COMMIT` +- `GIT_CLONE_COMMIT_HASH` +- `BITRISEIO_GIT_BRANCH_DEST` +- `BITRISE_GIT_BRANCH` +- `BITRISE_GIT_TAG` +- `BITRISE_GIT_MESSAGE` +- `BITRISE_APP_TITLE` +- `GIT_CLONE_COMMIT_MESSAGE_SUBJECT` +- `GIT_CLONE_COMMIT_MESSAGE_BODY` +- `GIT_CLONE_COMMIT_AUTHOR_NAME` +- `GIT_CLONE_COMMIT_AUTHOR_EMAIL` +- `GIT_CLONE_COMMIT_COMMITER_NAME` +- `GIT_CLONE_COMMIT_COMMITER_EMAIL` + +[Bitrise により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://devcenter.bitrise.io/en/references/available-environment-variables.html +{{% /tab %}} +{{% tab "Buildkite" %}} + +- `BUILDKITE` +- `BUILDKITE_PIPELINE_SLUG` +- `BUILDKITE_JOB_ID` +- `BUILDKITE_BUILD_ID` +- `BUILDKITE_BUILD_NUMBER` +- `BUILDKITE_BUILD_URL` +- `BUILDKITE_BUILD_CHECKOUT_PATH` +- `BUILDKITE_REPO` +- `BUILDKITE_COMMIT` +- `BUILDKITE_BRANCH` +- `BUILDKITE_TAG` +- `BUILDKITE_MESSAGE` +- `BUILDKITE_BUILD_AUTHOR` +- `BUILDKITE_BUILD_AUTHOR_EMAIL` +- `BUILDKITE_BUILD_CREATOR` +- `BUILDKITE_BUILD_CREATOR_EMAIL` +- `BUILDKITE_AGENT_ID` +- `BUILDKITE_AGENT_META_DATA_*` + +[Buildkite により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://buildkite.com/docs/pipelines/environment-variables +{{% /tab %}} +{{% tab "CircleCI" %}} + +- `CIRCLECI` +- `CIRCLE_PROJECT_REPONAME` +- `CIRCLE_BUILD_NUM` +- `CIRCLE_BUILD_URL` +- `CIRCLE_WORKFLOW_ID` +- `CIRCLE_WORKING_DIRECTORY` +- `CIRCLE_REPOSITORY_URL` +- `CIRCLE_SHA1` +- `CIRCLE_BRANCH` +- `CIRCLE_TAG` +- `CIRCLE_JOB` + +[CircleCI により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables +{{% /tab %}} +{{% tab "Codefresh" %}} + +- `CF_BUILD_ID` +- `CF_PIPELINE_NAME` +- `CF_BUILD_URL` +- `CF_STEP_NAME` +- `CF_BRANCH` +- `CF_REVISION` + +[Codefresh により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://codefresh.io/docs/docs/pipelines/variables/ +{{% /tab %}} +{{% tab "GitHub Actions" %}} + +- `GITHUB_ACTION` +- `GITHUB_SERVER_URL` +- `GITHUB_RUN_ID` +- `GITHUB_RUN_NUMBER` +- `GITHUB_RUN_ATTEMPT` +- `GITHUB_WORKFLOW` +- `GITHUB_WORKSPACE` +- `GITHUB_REPOSITORY` +- `GITHUB_SHA` +- `GITHUB_HEAD_REF` +- `GITHUB_REF` +- `GITHUB_JOB` + +[GitHub Actions により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://docs.github.com/en/free-pro-team@latest/actions/reference/environment-variables#default-environment-variables +{{% /tab %}} +{{% tab "GitLab CI" %}} + +- `GITLAB_CI` +- `CI_PIPELINE_ID` +- `CI_PIPELINE_URL` +- `CI_PIPELINE_IID` +- `CI_PROJECT_PATH` +- `CI_PROJECT_DIR` +- `CI_JOB_STAGE` +- `CI_JOB_NAME` +- `CI_JOB_URL` +- `CI_JOB_ID` +- `CI_RUNNER_ID` +- `CI_RUNNER_TAGS` +- `CI_REPOSITORY_URL` +- `CI_COMMIT_SHA` +- `CI_COMMIT_REF_NAME` +- `CI_COMMIT_BRANCH` +- `CI_COMMIT_TAG` +- `CI_COMMIT_AUTHOR` +- `CI_COMMIT_MESSAGE` +- `CI_COMMIT_TIMESTAMP` + +[GitLab CI により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html +{{% /tab %}} +{{% tab "Jenkins" %}} + +- `JENKINS_URL` +- `BUILD_TAG` +- `BUILD_NUMBER` +- `BUILD_URL` +- `WORKSPACE` +- `JOB_NAME` +- `JOB_URL` +- `GIT_URL` +- `GIT_URL_1` +- `GIT_COMMIT` +- `GIT_BRANCH` +- `NODE_NAME` +- `NODE_LABELS` +- `DD_CUSTOM_TRACE_ID` ([Jenkins Datadog Plugin][2] で設定されるカスタム変数) +- `DD_CUSTOM_PARENT_ID` (idem) + +[Jenkins により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://wiki.jenkins.io/display/JENKINS/Building+a+software+project +[2]: https://github.com/jenkinsci/datadog-plugin +{{% /tab %}} +{{% tab "TeamCity" %}} + +- `TEAMCITY_VERSION` +- `TEAMCITY_BUILDCONF_NAME` +- `BUILD_URL` +- `DATADOG_BUILD_ID` ([Datadog TeamCity インテグレーション][2]で設定されるカスタム変数) + +[TeamCity により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html +[2]: https://plugins.jetbrains.com/plugin/20852-datadog-ci-integration +{{% /tab %}} +{{% tab "Travis CI" %}} + +- `TRAVIS` +- `TRAVIS_BUILD_ID` +- `TRAVIS_BUILD_NUMBER` +- `TRAVIS_BUILD_WEB_URL` +- `TRAVIS_BUILD_DIR` +- `TRAVIS_JOB_WEB_URL` +- `TRAVIS_REPO_SLUG` +- `TRAVIS_COMMIT` +- `TRAVIS_BRANCH` +- `TRAVIS_TAG` +- `TRAVIS_PULL_REQUEST_SLUG` +- `TRAVIS_PULL_REQUEST_BRANCH` +- `TRAVIS_COMMIT_MESSAGE` + +[Travis CI により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://docs.travis-ci.com/user/environment-variables/#default-environment-variables +{{% /tab %}} +{{% tab "Buddy CI" %}} + +- `BUDDY` +- `BUDDY_SCM_URL` +- `BUDDY_EXECUTION_REVISION` +- `BUDDY_EXECUTION_BRANCH` +- `BUDDY_EXECUTION_TAG` +- `BUDDY_PIPELINE_ID` +- `BUDDY_EXECUTION_ID` +- `BUDDY_PIPELINE_NAME` +- `BUDDY_EXECUTION_URL` +- `BUDDY_EXECUTION_REVISION_MESSAGE` +- `BUDDY_EXECUTION_REVISION_COMMITTER_NAME` +- `BUDDY_EXECUTION_REVISION_COMMITTER_EMAIL` + +[Buddy CI により提供されたビルド環境変数の完全リスト][1] + + +[1]: https://buddy.works/docs/pipelines/environment-variables#default-environment-variables +{{% /tab %}} +{{< /tabs >}} + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://docs.docker.com/engine/reference/run/ +[2]: https://docs.docker.com/compose/reference/ +[3]: /ja/tests/ \ No newline at end of file diff --git a/content/ja/tests/setup/_index.md b/content/ja/tests/setup/_index.md new file mode 100644 index 0000000000000..47da5928e2ea2 --- /dev/null +++ b/content/ja/tests/setup/_index.md @@ -0,0 +1,15 @@ +--- +aliases: +- /ja/continuous_integration/tests/setup/ +kind: ドキュメント +title: Test Visibility の構成 +type: multi-code-lang +--- + +[Test Visibility][1] の構成オプションについては、言語を選択してください。 + +{{< partial name="continuous_integration/ci-tests-setup.html" >}} + +
+ +[1]: /ja/continuous_integration/tests \ No newline at end of file diff --git a/content/ja/tests/setup/swift.md b/content/ja/tests/setup/swift.md new file mode 100644 index 0000000000000..e3ab1df7fcb4f --- /dev/null +++ b/content/ja/tests/setup/swift.md @@ -0,0 +1,768 @@ +--- +aliases: +- /ja/continuous_integration/setup_tests/swift +- /ja/continuous_integration/tests/swift +- /ja/continuous_integration/tests/setup/swift +code_lang: swift +code_lang_weight: 50 +further_reading: +- link: /continuous_integration/tests + tag: ドキュメント + text: テスト結果とパフォーマンスを確認する +- link: /continuous_integration/intelligent_test_runner/swift + tag: ドキュメント + text: Intelligent Test Runner でテストジョブを高速化する +- link: /continuous_integration/troubleshooting/ + tag: ドキュメント + text: CI Visibility のトラブルシューティング +kind: ドキュメント +title: Swift テスト +type: multi-code-lang +--- + +{{< site-region region="gov" >}} +
+選択された Datadog サイト ({{< region-param key="dd_site_name" >}}) はサポートされていません。 +
+{{< /site-region >}} + +## 互換性 + +対応言語: + +| 言語 | バージョン | 注 | +|---|---|---| +| Swift | >= 5.2 | Swift Concurrency を使用している場合、非同期タスクの正確なスパン表現には Xcode 13.2 以上が必要です。 | +| Objective-C | >= 2.0 | | + +対応プラットフォーム: + +| プラットフォーム | バージョン | +|---|---| +| iOS | >= 11.0 | +| macOS | >= 10.13 | +| tvOS | >= 11.0 | + +## Swift テスト用 SDK のインストール + +テストフレームワークのインストール方法は 3 つあります。 + +{{< tabs >}} +{{% tab "Swift パッケージマネージャー" %}} + +### Xcode プロジェクトの使用 + +1. プロジェクトに `dd-sdk-swift-testing` パッケージを追加します。これは、[`https://github.com/DataDog/dd-sdk-swift-testing`][1] にあります。 + +{{< img src="continuous_integration/swift_package.png" alt="Swift パッケージ" >}} + + +2. パッケージに含まれるライブラリ `DatadogSDKTesting` とテストターゲットをリンクします。 + +{{< img src="continuous_integration/swift_link2.png" alt="Swift Linking SPM" >}} + +3. UITests を実行する場合は、テストを実行するアプリもこのライブラリでリンクします。 + +### Swift パッケージプロジェクトの使用 + +1. パッケージの依存関係の配列に `dd-sdk-swift-testing` を追加します。例: + +{{< code-block lang="swift" >}} +.package(url: "https://github.com/DataDog/dd-sdk-swift-testing.git", from: "2.2.0") +{{< /code-block >}} + +2. テスト対象の依存関係にテストフレームワークを追加するには、以下の行をテスト対象の依存関係の配列に追加します。 +{{< code-block lang="swift" >}} +.product(name: "DatadogSDKTesting", package: "dd-sdk-swift-testing") +{{< /code-block >}} + +3. UITests を実行する場合は、テストを実行するアプリケーションにも依存関係を追加します。 + + +[1]: https://github.com/DataDog/dd-sdk-swift-testing +{{% /tab %}} +{{% tab "Cocoapods" %}} + +1. `DatadogSDKTesting` 依存関係を `Podfile` のテストターゲットに追加します。 + +{{< code-block lang="ruby" >}} +target 'MyApp' do + # ... + + target 'MyAppTests' do + inherit! :search_paths + pod 'DatadogSDKTesting' + end +end +{{< /code-block >}} + +2. UITests を実行する場合は、テストを実行するアプリにも依存関係を追加します。 + +{{% /tab %}} +{{% tab "フレームワークのリンク" %}} + +1. [リリース][1]のページから `DatadogSDKTesting.zip` をダウンロードし、解凍します。 + +2. 出来上がった XCFramework にテストターゲットをコピーしてリンクします。 + +{{< img src="continuous_integration/swift_link.png" alt="Swift Linking XCFramework" >}} + +3. UITests を実行する場合は、テストを実行するアプリもこのライブラリでリンクします。 + +[1]: https://github.com/DataDog/dd-sdk-swift-testing/releases +{{% /tab %}} +{{% tab "GitHub Actions" %}} + +GitHub を使用している場合、GitHub Marketplace から [Swift テストアクション][1]を使用して、テストを自動的に構成して実行することができます。デフォルトでは、このページで説明されている残りの構成はスキップできますが (アクション自体の構成を除く)、設定環境変数を使って、追加機能の無効化や設定をすることができます。 + +Cocoapods やフレームワークのリンクなど他の方法と比較して、Swift テストアクションオプションは設定や実行の柔軟性に欠ける可能性がありますが、コードの変更は必要ありません。 + +[1]: https://github.com/marketplace/actions/swift-test-action-for-datadog +{{% /tab %}} +{{< /tabs >}} +
: このフレームワークはテストにのみ有用であり、テストを実行するときのみアプリケーションとリンクさせる必要があります。フレームワークをユーザーに配布しないでください。
+ + + + +## テストのインスツルメンテーション + +### Datadog の構成 + +#### Xcode プロジェクトの使用 + +テストのインスツルメンテーションを有効にするには、テストターゲットに以下の環境変数を追加するか、または[以下で説明](#using-infoplist-for-configuration)されているとおり `Info.plist` ファイルに追加します。テストプランを使用している場合は、`Expand variables based on` または `Target for Variable Expansion` でメインターゲットを選択する**必要があります**。 + +{{< img src="continuous_integration/swift_env.png" alt="Swift 環境" >}} + +
環境変数の変数展開にはメインターゲットを設定する必要があります。選択されていない場合、変数は無効になります。
+ +UITests の場合、フレームワークがこれらの値をアプリケーションに自動で注入するため、環境変数はテストターゲットにのみ設定する必要があります。 + +#### Swift パッケージプロジェクトの使用 + +テストのインスツルメンテーションを有効にするには、以下の環境変数をテストのコマンドライン実行に設定する必要があります。代わりに、テストを実行する前に環境に設定することもできますし、コマンドに前置きすることもできます。 + +
+
+DD_TEST_RUNNER=1 DD_API_KEY= DD_APPLICATION_KEY= DD_SITE=us1 SRCROOT=$PWD swift test ...
+
+or
+
+DD_TEST_RUNNER=1 DD_API_KEY= DD_APPLICATION_KEY= DD_SITE=us1 SRCROOT=$PWD xcodebuild test -scheme ...
+
+
+ + +テストターゲットにこれらすべての変数を設定します。 + +`DD_TEST_RUNNER` +: テストのインスツルメンテーションを有効または無効にします。この値を `$(DD_TEST_RUNNER)` に設定すると、テストプロセスの外部 (CI ビルドなど) で定義された環境変数を使用してテストインスツルメンテーションを有効または無効にできます。
+**デフォルト**: `false`
+**推奨**: `$(DD_TEST_RUNNER)` + +`DD_API_KEY` +: テスト結果のアップロードに使用される [Datadog API キー][2]。
+**デフォルト**: `(empty)` + +`DD_APPLICATION_KEY` +: テスト結果のアップロードに使用される [Datadog アプリケーションキー][5]。
+**デフォルト**: `(empty)` + +`DD_SERVICE` +: テスト対象のサービスまたはライブラリの名前。
+**デフォルト**: リポジトリ名
+**例**: `my-ios-app` + +`DD_ENV` +: テストが実行されている環境の名前。この値を `$(DD_ENV)` に設定して、実行時に環境変数を使用して設定できるようにします。
+**デフォルト**: `none`
+**推奨**: `$(DD_ENV)`
+**例**: `ci`、`local` + +`SRCROOT` +: プロジェクトの場所へのパス。Xcode を使用している場合、この値は自動的に設定されるため、`$(SRCROOT)` を使用します。
+**デフォルト**: `(empty)`
+**推奨**: `$(SRCROOT)`
+**例**: `/Users/ci/source/MyApp` + +`service` と `env` の予約タグの詳細については、[統合サービスタグ付け][8]を参照してください。 + +さらに、選択したサイトを使用するように Datadog サイトを構成します ({{< region-param key="dd_site_name" >}}): + +`DD_SITE` (必須) +: 結果をアップロードする [Datadog サイト][3]。
+**デフォルト**: `datadoghq.com`
+**選択したサイト**: {{< region-param key="dd_site" code="true" >}} + +## Git のメタデータを収集する + +{{% ci-git-metadata %}} + +### テストの実行 + +インストール後、通常どおりにテストを実行します。たとえば、`xcodebuild test` コマンドを使用します。テスト、ネットワークリクエスト、アプリケーションクラッシュは自動的に記録されます。CI でテストを実行するときに、環境変数を渡します。次に例を示します。 + +
+
+DD_TEST_RUNNER=1 DD_ENV=ci DD_SITE={{< region-param key="dd_site" >}} xcodebuild \
+  -project "MyProject.xcodeproj" \
+  -scheme "MyScheme" \
+  -destination "platform=macOS,arch=x86_64" \
+  test
+
+
+ +### UI テスト + +UITests では、テストターゲットと UITests から実行されるアプリケーションの両方がフレームワークとリンクしている必要があります。フレームワークがこれらの値をアプリケーションに自動で注入するため、環境変数はテストターゲットにのみ設定する必要があります。 + +### RUM インテグレーション + +テスト対象のアプリケーションが RUM を使用してインスツルメンテーションされている場合、UI テストの結果と生成された RUM セッションは自動的にリンクされます。RUM の詳細については、[RUM iOS インテグレーション][4]ガイドを参照してください。iOS RUM バージョン 1.10 以上が必要です。 + + +## 追加のオプション構成 + +以下の構成設定の場合: + - `Boolean` 変数には `1`、`0`、`true`、`false`、`YES`、`NO` のいずれかを使用できます + - `String` リスト変数には `,` または `;` で区切られた要素の一覧が許可されます + +### 自動インスツルメンテーションの有効化 + +`DD_ENABLE_STDOUT_INSTRUMENTATION` +: `stdout` に書き込まれたメッセージ (例えば `print()`) をキャプチャして、ログとして報告します。これは請求額に影響を与える可能性があります。(ブール値) + +`DD_ENABLE_STDERR_INSTRUMENTATION` +: `stderr` に書き込まれたメッセージ (例えば `NSLog()` や UITest のステップ) をキャプチャして、ログとして報告します。これは請求額に影響を与える可能性があります。(ブール値) + +### 自動インスツルメンテーションの無効化 + +このフレームワークでは、サポートされているすべてのライブラリの自動インスツルメンテーションが可能ですが、これが望ましくない場合もあります。次の環境変数を(または[以下で説明](#using-infoplist-for-configuration)されているとおり `Info.plist` ファイルに)設定することにより、特定のライブラリの自動インスツルメンテーションを無効にできます。 + +`DD_DISABLE_NETWORK_INSTRUMENTATION` +: すべてのネットワークインスツルメンテーションを無効化します (Boolean) + +`DD_DISABLE_RUM_INTEGRATION` +: RUMセッションとのインテグレーションを無効にします (Boolean) + +`DD_DISABLE_SOURCE_LOCATION` +: テストのソースコードの場所と Codeowners を無効にします (ブール値) + +`DD_DISABLE_CRASH_HANDLER` +: クラッシュの処理およびレポートを無効化します (Boolean) +
重要: クラッシュレポートを無効にすると、クラッシュしたテストはまったく報告されず、テストの失敗として表示されません。いずれかのテストでクラッシュ処理を無効にする必要がある場合は、それらを個別のターゲットとして実行し、他のテストでは無効にしないようにします。
+ +### ネットワークの自動インスツルメンテーション + +ネットワークの自動インスツルメンテーションでは、以下の追加設定を構成できます。 + +`DD_DISABLE_HEADERS_INJECTION` +: トレースヘッダーのすべての挿入を無効化します (Boolean) + +`DD_INSTRUMENTATION_EXTRA_HEADERS` +: ログを作成する特定の追加ヘッダー (文字列リスト) + +`DD_EXCLUDED_URLS` +: ログの作成またはヘッダーの挿入を行わない URL (文字列リスト) + +`DD_ENABLE_RECORD_PAYLOAD` +: リクエストおよび応答内のペイロードのサブセット (1024 バイト) のレポートを有効化します (Boolean) + +`DD_MAX_PAYLOAD_SIZE` +: ペイロードから報告される最大サイズを設定します。デフォルトは `1024` (整数) + +`DD_DISABLE_NETWORK_CALL_STACK` +: ネットワークスパンのコールスタック情報を無効にします (ブール値) + +`DD_ENABLE_NETWORK_CALL_STACK_SYMBOLICATED` +: メソッド名だけでなく、正確なファイルや行の情報を含むコールスタック情報を表示します。テストのパフォーマンスに影響を与える可能性があります (ブール値) + +### インフラストラクチャーテストの相関 + +自身のインフラストラクチャーでテストを実行している場合 (macOS やシミュレータのテスト)、Datadog Agent をインストールして以下を設定することで、テストとインフラストラクチャーのメトリクスを関連付けることができます。 + +`DD_CIVISIBILITY_REPORT_HOSTNAME` +: テストを開始するマシンのホスト名を報告します (ブール値) + +モジュール `DatadogSDKTesting` をインポートしクラス: `DDInstrumentationControl` を使用することで、Swift または Objective-C の一部のテストで特定の自動インスツルメンテーションを有効/無効にすることも可能です。 + +## カスタムタグ + +### 環境変数 + +`DD_TAGS` 環境変数を(または[以下で説明](#using-infoplist-for-configuration)されているとおり `Info.plist` ファイルに)使用できます。スペース区切りの `key:tag` のペアを含む必要があります。例: +{{< code-block lang="bash" >}} +DD_TAGS=tag-key-0:tag-value-0 tag-key-1:tag-value-1 +{{< /code-block >}} + +値の 1 つが `$` の文字で始まる場合、同じ名前(存在する場合)の環境変数に置換されます。例: +{{< code-block lang="bash" >}} +DD_TAGS=home:$HOME +{{< /code-block >}} + +`$` 文字を使うことで、値の先頭にある環境変数を置換することもサポートされます。ただし、その値には環境変数に対応しない文字 (`a-z`、`A-Z` または `_`) が含まれている必要があります。例: +{{< code-block lang="bash" >}} +FOO = BAR +DD_TAGS=key1:$FOO-v1 // expected: key1:BAR-v1 +{{< /code-block >}} + +### OpenTelemetry + +**注**: OpenTelemetry の使用は Swift でのみサポートされています。 + +Datadog Swift テストフレームワークは、内部的に [OpenTelemetry][6] をトレーシングテクノロジーとして使用します。OpenTelemetry トレーサーには、`DDInstrumentationControl.openTelemetryTracer` を使用してアクセスでき、OpenTelemetry API を使用します。たとえば、タグまたは属性を追加するには、 + +{{< code-block lang="swift" >}} +import DatadogSDKTesting +import OpenTelemetryApi + +let tracer = DDInstrumentationControl.openTelemetryTracer as? Tracer +let span = tracer?.spanBuilder(spanName: "ChildSpan").startSpan() +span?.setAttribute(key: "OTTag2", value: "OTValue2") +span?.end() +{{< /code-block >}} + +テストターゲットは、`opentelemetry-swift` で明示的にリンクする必要があります。 + +### コードカバレッジを報告する + +コードカバレッジが利用できる場合、Datadog SDK (v2.2.7+) は、テストセッションの `test.code_coverage.lines_pct` タグでそれを報告します。 + +Xcode では、Test Scheme でコードカバレッジの報告を有効にすることができます。 + +テストセッションの **Coverage** タブで、テストカバレッジの推移を見ることができます。 + +## 構成に Info.plist を使用する + +または、環境変数を設定する代わりに、構成の値を(アプリバンドルではなく)テストバンドルの `Info.plist` ファイルに追加して提供することも可能です。環境変数と `Info.plist` ファイルに同じ設定がされている場合は、環境変数が優先されます。 + +## CI プロバイダーの環境変数 + +{{< tabs >}} +{{% tab "Jenkins" %}} + +| 環境変数 | 値 | +| -------------------- | ---------------------- | +| `JENKINS_URL` | `$(JENKINS_URL)` | +| `WORKSPACE` | `$(WORKSPACE)` | +| `BUILD_TAG` | `$(BUILD_TAG)` | +| `BUILD_NUMBER` | `$(BUILD_NUMBER)` | +| `BUILD_URL` | `$(BUILD_URL)` | +| `JOB_NAME` | `$(JOB_NAME)` | +| `DD_CUSTOM_TRACE_ID` | `$(DD_CUSTOM_TRACE_ID)`| + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| -------------------- | --------------- | +| `GIT_COMMIT` | `$(GIT_COMMIT)` | +| `GIT_URL` | `$(GIT_URL)` | +| `GIT_URL_1` | `$(GIT_URL_1)` | +| `GIT_BRANCH` | `$(GIT_BRANCH)` | + +{{% /tab %}} +{{% tab "CircleCI" %}} + +| 環境変数 | 値 | +| -------------------------- | ----------------------------- | +| `CIRCLECI` | `$(CIRCLECI)` | +| `CIRCLE_WORKING_DIRECTORY` | `$(CIRCLE_WORKING_DIRECTORY)` | +| `CIRCLE_BUILD_NUM` | `$(CIRCLE_BUILD_NUM)` | +| `CIRCLE_BUILD_URL` | `$(CIRCLE_BUILD_URL)` | +| `CIRCLE_WORKFLOW_ID` | `$(CIRCLE_WORKFLOW_ID)` | +| `CIRCLE_PROJECT_REPONAME` | `$(CIRCLE_PROJECT_REPONAME)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| ----------------------- | -------------------------- | +| `CIRCLE_SHA1` | `$(CIRCLE_SHA1)` | +| `CIRCLE_REPOSITORY_URL` | `$(CIRCLE_REPOSITORY_URL)` | +| `CIRCLE_BRANCH` | `$(CIRCLE_BRANCH)` | +| `CIRCLE_TAG` | `$(CIRCLE_TAG)` | + +{{% /tab %}} +{{% tab "GitLab CI" %}} + +| 環境変数 | 値 | +| -------------------- | -------------------- | +| `GITLAB_CI` | `$(GITLAB_CI)` | +| `CI_PROJECT_DIR` | `$(CI_PROJECT_DIR)` | +| `CI_JOB_STAGE` | `$(CI_JOB_STAGE)` | +| `CI_JOB_NAME` | `$(CI_JOB_NAME)` | +| `CI_JOB_URL` | `$(CI_JOB_URL)` | +| `CI_PIPELINE_ID` | `$(CI_PIPELINE_ID)` | +| `CI_PIPELINE_IID` | `$(CI_PIPELINE_IID)` | +| `CI_PIPELINE_URL` | `$(CI_PIPELINE_URL)` | +| `CI_PROJECT_PATH` | `$(CI_PROJECT_PATH)` | +| `CI_PROJECT_URL` | `$(CI_PROJECT_URL)` | + + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| -------------------- | ---------------------- | +| `CI_COMMIT_SHA` | `$(CI_COMMIT_SHA)` | +| `CI_REPOSITORY_URL` | `$(CI_REPOSITORY_URL)` | +| `CI_COMMIT_BRANCH` | `$(CI_COMMIT_BRANCH)` | +| `CI_COMMIT_TAG` | `$(CI_COMMIT_TAG)` | +| `CI_COMMIT_MESSAGE` | `$(CI_COMMIT_MESSAGE)` | +| `CI_COMMIT_AUTHOR` | `$(CI_COMMIT_AUTHOR)` | +| `CI_COMMIT_TIMESTAMP` | `$(CI_COMMIT_TIMESTAMP)` | + +{{% /tab %}} +{{% tab "Travis" %}} + +| 環境変数 | 値 | +| -------------------------- | ----------------------------- | +| `TRAVIS` | `$(TRAVIS)` | +| `TRAVIS_BUILD_DIR` | `$(TRAVIS_BUILD_DIR)` | +| `TRAVIS_BUILD_ID` | `$(TRAVIS_BUILD_ID)` | +| `TRAVIS_BUILD_NUMBER` | `$(TRAVIS_BUILD_NUMBER)` | +| `TRAVIS_BUILD_WEB_URL` | `$(TRAVIS_BUILD_WEB_URL)` | +| `TRAVIS_JOB_WEB_URL` | `$(TRAVIS_JOB_WEB_URL)` | +| `TRAVIS_REPO_SLUG` | `$(TRAVIS_REPO_SLUG)` | +| `TRAVIS_PULL_REQUEST_SLUG` | `$(TRAVIS_PULL_REQUEST_SLUG)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| ---------------------------- | ------------------------------- | +| `TRAVIS_PULL_REQUEST_BRANCH` | `$(TRAVIS_PULL_REQUEST_BRANCH)` | +| `TRAVIS_BRANCH` | `$(TRAVIS_BRANCH)` | +| `TRAVIS_COMMIT` | `$(TRAVIS_COMMIT)` | +| `TRAVIS_TAG` | `$(TRAVIS_TAG)` | +| `TRAVIS_COMMIT_MESSAGE` | `$(TRAVIS_COMMIT_MESSAGE)` | + +{{% /tab %}} +{{% tab "GitHub Actions" %}} + +| 環境変数 | 値 | +| -------------------- | ----------------------- | +| `GITHUB_WORKSPACE` | `$(GITHUB_WORKSPACE)` | +| `GITHUB_REPOSITORY` | `$(GITHUB_REPOSITORY)` | +| `GITHUB_RUN_ID` | `$(GITHUB_RUN_ID)` | +| `GITHUB_RUN_NUMBER` | `$(GITHUB_RUN_NUMBER)` | +| `GITHUB_WORKFLOW` | `$(GITHUB_WORKFLOW)` | +| `GITHUB_SHA` | `$(GITHUB_SHA)` | +| `GITHUB_SERVER_URL` | `$(GITHUB_SERVER_URL)` | +| `GITHUB_RUN_ATTEMPT` | `$(GITHUB_RUN_ATTEMPT)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| -------------------- | ---------------------- | +| `GITHUB_REF` | `$(GITHUB_REF)` | +| `GITHUB_HEAD_REF` | `$(GITHUB_HEAD_REF)` | +| `GITHUB_REPOSITORY` | `$(GITHUB_REPOSITORY)` | + +{{% /tab %}} +{{% tab "Buildkite" %}} + +| 環境変数 | 値 | +| ------------------------------- | ---------------------------------- | +| `BUILDKITE` | `$(BUILDKITE)` | +| `BUILDKITE_BUILD_CHECKOUT_PATH` | `$(BUILDKITE_BUILD_CHECKOUT_PATH)` | +| `BUILDKITE_BUILD_ID` | `$(BUILDKITE_BUILD_ID)` | +| `BUILDKITE_BUILD_NUMBER` | `$(BUILDKITE_BUILD_NUMBER)` | +| `BUILDKITE_BUILD_URL` | `$(BUILDKITE_BUILD_URL)` | +| `BUILDKITE_PIPELINE_SLUG` | `$(BUILDKITE_PIPELINE_SLUG)` | +| `BUILDKITE_JOB_ID` | `$(BUILDKITE_JOB_ID)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| ------------------------------ | --------------------------------- | +| `BUILDKITE_COMMIT` | `$(BUILDKITE_COMMIT)` | +| `BUILDKITE_REPO` | `$(BUILDKITE_REPO)` | +| `BUILDKITE_BRANCH` | `$(BUILDKITE_BRANCH)` | +| `BUILDKITE_TAG` | `$(BUILDKITE_TAG)` | +| `BUILDKITE_MESSAGE` | `$(BUILDKITE_MESSAGE)` | +| `BUILDKITE_BUILD_AUTHOR` | `$(BUILDKITE_BUILD_AUTHOR)` | +| `BUILDKITE_BUILD_AUTHOR_EMAIL` | `$(BUILDKITE_BUILD_AUTHOR_EMAIL)` | + +{{% /tab %}} +{{% tab "Bitbucket Pipelines" %}} + +| 環境変数 | 値 | +| -------------------------- | ----------------------------- | +| `BITBUCKET_CLONE_DIR` | `$(BITBUCKET_CLONE_DIR)` | +| `BITBUCKET_BUILD_NUMBER` | `$(BITBUCKET_BUILD_NUMBER)` | +| `BITBUCKET_PIPELINE_UUID` | `$(BITBUCKET_PIPELINE_UUID)` | +| `BITBUCKET_REPO_FULL_NAME` | `$(BITBUCKET_REPO_FULL_NAME)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| -------------------------- | ----------------------------- | +| `BITBUCKET_COMMIT` | `$(BITBUCKET_COMMIT)` | +| `BITBUCKET_GIT_SSH_ORIGIN` | `$(BITBUCKET_GIT_SSH_ORIGIN)` | +| `BITBUCKET_BRANCH` | `$(BITBUCKET_BRANCH)` | +| `BITBUCKET_TAG` | `$(BITBUCKET_TAG)` | + +{{% /tab %}} +{{% tab "AppVeyor" %}} + +| 環境変数 | 値 | +| ------------------------ | --------------------------- | +| `APPVEYOR` | `$(APPVEYOR)` | +| `APPVEYOR_BUILD_FOLDER` | `$(APPVEYOR_BUILD_FOLDER)` | +| `APPVEYOR_BUILD_ID` | `$(APPVEYOR_BUILD_ID)` | +| `APPVEYOR_BUILD_NUMBER` | `$(APPVEYOR_BUILD_NUMBER)` | +| `APPVEYOR_REPO_TAG_NAME` | `$(APPVEYOR_REPO_TAG_NAME)` | +| `APPVEYOR_REPO_NAME` | `$(APPVEYOR_REPO_NAME)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| ---------------------------------------- | ------------------------------------------- | +| `APPVEYOR_REPO_COMMIT` | `$(APPVEYOR_REPO_COMMIT)` | +| `APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH` | `$(APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH)` | +| `APPVEYOR_REPO_BRANCH` | `$(APPVEYOR_REPO_BRANCH)` | +| `APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED` | `$(APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED)` | +| `APPVEYOR_REPO_COMMIT_AUTHOR` | `$(APPVEYOR_REPO_COMMIT_AUTHOR)` | +| `APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL` | `$(APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL)` | + +{{% /tab %}} +{{% tab "Azure Pipelines" %}} + +| 環境変数 | 値 | +| -------------------------------- | ----------------------------------- | +| `TF_BUILD` | `$(TF_BUILD)` | +| `BUILD_SOURCESDIRECTORY` | `$(BUILD_SOURCESDIRECTORY)` | +| `BUILD_BUILDID` | `$(BUILD_BUILDID)` | +| `BUILD_DEFINITIONNAME` | `$(BUILD_DEFINITIONNAME)` | +| `SYSTEM_TEAMPROJECTID` | `$(SYSTEM_TEAMPROJECTID)` | +| `SYSTEM_TEAMFOUNDATIONSERVERURI` | `$(SYSTEM_TEAMFOUNDATIONSERVERURI)` | +| `SYSTEM_JOBID` | `$(SYSTEM_JOBID)` | +| `SYSTEM_TASKINSTANCEID` | `$(SYSTEM_TASKINSTANCEID)` | +| `SYSTEM_JOBDISPLAYNAME` | `$(SYSTEM_JOBDISPLAYNAME)` | +| `SYSTEM_STAGEDISPLAYNAME` | `$(SYSTEM_STAGEDISPLAYNAME)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| ---------------------------------------- | ------------------------------------------- | +| `BUILD_SOURCEVERSION` | `$(BUILD_SOURCEVERSION)` | +| `BUILD_REPOSITORY_URI` | `$(BUILD_REPOSITORY_URI)` | +| `BUILD_SOURCEBRANCH` | `$(BUILD_SOURCEBRANCH)` | +| `SYSTEM_PULLREQUEST_SOURCECOMMITID` | `$(SYSTEM_PULLREQUEST_SOURCECOMMITID)` | +| `SYSTEM_PULLREQUEST_SOURCEBRANCH` | `$(SYSTEM_PULLREQUEST_SOURCEBRANCH)` | +| `SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI` | `$(SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI)` | +| `BUILD_SOURCEVERSIONMESSAGE` | `$(BUILD_SOURCEVERSIONMESSAGE)` | +| `BUILD_REQUESTEDFORID` | `$(BUILD_REQUESTEDFORID)` | +| `BUILD_REQUESTEDFOREMAIL` | `$(BUILD_REQUESTEDFOREMAIL)` | + +{{% /tab %}} +{{% tab "Bitrise" %}} + +| 環境変数 | 値 | +| ---------------------- | ------------------------- | +| `BITRISE_SOURCE_DIR` | `$(BITRISE_SOURCE_DIR)` | +| `BITRISE_TRIGGERED_WORKFLOW_ID` | `$(BITRISE_TRIGGERED_WORKFLOW_ID)` | +| `BITRISE_BUILD_SLUG` | `$(BITRISE_BUILD_SLUG)` | +| `BITRISE_BUILD_NUMBER` | `$(BITRISE_BUILD_NUMBER)` | +| `BITRISE_BUILD_URL` | `$(BITRISE_BUILD_URL)` | + +物理デバイスのテストのための追加 Git 構成: + +| 環境変数 | 値 | +| ---------------------------------- | ------------------------------------- | +| `GIT_REPOSITORY_URL` | `$(GIT_REPOSITORY_URL)` | +| `BITRISE_GIT_COMMIT` | `$(BITRISE_GIT_COMMIT)` | +| `BITRISE_GIT_BRANCH` | `$(BITRISE_GIT_BRANCH)` | +| `BITRISE_GIT_TAG` | `$(BITRISE_GIT_TAG)` | +| `GIT_CLONE_COMMIT_HASH` | `$(GIT_CLONE_COMMIT_HASH)` | +| `BITRISE_GIT_MESSAGE` | `$(BITRISE_GIT_MESSAGE)` | +| `GIT_CLONE_COMMIT_MESSAGE_SUBJECT` | `$(GIT_CLONE_COMMIT_MESSAGE_SUBJECT)` | +| `GIT_CLONE_COMMIT_MESSAGE_BODY` | `$(GIT_CLONE_COMMIT_MESSAGE_BODY)` | +| `GIT_CLONE_COMMIT_AUTHOR_NAME` | `$(GIT_CLONE_COMMIT_AUTHOR_NAME)` | +| `GIT_CLONE_COMMIT_AUTHOR_EMAIL` | `$(GIT_CLONE_COMMIT_AUTHOR_EMAIL)` | +| `GIT_CLONE_COMMIT_COMMITER_NAME` | `$(GIT_CLONE_COMMIT_COMMITER_NAME)` | +| `GIT_CLONE_COMMIT_COMMITER_EMAIL` | `$(GIT_CLONE_COMMIT_COMMITER_EMAIL)` | + +{{% /tab %}} +{{% tab "Xcode Cloud" %}} + +| 環境変数 | 値 | +| ----------------------- | ----------------------- | +| `DD_GIT_REPOSITORY_URL` | リポジトリ URL | +| `CI_WORKSPACE` | `$(CI_WORKSPACE)` | +| `CI_COMMIT` | `$(CI_COMMIT)` | +| `CI_BUILD_ID` | `$(CI_BUILD_ID)` | +| `CI_BUILD_NUMBER` | `$(CI_BUILD_NUMBER)` | +| `CI_WORKFLOW` | `$(CI_WORKFLOW)` | +| `CI_TAG` | `$(CI_TAG)` | +| `CI_BRANCH` | `$(CI_BRANCH)` | +| `CI_GIT_REF` | `$(CI_GIT_REF)` | + +{{% /tab %}} +{{< /tabs >}} + +## 手動テスト API + +Swift プロジェクトで XCTests を使用している場合、`DatadogSDKTesting`フレームワークが自動的にインスツルメントし、Datadog バックエンドに結果を送信します。XCTest を使用しない場合、代わりに Swift/Objective-C の手動テスト API を使用することができ、これもバックエンドにテスト結果を報告します。 + +この API は、*テストモジュール*、*テストスイート*、*テスト*の 3 つの概念に基づいています。 + +### テストモジュール + +テストモジュールは、テストを含むライブラリやバンドルの読み込みを表します。 + +テストモジュールを開始するには、`DDTestModule.start()` を呼び出して、テストするモジュールまたはバンドルの名前を渡します。 + +すべてのテストが終了したら、`module.end()` を呼び出し、これによりライブラリは残っているテスト結果をすべてバックエンドに送信します。 + +### テストスイート + +テストスイートは、共通の機能を共有するテストのセットで構成されます。これらのテストは、共通の初期化および終了を共有することができ、また、いくつかの変数を共有することができます。 + +`module.suiteStart()` を呼び出し、テストスイートの名前を渡すことでテストモジュール内にテストスイートを作成します。 + +スイートの中の関連するテストがすべて実行を終えたら `suite.end()` を呼び出します。 + +### テスト + +各テストはスイート内で実行され、`pass`、`fail`、`skip` のいずれかのステータスで終了する必要があります。テストは、オプションで属性やエラー情報などの追加情報を持つことができます。 + +`suite.testStart()` を呼び出し、テストの名前を渡すことで、スイート内のテストを作成します。テストが終了したら、定義済みのステータスのいずれかを設定する必要があります。 + +### API インターフェイス + +{{< code-block lang="swift" >}} +class DDTestModule { + // モジュールを開始します。 + // - パラメーター: + // - bundleName: テストするモジュールまたはバンドルの名前。 + // - startTime: オプション。モジュールが開始された時間。 + static func start(bundleName: String, startTime: Date? = nil) -> DDTestModule + // + // モジュールを終了します。 + // - パラメーター: + // - endTime: オプション。モジュールが終了した時間。 + func end(endTime: Date? = nil) + // テストモジュールにタグ/属性を追加します。タグはいくつでも追加可能です。 + // - パラメーター: + // - key: タグの名前。同じ名前のタグが既に存在する場合、 + // その値は新しい値で置き換えられます。 + // - value: タグの値。数値または文字列を指定することができます。 + func setTag(key: String, value: Any) + // + // このモジュールでスイートを開始します。 + // - パラメーター: + // - name: スイートの名前。 + // - startTime: オプション。スイートの開始時間。 + func suiteStart(name: String, startTime: Date? = nil) -> DDTestSuite +} + // +public class DDTestSuite : NSObject { + // テストスイートを終了します。 + // - パラメーター: + // - endTime: オプション。スイートが終了した時間。 + func end(endTime: Date? = nil) + // タグ/属性をテストスイートに追加します。タグはいくつでも追加することができます。 + // - パラメーター: + // - key: タグの名前。同じ名前のタグが既に存在する場合、 + // その値は新しい値で置き換えられます。 + // - value: タグの値。数値または文字列を指定することができます。 + func setTag(key: String, value: Any) + // + // このスイートのテストを開始します。 + // - パラメーター: + // - name: テストの名前。 + // - startTime: オプション。テストが開始された時間。 + func testStart(name: String, startTime: Date? = nil) -> DDTest +} + // +public class DDTest : NSObject { + // テストにタグ/属性を追加します。タグはいくつでも追加することができます。 + // - パラメーター: + // - key: タグの名前。同じ名前のタグが既に存在する場合、 + // その値は新しい値で置き換えられます。 + // - value: タグの値。数値または文字列を指定することができます。 + func setTag(key: String, value: Any) + // + // テストにエラー情報を追加します。1 つのテストが報告できるエラー情報は 1 つだけです。 + // - パラメーター: + // - type: 報告されるエラーのタイプ。 + // - message: エラーに関連するメッセージ。 + // - callstack: オプション。エラーに関連するコールスタック。 + func setErrorInfo(type: String, message: String, callstack: String? = nil) + // + // テストを終了します。 + // - パラメーター: + // - status: このテストについて報告されたステータス。 + // - endTime: オプション。テストが終了した時間。 + func end(status: DDTestStatus, endTime: Date? = nil) +} + // +// テストによって報告される可能性のあるステータス: +enum DDTestStatus { + // テストは合格しました。 + case pass + // + // テストは失敗しました。 + case fail + // + // テストはスキップされました。 + case skip +} +{{< /code-block >}} + +### コード例 + +次のコードは、API の簡単な使い方を表しています。 + +{{< code-block lang="swift" >}} +import DatadogSDKTesting +let module = DDTestModule.start(bundleName: "ManualModule") +let suite1 = module.suiteStart(name: "ManualSuite 1") +let test1 = suite1.testStart(name: "Test 1") +test1.setTag(key: "key", value: "value") +test1.end(status: .pass) +let test2 = suite1.testStart(name: "Test 2") +test2.SetErrorInfo(type: "Error Type", message: "Error message", callstack: "Optional callstack") +test2.end(test: test2, status: .fail) +suite1.end() +let suite2 = module.suiteStart(name: "ManualSuite 2") +.. +.. +module.end() +{{< /code-block >}} + +最後に必ず `module.end()` を呼び出し、すべてのテスト情報を Datadog に流すようにします。 + +## ベストプラクティス + +テストフレームワークと CI 表示を最大限に活用するために、以下のプラクティスに従ってください。 + +### ビルド時にシンボルファイルを生成する + +Xcode で `DWARF with dSYM File` (または `swift` でビルドする場合は `-Xswiftc -debug-info-format=dwarf`) を使用してコードをビルドします + +テストフレームワークは、クラッシュのシンボル化、テストソースの位置の報告、コードの所有者の報告など、いくつかの機能でシンボルファイルを使用します。デバッグシンボルがバイナリに埋め込まれている場合、シンボルファイルを自動的に生成しますが、読み込みに余分な時間がかかることがあります。 + +### macOS の UI テストのサンドボックスを無効化する + +一部の Xcode のバージョンでは、UI Test バンドルはデフォルトでサンドボックス付きでビルドされています。サンドボックスに付属する設定は、一部のシステムコマンドで `xcrun` を使ってテストフレームワークを実行することを妨げるので、それを無効にする必要があります。 + +UI Test ランナーバンドルに Entitlements を追加し、それらに `App Sandbox = NO` を追加してサンドボックスを無効にします。また、`.entitlement` ファイルを作成し、Signing Build Settings に追加することができます。このファイルには、以下の内容を含める必要があります。 + +{{< code-block lang="xml" >}} +com.apple.security.app-sandbox + +{{< /code-block >}} + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ja/continuous_integration/tests/#test-suite-level-visibility +[2]: https://app.datadoghq.com/organization-settings/api-keys +[3]: /ja/getting_started/site/ +[4]: /ja/continuous_integration/guides/rum_swift_integration +[5]: https://app.datadoghq.com/organization-settings/application-keys +[6]: https://opentelemetry.io/ +[7]: /ja/continuous_integration/intelligent_test_runner/ +[8]: /ja/getting_started/tagging/unified_service_tagging \ No newline at end of file diff --git a/content/ja/tests/swift_tests.md b/content/ja/tests/swift_tests.md new file mode 100644 index 0000000000000..0d09e03aa458f --- /dev/null +++ b/content/ja/tests/swift_tests.md @@ -0,0 +1,51 @@ +--- +aliases: +- /ja/continuous_integration/guides/rum_swift_integration +- /ja/continuous_integration/integrate_tests/swift_tests +- /ja/continuous_integration/tests/swift_tests +description: CI Visibility と RUM を使用して、Swift のテスト結果をブラウザセッションおよびセッションリプレイと連携させる方法をご紹介します。 +further_reading: +- link: /continuous_integration/tests + tag: ドキュメント + text: Test Visibility について +- link: /real_user_monitoring/ios + tag: ドキュメント + text: RUM iOS と tvOS のモニタリングについて +kind: ドキュメント +title: RUM による Swift テストのインスツルメント +--- + +{{< site-region region="gov" >}} +
選択したサイト ({{< region-param key="dd_site_name" >}}) では現在 CI Visibility は利用できません。
+{{< /site-region >}} + +## 概要 + +[Test Visibility][3] がすでに Swift に設定されていることを確認してください。 + +### 互換性 + +CI Visibility - RUM のインテグレーションは、以下のバージョンの `dd-sdk-swift-testing` と `dd-sdk-ios` で利用可能です。 + +* `dd-sdk-swift-testing` >= 2.0.0 +* `dd-sdk-ios` >= 1.10.0 + +## Swift テストとRUM の接続 + +UI テストに `dd-sdk-swift-testing` をリンクし、テスト対象のアプリケーションが[リアルユーザーモニタリング][1]を使用してインスツルメンテーションされている場合、テスト結果と生成された RUM ブラウザセッションおよびセッションリプレイは自動的にリンクされます。 + +Test Visibility のテスト詳細サイドパネルに、**RUM Sessions** タブが表示されます。 + +{{< img src="ci/ci-swift-rum-session-tab.png" alt="テスト詳細のブラウザセッションタブ" style="width:100%;">}} + +RUM セッションには、[RUM が通常収集する][2]データがすべて含まれているため、ユーザー名のエラーや予期せぬエラーなど、iOS テストで起こりうる問題をデバッグすることができます。 + +{{< img src="ci/ci-swift-rum-session-tab-errors.png" alt="テスト詳細のブラウザセッションタブエラー" style="width:100%;">}} + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ja/real_user_monitoring/ios/ +[2]: /ja/real_user_monitoring/ios/data_collected/ +[3]: /ja/continuous_integration/tests/swift/ \ No newline at end of file diff --git a/content/ja/tracing/other_telemetry/connect_logs_and_traces/python.md b/content/ja/tracing/other_telemetry/connect_logs_and_traces/python.md index 4ed9b93c67d01..981bca6797b39 100644 --- a/content/ja/tracing/other_telemetry/connect_logs_and_traces/python.md +++ b/content/ja/tracing/other_telemetry/connect_logs_and_traces/python.md @@ -20,7 +20,7 @@ further_reading: - link: /logs/guide/ease-troubleshooting-with-cross-product-correlation/ tag: ガイド text: クロスプロダクト相関で容易にトラブルシューティング。 -title: Python ログとトレースの接続 +title: Python ログとトレースの相関付け type: multi-code-lang --- @@ -28,14 +28,38 @@ type: multi-code-lang ### 標準ライブラリロギング -[トレース][1]とログを相関付けるには、ログレコードから必要な属性を含むようにログフォーマットを更新し、`ddtrace.patch(logging=True)` を呼び出します。 +[トレース][1]とログを相関付けるには、以下の手順を実行します。 + + 1. [自動インスツルメンテーションを有効にする](#step-1---activate-automatic-instrumentation). + 2. [ログレコードから必要な属性を含める](#step-2---include-required-attributes). + +#### ステップ 1 - 自動インスツルメンテーションを有効にする + +以下のいずれかのオプションを使用して、自動インスツルメンテーションを有効にします。 + +オプション 1: [ライブラリインジェクション][5]: + 1. アプリケーションの `deployment/manifest` ファイルで環境変数 `DD_LOGS_INJECTION=true` を設定します。 + 2. [ライブラリインジェクション][5]の手順に従って、トレーシングを設定します。 + +オプション 2: `ddtrace-run`: + 1. アプリケーションを実行している環境で環境変数 `DD_LOGS_INJECTION=true` を設定します。 + 2. **ddtrace** をアプリケーションにインポートします。 + 3. `ddtrace-run` でアプリケーションを実行します (例: `ddtrace-run python appname.py`)。 + +オプション 3: `patch`: + 1. **ddtrace** をアプリケーションにインポートします。 + 2. `ddtrace.patch(logging=True)` をアプリケーションコードの先頭に追加します。 + +#### ステップ 2 - 必要な属性を含める + +ログレコードから必要な属性を含むように、ログフォーマットを更新します。 + ログレコードの ``dd.env``、``dd.service``、``dd.version``、``dd.trace_id``、``dd.span_id`` 属性を、フォーマット文字列に含めます。 以下は、`logging.basicConfig` を使用して、ログ挿入の構成を行う例です。 ``` python -from ddtrace import patch; patch(logging=True) import logging from ddtrace import tracer @@ -53,6 +77,8 @@ def hello(): hello() ``` +ログインジェクションの詳細については、[ddtrace のドキュメント][6]をお読みください。 + ### 標準ライブラリロギングなし 標準ライブラリの `logging` モジュールを使用していない場合は、以下のコードスニペットを使用してトレーサー情報をログに挿入することができます。 @@ -61,7 +87,7 @@ hello() from ddtrace import tracer span = tracer.current_span() -correlation_ids = (span.trace_id, span.span_id) if span else (None, None) +correlation_ids = (str((1 << 64) - 1 & span.trace_id), span.span_id) if span else (None, None) ``` 以下の例では、ログ出力にトレーサーフィールドを追加するために、`structlog` 内で *processor* として関数を定義しています。 @@ -74,7 +100,7 @@ import structlog def tracer_injection(logger, log_method, event_dict): # 現在のトレーサーコンテキストから相関 ID を取得 span = tracer.current_span() - trace_id, span_id = (span.trace_id, span.span_id) if span else (None, None) + trace_id, span_id = (str((1 << 64) - 1 & span.trace_id), span.span_id) if span else (None, None) # structlog イベントの辞書に ID を追加 event_dict['dd.trace_id'] = str(trace_id or 0) @@ -107,7 +133,7 @@ log = structlog.get_logger() [Python ロギングのドキュメントを参照][2]して Python ログインテグレーションを適切に構成し、Python ログが自動的にパースされるようにしてください。 - +## その他の参考資料 {{< partial name="whats-next/whats-next.html" >}} @@ -115,3 +141,5 @@ log = structlog.get_logger() [2]: /ja/logs/log_collection/python/#configure-the-datadog-agent [3]: /ja/logs/log_configuration/processors/#trace-remapper [4]: /ja/tracing/troubleshooting/correlated-logs-not-showing-up-in-the-trace-id-panel/?tab=custom +[5]: /ja/tracing/trace_collection/library_injection_local/ +[6]: https://ddtrace.readthedocs.io/en/stable/advanced_usage.html#logs-injection \ No newline at end of file diff --git a/content/ja/tracing/trace_collection/_index.md b/content/ja/tracing/trace_collection/_index.md index fa531d8abf3de..621240b53ce51 100644 --- a/content/ja/tracing/trace_collection/_index.md +++ b/content/ja/tracing/trace_collection/_index.md @@ -15,7 +15,7 @@ further_reading: - link: tracing/trace_collection/compatibility tag: ドキュメント text: 互換性要件 -title: Datadog へのトレースの送信 +title: アプリケーションインスツルメンテーション --- ## 概要 @@ -87,4 +87,4 @@ Datadog APM を使い始めるには、以下の主要手順に従う必要が [7]: /ja/tracing/trace_collection/automatic_instrumentation/single-step-apm/ [8]: /ja/tracing/trace_collection/automatic_instrumentation/dd_libraries/ [9]: /ja/tracing/trace_collection/custom_instrumentation/dd_libraries/ -[10]: /ja/tracing/trace_collection/custom_instrumentation/otel_instrumentation/ +[10]: /ja/tracing/trace_collection/custom_instrumentation/otel_instrumentation/ \ No newline at end of file diff --git a/content/ja/tracing/trace_collection/custom_instrumentation/dd_libraries/_index.md b/content/ja/tracing/trace_collection/custom_instrumentation/dd_libraries/_index.md new file mode 100644 index 0000000000000..bb3ca6220a3b0 --- /dev/null +++ b/content/ja/tracing/trace_collection/custom_instrumentation/dd_libraries/_index.md @@ -0,0 +1,51 @@ +--- +algolia: + tags: + - APM カスタムインスツルメンテーション +aliases: +- /ja/tracing/setup/php/manual-installation +- /ja/agent/apm/php/manual-installation +- /ja/tracing/guide/distributed_tracing/ +- /ja/tracing/advanced/manual_instrumentation/ +- /ja/tracing/advanced/opentracing/ +- /ja/tracing/opentracing/ +- /ja/tracing/manual_instrumentation/ +- /ja/tracing/guide/adding_metadata_to_spans +- /ja/tracing/advanced/adding_metadata_to_spans/ +- /ja/tracing/custom_instrumentation +- /ja/tracing/setup_overview/custom_instrumentation/undefined +- /ja/tracing/setup_overview/custom_instrumentation/ +description: Datadog トレース内でインスツルメンテーションと可観測性をカスタマイズ。 +further_reading: +- link: tracing/guide/instrument_custom_method + text: カスタムメソッドをインスツルメントして、ビジネスロジックを詳細に可視化する +- link: tracing/connect_logs_and_traces + text: ログとトレースの接続 +- link: tracing/visualization/ + text: サービス、リソース、トレースの詳細 +- link: https://www.datadoghq.com/blog/opentelemetry-instrumentation/ + text: Datadog および OpenTelemetry のイニシアティブのイニシアティブについて +kind: ドキュメント +title: Datadog ライブラリを使ったカスタムインスツルメンテーション +type: multi-code-lang +--- + +カスタムインスツルメンテーションにより、Datadog へ送信するトレースをプログラムで作成、変更、削除できます。これは、自動インスツルメンテーションでキャプチャできない社内コードのトレースや、不要なスパンのトレースからの削除、そして希望するスパンタグの追加などスパンのより詳細な可視化とコンテキストの提供に役立ちます。 + +アプリケーションのインスツルメンテーション前に、Datadog の [APM 用語][2] を確認し、Datadog APM の基本理念をよく理解してください。 + +オープンスタンダードを利用してインスツルメンテーションを行う場合は、[OpenTracing によるインスツルメンテーション][3]、[OpenTelemetry によるインスツルメンテーション][4]をご参照ください。 + +{{< partial name="apm/apm-manual-instrumentation.html" >}} + + +
+ +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + + +[2]: /ja/tracing/glossary +[3]: /ja/tracing/trace_collection/opentracing/ +[4]: /ja/tracing/trace_collection/otel_instrumentation \ No newline at end of file diff --git a/content/ja/tracing/trace_collection/tracing_naming_convention/_index.md b/content/ja/tracing/trace_collection/tracing_naming_convention/_index.md index 8b48b3fbe8e68..9d172b0411f41 100644 --- a/content/ja/tracing/trace_collection/tracing_naming_convention/_index.md +++ b/content/ja/tracing/trace_collection/tracing_naming_convention/_index.md @@ -13,119 +13,69 @@ title: スパンタグのセマンティクス --- ## 概要 + [Datadog トレーシングライブラリ][1]は、様々なライブラリのインスツルメンテーションをすぐに利用できるようサポートしています。 これらのインスツルメンテーションは、分散システムにおける作業の論理的な単位を表すスパンを生成します。 -各スパンは[スパンタグ][2]で構成され、システムで発生している作業単位に関する追加情報を提供します。命名規則では、スパンイベントで使用できる名前と内容を記述しています。 +各スパンは[スパンタグ][2]を含み、システムで発生している作業単位に関する追加情報を提供します。命名規則では、スパンイベントで使用できる名前と内容を記述しています。 + +
すべてのスパンタグ、予約属性、命名規則の包括的なリストは、デフォルトの標準属性を参照してください。
## スパンタグの命名規則 -### コア -以下のスパンタグは、使用するインスツルメンテーションと実行する操作の種類を記述するための核となる概念です。 - -| **名前** | **型** | **説明** | -|-------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `language` | `string` | スパンを生成するために使用されるクライアント SDK の言語。`cpp`、`dotnet`、`go`、`jvm`、`javascript`、`php`、`python`、`ruby` のいずれかになります。 | -| `env` | `string` | 実行中のプロセスの `DD_ENV` 環境変数、またはユーザー定義の `env` の値。 | -| `version` | `string` | 実行中のプロセスの `DD_VERSION` 環境変数、またはユーザー定義の `version` の値。 | -| `span.kind` | `string` | スパンが扱う作業単位の種類を表す文字列。`server`、`client`、`producer`、`consumer`、`internal` のいずれかとなります。
詳細は [OpenTelemetry SpanKind ドキュメント][3]を参照してください。 | -| `component` | `string` | スパンを作成したライブラリ/インテグレーションの名前。 | - -### ネットワーク通信 -ネットワーク通信に対応する作業単位を記述するために、以下のスパンタグを使用することができます。 - -| **名前** | **型** | **説明** | -|---------------------------------|----------|---------------------------------------------------------------------------| -| `network.client.ip` | `string` | インバウンド接続を開始したクライアントの IP アドレス。 | -| `network.destination.ip` | `string` | アウトバウンド接続が行われる IP アドレス。 | -| `network.host.ip` | `string` | ローカルホストの IP アドレス。 | -| `network.client.port` | `number` | 接続を開始したクライアントのポート。 | -| `network.destination.port` | `number` | アウトバウンド接続のリモートポート番号。 | -| `network.client.name` | `string` | インバウンド接続を開始したクライアントのホスト名。 | -| `network.destination.name` | `string` | アウトバウンド接続が行われるリモートホスト名またはそれに類するもの。 | -| `network.host.name` | `string` | ローカルホスト名。 | -| `network.client.transport` | `string` | インバウンド接続に使用されるトランスポートプロトコル。 | -| `network.destination.transport` | `string` | アウトバウンド接続に使用されるトランスポートプロトコル。 | - -### HTTP リクエスト -HTTP クライアントとサーバーのスパンを記述するために、以下のスパンタグを使用することができます。 - -| **名前** | **説明** | -|---------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `http.status_code` | タイプ: `string`
HTTP 応答ステータスコード。 | -| `http.url` | タイプ: `string`
難読化されたクエリ文字列を含む、HTTP リクエストの URL。難読化の詳細については、[データセキュリティの構成][4]を参照してください。 | -| `http.version` | タイプ: `string`
リクエストに使用された HTTP のバージョン。 | -| `http.method` | タイプ: `string`
接続を開始したクライアントのポート。 | -| `http.route` | タイプ: `string`
一致したルート (パステンプレート)。
例: `/users/:userID` | -| `http.client_ip` | タイプ: `string`
すべてのプロキシの背後にある元のクライアントの IP アドレス (既知の場合)。`X-Forwarded-For` のようなヘッダーから発見される。 | -| `http.useragent` | タイプ: `string`
リクエストとともに受け取ったユーザーエージェントヘッダー。 | -| `http.request.content_length` | タイプ: `number`
リクエストペイロード本文のサイズ (バイト単位)。 | -| `http.response.content_length` | タイプ: `number`
レスポンスペイロード本文のサイズ (バイト単位)。 | -| `http.request.content_length_uncompressed` | タイプ: `number`
トランスポートデコード後の圧縮されていないリクエストペイロード本文のサイズ。 | -| `http.response.content_length_uncompressed` | タイプ: `number`
トランスポートデコード後の圧縮されていないレスポンスペイロード本文のサイズ。 | -| `http.request.headers.*` | タイプ: `string`
リクエストの HTTP ヘッダー。デフォルトでは何も収集されませんが、オプションで `DD_TRACE_HEADER_TAGS` を使って構成することができます。
ヘッダーの収集方法については、該当する[ライブラリの構成][5]を参照してください。 | -| `http.response.headers.*` | タイプ: `string`
レスポンスの HTTP ヘッダー。デフォルトでは何も収集されませんが、オプションで `DD_TRACE_HEADER_TAGS` を使って構成することができます。
ヘッダーの収集方法については、該当する[ライブラリの構成][5]を参照してください。 | - -### データベース - -データベースのスパンを記述するために、以下のスパンタグを使用することができます。 - -| **名前** | **型** | **説明** | -|------------------------|----------|--------------------------------------------------------------------------------------------------------------| -| `db.system` | `string` | データベース管理システム (使用している DBMS 製品) を表す識別子。 | -| `db.connection_string` | `string` | データベースへの接続に使用する接続文字列。 | -| `db.user` | `string` | データベースにアクセスしたユーザー名 | -| `db.instance` | `string` | 接続中のデータベースの名前。 | -| `db.statement` | `string` | 実行中のデータベースステートメント。 | -| `db.operation` | `string` | 実行中の操作の名前。
例: `SELECT`、`findAndModify`、`HMSET` | -| `db.sql.table` | `number` | データベース名 (該当する場合) を含む、操作の対象となる主テーブルの名前。 | -| `db.row_count` | `number` | クエリまたは操作の行数/結果数。 | - -特定のデータベース技術に関する追加の属性は、接頭辞 `db.` を使用します。 - -### メッセージキュー - -メッセージングシステムに対応するスパンを記述するために、以下のスパンタグを使用することができます。 - -| **名前** | **型** | **説明** | -|----------------------------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `messaging.system` | `string` | メッセージングシステムの識別子。 | -| `messaging.destination` | `string` | メッセージの宛先名。 | -| `messaging.destination_kind` | `string` | メッセージの宛先の種類。 | -| `messaging.protocol` | `string` | トランスポートプロトコルの名前。 | -| `messaging.protocol_version` | `string` | トランスポートプロトコルのバージョン。 | -| `messaging.url` | `string` | メッセージングシステムへの接続文字列。 | -| `messaging.message_id` | `string` | メッセージングシステムがメッセージの識別子として使用する値で、文字列として表される。 | -| `messaging.conversation_id` | `string` | メッセージが属する会話を識別する会話の ID で、文字列として表現される。 | -| `messaging.message_payload_size` | `number` | 圧縮されていないメッセージペイロードのサイズ (バイト数)。 | -| `messaging.operation` | `string` | 消費メッセージの種類を示す文字列。
例: `send` (プロデューサーに送るメッセージ)、`receive` (コンシューマーが受け取るメッセージ)、または `process` (以前に受け取ったメッセージをコンシューマーが処理する)。 | -| `messaging.consumer_id` | `string` | メッセージを受信するコンシューマーの識別子。 | - -特定のメッセージングシステムのための追加属性は、プレフィックス `messaging.` を使用します。 - -### リモートプロシージャコール - -RMI や gRPC などのリモートプロシージャコールに対応するスパンを記述するために、以下のスパンタグを使用することができます。 - -| **名前** | **型** | **説明** | -|---------------|----------|--------------------------------------| -| `rpc.system` | `string` | リモートシステムの識別子。 | -| `rpc.service` | `string` | 呼び出されるサービスの名前。 | -| `rpc.method` | `string` | 呼び出されるメソッドの名前。 | - -### エラー -スパンに関連するエラーを記述するために、以下のスパンタグを使用することができます。 - -| **名前** | **型** | **説明** | -|-----------------|----------|------------------------------------------------------------------| -| `error.type` | `string` | エラーのタイプまたは種類 (場合によってはコード)。 | -| `error.message` | `string` | イベントについて簡潔にわかりやすく説明する 1 行メッセージ。 | -| `error.stack` | `string` | スタックトレースまたはエラーに関する補足情報。 | + +システムで行われている作業を記述するために、さまざまなスパンタグがあります。例えば、以下のドメインを記述するスパンタグがあります。 + +- **Reserved**: すべてのスパンに常に存在する属性。 +- **Core**: 使用されるインスツルメンテーションと操作の種類。 +- **Network communications**: ネットワーク通信に対応した作業単位。 +- **HTTP requests**: HTTPクライアントとサーバーのスパン。 +- **Database**: データベースのスパン。 +- **Message queue**: メッセージングシステムのスパン。 +- **Remote procedure calls**: RMI や gRPC などのリモートプロシージャコールに対応するスパン。 +- **Errors**: スパンに関連するエラー。 + +詳しくは[デフォルト標準属性][6]を参照してください。 + +## スパンタグとスパン属性 + +スパンタグとスパン属性は似ていますが異なる概念です。 + +- [スパンタグ](#span-tags)は、スパン周辺のコンテキストです。 +- [スパン属性](#span-attributes)は、スパンの内容です。 + +### スパンタグ + +スパンタグは、スパン周辺のコンテキストです。例えば、以下のようなものがあります。 + +- **ホストタグ**: `hostname`、`availability-zone`、`cluster-name` +- **コンテナタグ**: `container_name`、`kube_deployment`、`pod_name` + +タグは通常、ホスト、コンテナ、サービスカタログから取得したタグなど、他のデータソースから補完されます。これらのタグは、コンテキストを記述するためにスパンに追加されます。例えば、タグは、スパンの出所であるホストやコンテナのプロパティや、スパンが発信されるサービスのプロパティを記述します。 + +Datadog でスパンタグを見つけるには、Trace サイドパネルの **Infrastructure** タブに移動します。 + +{{< img src="/tracing/attributes/span-tags.png" alt="Infrastructure タブのスパンタグ。" style="width:100%;" >}} + +### スパン属性 + +スパン属性は、スパンの内容です。例えば、以下のようなものがあります。 + +- `http.url` +- `http.status_code` +- `error.message` + +スパン属性をクエリするには、検索ボックスで `@` 文字の後に属性名を続けます。例えば、`@http.url` です。 + +Datadog でスパン属性を見つけるには、Trace サイドパネルの **Info** タブに移動します。 + +{{< img src="/tracing/attributes/span-attributes.png" alt="Info タブのスパン属性。" style="width:100%;" >}} ## その他の参考資料 {{< partial name="whats-next/whats-next.html" >}} [1]: /ja/tracing/setup_overview/ -[2]: /ja/tracing/visualization/#span-tags +[2]: /ja/glossary/#span-tag [3]: https://opentelemetry.io/docs/reference/specification/trace/api/#spankind [4]: /ja/tracing/setup_overview/configure_data_security/ -[5]: /ja/tracing/trace_collection/library_config/ \ No newline at end of file +[5]: /ja/tracing/trace_collection/library_config/ +[6]: /ja/standard-attributes/?product=apm \ No newline at end of file diff --git a/content/ja/tracing/trace_explorer/request_flow_map.md b/content/ja/tracing/trace_explorer/request_flow_map.md new file mode 100644 index 0000000000000..2d78960a426d0 --- /dev/null +++ b/content/ja/tracing/trace_explorer/request_flow_map.md @@ -0,0 +1,58 @@ +--- +aliases: +- /ja/tracing/trace_search_and_analytics/request_flow_map +description: トレース検索と分析 +further_reading: +- link: https://www.datadoghq.com/blog/apm-request-flow-map-datadog + tag: ブログ + text: リクエストフローマップについて +kind: documentation +title: リクエストフローマップ +--- + +{{< img src="tracing/live_search_and_analytics/request_flow_map/Overview.png" style="width:100%; background:none; border:none; box-shadow:none;" alt="リクエストフローマップ" >}} + +_リクエストフローマップ_は、Datadog APM の 2 つの重要な機能である[サービスマップ][1]と[ライブ探索][2]を組み合わせて、スタック内のリクエストパスを理解し、追跡するのに役立ちます。ノイズの多いサービスやチョークポイント、特定のエンドポイントへのリクエストで発生するデータベースコールの数などをすばやく特定することができます。 + +これらのフローマップを使用するために追加のコンフィギュレーションは不要で、フローマップはお客様の[取り込まれたスパン][3]から供給されます。ライブ (最後の 15 分) のトレースを任意のタグの組み合わせでスコープし、各サービス間のリクエストの流れを表すダイナミックなマップを生成します。マップは検索条件に基づいて自動的に生成され、変更があった場合はライブで再生成されます。 + +## リクエストフローマップの操作 + +- 2 つのサービスをつなぐエッジにカーソルを合わせると、クエリパラメータにマッチした 2 つのサービス間のリクエスト、エラー、レイテンシーのメトリクスが表示されます。 + +- 最もスループットの高い接続がハイライトされ、最も一般的なパスを示します。 + +- **Export** をクリックすると、現在のリクエストフローマップの PNG 画像が保存されます。これは、ライブのアーキテクチャーダイアグラムや、特定のユーザーフローに特化した図を作成するのに最適です。 + +{{< img src="tracing/live_search_and_analytics/request_flow_map/ServicePanel.png" style="width:100%; background:none; border:none; box-shadow:none;" alt="フローマップのサイドパネルにサービス情報が表示される" >}} + +- マップ上の任意のサービスをクリックすると、そのサービスの全体的な健全性とパフォーマンス情報 (スループット、レイテンシー、エラーレート、モニターの状態)、およびインフラストラクチャーとランタイムメトリクスが表示されます。 + +- マップは存在するサービスの数に基づいて自動で適切なレイアウトを選択します。**Cluster** または **Flow** をクリックすると、2 種類のレイアウトが表示されます。 + +- [RUM とトレースの接続][4]を行った場合、RUM アプリケーションがリクエストフローマップに表示されます。 + +{{< img src="tracing/live_search_and_analytics/request_flow_map/RUMService.mp4" alt="フローマップからの RUM サービスリンク" video=true style="width:100%;">}} + +アプリ内のリクエストフローマップ][5]を試してみましょう。まず始めに、単一のサービスやエンドポイントなどの簡単なクエリを作成します。 + +### 例 + +リクエストフローマップを使って、アプリケーションの動作を検証します。 + +- 特定の HTTP リクエストに対応する[リソース][6]を検索します。 + +- [シャドウデプロイ][7]やカスタムスパンタグとして設定された機能フラグを使用している場合、マップを使用してリクエスト間のレイテンシーを比較することができます。これは、潜在的なコード変更がデプロイされたバージョンのレイテンシーにどのような影響を与えるかを観察する際に役立つ、実稼働前の[デプロイメント追跡][9]を補完する機能です。 + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ja/tracing/services/services_map/ +[2]: /ja/tracing/trace_explorer/ +[3]: /ja/tracing/trace_pipeline/ingestion_controls +[4]: /ja/real_user_monitoring/platform/connect_rum_and_traces?tab=browserrum +[5]: https://app.datadoghq.com/apm/flow-map +[6]: /ja/tracing/glossary/#resources +[7]: /ja/tracing/services/deployment_tracking/#shadow-deploys +[9]: /ja/tracing/services/deployment_tracking/ \ No newline at end of file