No se pudo crear la sesión de registro

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Síntoma

El usuario no puede crear una sesión de registro en la IU de Edge.

Mensaje de error

Recibirás un mensaje de error en la IU de Edge como se muestra a continuación:

Error creating trace session for API proxy <api proxy name>, revision <revision number>, environment <environment name>.
Failed to create DebugSession <session number> 

A continuación, se muestra la captura de pantalla de un ejemplo de mensaje de error observado en la IU de Edge:

Causas posibles

A continuación, se indican algunas de las posibles causas de este error:

Causa Descripción Instrucciones de solución de problemas aplicables a
Problema de conectividad de red Falla de comunicación entre el servidor de administración y el procesador de mensajes debido a problemas de conectividad de red o reglas de firewall. Usuarios de la nube privada perimetral
No se cargó el entorno en Message Processor Debido a un error, no se cargó el entorno específico (en el que intentas habilitar el seguimiento) en Message Processor.
Entradas del procesador de mensajes inactivos El Servidor de administración hace referencia a procesadores de mensajes inexistentes (inactivos).
No se puede acceder al procesador de mensajes Se detuvo el procesador de mensajes o no se puede acceder a él.
Problema de alto uso de recursos Los procesadores de mensajes están experimentando un alto uso de recursos (CPU, memoria o carga).
El proxy de API no se implementó en uno o más Message Processor Es posible que el proxy de API no se implemente en uno o más Message Processor debido a que falta la notificación de eventos durante la implementación.
Problema con la IU de Edge La IU de Edge no puede crear una sesión de registro debido a un error.

Pasos comunes de diagnóstico

  1. Ejecuta esta API de Management:

    curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>
    
  2. Si ves algún error, anótalo. Ve a Problema de conectividad de red.

  3. Si obtienes una respuesta correcta, eso indica que la sesión de seguimiento se puede crear a través de la API de Management. Sin embargo, podría haber un posible problema con la IU de Edge, por lo que no se puede crear una sesión de registro en la IU. Ve a Problema con la IU de Edge.

Causa: Problema de conectividad de red

Diagnóstico

  1. Verifica el registro /opt/apigee/var/log/edge-management-server/logs/system.log del servidor de administración y observa si hay algún error durante la creación de la sesión de seguimiento/depuración.

    Error de muestra del registro del servidor de administración

    2018-02-08 09:08:21,310 org:myorg env:uat  qtp1073741635-1074 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : createDebugSession : Unable to connect to the server with UUID cedeabd2-e4d1-40bb-8f18-d6afc8835e5b
    org.apache.http.conn.HttpHostConnectException: Connect to 10.84.75.92:8082 [/10.84.75.92] failed: Connection refused
        at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:140) ~[httpclient-4.3.5.jar:4.3.5]
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) ~[httpclient-4.3.5.jar:4.3.5]
        at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) ~[httpclient-4.3.5.jar:4.3.5]
    ...<snipped>
    Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_65]
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_65]
    ...<snipped>
    
  2. El error de muestra anterior indica que se muestran errores "Connection denied" cuando el servidor de administración intenta conectarse con Message Processor en el puerto 8082. Por lo tanto, el servidor de administración no puede crear la sesión de seguimiento.

  3. Si no ves ningún error relacionado con la conectividad de red o un error similar al que se muestra en el ejemplo anterior, dirígete a Entorno no cargado en el procesador de mensajes.

  4. Si observas errores relacionados con la conectividad de red o uno similar al que se muestra en el ejemplo anterior, sigue los pasos que se indican a continuación.

  5. Prueba la conectividad del servidor de administración al procesador de mensajes en el puerto 8082 siguiendo estos pasos:

    1. Si Telnet está disponible, utilízalo:

      telnet <MessageProcessor_IP> 8082
      
    2. Si Telnet no está disponible, úsalo para verificar la conectividad de la siguiente manera:

      nc -vz <MessageProcessor_IP> 8082
      
    3. Si obtienes la respuesta “Connection ReArtículo”, haz lo siguiente: o “Se agotó el tiempo de espera de la conexión”, y continúa con el paso siguiente.

  6. Accede a cada uno de los Message Processor con la dirección IP correspondiente que mostró el error y realiza los siguientes pasos:

    1. Verifica si el Message Processor está escuchando en el puerto 8082:

      netstat -an | grep LISTEN | grep 8082
      
    2. Si el Message Processor está escuchando en el puerto 8082, continúa con el paso 7.

    3. Si el Message Processor no está escuchando en el puerto 8082, reinícialo con este comando:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    4. Espera hasta que Message Processor haya comenzado por completo con este comando:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
      
    5. Una vez que el Message Processor esté activo, vuelve a verificar si está escuchando el puerto 8082.

    6. Si el Message Processor está escuchando en el puerto 8082, continúa con el paso 7.

  7. Verifica si ahora puedes iniciar la sesión de registro en la IU. Si ya no se observa el problema, omite los siguientes pasos.

  8. Si el procesador de mensajes se está ejecutando y escucha en el puerto 8082, pero aún no puedes conectarte desde otros servidores, como el servidor de administración, es probable que haya un firewall que esté bloqueando las conexiones externas.

  9. Usa el comando adecuado para verificar las reglas de firewall. Por ejemplo, puedes ejecutar el comando iptables para ver una lista de todas las reglas de firewall definidas en tu sistema:

    iptables -L -n
    
  10. Si no hay reglas de firewall configuradas para el puerto 8082, continúa con el Problema de uso de recursos alto.

  11. Si hay reglas de firewall configuradas en el puerto 8082, ve a la sección Resolución que aparece más abajo.

