简介:
istio-proxy也是我们常说的sidecar,istio默认使用envoy注入的,envoy的日志级别包括trace, debug, info, warning, error, critical, off
Envoy 访问日志记录了通过 Envoy 进行请求 / 响应交互的相关记录,可以方便地了解具体通信过程和调试定位问题。
修改日志级别的几种方式
全局配置
istio配置都是在configmap中的,可以通过修改configmap来修改全局的proxy日志级别:
开启 Envoy 访问日志,执行以下命令修改 istio 配置
1 | kubectl -n istio-system edit configmap istio |
1 | data: |
其中,accessLogEncoding表示 accesslog 输出格式,Istio 预定义了 TEXT 和 JSON 两种日志输出格式。默认使用 TEXT,通常改成 JSON 以提升可读性;accessLogFile:表示 accesslog 输出位置,通常指定到 /dev/stdout (标准输出),以便使用 kubectl logs 来查看日志。
保存yaml文件后,配置随即生效, 不需要重启。
也可以使用istioctl来配置全局proxy日志级别
1 | istioctl install --set profile=demo --set values.global.proxy.logLevel=debug |
istioctl命令动态调整
istio默认使用的warning级别的日志,可以通过istioctl命令来指定sidecar修改日志级别
1 | istioctl -n [namespace] proxy-config log [podname] --level debug |
可以更细粒度的控制proxy的各个组件的日志级别
1 | istioctl -n [namespace] proxy-config log [podname] --level grpc:trace,config:debug |
当然,proxy-config也可以缩写,istioctl都可以识别到的
1 | istioctl -n [namespace] pc log [podname] --level debug |
envoy有提供admin的api,直接进入到容器内容curl调用接口来调整也是可以的
1 | kubectl exec -n [namespace] [podname] -c istio-proxy -- curl -XPOST -s -o /dev/null http://localhost:15000/logging?level=debug |
这里istio-proxy是istio部署sidecar时固定的容器名字
可以通过一下命令查看帮助文档
1 | istioctl pc log --help |
annotation方式调整
可以在k8s yaml配置文件中通过annotation的方式配置日志级别
1 | template: |
配置envoy componentLogLevel
我们可以在pod中指定annotation来设置envoy内部各个组件的日志级别
1 | template: |
执行以下命令,查看Envoy日志
1 | kubectl logs xxx -c istio-proxy |
1 | { |
日志详细参数
| 名称 | HTTP | TCP |
|---|---|---|
| authority | 请求授权头 | 未实现(“-”) |
| bytes_received | 接收到消息体字节数 | 在连接上从下游接收的字节数 |
| bytes_sent | 发送的包体字节数 | 在连接上发送给下游的字节数 |
| connection_termination_details | 连接中断详情 | 连接中断详情 |
| downstream_local_address | 下游连接的本地地址 | 下游连接的本地地址 |
| downstream_remote_address | 下游连接的远程地址 | 下游连接的远程地址 |
| duration | 请求从起始时间到最后一个字节发出的持续总时长(以毫秒为单位) | 下游连接的持续总时长(以毫秒为单位) |
| method | HTTP请求方法 | 未实现(“-”) |
| path | HTTP请求路径 | 未实现(“-”) |
| protocol | 协议,目前不是 HTTP/1.1 就是 HTTP/2 | 未实现(“-”) |
| request_id | 由envoy创建的 X-REQUEST-ID 请求头的值 | 未实现(“-”) |
| requested_server_name | 设置在 ssl 连接套接字上表示服务器名称指示 (SNI) 的字符值 | 未实现(“-”) |
| response_code | HTTP 响应码 | 未实现(“-”) |
| response_code_details | TTP 响应状态码详情提供关于响应状态码的附加信息。 | 未实现(“-”) |
| response_flags | 响应或者连接的附加详情 | 响应或者连接的附加详情 |
| route_name | 路由名 | 路由名 |
| start_time | 请求开始时间(包括毫秒) | 下游连接开始时间(包括毫秒) |
| upstream_cluster | 上游主机所属的上游集群 | 上游主机所属的上游集群 |
| upstream_host | 上游主机 URL | 上游主机 URL |
| upstream_local_address | 上游连接的本地地址 | 上游连接的本地地址 |
| upstream_transport_failure_reason | 如果上游因传输套接字而连接失败,从传输套接字中提供失败原因。 | 未实现(“-”) |
| user_agent | User-Agent请求头的值 | 未实现(“-”) |
| x_forwarded_for | X-Forwarded-For请求头的值 | 未实现(“-”) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小五的个人杂货铺!
