istio入门系列之获取Envoy访问日志
Istio 最简单的日志类型是 Envoy 的访问日志。Envoy 代理打印访问信息到标准输出。Envoy 容器的标准输出能够通过 kubectl logs 命令打印出来。
下面我们来学习一下如何查看Envoy的日志来进行分析问题。首先我们部署一个sleep和httpbin的服务,通过sleep来调用httpbin,通过查看httpbin的envoy的日志分析业务请求。
首先我们查看下Envoy的日志访问是否开启,我们查看下istio这个configmap中的配置
1 |
|
参数配置项 | 说明 |
---|---|
global.proxy.accessLogFile | 日志输出文件,空为关闭输出 |
global.proxy.accessLogEncoding | 日志编码格式:JSON、TEXT |
global.proxy.accessLogFormat | 配置显示在日志中的字段,空为默认格式 |
global.proxy.logLevel | 日志级别,空为 warning,可选trace、debug、info、warning、error、critical、off |
如果你的日志中下面的配置项没有开启,然后配置一下istio这个cm,重新加载一下istiod这个pod既可。这里我们已经开启了日志输出,用的是JSON格式。
下面我们来对httpbin来进行访问
1 |
|
我们分别查看下sleep和httpbin的日志
1 |
|
下面我们来分析一下对应的日志,envoy的日志主要分为下面的部分
sleep客户端的日志格式化如下
1 |
|
httpbin服务端的日志格式化如下
1 |
|
这个有个非常重要的字段是RESPONSE_FLAGS,主要有以下几种含义
- UH:upstream cluster 中没有健康的 host,503
- UF:upstream 连接失败,503
- UO:upstream overflow(熔断)
- NR:没有路由配置,404
- URX:请求被拒绝因为限流或最大连接次数
istio入门系列之获取Envoy访问日志
https://www.niewx.cn/2020/12/05/2020-12-05-Get-Envoy-access-log-of-istio-entry-series/