Monitoreo de registros de OpenSearch con Registros de Amazon CloudWatch - Amazon OpenSearch Service

Monitoreo de registros de OpenSearch con Registros de Amazon CloudWatch

Amazon OpenSearch Service expone los siguientes registros de OpenSearch a través de Registros de Amazon CloudWatch:

Los registros lentos de particiones de búsqueda, los registros lentos de particiones de índice y los registros de errores son útiles para la resolución de problemas de rendimiento y estabilidad. Los registros de auditoría realizan un seguimiento de la actividad de los usuarios con fines de conformidad. Todos los registros están deshabilitados de forma predeterminada. Si están habilitados, se aplica el precio estándar de CloudWatch.

nota

Los registros de errores solo están disponibles para la versión 5.1 de OpenSearch y Elasticsearch y posteriores. Los registros lentos están disponibles en todas las versiones de OpenSearch y Elasticsearch.

Para los registros, OpenSearch utiliza Apache Log4j 2 y sus niveles de registro integrados (de menor a mayor gravedad) TRACE, DEBUG, INFO, WARN, ERROR y FATAL.

Si habilita registros de errores, OpenSearch Service publica líneas de registro de WARN, ERROR y FATAL en CloudWatch. OpenSearch Service también publica varias excepciones del nivel DEBUG, incluido lo siguiente:

  • org.opensearch.index.mapper.MapperParsingException

  • org.opensearch.index.query.QueryShardException

  • org.opensearch.action.search.SearchPhaseExecutionException

  • org.opensearch.common.util.concurrent.OpenSearchRejectedExecutionException

  • java.lang.IllegalArgumentException

Los registros de errores ayudan a solucionar problemas en muchas situaciones, entre las que se incluyen las siguientes:

  • Problemas de compilación de script Painless

  • Consultas no válidas

  • Problemas de indexación

  • Errores de instantáneas

  • Fallas de migración de la administración de estados de índice

    nota

    No todos los errores se registran en los registros de errores.

nota

OpenSearch Service no registra todos los errores que se producen.

Habilitación de la publicación de registros (consola)

La consola de OpenSearch Service es la manera más sencilla de habilitar la publicación de registros en CloudWatch.

Para habilitar la publicación de registros en CloudWatch (consola)
  1. Vaya a aws.amazon.com, luego elija Iniciar sesión y proporcione sus credenciales.

  2. En Análisis, seleccione Amazon OpenSearch Service.

  3. Seleccione el dominio que desea actualizar.

  4. En la pestaña Registros, seleccione un tipo de registro y luego elija Habilitar.

  5. Cree un grupo de registros de CloudWatch o elija uno existente.

    nota

    Si prevé habilitar varios registros, recomendamos publicar cada uno en su propio grupo de registros. Esta separación hace que los registros sean más fáciles de analizar.

  6. Seleccione una política de acceso que contenga los permisos adecuados o cree una política mediante el JSON que proporciona la consola:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:cw_log_group_name:*" } ] }

    Le recomendamos que agregue las claves de condición aws:SourceAccount y aws:SourceArn para protegerse contra la política problema del suplente confuso. La cuenta de origen es la propietaria del dominio y el ARN de origen es el ARN del dominio. Su dominio debe estar en el software de servicio R20211203 o posterior para agregar estas claves de condición.

    Por ejemplo, podría agregar el siguiente bloque de condición a la política:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
    importante

    Registros de CloudWatch admiten 10 políticas de recursos por región. Si planea habilitar los registros para varios dominios de OpenSearch Service, debe crear y reutilizar una política más amplia que incluya varios grupos de registros para evitar alcanzar este límite. Para obtener información sobre los pasos para actualizar la política, consulte Habilitación de la publicación de registros (AWS CLI).

  7. Seleccione Habilitar.

    El estado del dominio cambia de Activo a En proceso. El estado debe volver a Activo antes de que la publicación de registro esté habilitada. Este cambio suele tardar 30 minutos, pero puede tardar más en función de la configuración del dominio.

Si ha habilitado uno de los registros lentos de particiones, consulte Establecimiento de umbrales de registros lentos de particiones. Si habilitó registros de auditorías, consulte Paso 2: Activar los registros de auditoría en OpenSearch Dashboards. Si habilitó únicamente los registros de errores, no tiene que realizar ningún paso de configuración adicional.

Habilitación de la publicación de registros (AWS CLI)

Para poder habilitar la publicación de registros, necesita un grupo de registros de CloudWatch Logs. Si aún no lo tiene, puede crear uno mediante el siguiente comando:

aws logs create-log-group --log-group-name my-log-group

Introduzca el siguiente comando para encontrar el ARN del grupo de registros y, a continuación, anótelo:

aws logs describe-log-groups --log-group-name my-log-group

Ahora puede dar permisos a OpenSearch Service para escribir en el grupo de registros. Debe proporcionar el ARN del grupo de registros cerca del final del comando:

aws logs put-resource-policy \ --policy-name my-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents","logs:CreateLogStream"],"Resource": "cw_log_group_arn:*"}]}'
importante

Registros de CloudWatch admiten 10 políticas de recursos por región. Si planea habilitar registros lentos de partición para varios dominios de OpenSearch Service, debe crear y reutilizar una política más amplia que incluya varios grupos de registros para evitar alcanzar este límite.

Si tiene que revisar esta política más adelante, utilice el comando aws logs describe-resource-policies. Para actualizar la política, ejecute el mismo comando aws logs put-resource-policy con un nuevo documento de política.

Finalmente, puede utilizar la opción --log-publishing-options para habilitar la publicación. La sintaxis de la opción es la misma para los comandos create-domain y update-domain-config.

Parámetro Valores válidos
--log-publishing-options SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
AUDIT_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
nota

Si prevé habilitar varios registros, recomendamos publicar cada uno en su propio grupo de registros. Esta separación hace que los registros sean más fáciles de analizar.

Ejemplo

En el siguiente ejemplo se habilita la publicación de los registros lentos de particiones de búsqueda e índice para el dominio especificado:

aws opensearch update-domain-config \ --domain-name my-domain \ --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

Para deshabilitar la publicación en CloudWatch, ejecute el mismo comando con Enabled=false.

Si ha habilitado uno de los registros lentos de particiones, consulte Establecimiento de umbrales de registros lentos de particiones. Si habilitó registros de auditorías, consulte Paso 2: Activar los registros de auditoría en OpenSearch Dashboards. Si habilitó únicamente los registros de errores, no tiene que realizar ningún paso de configuración adicional.

Habilitación de la publicación de registros (SDK de AWS)

Para habilitar la publicación de registros, primero debe crear un grupo de registros de CloudWatch, obtener su ARN y otorgar permisos a OpenSearch Service para escribir en ella. Las operaciones pertinentes se documentan en la Referencia de la API de Amazon CloudWatch Logs:

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

Puede obtener acceso a estas operaciones mediante los SDK de AWS.

Los AWS SDK (excepto los de Android e iOS SDK) admiten todas las operaciones definidas en la Referencia de la API de Amazon OpenSearch Service, incluida la opción --log-publishing-options para CreateDomain y UpdateDomainConfig.

Si ha habilitado uno de los registros lentos de particiones, consulte Establecimiento de umbrales de registros lentos de particiones. Si habilitó únicamente los registros de errores, no tiene que realizar ningún paso de configuración adicional.

Habilitar publicación de registros (CloudFormation)

En este ejemplo, se utiliza CloudFormation para crear un grupo de registros llamado opensearch-logs, se asignan los permisos adecuados y, a continuación, se crea un dominio con la publicación de registros habilitada para registros de aplicaciones, registros lentos de particiones de búsqueda y registros lentos de índice.

Para poder habilitar la publicación de registros, hay que crear un grupo de registros de CloudWatch:

Resources: OpenSearchLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: opensearch-logs Outputs: Arn: Value: 'Fn::GetAtt': - OpenSearchLogGroup - Arn

La plantilla genera el ARN del grupo de registros. En este caso, el ARN es arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs.

Mediante el ARN, cree una política de recursos que dé permisos a OpenSearch Service para escribir en el grupo de registros:

Resources: OpenSearchLogPolicy: Type: AWS::Logs::ResourcePolicy Properties: PolicyName: my-policy PolicyDocument: "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Sid\": \"\", \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"es.amazonaws.com\"}, \"Action\":[ \"logs:PutLogEvents\",\"logs:CreateLogStream\"],\"Resource\": \"arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs:*\"}]}"

Por último, cree la siguiente pila de CloudFormation, que genera un dominio de OpenSearch Service con publicación de registros. La política de acceso permite al usuario de la Cuenta de AWS realizar todas las solicitudes HTTP al dominio.

