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

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
info

Symptom

Специальная переменная, созданная с помощью правила StatisticsCollector, не видна в разделе "Специальные параметры" в специальных отчетах Аналитики в новом интерфейсе Edge.

Сообщения об ошибках

Ошибок не обнаружено.

Возможные причины

В таблице ниже перечислены возможные причины этой проблемы.

Причина Для кого
Пользовательская переменная не соответствует стандартным рекомендациям Пользователи частного и общедоступного облака Edge
Отсутствие трафика в прокси API, реализующем правила StatisticsCollector Пользователи частного и общедоступного облака Edge
Пользовательская переменная не передается на сервер Postgres Пользователи Edge Private Cloud

Нажмите на ссылку в таблице, чтобы посмотреть возможные решения.

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

диагностика;

Если название специальной переменной, используемой в правиле StatisticsCollector, не соответствует стандартным требованиям (см. раздел Решение), она не будет показываться в специальных отчетах.

В приведенном ниже фрагменте кода видно, что в названии переменной "product id" есть пробел, поэтому она не будет отображаться в специальном параметре в специальном отчете.

  <StatisticsCollector name="publishPurchaseDetails">
    <Statistics>
      <Statistic name="productID" ref="product id" type="string">999999</Statistic>
    </Statistics>
  </StatisticsCollector>

Разрешение

Названия пользовательских переменных, используемых в правиле StatisticsCollector в прокси-сервере API, должны соответствовать следующим рекомендациям:

  • Названия могут содержать буквы [a-z], цифры [0-9] и символ подчеркивания "_".
  • В названиях нельзя использовать пробелы. Например, в приведенном выше примере кода название переменной должно быть изменено на product_id.
  • Регистр не учитывается.
  • Нельзя использовать зарезервированные ключевые слова, перечисленные в таблице по ссылке ниже. Например, нельзя использовать слово "user". Подробную информацию можно найти в разделе Ключевые слова SQL.

Если проблема не исчезнет, перейдите к разделу Нет трафика на прокси-сервере API, реализующем правило StatisticsCollector.

Нет трафика на прокси-сервере API, реализующем правило StatisticsCollector

диагностика;

Если на прокси-сервере API, который реализует правило StatisticsCollector, нет трафика, то пользовательская переменная не будет отображаться в специальных отчетах.

Разрешение

Выполните несколько вызовов прокси-сервера API, который реализует правило StatisticsCollector.

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

Если проблема не исчезнет, перейдите к разделу Пользовательская переменная не передается на сервер Postgres.

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

диагностика;

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

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