Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
Пользователь не может создать сеанс трассировки в пользовательском интерфейсе Edge.
Сообщение об ошибке
В пользовательском интерфейсе Edge появится сообщение об ошибке, как показано ниже:
Error creating trace session for API proxy <api proxy name>, revision <revision number>, environment <environment name>.
Failed to create DebugSession <session number>
Вот скриншот примера сообщения об ошибке, наблюдаемого в пользовательском интерфейсе Edge:

Возможные причины
Ниже перечислены некоторые из возможных причин этой ошибки:
| Причина | Описание | Инструкции по устранению неполадок, применимые для |
| Проблема с сетевым подключением | Сбой связи между сервером управления и обработчиком сообщений из-за проблем с сетевым подключением или правил брандмауэра. | Пользователи частного облака Edge |
| Окружение не загружено в обработчик сообщений. | Конкретная среда (в которой вы пытаетесь включить трассировку) не была загружена в обработчик(и) сообщений из-за ошибки. | |
| Устаревшие записи обработчика сообщений | Сервер управления обращается к несуществующим (устаревшим) обработчикам сообщений. | |
| Обработчик сообщений недоступен | Процессор сообщений остановлен или недоступен. | |
| Проблема высокой степени использования ресурсов | Обработчики сообщений испытывают высокую загрузку ресурсов (ЦП, памяти или нагрузки). | |
| API-прокси не развернут на одном или нескольких обработчиках сообщений. | API-прокси может быть не развернут на одном или нескольких обработчиках сообщений из-за отсутствия уведомлений о событиях во время развертывания. | |
| Проблема с пользовательским интерфейсом Edge. | Пользовательский интерфейс Edge не может создать сеанс трассировки из-за ошибки. |
Общие этапы диагностики
Выполните следующий API управления:
curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>Если возникнут какие-либо ошибки, запишите их. Перейдите к разделу «Проблемы с сетевым подключением» .
Если вы получили успешный ответ, это означает, что сеанс трассировки можно создать через Management API. Однако может возникнуть проблема с пользовательским интерфейсом Edge, из-за которой сеанс трассировки не может быть создан в интерфейсе. Перейдите в раздел «Проблема с пользовательским интерфейсом Edge» .
Причина: Проблема с сетевым подключением
Диагноз
Проверьте журнал сервера управления
/opt/apigee/var/log/edge-management-server/logs/system.logи посмотрите, нет ли там ошибок, возникших при создании сеанса трассировки/отладки.Пример ошибки из журнала сервера управления.
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>Приведенный выше пример ошибки показывает, что при попытке подключения сервера управления к обработчику сообщений через порт 8082 возникают ошибки типа «Соединение отклонено». Следовательно, сервер управления не может создать сеанс трассировки.
Если вы не видите ошибок, связанных с сетевым подключением, или ошибок, подобных той, что показана в приведенном выше примере, перейдите к разделу «Среда не загружена в обработчик сообщений» .
Если вы обнаружили ошибки, связанные с сетевым подключением, или ошибки, аналогичные показанной в приведенном выше примере, выполните следующие действия.
Проверьте соединение между сервером управления и обработчиком сообщений через порт 8082, выполнив следующие шаги:
Если доступен telnet, используйте его:
telnet <MessageProcessor_IP> 8082Если telnet недоступен, проверьте подключение с помощью netcat следующим образом:
nc -vz <MessageProcessor_IP> 8082Если вы получили сообщение "Соединение отклонено" или "Время ожидания соединения истекло", перейдите к следующему шагу.
Войдите в каждый из обработчиков сообщений, используя соответствующий IP-адрес, на котором возникла ошибка, и выполните следующие действия:
Проверьте, прослушивает ли обработчик сообщений порт 8082:
netstat -an | grep LISTEN | grep 8082Если обработчик сообщений прослушивает порт 8082, перейдите к шагу №7.
Если обработчик сообщений не прослушивает порт 8082, перезапустите его с помощью следующей команды:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restartДождитесь полного запуска обработчика сообщений, используя эту команду:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_readyПосле запуска обработчика сообщений проверьте еще раз, прослушивает ли он порт 8082.
Если обработчик сообщений прослушивает порт 8082, перейдите к шагу №7.
Проверьте, можете ли вы теперь запустить сеанс трассировки в пользовательском интерфейсе. Если проблема больше не наблюдается, пропустите следующие шаги.
Если обработчик сообщений запущен и прослушивает порт 8082, но вы по-прежнему не можете подключиться с других серверов, таких как сервер управления, то, вероятно, брандмауэр блокирует внешние соединения.
Для проверки правил брандмауэра используйте соответствующую команду. Например, вы можете выполнить команду iptables, чтобы вывести список всех правил брандмауэра, определенных в вашей системе:
iptables -L -nЕсли для порта 8082 не заданы правила брандмауэра, перейдите к разделу «Проблема высокой загрузки ресурсов» .
Если на порту 8082 настроены какие-либо правила брандмауэра, перейдите к разделу «Решение» ниже.
Разрешение
- Обратитесь к сетевому администратору, чтобы разрешить входящий/исходящий трафик на порту 8082 с внешних серверов.
Если проблема сохраняется, перейдите к разделу «Необходимо собрать диагностическую информацию» .
Причина: Окружение не загружено в обработчик сообщений.
Диагноз
- Проверьте журналы сервера управления
/opt/apigee/var/log/edge-management-server/logs/system.logи посмотрите, нет ли там ошибок, возникших при создании сеанса трассировки/отладки. При создании сеанса трассировки/отладки вы можете увидеть сообщение об ошибке типа « нет действительных ответов от MP(s) », как показано ниже:
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}Эта ошибка указывает на то, что обработчик(и) сообщений по какой-то причине не отвечают на запросы к серверу управления.
Если вы не видите ошибки, подобной показанной в приведенном выше примере, перейдите к разделу «Устаревшие записи обработчика сообщений» .
Если вы обнаружите ошибку, аналогичную показанной в приведенном выше примере, выполните следующие действия.
Одной из наиболее вероятных причин этой ошибки является то, что среда, в которой вы пытаетесь создать сеанс трассировки, не загружена в обработчик(и) сообщений.
Войдите в каждый из обработчиков сообщений и проверьте, загружена ли на обработчике сообщений конкретная среда, в которой вы пытаетесь создать сеанс трассировки, используя следующую команду:
curl -s http://localhost:8082/v1/runtime/organizations/<org-name>/environmentsПример выходных данных:
В выводе указанной выше команды вы увидите список сред, принадлежащих конкретной организации, которые загружены в обработчик сообщений. Например, если в обработчик сообщений загружены среды preprod и test , то вы увидите следующий вывод:
[ "preprod", "test" ]
Если в приведенной выше команде указана конкретная среда, например , "dev", в которой вы пытаетесь создать сеанс трассировки, перейдите к разделу "Устаревшие записи обработчика сообщений" .
Если конкретная среда, например, "dev", не указана в приведенной выше команде, проверьте файлы
/opt/apigee/var/log/edge-message-processor/logs/system.logи/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.logна процессорах сообщений на наличие ошибок, возникших во время загрузки сред.Причиной сбоя загрузки среды в обработчик сообщений может быть множество различных ошибок. Решение зависит от возникшей ошибки.
Разрешение
Загрузка среды обработки сообщений может быть невозможна по ряду причин. В этом разделе описаны несколько возможных причин, которые могут привести к этой проблеме, и объясняется, как ее решить.
Если в журнале обработчика сообщений вы видите одну из следующих ошибок, это означает, что проблема связана с сертификатами/ключами, добавленными в указанное хранилище ключей/доверенных сертификатов в указанной среде.
Ошибка #1: java.security.KeyStoreException: Невозможно перезаписать собственный сертификат
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Ошибка #2: java.security.KeyStoreException: Невозможно перезаписать секретный ключ
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Получите подробную информацию о хранилище ключей/доверенных сертификатов, указанном в сообщении об ошибке, показанном на предыдущем шаге, используя следующий вызов API управления:
curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>Пример выходных данных:
{ "certs": [ "mycert", "mycert-new" ], "keys": [ "mycert" ], "name": "myTruststore" }В приведенном примере показано, что в хранилище доверенных сертификатов myTruststore находятся два сертификата и ключ. Обычно хранилище доверенных сертификатов не содержит ключа. Если же оно содержит ключ, лучше иметь один сертификат и один ключ.
Получите подробную информацию о двух сертификатах, используя следующий API:
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>Проверьте срок действия каждого из сертификатов и определите, какой из них просрочен/старее.
Удалите просроченный или ненужный сертификат из хранилища доверенных сертификатов "myTruststore".
Если проблема сохраняется или если вы видите какие-либо ошибки, кроме упомянутых в шаге №1 выше, перейдите к разделу «Необходимо собрать диагностическую информацию» .
Причина: устаревшие записи обработчика сообщений ИЛИ недоступность обработчиков сообщений
Диагноз
- Если интерфейс Edge работает долго и не удается создать сеанс трассировки, то возможны следующие причины:
- Сервер управления может иметь в виду несуществующие (устаревшие) обработчики сообщений.
- Процессор(ы) сообщений остановлен(ы) или стал(-ы) недоступен(ы)
- В процессорах обработки сообщений наблюдается высокая загрузка памяти/процессора.
- Проверьте журналы сервера управления
/opt/apigee/var/log/edge-management-server/logs/system.logи посмотрите, нет ли ошибок, возникших при создании сеанса трассировки/отладки. При создании сеанса трассировки/отладки вы можете увидеть сообщение об ошибке типа "сервер <UUID> либо не запущен, либо недоступен", как показано ниже:
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Через некоторое время может появиться еще одна ошибка "Время ожидания соединения истекло", как показано ниже:
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>Эти две ошибки могут быть вызваны либо конкретным(и) обработчиком(ами) сообщений:
- Устаревший (переставший существовать)
- Недоступен/недоступен по какой-либо причине
Пожалуйста, примите соответствующие меры в зависимости от возникшей ситуации.
Разрешение
Сценарий №1: Обработчики сообщений устарели (не существуют).
Получите список обработчиков сообщений, используя указанный ниже API управления:
curl -u <sysadmin> "http://<management-server-host>:8080/v1/servers?pod=<podName>®ions=<regionName>"Запишите IP-адрес или имя хоста, соответствующие UUID (идентификаторам) обработчиков сообщений, упомянутых в сообщении об ошибке в журналах сервера управления (шаг № 3 в разделе «Диагностика» выше). Проверьте, являются ли эти обработчики сообщений действительными, используя один из следующих способов:
- Последняя схема настройки топологии частного облака
- Таблица сопоставления IP-адреса последнего пограничного сервера и имени хоста.
Если вы обнаружите, что они являются действительными обработчиками сообщений, переходите к сценарию 2: Обработчик(и) сообщений недоступны .
Удалите устаревшие (несуществующие) обработчики сообщений, используя указанные ниже API управления:
Отмените регистрацию обработчика сообщений в средах организации:
curl -X POST http://<management-server-host>:8080/v1/o/<orgName>/e/<envName>/servers -d "uuid={uuid}®ion=<regionName>&pod=<podName}&action=remove"Отменить регистрацию типа сервера:
curl http://<management-server-host>:8080/v1/servers -X POST -d "type={message-processor}®ion=<regionName>&pod=<podName>&uuid=<uuid>&action=remove"Удалите сервер:
curl http://<management-ip>:8080/v1/servers/<uuid> -X DELETE
Повторите шаг №3, если у вас возникнет аналогичная проблема в других средах вашей организации.
Сценарий 2: Обработчики сообщений недоступны
- Для входа в каждый из обработчиков сообщений определите IP-адреса/имена хостов на основе UUID, указанных в сообщении об ошибке в журналах сервера управления.
Перезапустите обработчик сообщений:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Ещё раз проверьте, удаётся ли вам создать сеанс трассировки. Если проблема сохраняется, перейдите к разделу «Необходимо собрать диагностическую информацию» .
Причина: Проблема высокой загрузки ресурсов.
Диагноз
Войдите в каждый из обработчиков сообщений и проверьте, наблюдается ли высокая загрузка каких-либо ресурсов — ЦП, памяти или нагрузки. В операционных системах на базе Unix для получения информации об использовании ресурсов процессом обработчика сообщений можно использовать команду
top.topЕсли процессор(ы) сообщений не испытывают высокой загрузки ресурсов, перейдите к этапу «Необходимо собрать диагностическую информацию» .
Если обработчик сообщений испытывает высокую загрузку ЦП или памяти, это может привести к тому, что он не сможет вовремя ответить на запрос сервера управления. В конечном итоге это помешает вам создать сеанс трассировки.
Если какой-либо обработчик сообщений испытывает высокую загрузку ЦП, создавайте три дампа потоков каждые 30 секунд, используя следующую команду:
sudo <JAVA_HOME>/bin/jstack -l <pid> > <filename>Если какой-либо обработчик сообщений демонстрирует высокую загрузку памяти, создайте дамп кучи, используя следующую команду:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>Перейти к разрешению.
Разрешение
Перезапустите обработчик сообщений, используя приведенную ниже команду. Это должно снизить загрузку процессора и памяти:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restartПроследите за вызовами API и подтвердите, сохраняется ли проблема.
Обратитесь в службу поддержки Apigee Edge и предоставьте дампы потоков, дамп кучи и журналы обработчика сообщений (
/opt/apigee/var/log/edge-message-processor/logs/system.log), чтобы помочь им выяснить причину высокой загрузки ЦП/памяти.
Причина: API-прокси не развернут на одном или нескольких обработчиках сообщений.
В редких случаях API-прокси может не быть развернут на одном или нескольких обработчиках сообщений. Это происходит в основном из-за отсутствия уведомлений о событиях от сервера управления к обработчику сообщений во время развертывания конкретного API-прокси. В этом случае также не удастся создать сеанс трассировки в пользовательском интерфейсе Edge.
Диагноз
Войдите в каждый из обработчиков сообщений и проверьте, развернута ли конкретная версия API-прокси, используя следующую команду:
curl -v localhost:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisionsПример выходных данных:
В результате выполнения указанной выше команды вы увидите список ревизий. Например, если развернута ревизия 12, вы увидите следующий вывод:
[ "12" ]
Если конкретная версия API-прокси не отображается в выводе команды, указанной в шаге №1 выше, перезапустите соответствующий обработчик сообщений, как описано в разделе «Решение» ниже.
Повторите шаги 1-2 для всех обработчиков сообщений.
Если конкретная версия API-прокси развернута на всех обработчиках сообщений, то это не является причиной проблемы. Перейдите к разделу «Необходимо собрать диагностическую информацию» .
Разрешение
Перезапустите конкретный(е) обработчик(и) сообщений, на котором(их) не развернута конкретная версия API-прокси:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Причина: Проблема с пользовательским интерфейсом Edge.
Диагноз
- Проверьте журналы пользовательского интерфейса Edge по адресам
/opt/apigee/var/log/edge-ui/application.logи/opt/apigee/var/log/edge-ui/edge-ui.logна наличие ошибок. - Обратитесь в службу поддержки Apigee Edge и предоставьте эти файлы для дальнейшего расследования.
Необходимо собрать диагностическую информацию.
Если проблема сохраняется даже после выполнения вышеуказанных инструкций, пожалуйста, соберите следующую диагностическую информацию. Свяжитесь со службой поддержки Apigee Edge и предоставьте её:
Результат выполнения команды:
curl -v <management-server-host>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/debugsessions -u <user>Журнал сервера управления
/opt/apigee/var/log/edge-management-server/logs/system.log.Журналы обработчика сообщений
/opt/apigee/var/log/edge-message-processor/logs/system.log.Вывод команд telnet/nc с сервера управления на процессор сообщений:
telnet <MessageProcessor_IP> 8082 nc -vz <MessageProcessor_IP> 8082Вывод команды netstat, приведенной ниже, на обработчике сообщений:
netstat -an > netstat.txtЕсли проблема связана с пользовательским интерфейсом Edge, предоставьте журналы Edge UI:
/opt/apigee/var/log/edge-ui/application.logи/opt/apigee/var/log/edge-ui/edge-ui.log.Подробная информация о том, какие разделы этого руководства были опробованы, а также любые другие сведения, которые помогут нам ускорить решение этой проблемы.