Solución

  1. Trabaja con tu administrador de red para permitir el tráfico entrante/saliente en el puerto 8082 de los servidores externos.

Si el problema persiste, consulta Se debe recopilar información de diagnóstico.

Causa: El entorno no se cargó en el procesador de mensajes.

Diagnóstico

  1. Revisa los registros del servidor de administración /opt/apigee/var/log/edge-management-server/logs/system.log y observa si hay algún error durante la creación de la sesión de seguimiento/depuración.
  2. Es posible que veas un mensaje de error similar a "no hay respuestas válidas de MP(s)" durante la creación de la sesión de seguimiento/depuración, como se muestra a continuación:

    2018-01-30 08:28:09,721 org:mynonprod env:uat  qtp2007599722-712162 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : no valid responses from MP(s), throwing error
    2018-01-30 08:28:09,723 org:mynonprod env:uat  qtp2007599722-712162 ERROR REST - CustomJAXRSInvoker.performInvocation() : CustomJAXRSInvoker.performInvocation : Method com.apigee.distribution.DebugSessionAPI.createDebugSession threw an exception.
    2018-01-30 08:28:09,724 org:mynonprod env:uat  qtp2007599722-712162 ERROR REST - ExceptionMapper.toResponse() : Error occurred : Failed to create DebugSession 1517297564678
    2018-01-30 08:28:09,724 org:mynonprod env:uat  qtp2007599722-712162 ERROR REST - ExceptionMapper.toResponse() : Returning error response : ErrorResponse{errorCode = distribution.CreateDebugSessionFailed, errorMessage = Failed to create DebugSession 1517297564678}
    

    Este error indica que los procesadores de mensajes no responden al servidor de administración por algún motivo.

  3. Si no ve un error similar al que se muestra en el ejemplo anterior, vaya a Entradas del procesador de mensajes inactivos.

  4. Si observas un error similar al que se muestra en el ejemplo anterior, sigue estos pasos.

  5. Una de las causas más probables de este error es que el entorno en el que intentas crear la sesión de registro no está cargado en Message Processor.

  6. Accede a cada uno de los Message Processor y verifica si el entorno específico en el que intentas crear la sesión de seguimiento está cargado en el Message Processor con el siguiente comando:

    curl -s http://localhost:8082/v1/runtime/organizations/<org-name>/environments
    

    Resultado de ejemplo:

    En el resultado del comando anterior, verá la lista de entornos que pertenecen a la organización específica que están cargados en Message Processor. Por ejemplo, si los entornos preprod y test se cargan en el Message Processor, verás el resultado que se muestra a continuación:

    [ "preproducción", "prueba" ]

  7. Si el entorno específico, por ejemplo, “dev”, en el que intentas crear una sesión de registro, aparece como parte del comando anterior, entonces ve a Entradas del procesador de mensajes inactivos.

  8. Si el entorno específico, por ejemplo, "dev",, no aparece como parte del comando anterior, revisa /opt/apigee/var/log/edge-message-processor/logs/system.log y /opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log en Message Processor para detectar si hay errores durante la carga de los entornos.

  9. Puede haber muchos errores diferentes que podrían conducir a la falla de la carga de un entorno en el Message Processor. La resolución depende del error que se haya producido.

