Пользовательская переменная не видна в пользовательских отчетах аналитики

Вы просматриваете документацию 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 из-за проблем с сетью. Из-за этой ошибки пользовательская переменная может не отображаться в пользовательском отчете.

Чтобы определить, где отсутствует пользовательская переменная:

  1. Создайте дерево ZooKeeper, используя следующую команду:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
  2. Найдите пользовательскую переменную в выходных данных дерева ZooKeeper.
  3. Если пользовательская переменная существует в дереве ZooKeeper, выполните следующие команды, чтобы проверить, добавлена ​​ли она в базу данных Postgres:
    1. На узле PostgreSQL войдите в PostgreSQL:
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    2. Выполните следующий SQL-запрос:
      select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS
        where table_name = 'orgname.envname.fact';
  4. Весьма вероятно, что вы обнаружите отсутствие столбца с пользовательской переменной в таблице фактов, что и является причиной его отсутствия в пользовательских измерениях.

Разрешение

Решение №1: Перезапустите сервер PostgreSQL.

  1. Перезапустите сервер Postgres, чтобы принудительно заставить его считать всю информацию, относящуюся к аналитике, из Zookeeper:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

    Если проблема сохраняется, примените решение № 2.

Решение №2: Включите свойство forceonboard.

Включите свойство forceonboard , выполнив следующие шаги:

  1. Если файл /opt/apigee/customer/application/postgres-server.properties еще не существует, создайте его на сервере Postgres.
  2. Добавьте в этот файл следующую строку:
    conf_pg-agent_forceonboard=true
  3. Убедитесь, что этот файл принадлежит Apigee, используя следующую команду:
    chown apigee:apigee /opt/apigee/customer/application/postgres-server.properties
  4. Перезапустите сервер Postgres:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  5. Если у вас несколько серверов PostgreSQL, повторите описанные выше шаги на всех серверах PostgreSQL.
  6. Удалите и снова разверните свой API-прокси, использующий политику StatisticsCollector.
  7. Выполните вызовы API.
  8. Проверьте, отображаются ли пользовательские переменные в пользовательских измерениях в пользовательском отчете.

Если проблема не исчезнет, ​​обратитесь в службу поддержки Apigee Edge .