Загрузка данных о трафике API в Apigee (бета-версия)

Все клиенты Edge for Private Cloud должны отправлять в Apigee статистику трафика прокси API. Apigee рекомендует клиентам загружать эту информацию раз в день, например создав задание cron.

Отправлять данные нужно только для рабочих версий API, но не для тех, которые находятся в разработке или на этапе тестирования. В большинстве случаев для рабочих API в Edge определяются определенные организации или среды. Данные, которые вы отправляете, предназначены только для этих производственных организаций и сред.

Чтобы помочь вам загрузить эти данные, Apigee предоставляет бета-версию утилиты командной строки apigee-analytics-collector. Эта утилита отправляет отчет об объеме вызовов API в Apigee. Каждая установка Edge для частного облака может использовать эту утилиту для получения данных о трафике и отправки отчетов в Apigee.

Обязательно: перед загрузкой данных обратитесь в службу поддержки Apigee

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

Как установить apigee-analytics-collector

Утилита apigee-analytics-collector представляет собой пакет RPM, который устанавливается с помощью утилиты apigee-service.

Где установить

Узел, на котором вы устанавливаете утилиту apigee-analytics-collector, может быть любым узлом, имеющим доступ к API управления Edge на сервере управления Edge. Его можно установить непосредственно на сервере управления, на другом узле установки Edge или на отдельном узле, если этот узел может отправлять запросы API на сервер управления.

Требования к доступу в интернет

Установите утилиту apigee-analytics-collector на компьютер с доступом к интернету. После этого утилита apigee-analytics-collector сможет загружать данные непосредственно в Apigee.

Если нет узла, у которого есть доступ к Edge Management API на сервере Edge Management Server и к внешнему интернету, вы можете использовать Edge Management API, чтобы сохранить данные о трафике локально. Затем вам нужно перенести данные на компьютер с доступом к интернету, чтобы загрузить их в Apigee. В этом случае утилита apigee-analytics-collector не нужна. Подробнее о том, как вручную загрузить данные в Apigee…

Установка

Чтобы установить утилиту apigee-analytics-collector, используйте следующую команду: Поскольку вы устанавливаете RPM-файл, эту команду должен выполнить пользователь root или пользователь с полным доступом sudo. Если у пользователя есть полный доступ sudo, он может выполнять те же операции, что и пользователь root.

/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector install

Запуск apigee-analytics-collector

В этом разделе рассказывается, как запустить утилиту apigee-analytics-collector.

Как настроить пользователя для запуска apigee-analytics-collector

Вы должны запустить apigee-analytics-collector как пользователь без прав root. У этого пользователя должен быть полный доступ к sudo для пользователя apigee.

Чтобы предоставить пользователю полный доступ sudo к пользователю apigee, используйте команду visudo, чтобы изменить файл sudoers и добавить:

analyticsUser        ALL=(apigee)      NOPASSWD: ALL

где analyticsUser – имя пользователя, запустившего утилиту apigee-analytics-collector.

После установки утилиты apigee-analytics-collector и настройки пользователя вы можете протестировать утилиту, выполнив команду справки для утилиты apigee-analytics-collector:

/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic --help

Информация, необходимая для запуска apigee-analytics-collector

Чтобы выполнить команду apigee-analytics-collector и пересылать данные в Apigee, вам потребуется следующая информация:

  • apigee_mgmt_api_uri – базовый URL Edge API на сервере управления. Обычно URL имеет следующий формат:

    http://ms_IP:8080/v1

    где ms_IP – IP-адрес или сервер управления, а 8080 – порт, используемый Edge API. Если вы создали запись DNS для API Edge, URL будет иметь следующий вид:

    http://ms_DNS/v1

    Если вы включили TLS для API управления Edge, то он будет иметь следующий вид:

    https://ms_IP:8080/v1
    https://ms_DNS/v1
  • apigee_mgmt_api_email – адрес электронной почты аккаунта с доступом к Edge /stats API. Чаще всего это адрес электронной почты системного администратора Edge или администратора организации для ваших производственных организаций.
  • apigee_mgmt_api_password: пароль Edge для аккаунта, указанного в apigee_mgmt_api_email.
  • apigee_analytics_client_id и apigee_analytics_secret – учетные данные для загрузки данных в Apigee. Отправьте запрос в службу поддержки Apigee Edge, чтобы получить apigee_analytics_client_id и apigee_analytics_secret.

