获取 Envoy 访问日志
按照安装指南中的说明安装 Istio。
启动 示例,以获取发送请求的测试源。如果您启用了自动 sidecar 注入,运行以下命令部署示例应用程序:
否则,在使用以下命令部署 sleep
应用程序之前,手动注入 sidecar:
您可以使用任何安装了 curl
的 pod 作为测试源。
- 为了发送请求,您需要创建
SOURCE_POD
环境变量来存储源 pod 的名称:
$ export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})
- 启动 样例程序。
如果您启用了 sidecar 自动注入,通过以下命令部署 httpbin
服务:
否则,您必须在部署 httpbin
应用程序前进行手动注入,部署命令如下:
$ kubectl apply -f <(istioctl kube-inject -f @samples/httpbin/httpbin.yaml@)
修改 istio
配置文件:
$ istioctl manifest apply --set values.global.proxy.accessLogFile="/dev/stdout"
configmap "istio" replaced
您也可以通过设置 为 JSON
或 TEXT
来在两种格式之间切换。
您也许希望通过设置 accessLogFormat
来自定义访问日志的格式。
这三种参数也可以通过来进行配置:
global.proxy.accessLogFile
global.proxy.accessLogEncoding
- 从
sleep
向httpbin
发送一个请求:
- 检查
sleep
的日志:
$ kubectl logs -l app=sleep -c istio-proxy
[2019-03-06T09:31:27.354Z] "GET /status/418 HTTP/1.1" 418 - "-" 0 135 11 10 "-" "curl/7.60.0" "d209e46f-9ed5-9b61-bbdd-43e22662702a" "httpbin:8000" "172.30.146.73:80" outbound|8000||httpbin.default.svc.cluster.local - 172.21.13.94:8000 172.30.146.82:60290 -
- 检查 的日志:
$ kubectl logs -l app=httpbin -c istio-proxy
[2019-03-06T09:31:27.360Z] "GET /status/418 HTTP/1.1" 418 - "-" 0 135 5 2 "-" "curl/7.60.0" "d209e46f-9ed5-9b61-bbdd-43e22662702a" "httpbin:8000" "127.0.0.1:80" inbound|8000|http|httpbin.default.svc.cluster.local - 172.30.146.73:80 172.30.146.82:38618 outbound_.8000_._.httpbin.default.svc.cluster.local
请注意,与请求相对应的信息分别出现在源(sleep
)和目标(httpbin
)的 Istio 代理日志中。您可以在日志中看到 HTTP 动词(GET
)、HTTP 路径(/status/418
)、响应码(418
) 和其他请求相关信息。
关闭 和 httpbin 服务:
编辑 istio
配置文件然后设置 accessLogFile
为 ""
。
$ istioctl manifest apply
概要说明 Mixer 的插件架构。
了解如何配置代理以向 Jaeger 发送追踪请求。
怎样配置代理才能把追踪请求发送到 LightStep。
描述 Istio 策略执行和遥测机制的配置模型。