No se pudo crear la sesión de registro

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Síntoma

El usuario no puede crear una sesión de seguimiento 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 una captura de pantalla de un mensaje de error de muestra 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 Se produjo un error en la 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 se volvió inaccesible.
Problema de uso elevado 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 pueda implementar en uno o más Message Processor debido a que falta una notificación de evento durante la implementación.
Problema con la IU de Edge La IU de Edge no puede crear una sesión de seguimiento debido a un error.

Pasos comunes del diagnóstico

  1. Ejecuta esta API de administración:

    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 recibes algún error, anótalo. Ve a Problema de conectividad de red.

  3. Si obtienes una respuesta exitosa, significa 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 podría crear una sesión de registro en ella. Ve a Problema con la IU de Edge.

Causa: problema de conectividad de red

Diagnóstico

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

    Ejemplo de error 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 muestra que recibimos errores "Connection denied" cuando el servidor de administración intenta conectarse a 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, ve a Entorno no cargado en el procesador de mensajes.

  4. Si observas errores relacionados con la conectividad de red o un error 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 mediante los siguientes pasos:

    1. Si Telnet está disponible, úsala de la siguiente manera:

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

      nc -vz <MessageProcessor_IP> 8082
      
    3. Si obtienes la respuesta “Connection Refused” o “Connection timed out”, continúa con el siguiente paso.

  6. Accede a cada uno de los procesadores de mensajes con la dirección IP correspondiente que mostró el error y sigue estos pasos:

    1. Verifica si el procesador de mensajes escucha en el puerto 8082:

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

    3. Si Message Processor no escucha en el puerto 8082, use el siguiente comando para reiniciarlo:

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

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

    6. Si Message Processor escucha 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 Message Processor se está ejecutando y escucha en el puerto 8082, pero aún no puede conectarse desde los 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 obtener una lista de todas las reglas de firewall definidas en tu sistema:

    iptables -L -n
    
  10. Si no se establecieron reglas de firewall para el puerto 8082, consulta Problema de uso de recursos elevados.

  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 desde servidores externos.

Si el problema persiste, ve a Debes recopilar información de diagnóstico.

Causa: No se cargó el entorno en Message Processor

Diagnóstico

  1. Verifica los registros del servidor de administración /opt/apigee/var/log/edge-management-server/logs/system.log y verifica si hay errores durante la creación de la sesión de seguimiento o depuración.
  2. Es posible que veas un mensaje de error similar a "no hay respuestas válidas de los MP(s)" durante la creación de la sesión de seguimiento o 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 ves un error similar al que se muestra en el ejemplo anterior, ve a Stale Message Processor Entries (Entradas de 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 seguimiento no está cargado en Message Processor.

  6. Accede a cada uno de los procesadores de mensajes y verifica si el entorno específico en el que intentas crear la sesión de seguimiento se cargó en el procesador de mensajes con el siguiente comando:

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

    Resultado de ejemplo:

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

    [ "preprod", "test" ]

  7. Si el entorno específico, como "dev", en el cual intentas crear una sesión de seguimiento, aparece en la lista del comando anterior, pasa a Stale Message Processor Entries.

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

  9. Puede haber muchos errores diferentes que podrían provocar un error en la carga de un entorno en Message Processor. La resolución depende del error ocurrido.

Resolución

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

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

    Error 1: java.security.KeyStoreException: No se puede reemplazar un 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 almacén de confianza especificado en el mensaje de error que se muestra 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 los detalles 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 certificado 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, ve a Debes recopilar información de diagnóstico.

Causa: No se puede acceder a las entradas del procesador de mensajes o a los procesadores de mensajes inactivos

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 haga referencia a procesadores de mensajes inexistentes (inactivos)
    2. El procesador de mensajes se detuvo o se volvió inaccesible
    3. Los procesadores de mensajes tienen un uso elevado de memoria/CPU
  2. Verifica los registros del servidor de administración /opt/apigee/var/log/edge-management-server/logs/system.log y comprueba si hay errores durante la creación de la sesión de seguimiento o depuración.
  3. Es posible que veas un mensaje de error como "server <UUID> is not up or reachable" 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
    

    Después de un tiempo, podría aparecer el error “Se agotó el tiempo de espera de la conexión”, 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 Message Processor específicos:

    1. Estar inactivo (ya no existe)
    2. Estar inactivo o no accesible por alguna razón
  5. Sigue la resolución adecuada según la situación en la que te encuentres.

Resolución

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

  1. Obtén la lista de Message Processor con 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 en los registros del servidor de administración (paso 3 de la sección Diagnóstico anterior). Verifica si son procesadores de mensajes válidos de una de las siguientes maneras:

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

    Si descubres que son procesadores de mensajes válidos, ve a 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 de 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 otros entornos de la organización.

Situación 2: No se puede acceder al procesador de mensajes

  1. Accede a cada uno de los procesadores de mensajes. 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 Message Processor:

    /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 Debe recopilar información de diagnóstico.

Causa: problema de uso elevado de recursos

Diagnóstico

  1. Accede a cada uno de los procesadores de mensajes y verifica si hay un alto uso de los recursos: 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 están experimentando un uso elevado de recursos, continúa con Debe recopilar información de diagnóstico.

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

    1. Si algún Message Processor experimenta un uso elevado de CPU, genere tres volcados de subprocesos cada 30 segundos con el siguiente comando:

      sudo <JAVA_HOME>/bin/jstack -l <pid> > <filename>
      
    2. Si algún Message Processor tiene un uso alto 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. Ir a Resolución

Resolución

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

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

  3. Comunícate con el equipo de asistencia de Apigee Edge y proporciónale los volcados de subprocesos, el volcado de montón y los registros 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 y memoria).

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

Rara vez un proxy de API no se puede implementar en uno o más Message Processor. Esto sucede principalmente debido a la falta de notificación de evento del servidor de administración al Message Processor durante la implementación del proxy de API específico. Además, en este caso, no podrás crear la sesión de seguimiento en la IU de Edge.

Diagnóstico

  1. Accede a cada uno de los procesadores de mensajes y verifica si la revisión específica del proxy de API se implementó con el 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 el resultado del comando anterior. Por ejemplo, si se implementa la revisión 12, verás el resultado de la siguiente manera:

    [ “12” ]

  2. Si la revisión específica del proxy de API no se muestra como el resultado del comando mencionado en el paso 1, reinicia el Message Processor específico como se explica en la sección Resolución a continuación.

  3. Repite los pasos 1 a 2 para todos los procesadores de mensajes.

  4. Si la revisión específica del proxy de API se implementa en todos los procesadores de mensajes, esta no es la causa de este problema. Vaya a Debe recopilar información de diagnóstico.

Resolució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. Verifica 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 y comprueba si hay algún error.
  2. Comuníquese con el equipo de asistencia de Apigee Edge y comparta estos archivos para realizar más investigaciones.

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 en 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 de Message Processor

    /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ó que es un problema con la IU de Edge, proporciona los registros /opt/apigee/var/log/edge-ui/application.log y /opt/apigee/var/log/edge-ui/edge-ui.log. de la IU de Edge.

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