<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
问题
通过403 Forbidden
适用于 Envoy 的 Apigee Adapter。
错误消息
系统会显示以下错误消息:
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 产品。 | Edge 公有云和私有云用户 |
API 产品中缺少目标服务 URI 路径 | 目标服务的 URI 路径缺失或未添加到 API 下的 API 产品中 资源。 | Edge 公有云和私有云用户 |
API 产品中缺少主机名 | Apigee 下的 API 产品缺少客户端 API 请求中提供的主机名 远程服务目标 | Edge 公有云和私有云用户 |
请求标头中缺少 API 密钥 | API 密钥不是在 x-api-key HTTP 标头中传递的, |
Edge 公有云和私有云用户 |
API 密钥无效 | 随请求一起传递的 API 密钥无效。 | Edge 公有云和私有云用户 |
Apigee Adapter for Envoy 无法 与远程服务 API 代理通信 | Apigee Adapter for Envoy 无法与远程服务 API 代理通信。 | Edge 公有云和私有云用户 |
Envoy 代理无法通信 使用适用于 Envoy 的 Apigee Adapter | Envoy 代理无法与适用于 Envoy 的 Apigee Adapter 通信 | Edge 公有云和私有云用户 |
准备工作
- 验证您是否收到了
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
启用调试日志:
请确保您已在适用于 Envoy 的 Apigee Adapter 中启用调试日志,以捕获有关 错误。如果不是,请停止 Apigee Adapter for Envoy 并重新启动,然后启用调试日志 创建 Deployment
apigee-remote-service-envoy -c config.yaml -l debug
原因:未启用 API 产品
如果未启用 Envoy Proxy 使用的特定 API 产品, 调用 API 调用的特定环境。
诊断
请按照以下步骤诊断问题:
- 按照上述第 2 步中的说明启用调试日志。
- 检查适用于 Envoy 的 Apigee Adapter 日志,并验证是否显示了以下消息
在
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
: 适用于 Envoy 的 Apigee Adapter。如需详细了解适用于 Envoy 日志记录的 Apigee Adapter,请参阅 日志记录。
- 如果您在授权 API 请求时看到了此消息,则很可能表示 没有为您所在的特定环境启用特定的 API 产品, 进行 API 调用
- 请执行以下步骤来验证这一点:
<ph type="x-smartling-placeholder">
- </ph>
- 登录 Edge 界面。
- 在发布 >API 产品页面上,点击您创建的特定 API 产品, 用于配置适用于 Envoy 的 Apigee Adapter。
- 验证您发出 API 请求的特定环境是否为 已在 API 产品中启用
- 如果未在 API 产品中启用特定环境,那就是 来解决此问题。
- 如果特定环境已启用,请转到 <ph type="x-smartling-placeholder"></ph> 原因:API 产品中缺少目标服务 URI 路径。
分辨率
如果 API 产品中未启用特定环境,请执行以下步骤以 解决问题:
- 登录 Edge 界面。
- 在发布 >API 产品页面中,点击您使用的具体 API 产品 ,了解如何配置适用于 Envoy 的 Apigee Adapter。
- 在 API 产品 >产品名称页面中,点击修改。
- 选择您想在其中发出 API 请求的特定环境, 选中相关环境对应的复选框
- 点击保存。
原因:API 产品中缺少目标服务 URI 路径
如果未在所使用的特定 API 产品中指定目标的 URI 路径,就会出现此错误 由 Envoy Proxy 提供。
诊断
请按照以下步骤诊断问题:
- 按照上述第 2 步中的说明启用调试日志。
-
检查适用于 Envoy 的 Apigee Adapter 日志,并验证以下消息是否正常 在 部分下,为与特定目标关联的特定 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
这表示在 API 产品中找不到路径
/echo1
ENVOY-PRODUCT-1
。 - 如果您在
no path: REQUEST_URI_PATH
Apigee Adapter for Envoy 调试日志,则正是造成此问题的原因。如果没有,请前往 原因:API 产品中缺少主机名。
分辨率
如果没有将特定请求 URI 添加到特定目标的 API 产品,则 请执行以下步骤解决此问题:
- 登录 Edge 界面。
- 在发布 >API 产品页面上,点击您创建的特定 API 产品, 用于配置适用于 Envoy 的 Apigee Adapter。
- 在 API 产品 >产品名称页面中,点击修改。
- 在 API 资源窗格中,将 API 请求 URI 添加到 API 产品。
- 监控适用于 Envoy 的 Apigee Adapter 日志并等待 Apigee Adapter for Envoy 获取更新后的 API 产品。然后,再发送一个 API 请求以验证修正情况。
原因:API 产品中缺少主机名
如果目标主机名和端口组合未添加到 Envoy 代理使用的 API 产品。
诊断
请按照以下步骤诊断问题:
- 按照上述第 2 步中的说明启用调试日志。
检查适用于 Envoy 的 Apigee Adapter 日志,并验证以下消息是否正常 在 部分下,为与特定目标关联的特定 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
未在 API 产品ENVOY-PRODUCT-1
中找到。- 如果适用于 Envoy 的 Apigee Adapter 日志在授权请求时包含带有消息
no targets: HOSTNAME:PORT
的条目,则这是 问题的起因。如果没有,请前往 原因:请求标头中缺少 API 密钥。
分辨率
如果目标主机名和端口组合未添加到 API 产品,请执行 请按照以下步骤解决此问题:
- 登录 Edge 界面。
- 在发布 >API 产品页面上,点击您创建的特定 API 产品, 用于配置适用于 Envoy 的 Apigee Adapter。
- 在 API 产品 >产品名称页面中,点击修改。
在 Apigee 远程服务目标窗格中,添加目标主机名和 端口,然后点击保存。
如果您在界面中没有看到 Apigee 远程服务目标部分, 为 API 产品添加自定义属性,并使用 命名为
apigee-remote-service-targets
,并将 HOSTNAME:PORT 值。例如: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": [] }
<ph type="x-smartling-placeholder">- 完成上述任务后,监控 Apigee Adapter for Envoy 日志并等待 Apigee Adapter for Envoy 会提取更新后的 API 产品。然后,发送另一个 API 以验证问题是否已解决。
原因:请求标头中缺少 API 密钥
如果 API 密钥未作为请求标头的一部分进行传递,就会出现此错误。
诊断
请按照以下步骤诊断问题:
- 按照上述第 2 步中的说明启用调试日志。
- 检查适用于 Envoy 的 Apigee Adapter 日志,并验证您是否看到
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 密钥不会作为 请求标头。 - 如果适用于 Envoy 的 Apigee Adapter 日志在
Authenticate error
部分下包含显示消息[missing authentication]
的日志条目,则这是 问题发生的原因。如果没有,请前往 原因:API 密钥无效。
分辨率
如果错误 [missing authentication]
显示在
Apigee Adapter for Envoy 日志,请执行以下步骤解决此问题:
- 检查客户端是否已使用 HTTP 标头
x-api-key
发送 API 密钥, API 请求。否则,请求客户端在 HTTP 标头中发送 API 密钥x-api-key
。 - 检查适用于 Envoy 的 Apigee Adapter 配置文件,并验证默认的 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 密钥标头名称已修改为
api-key
。在这种情况下,您需要将 API 密钥作为标头的一部分进行传递api-key
。 - 如果默认 API 密钥标头名称已更改,则请求客户端使用更新后的 指定 API 密钥标头名称,然后发送另一个 API 请求,并验证其能否解决问题。
原因:API 密钥无效
如果将无效的 API 密钥作为请求标头的一部分进行传递,就会发生此错误。
诊断
请按照以下步骤诊断问题:
- 按照上述第 2 步中的说明启用调试日志。
- 检查适用于 Envoy 的 Apigee Adapter 日志,并验证您是否看到相应消息
[permission denied]
(位于Authenticate error
部分下)。 这通常在适配器获取 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 密钥无效。
- 如果适用于 Envoy 的 Apigee Adapter 日志在
Authenticate error
部分下包含带有[permission denied]
的日志条目,则表示: 随请求传递的 API 密钥无效,这是导致问题的原因。 如果没有,请前往 原因:适用于 Envoy 的 Apigee Adapter 无法与远程服务 API 代理通信。
分辨率
如果在适用于 Envoy 的 Apigee Adapter 日志的 Authenticate
error
部分下观察到消息 [permission denied]
,请执行以下步骤
来解决该问题:
- 请对照在 应用已关联到 API 产品。
- 如果客户端使用的 API 密钥无效,则请求客户端发送有效的 API 密钥。
- 如果客户端使用的 API 密钥有效,并且您仍看到 HTTP
403
错误,请与 Apigee Edge 支持团队联系,以进一步调查。
原因:Apigee Adapter for Envoy 无法与远程服务 API 代理通信
如果适用于 Envoy 的 Apigee Adapter 无法与远程设备通信,则会出现此错误 Service API 代理。
诊断
请按照以下步骤诊断问题:
- 按照上述第 2 步中的说明启用调试日志。
-
检查适用于 Envoy 的 Apigee Adapter 日志,并验证您是否看到以下消息:
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
在此示例中,适用于 Envoy 的 Apigee Adapter 无法与 远程服务 API 代理,因为远程服务器 API 代理中提供的主机名 错误
no such host
表明网址无效。 - 如果 Apigee Adapter for Envoy 日志包含带有消息
no such host
的日志条目,那么这就是导致此问题的原因。如果没有,请前往 <ph type="x-smartling-placeholder"></ph> 原因:Envoy 代理无法与 Apigee Adapter for Envoy 通信。
分辨率
如果适用于 Envoy 的 Apigee Adapter 日志中显示上述错误,请执行以下操作: 解决此问题的步骤:
检查适用于 Envoy 的 Apigee Adapter 配置文件,并验证指定的 远程服务 API 代理网址有效。
如果不是,请停止 Apigee Adapter for Envoy,并修复 启动适用于 Envoy 的 Apigee Adapter,然后发送另一个 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
- 验证是否已在相关 Edge 中部署
remote-service
API 代理 环境如果没有,请在相关 Edge 中部署remote-service
API 代理 然后重试 - 验证适用于 Envoy 的 Apigee Adapter 与
remote-service
API 代理端点。如有任何网络连接 请与您的网络团队联系,并尝试解决问题。
原因:Envoy 代理无法与适用于 Envoy 的 Apigee Adapter 通信
诊断
请按照以下步骤诊断问题:
确保您已在 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
- 检查适用于 Envoy 的 Apigee Adapter 日志,并验证是否存在包含以下消息的日志条目:
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 无法与 由于
connection failure
原因,适用于 Envoy 的 Apigee Adapter。 connection failure
可能是由多种原因造成的。 我们来看一下每种情况。
场景 1:适配器进程未运行
如果适用于 Envoy 的 Apigee Adapter 进程未运行,则可能会发生此错误。
- 通过执行以下命令,验证适用于 Envoy 的 Apigee Adapter 进程是否正在运行
命令。如果适用于 Envoy 的 Apigee Adapter 进程正在运行,则会出现以下结果:
命令应该会列出来
ps -ef | grep apigee-remote-service-envoy
- 如果它没有运行,这就是问题的原因所在。
分辨率
- 如果适用于 Envoy 的 Apigee Adapter 进程未运行,请启动 适用于 Envoy 的 Apigee Adapter。
- 请再次发出 API 请求,并验证问题是否已解决。
场景 2:适配器进程未在特定端口上进行监听
如果适用于 Envoy 的 Apigee Adapter 进程未在特定端口上进行监听, 就会发生此错误
如果适用于 Envoy 的 Apigee Adapter 进程正在运行,请验证是否存在监听套接字的套接字
端口 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 上没有套接字监听,这可能就是导致此问题的原因。
分辨率
- 停止适用于 Envoy 的 Apigee Adapter,然后重新启动。
- 请再次发出 API 请求,并验证问题是否已解决。
场景 3:Envoy 和 Apigee Adapter for Envoy 之间的网络连接
- 验证 Envoy 和 Apigee Adapter for Envoy 之间的网络连接:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
如果 telnet 可以与 Apigee Adapter for Envoy 建立 TCP 连接 系统将显示类似于以下内容的输出:
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 组织和环境
使用 Edge API 读取 API 产品定义:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
参考文档:Apigee Edge API
使用
remote-service
Apigee Edge 界面。请重现此问题并共享 Trace 会话 XML 文件。Apigee Adapter for 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
- 使用
curl
命令向 Envoy 代理发送的 API 请求 (curl
命令的完整输出):curl -v ENVOY_PROXY_ENDPOINT
- 使用
curl
命令(完整的curl
命令的输出):curl -v TARGET_SERVICE_ENDPOINT