Solución

Es posible que el entorno no se cargue en Message Processor por varios motivos. En esta sección, se ilustran algunos de los posibles motivos que pueden generar este problema y se explica cómo resolverlo.

  1. Si ves uno de los siguientes errores en el registro de Message Processor, el problema se debe a un problema con los certificados o las claves que se agregaron al almacén de claves o el almacén de confianza especificados en el entorno especificado.

    Error #1: java.security.KeyStoreException: No se puede reemplazar el certificado propio

    2018-01-30 12:04:38,248 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator 
    com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mycert in key store : mytruststore in environment : test
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.entities.AbstractConfigurator.propagateEvent(AbstractConfigurator.java:85) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.messaging.runtime.Environment.handleUpdate(Environment.java:238) [message-processor-1.0.0.jar:na] 
     
    Caused by: java.security.KeyStoreException: Cannot overwrite own certificate 
    at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:355) ~[sunjce_provider.jar:1.8.0_151] 
    at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_151] 
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na]
    ... 20 common frames omitted
    2018-01-30 12:04:38,250 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
    

    Error #2: java.security.KeyStoreException: No se puede reemplazar la clave secreta.

    2017-11-01 03:28:47,560 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator 
    com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mstore in key store : myTruststore in environment : dev 
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] 
    at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] 
    ... 
    Caused by: java.security.KeyStoreException: Cannot overwrite secret key 
    at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:354) ~[sunjce_provider.jar:1.8.0_144] 
    at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_144] 
    at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na] 
    ... 20 common frames omitted 
    
    2017-11-01 03:28:47,562 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert 
    
  2. Obtén los detalles del almacén de claves o el almacén de confianza especificados en el mensaje de error que se mostró en el paso anterior con la siguiente llamada a la API de administración:

    curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>
    

    Resultado de ejemplo:

    { 
    "certs": [ 
    "mycert", 
    "mycert-new" 
    ], 
    "keys": [ 
    "mycert" 
    ], 
    "name": "myTruststore" 
    }
    
  3. El resultado de ejemplo muestra que hay dos certificados y una clave en el almacén de confianza myTruststore. Por lo general, el almacén de confianza no contiene una clave. Si es así, es mejor tener un solo certificado y una única clave.

  4. Obtén información detallada sobre los dos certificados con la siguiente API:

    curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
    
  5. Verifica la fecha de vencimiento de cada uno de los certificados y determina cuál es el más antiguo o vencido.

  6. Borra el certificado vencido o no deseado del almacén de confianza “myTruststore”.

Si el problema persiste o si ves algún error distinto de los mencionados en el paso 1, consulta Se debe recopilar información de diagnóstico.

Causa: Entradas de procesadores de mensajes inactivos O procesadores de mensajes inaccesibles