Примеры команд

Ниже приведен пример команды для получения данных о трафике для всех организаций и сред в установке Edge и загрузки этих данных в Apigee. Обратите внимание, как вы используете apigee-service, чтобы выполнить команду apigee-analytics-collector:

/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic \
--apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \
--apigee_mgmt_api_email $ae_username \
--apigee_mgmt_api_password $ae_password \
--apigee_analytics_client_id $apigee_analytics_client_id \
--apigee_analytics_secret $apigee_analytics_secret

Обратите внимание, что команда содержит всю необходимую информацию, например apigee_analytics_client_id и apigee_analytics_secret.

Результаты должны быть представлены в следующем формате:

[
  {
    "org": "myOrg",
    "env": "prod",
    "time_range_start": "08/27/2016 00:00",
    "time_range_end": "08/30/2016 00:00",
    "response": [
      {
        "store_org_env_metrics_hourly_v4": 1
      }
    ]
  },
  {
    "org": "VALIDATE",
    "env": "test",
    "time_range_start": "08/27/2016 00:00",
    "time_range_end": "08/30/2016 00:00",
    "response": [
      {
        "store_org_env_metrics_hourly_v4": 1
      }
    ]
  }
]

Чтобы управлять действиями команды, используйте параметры командной строки. Чтобы указать организации и среды, которые нужно включить в сгенерированные данные, используйте следующие варианты:

  • -i, --include_orgs comma-separated list of items
  • -x, --exclude_orgs comma-separated list of items
  • -n, --include_envs comma-separated list of items
  • -e, --exclude_envs comma-separated list of items

Например, чтобы указать только производственные организации и среды, используйте параметры -i (или --include_orgs) и -n (или --include_envs)):

/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod \
--apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \
--apigee_mgmt_api_email $ae_username \
--apigee_mgmt_api_password $ae_password \
--apigee_analytics_client_id $apigee_analytics_client_id \
--apigee_analytics_secret $apigee_analytics_secret

В этом примере вы собираете данные только из рабочей среды myOrg.

Чтобы вывести данные на экран и проверить их перед отправкой в Apigee, используйте параметр -S:

/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod -S \
  --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \
  --apigee_mgmt_api_email $ae_username \
  --apigee_mgmt_api_password $ae_password \
  --apigee_analytics_client_id $apigee_analytics_client_id \
  --apigee_analytics_secret $apigee_analytics_secret

Вариант -S позволяет не загружать данные в Apigee. Затем вы можете повторно выполнить команду без параметра -S, чтобы отправить данные в Apigee.

Использовать вариант -S может быть полезно, если вы хотите показывать разные типы данных локально. Apigee требует загружать только данные о трафике API, но вариант -D позволяет показывать данные о продуктах API, разработчиках, приложениях или прокси API. В приведенном ниже примере используются параметры -D и -S, чтобы локально отобразить данные разработчика:

/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod -S -D devs \
  --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \
  --apigee_mgmt_api_email $ae_username \
  --apigee_mgmt_api_password $ae_password \
  --apigee_analytics_client_id $apigee_analytics_client_id \
  --apigee_analytics_secret $apigee_analytics_secret

Добавьте параметр -v, чтобы получить подробный вывод, и параметр -R, чтобы посмотреть команды curl, сгенерированные apigee-analytics-collector:

/opt/apigee/apigee-service/bin/apigee-service apigee-analytics-collector export traffic -i myOrg -n prod -S -R -v \
  --apigee_mgmt_api_uri http://192.168.56.103:8080/v1 \
  --apigee_mgmt_api_email $ae_username \
  --apigee_mgmt_api_password $ae_password \
  --apigee_analytics_client_id $apigee_analytics_client_id \
  --apigee_analytics_secret $apigee_analytics_secret

В следующем разделе приведен полный список параметров командной строки.

Параметры команд

В таблице ниже перечислены все параметры утилиты apigee-analytics-collector.

Команда Описание
-h, --help

Информация об использовании выходных данных

-D, --dimension dimension

Параметр трафика, который нужно собирать. Допустимые значения:

  • apiproducts
  • apiproxy (по умолчанию)
  • apps
  • devs
-d, --days days

Количество дней, за которые нужно собрать данные, начиная с текущей даты. Значение по умолчанию – 3.

Если вы задали свойство -d, не указывайте свойства -s и -z, чтобы задать диапазон времени.

-m, --apigee_mgmt_api_uri apigee_mgmt_api_uri

URL для Edge Management API.

-u, --apigee_mgmt_api_email apigee_mgmt_api_email

Адрес электронной почты аккаунта с доступом к API Edge /stats. Обычно это адрес электронной почты системного администратора Edge или администратора организации для ваших производственных организаций.

-p, --apigee_mgmt_api_password apigee_mgmt_api_password

Пароль, связанный с аккаунтом электронной почты API управления Edge, указанным в параметре -u.

-i, --include_orgs items

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

-x, --exclude_orgs items

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

-n, --include_envs items

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

-e, --exclude_envs items

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

-o, --output path

Путь и название файла, в который будут сохранены выходные данные.

-s, --time_range_start time_range_start

Временной диапазон, с которого нужно начать запрос статистики трафика, в формате "MM/DD/YYYY HH:MM".

Если вы задали свойство -d, не указывайте свойства -s и -z, чтобы задать диапазон времени.

-z, --time_range_end time_range_end

Конец временного диапазона для запроса статистики трафика в формате "04/01/2016 24:00".

Если вы задали свойство -d, не указывайте свойства -s и -z, чтобы задать диапазон времени.

-t, --time_unit time_unit

Единица времени для данных о дорожной обстановке. Значение по умолчанию: hour. Допустимые единицы времени:

  • second
  • minute
  • hour (по умолчанию)
  • day
  • week

Если вы зададите для параметра -t значение week, а для параметра -d – 365, то Apigee вернет большой объем данных, сгруппированных в 52 отдельные записи (по одной на каждую неделю).

-S, --standard_output

Записывает выходные данные в терминал (stdout), а не загружает их в Apigee.

-c, --apigee_analytics_client_id apigee_analytics_client_id

Ваш идентификатор для загрузки данных в Apigee. Чтобы получить его, отправьте запрос в службу поддержки Apigee Edge.

-r, --apigee_analytics_secret apigee_analytics_secret

Секрет для загрузки данных в Apigee. Чтобы получить его, отправьте запрос в службу поддержки Apigee Edge.

-R, --include_curl_commands

Включите в выходные данные сгенерированные команды curl для отладки.

-v, --verbose

Показать подробный вывод.

Как вручную загрузить данные в Apigee

Apigee рекомендует установить утилиту apigee-analytics-collector на компьютере с внешним доступом к интернету. После этого утилита apigee-analytics-collector сможет загружать данные непосредственно в Apigee.

Если у компьютера нет доступа к интернету, используйте Edge Management API, чтобы собрать данные о трафике, а затем загрузите их в Apigee с помощью команд curl с компьютера, подключенного к интернету. Вам нужно повторить этот процесс для каждой рабочей организации и среды в установке Edge.

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

curl -X GET -u apigee_mgmt_api_email:apigee_mgmt_api_password \
"http://ms_IP:8080/v1/organizations/org_name/environments/env_name/stats/apiproxy?select=sum(message_count)&timeRange=MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM&timeUnit=hour"

В этой команде используется API Edge Get API message count. В этой команде:

  • apigee_mgmt_api_email:apigee_mgmt_api_password – адрес электронной почты аккаунта с доступом к API Edge /stats.
  • ms_IP – это IP-адрес или DNS-имя сервера управления Edge.
  • org_name и env_name задают организацию и среду.
  • apiproxy – это параметр, который группирует показатели по прокси API.
  • MM/DD/YYYY%20HH:MM~MM/DD/YYYY%20HH:MM&timeUnit=hour указывает диапазон времени, разделенный на единицы времени, в которых собираются показатели. Обратите внимание, что в команде curl для обозначения пробелов в диапазоне времени используется шестнадцатеричный код %20.

