Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
На панелях мониторинга аналитики (Производительность прокси, Целевая производительность и т. д.) в пользовательском интерфейсе Edge не отображаются никакие данные. На всех панелях мониторинга отображается следующее сообщение:
No traffic in the selected date range
Сообщения об ошибках
Данная проблема не приводит к наблюдаемым ошибкам.
Возможные причины
В таблице ниже перечислены возможные причины этой проблемы:
| Причина | Для |
|---|---|
| Отсутствие API-трафика для организационной среды | Edge для пользователей частного облака |
| Данные доступны в базе данных PostgreSQL, но не отображаются в пользовательском интерфейсе. | Edge для пользователей частного облака |
| Аналитические данные не передаются в базу данных PostgreSQL. | Edge для пользователей частного облака |
| Неправильное развертывание аналитики | Edge для пользователей частного облака |
| Устаревшие UUID сервера аналитики | Edge для пользователей частного облака |
Отсутствие API-трафика для организационной среды
Диагноз
- Проверьте наличие трафика для API-прокси в конкретной организационной среде за тот период времени, в течение которого вы пытаетесь просмотреть аналитические данные, используя один из следующих методов:
- Включите трассировку для любого из ваших API, который в данный момент используется пользователями, и проверьте, получаете ли вы какие-либо запросы в трассировке.
- Просмотрите журналы доступа NGINX (
/opt/apigee/var/log/edge-router/nginx/logs/access.log)и проверьте, появились ли новые записи для API-прокси за указанный период времени. - Если вы отправляете информацию с API-прокси на сервер логов, такой как Syslog, Splunk, Loggly и т. д., то можете проверить, есть ли в этих серверах логов записи об API-прокси за определенный период времени.
- Если за указанный период времени отсутствует трафик (нет запросов к API), то аналитические данные недоступны. На панели аналитики вы увидите сообщение «Нет трафика в выбранном диапазоне дат».
Разрешение
- Выполните несколько вызовов к одному или нескольким API-прокси в конкретной организационной среде.
- Подождите несколько секунд, а затем просмотрите аналитические панели на вкладке «Час» и посмотрите, появятся ли данные.
- Если проблема сохраняется, перейдите к разделу «Данные доступны в базе данных Postgres, но не отображаются в пользовательском интерфейсе» .
Данные доступны в базе данных PostgreSQL, но не отображаются в пользовательском интерфейсе.
Симптом
Для начала определите наличие актуальных аналитических данных в базе данных Postgres.
Чтобы проверить, доступны ли последние данные Analytics на главном узле Postgres:
- Войдите на каждый из серверов Postgres и выполните следующую команду, чтобы убедиться, что вы находитесь на главном узле Postgres:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
- На главном узле PostgreSQL войдите в PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- Проверьте, существует ли таблица для вашей среды организации, используя следующий SQL-запрос в базе данных Postgres:
\d analytics."orgname.envname.fact"
- Проверьте наличие последних данных в базе данных Postgres, используя следующий SQL-запрос:
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- Если последняя метка времени очень старая (или равна нулю), это означает, что данные недоступны в базе данных Postgres. Вероятная причина этой проблемы заключается в том, что данные не передаются с сервера Qpid в базу данных Postgres. Перейдите к разделу «Данные аналитики не передаются в базу данных Postgres» .
- Если самые свежие данные доступны в базе данных Postgres на главном узле, выполните следующие действия, чтобы определить причину, по которой данные не отображаются в пользовательском интерфейсе Edge.
Диагноз
- Включите инструменты разработчика в браузере Chrome и получите информацию об используемом API из одной из аналитических панелей, выполнив следующие шаги:
- Выберите вкладку «Сеть» в инструментах разработчика.
- Начать запись.
- Перезагрузите панель аналитики.
- В левой панели инструментов разработчика выберите строку, содержащую "apiproxy?_optimized...".
- В правой панели инструментов разработчика выберите вкладку «Заголовки» и обратите внимание на поле «URL-адрес запроса».
- Вот пример вывода из инструментов разработчика:
Пример выходных данных, демонстрирующий API, используемый на панели мониторинга производительности прокси-сервера во вкладке «Сеть» инструментов разработчика.

