Вы просматриваете документацию по 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 из-за проблем с сетью. Из-за этой ошибки пользовательская переменная может не отображаться в специальном отчете.
Чтобы определить, где отсутствует пользовательская переменная, выполните следующие действия:
- Сгенерируйте дерево 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, чтобы заставить его прочитать всю информацию, относящуюся к Аналитике, из 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
- Если у вас несколько серверов Postgres, повторите описанные выше действия на каждом из них.
- Отмените развертывание и разверните прокси-сервер API, который использует правило StatisticsCollector.
- Выполните вызовы API.
- Проверьте, отображаются ли пользовательские переменные в специальных параметрах в специальном отчете.
Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge.