Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
При вызове через адаптер Apigee для Envoy прокси-сервер Envoy выдает ошибку HTTP 403 Forbidden .
Сообщение об ошибке
Отображается следующее сообщение об ошибке:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
Возможные причины
Прокси-сервер Envoy выдаст ошибку HTTP 403 если возникнет одно из следующих условий:
| Причина | Описание | Инструкции по устранению неполадок, применимые для |
|---|---|---|
| API-продукт не включен. | API-продукт не активирован для данной среды. | Пользователи публичных и частных облачных сервисов на периферии сети |
| Отсутствует путь URI целевого сервиса в API продукта. | URI-путь целевого сервиса отсутствует или не добавлен к продукту API в разделе ресурсов API. | Пользователи публичных и частных облачных сервисов на периферии сети |
| В API-продукте отсутствует имя хоста. | В API-интерфейсе продукта в разделе «Цели удаленных служб Apigee» отсутствует имя хоста, указанное в запросе к клиентскому API. | Пользователи публичных и частных облачных сервисов на периферии сети |
| Отсутствует ключ API в заголовке запроса. | Ключ API не передается в HTTP-заголовке x-api-key . | Пользователи публичных и частных облачных сервисов на периферии сети |
| Недействительный ключ API | Переданный в запросе API-ключ недействителен. | Пользователи публичных и частных облачных сервисов на периферии сети |
| Адаптер Apigee для Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса. | Адаптер Apigee для Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса. | Пользователи публичных и частных облачных сервисов на периферии сети |
| Прокси-сервер Envoy не может установить связь с адаптером Apigee для Envoy. | Прокси-сервер Envoy не может установить связь с адаптером Apigee для Envoy. | Пользователи публичных и частных облачных сервисов на периферии сети |
Прежде чем начать
- Убедитесь, что вы получаете сообщение об ошибке
403 Forbiddenот прокси-сервера Envoy. Например:curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
Включить отладочные журналы:
Убедитесь, что в Apigee Adapter for Envoy включены отладочные журналы, чтобы получить более подробную информацию об ошибке. Если нет, остановите Apigee Adapter for Envoy и запустите его снова, включив отладочные журналы, используя следующую команду:
apigee-remote-service-envoy -c config.yaml -l debug
Причина: API-продукт не активирован.
Эта ошибка возникнет, если конкретный API-продукт, используемый прокси-сервером Envoy, не включен в той среде, в которой выполняются вызовы API.
Диагноз
Для диагностики проблемы выполните следующие действия:
- Включите отладочные журналы, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в разделе
Authorizing requestотображается следующее сообщение:product: API_PRODUCT_NAME not found
Пример вывода отладочного журнала:
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
Приведенный выше пример показывает, что продукт API
ENVOY-PRODUCT-1не был найден в адаптере Apigee для Envoy.Для получения дополнительной информации об адаптере Apigee для ведения журналов Envoy см. раздел «Ведение журналов» .
- Если вы видите это сообщение при авторизации запроса к API, то, скорее всего, это указывает на то, что конкретный продукт API не включен для конкретной среды, в которой вы выполняете вызовы API.
- Для проверки выполните следующие шаги:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация > Продукты API» щелкните по конкретному продукту API, который вы использовали для настройки адаптера Apigee для Envoy.
- Убедитесь, что в API-продукте включена поддержка той среды, в которой вы отправляете API-запросы.
- Если данная среда не включена в API-продукте, то это и является причиной проблемы.
- Если соответствующая среда уже включена, перейдите к разделу «Причина: Отсутствует путь URI целевого сервиса в API-продукте» .
Разрешение
Если в API-продукте не включена необходимая среда, выполните следующие действия для решения проблемы:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация > Продукты API» щелкните по конкретному продукту API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице «Продукты API > Название продукта» нажмите «Редактировать» .
- Для выбора нужной среды и выполнения API-запросов установите флажок напротив соответствующего параметра.
- Нажмите « Сохранить ».
Причина: Отсутствует путь URI целевого сервиса в API-продукте.
Эта ошибка возникнет, если путь URI целевого объекта не указан в конкретном API-продукте, используемом прокси-сервером Envoy.
Диагноз
Для диагностики проблемы выполните следующие действия:
- Включите отладочные журналы, как описано в шаге 2 выше.
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что для конкретного продукта API, связанного с конкретной целью, в разделе
Authorizing requestотображается следующее сообщение:no path: REQUEST_URI_PATH
Пример вывода отладочного журнала:
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
В приведенном примере вывода отображается следующее сообщение:
no path: /echo1
Это указывает на то, что путь
/echo1не найден в продукте APIENVOY-PRODUCT-1.- Если в журналах отладки адаптера Apigee для Envoy вы видите сообщение
no path: REQUEST_URI_PATH, то это и есть причина проблемы. В противном случае перейдите к разделу "Причина: Отсутствует имя хоста в продукте API" .
Разрешение
Если конкретный URI запроса не добавлен в API-продукт для конкретной цели, выполните следующие действия для решения проблемы:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация > Продукты API» щелкните по конкретному продукту API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице «Продукты API > Название продукта» нажмите «Редактировать» .
- В панели ресурсов API добавьте URI запроса API к продукту API.
- Отслеживайте журналы Apigee Adapter for Envoy и дождитесь, пока Apigee Adapter for Envoy получит обновленный API-продукт. После этого отправьте еще один API-запрос, чтобы проверить исправление.
Причина: Отсутствует имя хоста в API-продукте.
Эта ошибка возникнет, если комбинация целевого имени хоста и порта не будет добавлена к конкретному API-продукту, используемому прокси-сервером Envoy.
Диагноз
Для диагностики проблемы выполните следующие действия:
- Включите отладочные журналы, как описано в шаге 2 выше.
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что для конкретного продукта API, связанного с конкретной целью, в разделе
Authorizing requestотображается следующее сообщение:no targets: HOSTNAME:PORT
Пример вывода отладочного журнала:
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
Приведенный выше пример показывает, что комбинация имени хоста и порта
httpbin1:8080не была найдена в продукте APIENVOY-PRODUCT-1.- Если в логах Apigee Adapter for Envoy при авторизации запроса содержится запись с сообщением
no targets: HOSTNAME : PORT, то это и есть причина проблемы. В противном случае перейдите к разделу «Причина: Отсутствует ключ API в заголовке запроса» .
Разрешение
Если комбинация имени хоста и порта целевого объекта не добавлена в API-продукт, выполните следующие действия для решения проблемы:
- Войдите в пользовательский интерфейс Edge .
- На странице «Публикация > Продукты API» щелкните по конкретному продукту API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице «Продукты API > Название продукта» нажмите «Редактировать» .
В панели «Цели удаленных служб Apigee» добавьте имя хоста и порт целевой службы и нажмите «Сохранить» .
Если в пользовательском интерфейсе отсутствует раздел « Цели удаленных служб Apigee» , добавьте пользовательский атрибут к продукту API с именем
apigee-remote-service-targetsи укажите значение HOSTNAME : PORT используя Edge API. Например:curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \ -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type:application/json" \ -d \ { "apiResources": [ "/echo", "/verifyApiKey" ], "approvalType": "auto", "attributes": [ { "name": "access", "value": "public" }, { "name": "apigee-remote-service-targets", "value": "localhost:8080" } ], "createdAt": 1610435989556, "createdBy": "---masked---", "description": "", "displayName": "ENVOY-PRODUCT-1", "environments": [ "test" ], "lastModifiedAt": 1612234134060, "lastModifiedBy": "---masked---", "name": "ENVOY-PRODUCT-1", "proxies": [ "remote-service" ], "scopes": [] }- После выполнения вышеуказанной задачи отслеживайте журналы Apigee Adapter for Envoy и дождитесь, пока Apigee Adapter for Envoy получит обновленный продукт API. После этого отправьте еще один запрос к API, чтобы проверить исправление.
Причина: Отсутствует ключ API в заголовке запроса.
Эта ошибка возникнет, если ключ API не будет передан в заголовках запроса.
Диагноз
Для диагностики проблемы выполните следующие действия:
- Включите отладочные журналы, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в разделе
Authenticate errorотображается сообщение[missing authentication].Пример вывода отладочного журнала:
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
В приведенном выше примере выходных данных содержится сообщение
[missing authentication]. Это сообщение указывает на то, что ключ API не был передан в заголовке запроса. - Если в логах Apigee Adapter for Envoy в разделе
Authenticate errorсодержится запись с сообщением[missing authentication], то это и есть причина проблемы. В противном случае перейдите к разделу «Причина: Недействительный ключ API» .
Разрешение
Если в журналах Apigee Adapter for Envoy отображалась ошибка [missing authentication] , выполните следующие действия для устранения проблемы:
- Проверьте, отправил ли клиент ключ API, используя заголовок HTTP
x-api-keyв запросе к API. Если нет, запросите у клиента отправку ключа API в заголовке HTTPx-api-key. - Проверьте конфигурационный файл адаптера Apigee для Envoy и убедитесь, что имя заголовка ключа API по умолчанию
x-api-keyизменено, например:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-keyВ приведенном выше примере имя заголовка API Key по умолчанию изменено на
api-key. В этом случае вам необходимо передать ключ API в составе заголовкаapi-key. - Если имя заголовка ключа API по умолчанию было изменено, попросите клиента использовать обновленное имя заголовка ключа API, отправьте еще один запрос к API и проверьте, решит ли это проблему.
Причина: Недействительный ключ API
Эта ошибка возникнет, если в заголовке запроса будет передан недопустимый ключ API.
Диагноз
Для диагностики проблемы выполните следующие действия:
- Включите отладочные журналы, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в разделе
Authenticate errorотображается сообщение[permission denied]. Обычно это сообщение появляется после получения адаптером ключа API, о чем свидетельствует сообщениеfetchToken fetching: API_KEY.Пример вывода отладочного журнала:
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
В этом примере отправленный в API-запросе ключ API оказался недействительным.
- Если в логах Apigee Adapter for Envoy в разделе
Authenticate error» содержится запись[permission denied], это означает, что переданный в запросе ключ API недействителен и является причиной проблемы. В противном случае перейдите к разделу «Причина: Apigee Adapter for Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса» .
Разрешение
Если в логах адаптера Apigee для Envoy в разделе Authenticate error отображается сообщение [permission denied] , выполните следующие действия для решения проблемы:
- Проверьте ключ API, отправленный в запросе к API, и сравните его со значением ключа API, найденным в приложении, подключенном к продукту API.
- Если используемый клиентом API-ключ недействителен, запросите у клиента отправку действительного API-ключа.
- Если используемый клиентом ключ API действителен, но вы по-прежнему видите ошибку HTTP
403, обратитесь в службу поддержки Apigee Edge для дальнейшего расследования.
Причина: Адаптер Apigee для Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса.
Эта ошибка возникнет, если Apigee Adapter for Envoy не сможет связаться с API-прокси удаленной службы, если настроенный хост удаленной службы недействителен.
Диагноз
Для диагностики проблемы выполните следующие действия:
- Включите отладочные журналы, как описано в шаге 2 выше.
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что вы видите следующее сообщение:
Error retrieving products: REQUEST_URI: no such host
Пример вывода отладочного журнала:
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
В этом примере Apigee Adapter for Envoy не смог взаимодействовать с прокси-сервером API удаленного сервиса, поскольку имя хоста, указанное в URL-адресе прокси-сервера API удаленного сервера, недействительно, о чем свидетельствует ошибка
no such host.- Если в логах Apigee Adapter for Envoy содержится запись с сообщением
no such host, то это и есть причина проблемы. В противном случае перейдите к разделу «Причина: прокси-сервер Envoy не может связаться с Apigee Adapter for Envoy» .
Разрешение
Если в журналах Apigee Adapter for Envoy отображаются указанные выше ошибки, выполните следующие действия для устранения проблемы:
Проверьте конфигурационный файл адаптера Apigee для Envoy и убедитесь, что указанный URL-адрес прокси-сервера удаленного сервиса действителен.
В противном случае остановите Apigee Adapter for Envoy, исправьте URL-адрес прокси-сервера удаленного API в конфигурационном файле, запустите Apigee Adapter for Envoy, отправьте еще один API-запрос и проверьте правильность исправления.
Пример конфигурации:
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRET- Убедитесь, что прокси
remote-serviceразвернут в соответствующей среде Edge. Если нет, разверните проксиremote-serviceв соответствующей среде Edge и повторите попытку. - Проверьте сетевое соединение между адаптером Apigee для Envoy и конечной точкой прокси
remote-service. Если будут обнаружены проблемы с сетевым соединением, обратитесь к вашей сетевой команде и попытайтесь решить проблему.
Причина: Прокси-сервер Envoy не может установить связь с адаптером Apigee для Envoy.
Диагноз
Для диагностики проблемы выполните следующие действия:
Убедитесь, что в Envoy включены отладочные логи. Если нет, остановите Envoy и запустите его снова, включив отладочные логи. Затем отправьте еще один API-запрос.
Автономные развертывания:
envoy -c envoy-config.yaml -l debug
Развертывание на основе Kubernetes/Istio:
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в них есть запись со следующим сообщением:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
за которым следует следующее:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
Пример вывода отладочного журнала:
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
Приведенный выше пример показывает, что Envoy не смог установить связь с адаптером Apigee для Envoy по причине
connection failure. -
connection failureможет быть вызван несколькими причинами. Рассмотрим каждый из сценариев.
Сценарий №1: Процесс адаптера не запущен
Если процесс Apigee Adapter for Envoy не запущен, может возникнуть эта ошибка.
- Убедитесь, что процесс Apigee Adapter for Envoy запущен, выполнив следующую команду. Если процесс Apigee Adapter for Envoy запущен, результат выполнения следующей команды должен отобразить его.
ps -ef | grep apigee-remote-service-envoy
- Если программа не запускается, то в этом и заключается проблема.
Разрешение
- Если процесс Apigee Adapter for Envoy не запущен, запустите Apigee Adapter for Envoy.
- Отправьте еще один запрос к API и проверьте, устранена ли проблема.
Сценарий №2: Процесс адаптера не прослушивает указанный порт.
Если процесс Apigee Adapter for Envoy не прослушивает указанный порт, может возникнуть эта ошибка.
Если процесс Apigee Adapter for Envoy запущен, убедитесь, что на порту 5000 прослушивается сокет: APIGEE_ENVOY_ADAPTER_HOST :5000 . Для проверки можно использовать команду netstat :
sudo netstat -lnp | grep 5000
Пример выходных данных:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
Если на порту 5000 нет прослушивающего сокета, это может быть причиной проблемы.
Разрешение
- Остановите Apigee Adapter for Envoy и запустите его снова.
- Отправьте еще один запрос к API и проверьте, устранена ли проблема.
Сценарий №3: Сетевое соединение между Envoy и адаптером Apigee для Envoy.
- Проверьте сетевое соединение между Envoy и адаптером Apigee для Envoy:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
Если telnet сможет установить TCP-соединение с адаптером Apigee для Envoy, отобразится вывод, аналогичный следующему:
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- Если при подключении через telnet появляется ошибка "
Connection timed out, это указывает на проблему с сетевым соединением между Envoy и Apigee Adapter for Envoy.
Разрешение
Если вы обнаружите какие-либо проблемы с сетевым подключением между Envoy и Apigee Adapter for Envoy, пожалуйста, обратитесь к вашей сетевой команде и попытайтесь решить проблему.
Если проблема сохраняется, перейдите к разделу «Необходимо собрать диагностическую информацию» .
Необходимо собрать диагностическую информацию.
Если проблема сохраняется после выполнения вышеуказанных инструкций, соберите следующую диагностическую информацию, а затем обратитесь в службу поддержки Apigee Edge :
Использованный продукт Apigee:
Пример: Apigee Edge Cloud, Apigee OPDK, Apigee hybrid, Apigee X
- Организация и среда Apigee
Определение продукта API, считанное с помощью Edge API:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
Справочная информация: API Apigee Edge
Запустите сеанс трассировки в прокси-сервере API
remote-serviceиспользуя пользовательский интерфейс Apigee Edge. Воспроизведите эту проблему и предоставьте XML-файл сеанса трассировки.Справочная информация: Использование инструмента «Трассировка» | Apigee Edge
Адаптер Apigee для журналов Envoy (полные журналы за указанный период времени)
Автономные развертывания:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Развертывание на основе Kubernetes/Istio:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- API-запрос, отправленный на прокси-сервер Envoy с помощью команды
curl(полный вывод командыcurl):curl -v ENVOY_PROXY_ENDPOINT
- API-запрос, отправленный целевому сервису с помощью команды
curl(полный вывод командыcurl):curl -v TARGET_SERVICE_ENDPOINT