istio-proxy访问日志是什么意思?

时间:2018-12-20 11:12:48

标签: kubernetes istio envoyproxy

我正在尝试通过查看istio-proxy访问日志(它记录每次访问)来对服务进行故障排除。但是,我找不到任何说明日志中每个条目含义的文档。

例如

  

[2018-12-20T11:09:42.302Z]“ GET / HTTP / 1.1” 200-0 614 0 0“ 10.32.96.32”“ curl / 7.54.0”“ 17b8f245-af00-4379-9f8f-a4dcd2f38c01 “” foo.com“” 127.0.0.1:8080“

上面的日志是什么意思?

已更新

我已经尝试过Vadim's answer,但是找不到日志格式数据。这是output json file。我有什么想念的吗? 我正在使用istio-1.0.0

3 个答案:

答案 0 :(得分:2)

Istio / Envoy访问日志带有默认格式。 这是默认格式

[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"\n

它与您提供的示例日志条目匹配。您可以在此处找到有关这些字段以及特使访问日志的更多详细信息 https://www.envoyproxy.io/docs/envoy/latest/configuration/access_log#default-format-string

答案 1 :(得分:1)

Istio代理访问日志的配置定义为envoy.http_connection_managerenvoy.tcp_proxy过滤器的一部分。要查看其配置,请运行:

istioctl proxy-config listeners <your pod> -n <your namespace> -o json

在HTTP的access_log中搜索envoy.http_connection_manager,在TCP中搜索access_log中的envoy.tcp_proxy

您将看到类似这样的内容:

 "filters": [
                {
                    "name": "envoy.http_connection_manager",
                    "config": {
                        "access_log": [
                            {
                                "config": {
                                    "format": "[%START_TIME%] \"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%\" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% \"%REQ(X-FORWARDED-FOR)%\" \"%REQ(USER-AGENT)%\" \"%REQ(X-REQUEST-ID)%\" \"%REQ(:AUTHORITY)%\" \"%UPSTREAM_HOST%\" %UPSTREAM_CLUSTER% %UPSTREAM_LOCAL_ADDRESS% %DOWNSTREAM_LOCAL_ADDRESS% %DOWNSTREAM_REMOTE_ADDRESS% %REQUESTED_SERVER_NAME%\n",
                                    "path": "/dev/stdout"

检查日志属性定义here

如果在上面的输出中未指定access_log的格式,则使用the default format

答案 2 :(得分:1)

以下是日志的格式:

\[%{TIMESTAMP_ISO8601:timestamp}\] \"%{DATA:method} (?:%{URIPATH:uri_path}(?:%{URIPARAM:uri_param})?|%{DATA:}) %{DATA:protocol}\" %{NUMBER:status_code} %{DATA:response_flags} \"%{**DATA:mixer_status**}\" %{NUMBER:bytes_received} %{NUMBER:bytes_sent} %{NUMBER:duration} (?:%{NUMBER:upstream_service_time}|%{DATA:tcp_service_time}) \"%{DATA:forwarded_for}\" \"%{DATA:user_agent}\" \"%{DATA:request_id}\" \"%{DATA:authority}\" \"%{DATA:upstream_service}\" %{DATA:upstream_cluster} %{DATA:upstream_local} %{DATA:downstream_local} %{DATA:downstream_remote} %{**DATA:requested_server**}

这是真实的日志:

[2019-09-05T06:55:32.008Z] "GET /solutionprofile/api/v1/health HTTP/1.1" 200 - "-" 0 16 10 10 "-" "kube-probe/1.12" "dc9ac3b2-2ee4-4a4b-967e-8f0cc3953e80" "10.228.69.15:3000" "127.0.0.1:3000" inbound|80|http|hp-solutionprofile-service.hp.svc.cluster.local - 10.228.69.15:3000 10.228.69.1:59692 -