Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Симптом
Пользовательская переменная, созданная с помощью политики СтатистикаКоллектор, не отображается в разделе «Пользовательские измерения» в пользовательских отчетах Analytics в пользовательском интерфейсе Edge.
Сообщения об ошибках
Никаких ошибок не наблюдается.
Возможные причины
В следующей таблице перечислены возможные причины этой проблемы:
Причина | Для |
---|---|
Пользовательская переменная не соответствует стандартным рекомендациям | Пользователи Edge частного и публичного облака |
Нет трафика на прокси-сервере API, реализующем политикуStatisticalCollector. | Пользователи Edge частного и публичного облака |
Пользовательская переменная не передается на сервер Postgres | Пользователи Edge Private Cloud |
Щелкните ссылку в таблице, чтобы просмотреть возможные решения этой проблемы.
Пользовательская переменная не соответствует стандартным рекомендациям
Диагностика
Если имя пользовательской переменной, используемое в политике СтатистикаКоллектор, не соответствует стандартным рекомендациям (см. Решение ), то оно не будет отображаться в пользовательских отчетах.
В приведенном ниже фрагменте кода показано, что имя переменной «идентификатор продукта» содержит пробел, поэтому оно не будет отображаться в специальном измерении в специальном отчете.
<StatisticsCollector name="publishPurchaseDetails"> <Statistics> <Statistic name="productID" ref="product id" type="string">999999</Statistic> </Statistics> </StatisticsCollector>
Разрешение
Имена пользовательских переменных, используемые в политикеStatisticalCollector в прокси-сервере API, должны соответствовать следующим правилам:
- Имена могут включать [az][0-9] и «_».
- Имена не могут содержать пробелы. Например, в примере кода, показанном выше, имя переменной следует изменить на «product_id».
- Случай игнорируется.
- Зарезервированные ключевые слова, перечисленные в таблице по следующей ссылке, не допускаются. Например, «пользователь» не разрешен. Дополнительные сведения см. в разделе Ключевые слова SQL .
Если проблема не устранена, перейдите к разделу «Нет трафика на API-прокси, реализующем политику СтатистикаКоллектор» .
Нет трафика на прокси-сервере API, реализующем политикуStatisticalCollector.
Диагностика
Если на прокси-сервере API, реализующем политику СтатистикаКоллектор, нет трафика, пользовательская переменная не будет отображаться в пользовательских отчетах.
Разрешение
Выполните несколько вызовов прокси-сервера API, который реализует политику СтатистикаКоллектор.
Подождите некоторое время и проверьте, отображаются ли пользовательские переменные в специальных параметрах в пользовательском отчете.
Если проблема не устранена, перейдите к разделу «Пользовательская переменная, не отправленная на сервер Postgres» .
Пользовательская переменная не передается на сервер Postgres
Диагностика
Когда пользовательская переменная создается в прокси-сервере API и выполняются вызовы API, переменная сначала сохраняется в памяти процессора сообщений. Затем процессор сообщений отправляет информацию о новой переменной в ZooKeeper, который, в свою очередь, отправляет ее на сервер Postgres для добавления ее в качестве столбца в базу данных Postgres.
Иногда уведомление от ZooKeeper может не дойти до сервера Postgres из-за проблем с сетью. Из-за этой ошибки пользовательская переменная может не отображаться в пользовательском отчете.
Чтобы определить, где отсутствует пользовательская переменная:
- Создайте дерево ZooKeeper с помощью следующей команды:
/opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
- Найдите пользовательскую переменную в выходных данных дерева ZooKeeper.
- Если пользовательская переменная существует в дереве ZooKeeper, выполните следующие команды, чтобы проверить, добавлена ли пользовательская переменная в базу данных Postgres:
- На узле Postgres войдите в PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- Запустите следующий SQL-запрос:
select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS where table_name = 'orgname.envname.fact';
- На узле Postgres войдите в PostgreSQL:
- Скорее всего, вы увидите, что столбец пользовательской переменной отсутствует в таблице фактов, что является причиной того, что он не отображается в пользовательских измерениях.
Разрешение
Решение № 1. Перезапустите сервер Postgres.
- Перезапустите сервер Postgres, чтобы заставить его прочитать всю информацию, относящуюся к Analytics, из Zookeeper:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
Если проблема не устранена, примените Решение № 2.
Решение № 2. Включите принудительное использование свойств на борту.
Включите свойство Forceonboard , выполнив следующие действия:
- Создайте файл
/opt/apigee/customer/application/postgres-server.properties
на компьютере сервера Postgres, если он еще не существует. - Добавьте в этот файл следующую строку:
conf_pg-agent_forceonboard=true
- Убедитесь, что этот файл принадлежит Apigee, используя следующую команду:
chown apigee:apigee /opt/apigee/customer/application/postgres-server.properties
- Перезапустите сервер Postgres:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- Если у вас более одного сервера Postgres, повторите описанные выше шаги на всех серверах Postgres.
- Отмените развертывание и разверните прокси-сервер API, который использует политикуStatisticolector.
- Запустите вызовы API.
- Проверьте, отображаются ли пользовательские переменные в специальных параметрах специального отчета.
Если проблема не устранена, обратитесь в службу поддержки Apigee Edge .