Например, чтобы получить данные о количестве сообщений прокси-сервера API за каждый час в течение 24 часов, используйте следующий вызов API.

curl -X GET -u apigee_mgmt_api_email:apigee_mgmt_api_password \
"http://192.168.56.103:8080/v1/organizations/myOrg/environments/prod/stats/apiproxy?select=sum(message_count)&timeRange=01%2F01%2F2018%2000%3A00~01%2F02%2F2018%2000%3A00&timeUnit=hour"

(Обратите внимание, что в timeRange содержатся символы, закодированные в URL.)

Вы должны увидеть ответ в следующем формате:

{
  "environments" : [ {
    "dimensions" : [ {
      "metrics" : [ {
        "name" : "sum(message_count)",
        "values": [
                {
                  "timestamp": 1514847600000,
                  "value": "35.0"
                },
                {
                  "timestamp": 1514844000000,
                  "value": "19.0"
                },
                {
                  "timestamp": 1514840400000,
                  "value": "58.0"
                },
                {
                  "timestamp": 1514836800000,
                  "value": "28.0"
                },
                {
                  "timestamp": 1514833200000,
                  "value": "29.0"
                },
                {
                  "timestamp": 1514829600000,
                  "value": "33.0"
                },
                {
                  "timestamp": 1514826000000,
                  "value": "26.0"
                },
                {
                  "timestamp": 1514822400000,
                  "value": "57.0"
                },
                {
                  "timestamp": 1514818800000,
                  "value": "41.0"
                },
                {
                  "timestamp": 1514815200000,
                  "value": "27.0"
                },
                {
                  "timestamp": 1514811600000,
                  "value": "47.0"
                },
                {
                  "timestamp": 1514808000000,
                  "value": "66.0"
                },
                {
                  "timestamp": 1514804400000,
                  "value": "50.0"
                },
                {
                  "timestamp": 1514800800000,
                  "value": "41.0"
                },
                {
                  "timestamp": 1514797200000,
                  "value": "49.0"
                },
                {
                  "timestamp": 1514793600000,
                  "value": "35.0"
                },
                {
                  "timestamp": 1514790000000,
                  "value": "89.0"
                },
                {
                  "timestamp": 1514786400000,
                  "value": "42.0"
                },
                {
                  "timestamp": 1514782800000,
                  "value": "47.0"
                },
                {
                  "timestamp": 1514779200000,
                  "value": "21.0"
                },
                {
                  "timestamp": 1514775600000,
                  "value": "27.0"
                },
                {
                  "timestamp": 1514772000000,
                  "value": "20.0"
                },
                {
                  "timestamp": 1514768400000,
                  "value": "12.0"
                },
                {
                  "timestamp": 1514764800000,
                  "value": "7.0"
                }
              ]
            }
          ],
          "name" : "proxy1"
      } ],
    "name" : "prod"
  } ],
  "metaData" : {
    "errors" : [ ],
    "notices" : [ "query served by:53dab80c-e811-4ba6-a3e7-b96f53433baa", "source pg:6b7bab33-e732-405c-a5dd-4782647ce096", "Table used: myorg.prod.agg_api" ]
  }
}

Чтобы загрузить эти данные в Apigee с компьютера, подключенного к интернету, используйте следующую команду curl:

curl -X POST -H 'Content-Type:application/json' \
  -u apigee_analytics_client_id:apigee_analytics_secret \
  https://nucleus-api-prod.apigee.com/v1/apigee-analytics-cli-api/traffic/orgs/org_name/apis -d '"environments"...'

Где:

  • apigee_analytics_client_id:apigee_analytics_secret укажите учетные данные для загрузки данных в Apigee, полученные от Apigee.
  • org_name – название организации.
  • "environments"... содержит результаты команды curl, которую вы использовали для сбора статистики выше.