Deprecated feature

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.
Configure el servidor de transacción para conectarse a Kafka y ZooKeeper
Ejecute el mandato set-kafka-server KafkaServers TopicPrefix listOfZooKeeper, donde
KafkaServers
Lista de servidores de Kafka, separados por una coma. Los ID de Kafka deben respetar el siguiente patrón hostname:port.
TopicPrefix
Prefijo del tema Kafka.
listOfZooKeeper
La lista de ZooKeepers (zookeeperId1, zookeeperId2,.., zookeeperIdn) debe estar separada por comas. Los ID de Zookeeper deben seguir el patrón: hostname:port
Por ejemplo,
set-kafka-server 9.110.182.165:9092,9.110.182.166:9092,9.110.182.167:9092 
testTopic 9.110.182.165:2181,9.110.182.166:2181,9.110.182.167:2181
Consulte los enlaces siguientes para obtener la sintaxis de parámetros utilizada por los diferentes tipos de servidor:
Configurar el servidor de tienda para conectarse a ZooKeeper
Por ejemplo,
set-kafka-server testTopic 9.110.182.165:2181,9.110.182.166:2181,9.110.182.167:2181 
Sugerencia, el prefijo de tema debe ser el mismo que el que ha creado en el servidor de transacción
Configurar el servidor de búsqueda para conectarse a ZooKeeper
Por ejemplo,
set-kafka-server testTopic 9.110.182.165:2181,9.110.182.166:2181,9.110.182.167:2181
Nota: El prefijo de tema debe ser el mismo que el que ha creado en el servidor de transacción.

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

Cuando el registro ampliado está habilitado, se crea un archivo que se denomina extended.log.0. Cuando extended.log.0 alcanza su tamaño máximo, se genera un nuevo archivo de extended.log.1. El número en el nombre del archivo se utiliza para distinguir los registros girados. Los registros se crean en los directorios siguientes:
  • /opt/WebSphere/AppServer/profiles/default/logs/**/extended.log.*
  • /opt/WebSphere/Liberty/usr/servers/default/logs/**/extended.log.*
Nota: HCL Commerce Version 9.1.10.0 or laterEl texto siguiente solo se aplica a la versión 9.1.10.0 y posteriores.
La función de inicio de sesión ampliada ha quedado en desuso y en su lugar se recomiendan los registros en formato JSON.
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.

  1. En su entorno de WebSphere Application Server de VM Quickstarter, cambie la modalidad de registro básico a la modalidad HPEL.
  2. 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, utilice logging messageFormat="json" y si desea la propiedad consolseFormat en JSON, utilice consoleFormat="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"}