- Выполните прямой вызов API управления и проверьте, получите ли вы результаты. Вот пример вызова API для вкладки «День» на панели мониторинга «Производительность прокси»:
curl -u username:password "http://management_server_IP_address:8080/v1/organizations/ org_name/environments/env_name/stats/apiproxy?limit=14400& select=sum(message_count),sum(is_error),avg(total_response_time), avg(target_response_time)&sort=DESC&sortby=sum(message_count),sum(is_error), avg(total_response_time),avg(target_response_time)&timeRange=08%2F9%2F2017+ 18:00:00~08%2F10%2F2017+18:00:00&timeUnit=hour&tsAscending=true"
- Если вы видите успешный ответ, но без каких-либо данных, это означает, что сервер управления не может получить данные с сервера Postgres из-за проблем с сетевым подключением.
- Проверьте, можете ли вы подключиться к серверу Postgres с сервера управления:
telnet Postgres_server_IP_address 5432
- Если вам не удаётся подключиться к серверу Postgres, проверьте, нет ли каких-либо ограничений брандмауэра на порт 5432.
- Если существуют ограничения, накладываемые брандмауэром, это может быть причиной того, что сервер управления не может получить данные с сервера Postgres.
Разрешение
- Если существуют ограничения брандмауэра, снимите их, чтобы сервер управления мог взаимодействовать с сервером Postgres.
- Если нет ограничений брандмауэра, то эта проблема может быть вызвана сбоем в сети.
- Если на сервере управления произошел какой-либо сетевой сбой, то его перезапуск может решить проблему.
- Перезапустите все серверы управления по очереди, используя следующую команду:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Проверьте, отображаются ли аналитические данные в пользовательском интерфейсе Edge.
Если данные по-прежнему не отображаются, обратитесь в службу поддержки Apigee Edge .
Аналитические данные не передаются в базу данных PostgreSQL.
Диагноз
Если данные не передаются с сервера Qpid в базу данных Postgres, как это определено в разделе «Доступные данные в базе данных Postgres», но не отображаются в пользовательском интерфейсе , выполните следующие действия:
- Проверьте, запущен ли каждый из серверов Qpid, выполнив следующую команду:
/opt/apigee/apigee-service/bin edge-qpid-server status
- Если какой-либо из серверов Qpid недоступен, перезапустите его. В противном случае перейдите к шагу №5.
/opt/apigee/apigee-service/bin edge-qpid-server restart
- Подождите некоторое время, а затем еще раз проверьте, доступны ли последние данные в базе данных Postgres.
- Войдите в PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- Выполните следующий SQL-запрос, чтобы проверить наличие последних данных:
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- Войдите в PostgreSQL:
- Если доступны самые свежие данные, пропустите следующие шаги и перейдите к последнему шагу в разделе «Решение». Если самые свежие данные недоступны, перейдите к следующим шагам.
- Проверьте, передаются ли сообщения из очередей сервера Qpid в базу данных Postgres.
- Выполните
qpid-stat -q commandи проверьте значения столбцов msgIn и msgOut . - Вот пример выходных данных, показывающий, что значения msgIn и msgOut не совпадают. Это указывает на то, что сообщения не передаются с сервера Qpid в базу данных Postgres.