Diagnóstico

  1. Si la IU de Edge tarda mucho tiempo y no puede crear la sesión de registro, estas son algunas de las posibles causas:
    1. Es posible que el servidor de administración se refiera a procesadores de mensajes inexistentes (inactivos).
    2. Se detuvo el procesamiento de mensajes o se volvió inaccesible
    3. Los procesadores de mensajes tienen un alto uso de memoria o CPU
  2. Verifica los registros del servidor de administración /opt/apigee/var/log/edge-management-server/logs/system.log y observa si hay algún error durante la creación de la sesión de seguimiento y depuración.
  3. Es posible que veas un mensaje de error como "server <UUID> no está disponible ni es accesible" durante la creación de la sesión de seguimiento o depuración, como se muestra a continuación:

    2017-12-27 07:42:38,975 org:cocacola env:prod qtp2007599722-222063 INFO DISTRIBUTION - DebugSessionAPI.createDebugSession() : server 458b5910-2646-441c-a6e2-428b6d84e021 is either not up or reachable, skipping the server
    

    Puede que siga un error más: “Se agotó el tiempo de espera de la conexión” después de un tiempo, como se muestra a continuación:

    2017-12-27 07:44:46.000 UTC org:cocacola env:prod qtp2007599722-222063 ERROR DISTRIBUTION - DebugSessionAPI.createDebugSession() : createDebugSession : Unable to connect to the server with UUID {}, skipping it458b5910-2646-441c-a6e2-428b6d84e021 org.apache.http.conn.HttpHostConnectException: Connect to 192.168.101.7:8080 [/192.168.101.7] failed: Connection timed out (Connection timed out) at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:140) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) ~[httpclient-4.3.5.jar:4.3.5] at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219) ~[httpclient-4.3.5.jar:4.3.5] 
    <snipped>
    Caused by: java.net.ConnectException: Connection timed out (Connection timed out) at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_144] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_144]
    <snipped>
    
  4. Estos dos errores podrían deberse a determinados procesadores de mensajes:

    1. Está inactivo (ya no existe)
    2. El cliente no está disponible o no es accesible por algún motivo.
  5. Sigue la resolución adecuada según la situación en la que se encuentre.

Solución

Situación 1 : Los procesadores de mensajes están inactivos (no existen)

  1. Obtén la lista de procesadores de mensajes usando la siguiente API de administración:

    curl -u <sysadmin> "http://<management-server-host>:8080/v1/servers?pod=<podName>&regions=<regionName>"
    
  2. Anota la dirección IP o el nombre de host que corresponden a los UUID de los procesadores de mensajes mencionados en el mensaje de error de los registros del servidor de administración (paso no 3 en Diagnóstico anterior). Verifica si se trata de procesadores de mensajes válidos de una de las siguientes maneras:

    1. Diagrama de configuración más reciente de la topología de la nube privada
    2. Dirección IP del servidor perimetral más reciente: tabla de asignación de nombres de host

    Si consideras que son procesadores de mensajes válidos, continúa con la Situación 2 : No se puede acceder a los procesadores de mensajes.

  3. Borra los procesadores de mensajes inactivos (no existentes) con las siguientes APIs de administración:

    1. Anula el registro del Message Processor en los entornos de la organización:

      curl -X POST http://<management-server-host>:8080/v1/o/<orgName>/e/<envName>/servers -d "uuid={uuid}&region=<regionName>&pod=<podName}&action=remove" 
      
    2. Anula el registro del tipo de servidor:

      curl http://<management-server-host>:8080/v1/servers -X POST -d "type={message-processor}&region=<regionName>&pod=<podName>&uuid=<uuid>&action=remove"
      
    3. Borra el servidor:

      curl http://<management-ip>:8080/v1/servers/<uuid> -X DELETE
      
  4. Repite el paso 3 si tienes el mismo problema en cualquier otro entorno de tu organización.

Situación 2: No se puede acceder a los procesadores de mensajes

  1. Accede a cada uno de los Message Processors. Para ello, determina las direcciones IP o los nombres de host según los UUID observados en el mensaje de error en los registros del servidor de administración.
  2. Reinicia el procesador de mensajes:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
    

Vuelve a verificar si puedes crear la sesión de registro. Si el problema persiste, ve a Se debe recopilar información de diagnóstico.

Causa: Problema de uso de recursos elevado

