Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
Пользовательская переменная, созданная с помощью политики StatisticsCollector, не отображается в разделе «Пользовательские измерения» в пользовательских отчетах Analytics в интерфейсе Edge.
Сообщения об ошибках
Ошибок не обнаружено.
Возможные причины
В таблице ниже перечислены возможные причины этой проблемы:
| Причина | Для |
|---|---|
| Пользовательская переменная не соответствует стандартным рекомендациям. | Пользователи частных и публичных облачных решений на периферии сети |
| Отсутствует трафик на API-прокси, реализующем политику StatisticsCollector. | Пользователи частных и публичных облачных решений на периферии сети |
| Пользовательская переменная не передается на сервер PostgreSQL. | Пользователи Edge Private Cloud |
Нажмите на ссылку в таблице, чтобы увидеть возможные решения данной проблемы.
Пользовательская переменная не соответствует стандартным рекомендациям.
Диагноз
Если имя пользовательской переменной, используемое в политике StatisticsCollector, не соответствует стандартным рекомендациям (см. Решение ), то оно не будет отображаться в пользовательских отчетах.
Приведённый ниже фрагмент кода показывает, что имя переменной "product id" содержит пробел, поэтому оно не будет отображаться в разделе "Пользовательские измерения" в пользовательском отчёте.
<StatisticsCollector name="publishPurchaseDetails"> <Statistics> <Statistic name="productID" ref="product id" type="string">999999</Statistic> </Statistics> </StatisticsCollector>
Разрешение
Имена пользовательских переменных, используемые в политике StatisticsCollector в рамках API-прокси, должны соответствовать следующим рекомендациям:
- В именах могут быть [az][0-9] и '_'.
- В именах не должно быть пробелов. Например, в приведенном выше примере кода имя переменной следует изменить на "product_id".
- Дело игнорируется.
- Зарезервированные ключевые слова, перечисленные в таблице по следующей ссылке, не допускаются. Например, ключевое слово "user" не допускается. Для получения дополнительной информации см. раздел "Ключевые слова SQL ".
Если проблема сохраняется, перейдите к разделу «Отсутствие трафика на API-прокси при применении политики StatisticsCollector» .
Отсутствует трафик на API-прокси, реализующем политику StatisticsCollector.
Диагноз
Если на API-прокси, реализующем политику StatisticsCollector, отсутствует трафик, то пользовательская переменная не будет отображаться в пользовательских отчетах.
Разрешение
Выполните несколько вызовов к API-прокси, реализующему политику StatisticsCollector.
Подождите некоторое время и проверьте, отображаются ли пользовательские переменные в пользовательских измерениях в пользовательском отчете.
Если проблема сохраняется, перейдите к разделу «Пользовательская переменная не передается на сервер Postgres» .
Пользовательская переменная не передается на сервер PostgreSQL.
Диагноз
Когда в API-прокси создается пользовательская переменная и выполняются API-запросы, переменная сначала сохраняется в памяти обработчика сообщений. Затем обработчик сообщений отправляет информацию о новой переменной в ZooKeeper, который, в свою очередь, отправляет ее на сервер Postgres для добавления в качестве столбца в базу данных Postgres.
Иногда уведомления от ZooKeeper могут не доходить до сервера Postgres из-за проблем с сетью. Из-за этой ошибки пользовательская переменная может не отображаться в пользовательском отчете.
Чтобы определить, где отсутствует пользовательская переменная:
- Создайте дерево ZooKeeper, используя следующую команду:
/opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
- Найдите пользовательскую переменную в выходных данных дерева ZooKeeper.
- Если пользовательская переменная существует в дереве ZooKeeper, выполните следующие команды, чтобы проверить, добавлена ли она в базу данных Postgres:
- На узле PostgreSQL войдите в 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';
- На узле PostgreSQL войдите в PostgreSQL:
- Весьма вероятно, что вы обнаружите отсутствие столбца с пользовательской переменной в таблице фактов, что и является причиной его отсутствия в пользовательских измерениях.
Разрешение
Решение №1: Перезапустите сервер PostgreSQL.
- Перезапустите сервер Postgres, чтобы принудительно заставить его считать всю информацию, относящуюся к аналитике, из Zookeeper:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
Если проблема сохраняется, примените решение № 2.
Решение №2: Включите свойство forceonboard.
Включите свойство 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
- Если у вас несколько серверов PostgreSQL, повторите описанные выше шаги на всех серверах PostgreSQL.
- Удалите и снова разверните свой API-прокси, использующий политику StatisticsCollector.
- Выполните вызовы API.
- Проверьте, отображаются ли пользовательские переменные в пользовательских измерениях в пользовательском отчете.
Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge .