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

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

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

  1. Создайте дерево ZooKeeper с помощью следующей команды:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
  2. Найдите пользовательскую переменную в выходных данных дерева ZooKeeper.
  3. Если пользовательская переменная существует в дереве ZooKeeper, выполните следующие команды, чтобы проверить, добавлена ​​ли пользовательская переменная в базу данных Postgres:
    1. На узле Postgres войдите в 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. Перезапустите сервер Postgres.

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

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

Решение № 2. Включите принудительное использование свойств на борту.

Включите свойство 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. Если у вас более одного сервера Postgres, повторите описанные выше шаги на всех серверах Postgres.
  6. Отмените развертывание и разверните прокси-сервер API, который использует политикуStatisticolector.
  7. Запустите вызовы API.
  8. Проверьте, отображаются ли пользовательские переменные в специальных параметрах специального отчета.

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