Resources: OpenSearchServiceDomain: Type: "AWS::OpenSearchService::Domain" Properties: DomainName: my-domain EngineVersion: "OpenSearch_1.0" ClusterConfig: InstanceCount: 2 InstanceType: "r6g.xlarge.search" DedicatedMasterEnabled: true DedicatedMasterCount: 3 DedicatedMasterType: "r6g.xlarge.search" EBSOptions: EBSEnabled: true VolumeSize: 10 VolumeType: "gp2" AccessPolicies: Version: "2012-10-17" Statement: Effect: "Allow" Principal: AWS: "arn:aws:iam::123456789012:user/es-user" Action: "es:*" Resource: "arn:aws:es:us-east-1:123456789012:domain/my-domain/*" LogPublishingOptions: ES_APPLICATION_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true SEARCH_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true INDEX_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true

Para obtener información detallada sobre la sintaxis, consulte las opciones de publicación de registros en la Guía del usuario de CloudFormation.

Establecimiento de umbrales de registros lentos de solicitudes de búsqueda

Los registros lentos de solicitudes de búsqueda están disponibles para su búsqueda en los dominios de OpenSearch Service que se ejecutan en la versión 2.13 y versiones posteriores. Los umbrales de registros lentos de solicitudes de búsqueda se configuran para el tiempo total de procesamiento de las solicitudes. Esto es diferente de los registros lentos de solicitudes de particiones, que se configuran para el tiempo individual de procesamiento de las particiones.

Puede especificar los registros lentos de solicitudes de búsqueda con la configuración del clúster. Esto difiere de los registros lentos de particiones, que se habilitan con la configuración del índice. Por ejemplo, puede especificar la siguiente configuración a través de la API de REST de OpenSearch:

PUT domain-endpoint/_cluster/settings { "transient": { "cluster.search.request.slowlog.threshold.warn": "5s", "cluster.search.request.slowlog.threshold.info": "2s" } }

Establecimiento de umbrales de registros lentos de particiones

OpenSearch deshabilita los registros lentos de particiones de forma predeterminada. Después de habilitar la publicación de registros lentos de particiones en CloudWatch, aún necesita especificar los umbrales de registro para cada índice de OpenSearch. Estos umbrales definen exactamente lo que se debe registrar y el nivel de registro.

Por ejemplo, puede especificar esta configuración a través de la API de REST de OpenSearch:

PUT domain-endpoint/index/_settings { "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s" }

Prueba de registros lentos

Para probar que los registros lentos de particiones y solicitudes de búsqueda se publiquen correctamente, considere la posibilidad de empezar con valores muy bajos para verificar que los registros aparezcan en CloudWatch y, a continuación, aumente los umbrales a niveles más útiles.

Si los registros no aparecen, verifique lo siguiente:

  • ¿Existe el grupo de registros de CloudWatch? Verifique la consola de CloudWatch.

  • ¿OpenSearch Service tiene permisos para escribir en el grupo de registros? Verifique la consola de OpenSearch Service.

  • ¿El dominio de OpenSearch Service está configurado para publicar en el grupo de registros? Verifique la consola de OpenSearch Service, utilice la opción AWS CLI de describe-domain-config o llame a DescribeDomainConfig mediante uno de los SDK.

  • ¿Los umbrales de registro de OpenSearch son tan bajos que las solicitudes los superan?

    Para revisar los umbrales de registros lentos de solicitudes de búsqueda para un dominio, use el siguiente comando:

    GET domain-endpoint/_cluster/settings?flat_settings

    Para revisar los umbrales de registros lentos de particiones, use el siguiente comando:

    GET domain-endpoint/index/_settings?pretty

Si desea deshabilitar los registros lentos de un índice, devuelva los umbrales que ha cambiado a sus valores predeterminados de -1.

Deshabilitar la publicación en CloudWatch mediante la consola de OpenSearch Service o AWS CLI no impide la generación de registros por parte de OpenSearch; solo se detiene la publicación de esos registros. Asegúrese de verificar la configuración de su índice si ya no necesita registros lentos de particiones, y la configuración de su dominio si ya no necesita registros lentos de solicitudes de búsqueda.

Visualización de registros

La visualización de la aplicación y de los registros lentos en CloudWatch es exactamente igual que la visualización de cualquier otro registro de CloudWatch. Para más información, consulte View Log Data en la Guía del usuario de Registros de Amazon CloudWatch.

Aquí tiene algunas consideraciones para visualizar los registros:

  • OpenSearch Service publica solo los primeros 255 000 caracteres de cada línea en CloudWatch. El contenido restante está truncado. Para los registros de auditoría, son 10 000 caracteres por mensaje.

  • En CloudWatch, los nombres del flujo de registro tienen los sufijos -index-slow-logs, -search-slow-logs, -application-logs y -audit-logs para ayudar a identificar su contenido.