- Выполните
- Если обнаружено несоответствие в столбцах msgIn и msgOut , проверьте журналы сервера Qpid
/opt/apigee/var/log/edge-qpid-server/system.logи посмотрите, нет ли там каких-либо ошибок. - Вы можете увидеть сообщения об ошибках, например, "Вероятно, PG по-прежнему недоступен" или "FATAL: извините, уже слишком много клиентов", как показано на рисунке ниже:
2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: FATAL: sorry, too many clients already 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: sorry, too many clients already)
Это может произойти, если сервер PostgreSQL выполняет слишком много SQL-запросов или если процессор работает на высокой нагрузке и, следовательно, не может отвечать серверу Qpid.
Разрешение
- Перезапустите сервер PostgreSQL и базу данных PostgreSQL, как показано ниже:
/opt/apigee/bin/apigee-service edge-postgres-server restart
/opt/apigee/bin/apigee-service apigee-postgresql restart
- Этот перезапуск гарантирует остановку всех предыдущих SQL-запросов и должен разрешить новые подключения к базе данных Postgres.
- Перезагрузите панели мониторинга аналитики и проверьте, отображаются ли данные аналитики.
Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge .
Неправильное развертывание аналитики
Диагноз
- Получите информацию о состоянии развертывания аналитики, используя следующий вызов API:
curl -u user_email:password http://management_server_host:port /v1/organizations/orgname/environments/envname/provisioning/axstatus
- Проверьте состояние серверов Qpid и Postgres по результатам вызова API.
- Если статус серверов Qpid и Postgres отображается как "SUCCESS", это означает, что серверы аналитики подключены правильно. Перейдите к разделу "Устаревшие UUID серверов аналитики" .
- Если статус серверов Qpid/Postgres отображается как "UNKNOWN" или "FAILURE", это указывает на проблему с соответствующим сервером.
Например, в следующем сценарии статус серверов Postgres отображается как "UNKNOWN":

Это может произойти в случае сбоя во время подключения аналитических данных. Этот сбой препятствует передаче сообщений с серверов управления на серверы Postgres.
Разрешение
Как правило, эту проблему можно решить перезапуском серверов, на которых отображалось сообщение "FAILURE" или "UNKNOWN".
- Перезапустите каждый из серверов, у которых в состоянии подключения аналитики указано «СБОЙ» или «НЕИЗВЕСТНО», используя следующую команду:
/opt/apigee/apigee-service/bin/apigee-service component restart
- Например:
- Если проблема наблюдается на серверах Qpid, перезапустите серверы Qpid:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
- Если проблема наблюдается на серверах PostgreSQL, перезапустите главный и подчиненный узлы сервера PostgreSQL:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- Если проблема наблюдается на серверах Qpid, перезапустите серверы Qpid:
- В приведенном выше примере для серверов Postgres отображается сообщение "UNKNOWN", поэтому необходимо перезапустить как главный, так и подчиненный серверы Postgres:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
Устаревшие UUID сервера аналитики
Диагноз
- Получите конфигурацию аналитики, используя следующий вызов API:
curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax
Вот пример выходных данных, полученных с помощью указанного выше API:
[ { "name" : "axgroup001", "properties" : { "consumer-type" : "ax" }, "scopes" : [ "myorg~prod", "myorg~test" ], "uuids" : { "aries-datastore" : [ ], "postgres-server" : [ "6777...2db14" ], "dw-server" : [ ], "qpid-server" : [ "774e...fb23", "29f3...8c11" ] }, "consumer-groups" : [ { "name" : "consumer-group-001", "consumers" : [ "774e...8c11" ], "datastores" : [ "6777...db14" ], "properties" : { } } ], "data-processors" : { } } ]
- Убедитесь, что следующая информация в выходных данных верна:
- Названия org-env, перечисленные в элементе "scopes".
- UUID серверов Postgres и Qpid.
- Чтобы получить UUID сервера Postgres, выполните следующую команду на каждом из узлов сервера Postgres:
curl 0:8084/v1/servers/self/uuid
- Чтобы получить UUID-идентификаторы серверов Qpid, выполните следующую команду на каждом из узлов сервера Qpid:
curl 0:8083/v1/servers/self/uuid
- Чтобы получить UUID сервера Postgres, выполните следующую команду на каждом из узлов сервера Postgres:
- Если вся информация верна, переходите к разделу «Аналитические данные не передаются в базу данных PostgreSQL» .
- Если UUID серверов Postgres и/или Qpid указаны неверно, то возможно, что серверы управления используют устаревшие UUID.
Разрешение
Для удаления устаревших UUID и добавления корректных UUID серверов обратитесь в службу поддержки Apigee Edge .