Diagnóstico

  1. Accede a cada uno de los Message Processor y comprueba si se utiliza un recurso elevado, como CPU, memoria o carga. Puedes usar el comando top en los sistemas operativos basados en Unix para obtener la información de uso de recursos del proceso de Message Processor:

    top
    
  2. Si los procesadores de mensajes no experimentan un alto uso de recursos, dirígete a Se debe recopilar información de diagnóstico.

  3. Si los procesadores de mensajes tienen un uso elevado de CPU o memoria, es posible que esto provoque que no respondan al servidor de administración a tiempo. Con el tiempo, esto te impide crear una sesión de registro.

    1. Si algún Message Processor tiene un uso elevado de CPU, usa el siguiente comando para generar tres volcados de subprocesos cada 30 segundos:

      sudo <JAVA_HOME>/bin/jstack -l <pid> > <filename>
      
    2. Si algún procesador de mensajes tiene un uso elevado de memoria, genera un volcado de montón con el siguiente comando:

      sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
      
      
    3. Pasar a la resolución.

Solución

  1. Usa el siguiente comando para reiniciar el Message Processor. Esto debería reducir el uso de memoria y CPU:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  2. Supervisa las llamadas a la API y confirma si el problema persiste.

  3. Comunícate con el equipo de asistencia de Apigee Edge y proporciona los registros de volcados de subprocesos, volcado de montón y del procesador de mensajes (/opt/apigee/var/log/edge-message-processor/logs/system.log) para ayudarlos a investigar la causa del alto uso de CPU/memoria).

Causa: El proxy de API no se implementó en uno o más procesadores de mensajes

En raras ocasiones, puede que un proxy de API no se implemente en uno o más procesadores de mensajes. Esto sucede principalmente debido a que falta la notificación de eventos del servidor de administración al procesador de mensajes durante la implementación del proxy de API específico. Además, en este caso, no podrás crear la sesión de registro en la IU de Edge.

Diagnóstico

  1. Acceda a cada uno de los Message Processor y verifique si se implementó la revisión específica del proxy de API a través del siguiente comando:

    curl -v localhost:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
    

    Resultado de ejemplo:

    Verás la lista de revisiones como resultado del comando anterior. Por ejemplo, si se implementa la revisión 12, verás el siguiente resultado:

    [ "12" ]

  2. Si la revisión específica del proxy de API no aparece como resultado del comando mencionado en el paso 1, reinicie el procesador de mensajes específico como se explica en la sección Resolución a continuación.

  3. Repite los pasos 1 y 2 para todos los Message Processor.

  4. Si la revisión específica del proxy de API se implementa en todos los Message Processor, esta no es la causa del problema. Consulta el artículo Debe recopilar información de diagnóstico.

Solución

  1. Reinicia los procesadores de mensajes específicos en los que no se implementó la revisión específica del proxy de API:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
    

Causa: Problema con la IU de Edge

Diagnóstico

  1. Revisa los registros de la IU de Edge /opt/apigee/var/log/edge-ui/application.log y /opt/apigee/var/log/edge-ui/edge-ui.log para ver si hay algún error.
  2. Comunícate con el equipo de asistencia de Apigee Edge y comparte estos archivos para una mayor investigación.

Se debe recopilar información de diagnóstico

Si el problema persiste, incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico. Comunícate con ellos y compártelos con el equipo de asistencia de Apigee Edge:

  1. Resultado del comando:

    curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>
    
  2. Registro del servidor de administración

    /opt/apigee/var/log/edge-management-server/logs/system.log.
    
  3. Registros del procesador de mensajes

    /opt/apigee/var/log/edge-message-processor/logs/system.log.
    
  4. Resultado de los comandos telnet/nc del servidor de administración al procesador de mensajes:

    telnet <MessageProcessor_IP> 8082
    nc -vz <MessageProcessor_IP> 8082
    
  5. Resultado del siguiente comando netstat en Message Processor:

    netstat -an > netstat.txt
    
  6. Si se detectó un problema con la IU de Edge, proporciona los registros de la IU de Edge /opt/apigee/var/log/edge-ui/application.log y /opt/apigee/var/log/edge-ui/edge-ui.log.

  7. Detalles sobre las secciones de esta guía que se han probado y cualquier otra información que nos ayude a resolver rápidamente este problema.