我正在尝试通过查看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
答案 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_manager
或envoy.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 -