![Deprecated feature](../../base/images/deprecated.png)
Habilitar el ID de rastreo global
Puede utilizar un ID de rastreo global así como campos personalizados en sus archivos de registro. El ID global hace que la determinación de problemas sea fácil y puede utilizarlo con todos los servidores, incluido Liberty y el WebSphere Application Server.
HCL Commerce El servidor utiliza una arquitectura de micro-servicio modernizada, que incluye el servidor de transacción, el servidor de búsqueda, el servidor de tienda, el servidor de personalización y el servidor de utilidad. Este diseño proporciona numerosos beneficios, entre ellos un entorno de desarrollo independiente, un sofisticado ciclo de compilación y despliegue, una distribución más razonable del volumen de acceso y una clara separación para la personalización, entre otras cosas. Sin embargo, esto aumenta la complejidad de la determinación de los problemas. Los servidores están separados y necesitan la invocación de un servicio para la interacción. Un gran volumen de solicitudes pasa a través de los servidores, y puede ser difícil obtener un panorama completo de qué servidores participan en la resolución de una solicitud determinada. La búsqueda de la causa raíz de un problema en un sistema distribuido puede ser difícil mediante un sistema de registro que esté diseñado para una arquitectura monolítica.
HCL Commerce La versión 9.0.1.3 introduce un ID de rastreo global perfilado que mejora la determinación del problema. Además de utilizar el ID de rastreo, puede añadir campos personalizados en el archivo de registro. Puede establecer un tamaño máximo (en megabytes) para cada archivo de rastreo, y establecer un número máximo de archivos de rastreo en WebSphere Application Server y Liberty. Estas mejoras permiten integrar los archivos de registro de los diferentes canales. Al rastrear el ID de rastreo global o los campos personalizados, se puede encontrar la causa raíz de los problemas mucho más rápidamente.
Antes de empezar
- Instalar el servidor de Kafka y ZooKeeper
- Consultar la guía oficial de Kafka y ZooKeeper
- Conectarse a Kafka y ZooKeeper
- Podemos utilizar los mandatos de motor de ejecución predeterminados para configurar el valor Kafka y ZooKeeper en el servidor de transacción, de búsqueda y de tienda.
Por qué y cuándo se efectúa esta tarea
Hay dos formas de configurar el ID de rastreo global: mediante la API de REST predeterminada o la actualización de las configuraciones de JVM.
Procedimiento
-
Configure el ID de rastreo global a través de la API de REST predeterminada.
Puede configurar el ID de rastreo global en entornos de ejecución mediante la API de REST predeterminada. Para obtener más información, consulte Referencia de API de REST del registro ampliado. La API de REST solo se puede ejecutar por el usuario SPI.
Para activar el ID, llame a la API de recursos de registro ampliado para enviar el mensaje a Kafka y difundirlo a todos los servidores. El método es PUT y la autenticación básica para el ID de
spiuser
y la contraseña correspondiente debe incluirse en la cabecera.PUT https://transactionServerHost:transactionServerPort/wcs/resources/extendedlogger/asyncconfig?enableFlag=true®istrationFlag=true&customFields=XEL_example
Donde los parámetros de la API de REST son:- enableFlag
- Se utiliza para habilitar o inhabilitar el registro ampliado. El valor true habilitará el registro, mientras que false lo inhabilitará.
- registrationFlag
- Se utiliza para registrar o anular el registro de los campos personalizados. El valor true significa registrar, mientras que false se utiliza para anular el registro. Cuando registrationFlag es false y customFields no se utiliza, se anula el registro de todos los campos personalizados.
- customFields
- Se utiliza para registrar los campos personalizados añadidos al registro ampliado. Este parámetro debe empezar con "XEL_,". Si excluye este prefijo, no se imprimirá ninguna información personalizada en el registro ampliado. Si necesita añadir muchos campos, sepárelos con comas. Cuando se inicia una solicitud, se añaden los campos personalizados en la cabecera, y más tarde, los campos personalizados se imprimen en el registro ampliado.
- containerNames
- Se utiliza para establecer los servidores correspondientes con el fin de consumir el mensaje. Si este valor no se establece en el mensaje, todos los servidores responderán a la acción. Si se establece, solo los contenedores correspondientes responderán y entrarán en vigor. El valor equivale a los nombres de host del contenedor, separados por comas.
Nota: Este método actualiza la memoria de trabajo para los contenedores del servidor, pero no cambia las imágenes del Docker para los servidores. Por lo tanto, estas configuraciones no son persistentes; se perderán después de reiniciar los servidores. -
Haga que el ID de rastreo global sea persistente a través de las configuraciones de JVM.
Puede activar y configurar el rastreo global gracias a dos parámetros de JVM:
- global.tracing.enabled
- Se utiliza para habilitar o inhabilitar el registro ampliado. El valor true se utiliza para habilitar el registro ampliado, mientras que false lo inhabilita.
- global.tracing.custom.fields
- Se utiliza para registrar los campos personalizados. Si es necesario añadir muchos campos, sepárelos con comas.
Al configurar la lógica de Docker de la aplicación, puede asegurarse de que estos parámetros se establezcan automáticamente durante el inicio de Docker. Este enfoque requiere que se vuelvan a crear las imágenes de Docker del servidor para resolver el requisito de configuración específico. Para obtener una guía de aprendizaje sobre la personalización de la imagen de Docker predeterminada basada en sus requisitos específicos, Guía de aprendizaje: Personalización de la lógica de inicio de Docker.
El mandato Run Engine set-system-property se puede utilizar para establecer los parámetros de JVM. Consulte los siguientes enlaces para ver los detalles del mandato en diferentes servidores:
Resultados
- /opt/WebSphere/AppServer/profiles/default/logs/**/extended.log.*
- /opt/WebSphere/Liberty/usr/servers/default/logs/**/extended.log.*
![HCL Commerce Version 9.1.10.0 or later](../../base/images/91100plus.png)
- Habilitar el registro WebSphere Application Server con salida JSON
-
Si el WebSphere Application Server tradicional está configurado para el modo HPEL, los datos de registro y rastreo se generan en formato binario en lugar de texto sin formato. Mediante HPEL LogViewer, los datos de registro se pueden exportar continuamente en formato JSON y visualizarse en un panel de Kibana.
Los registros de WebSphere Application Server se generan en formato de texto sin formato de forma predeterminada, lo que se conoce como registro de modalidad básica. Para obtener funciones de registro y rastreo mejoradas, actualice la modalidad de registro a HPEL (Registro extensible de alto rendimiento).
HPEL LogViewer es una herramienta de línea de comandos WebSphere Application Server para el uso de datos de registro HPEL y repositorios de datos de rastreo. El filtrado y el formato de las funciones de la herramienta facilitan la identificación del material clave en los repositorios de datos.
- En su entorno de WebSphere Application Server de VM Quickstarter, cambie la modalidad de registro básico a la modalidad HPEL.
- Ejecute el siguiente comando LogViewer, que envía los datos de registro y rastreo al archivo de registro especificado en formato JSON y lo supervisa continuamente.
<WAS_ROOT>/bin/logViewer.sh -outLog <logviewer-output-log-file> -format json -resumable -resume -monitor &
- Habilitar el registro de Liberty WebSphere Application Server con salida JSON
-
Cuando el archivo WebSphere Application Server Liberty
messages.log
se genera en formato JSON, el resultado se puede visualizar en un panel de Kibana.La propiedad de registro messageFormat de un servidor Liberty controla el formato de salida del archivo messages.log. De forma predeterminada, la propiedad messageFormat se establece en básica, lo que da como resultado una salida de texto sin formato. Cambiar el valor de messageFormat a json permite que el resultado aparezca en el panel de Kibana.
En el archivo
server.xml
del servidor Liberty, si desea la propiedad de registro messageFormat en JSON, utilicelogging messageFormat="json"
y si desea la propiedad consolseFormat en JSON, utiliceconsoleFormat="json"
para indicar qué orígenes incluir en la salida.Si desea configurar el CRS, vaya al directorio workspace_dir\Liberty\servers\crsServer\configDropins\overrides siguiente . Edite el archivo de configuración personalizado server.xml. Si el archivo no existe, créelo.
configDropins/overrides/server.xml <logging messageFormat="json" consoleFormat="json" traceSpecification="com.ibm.commerce.component.*=all"> </logging>
La función ExtendedLogging y GlobalTracingID se puede habilitar sin Kafka habilitando el registro JSON proporcionado por WebSphere Liberty y WebSphere Application Server. Cuando habilite ambas opciones de registro, obtendrá rastreos comparables como se muestra a continuación;-
En la aplicación CRS
{"type":"liberty_message","host":"LP1-AP-51879416.PROD.HCLPNP.COM","ibm_userDir":"W:\/IBM\/WebSphere\/Liberty\/usr\/","ibm_serverName":"crsServer","message":"Cannot find class impl with specified xpath: ComponentIntegrationServices\/Marketing\/@serviceImpl, will use default one instead.","ibm_threadId":"00000035","ibm_datetime":"2022-02-01T20:23:26.708+0530","module":"com.ibm.commerce.component.util.service.ComponentMarketingServiceFactory","loglevel":"WARNING","ibm_methodName":"initialize() executionContext:","ibm_className":"com.ibm.commerce.component.util.service.ComponentMarketingServiceFactory","ibm_sequence":"1643727206708_00000000000F2","ext_xRequestId":"ADHfu68Bvcs1kiA7","ext_thread":"Default Executor-thread-4"}
{"type":"liberty_message","host":"LP1-AP-51879416.PROD.HCLPNP.COM","ibm_userDir":"W:\/IBM\/WebSphere\/Liberty\/usr\/","ibm_serverName":"crsServer","message":"Configured name binding, com.ibm.commerce.foundation.server.services.search.contextpath, is not defined in server","ibm_threadId":"00000035","ibm_datetime":"2022-02-01T20:23:27.360+0530","module":"com.ibm.commerce.component.util.BackendServersConfigurationUtil","loglevel":"WARNING","ibm_methodName":"getComponentConfigThroughJNDI(String componentId, String configGroup, String propertyName, String defaultValue) executionContext:","ibm_className":"com.ibm.commerce.component.util.BackendServersConfigurationUtil","ibm_sequence":"1643727207360_00000000000F3","ext_xRequestId":"ADHfu68Bvcs1kiA7","ext_thread":"Default Executor-thread-4"}
- En la aplicación TS
{"type":"was_message","host":"LP1-AP-51879416.PROD.HCLPNP.COM","ibm_cellName":"localhost","ibm_nodeName":"localhost","ibm_serverName":"server1","ibm_sequence":"1643727200393_0000000000C68","message":"CMN1501E: User -1002 does not have the authority to perform action \"AjaxAccountAddressForm\" on resource \"com.ibm.commerce.command.HttpForwardViewCommandImpl\" for command \"null\".","ibm_datetime":"2022-02-01T20:23:20.393+0530","ibm_methodName":"isAllowed","ibm_className":"AccManager","ibm_threadId":"000001bc","module":"com.ibm.websphere.commerce.log.CommerceSrvr","loglevel":"SEVERE","ext_appName":"WC","ext_xRequestId":"ADHfu68Bvcs1kiA7"}
-