第 3 章 集群日志记录
3.1. 为 Serving 和 Eventing 配置日志设置 复制链接链接已复制到粘贴板!
您可以使用 KnativeServing 和 KnativeEventing 自定义资源(CR)为 OpenShift Serverless Serving 和 OpenShift Serverless Eventing 配置日志记录。日志记录的级别由指定的 loglevel 值决定。
3.1.1. 支持的日志级别 复制链接链接已复制到粘贴板!
支持以下 loglevel 值:
| 日志级别 | 描述 |
|---|---|
|
| 细粒度调试 |
|
| 普通日志记录 |
|
| 意外但非关键错误 |
|
| 关键错误;正常操作期间出现意外错误 |
|
| 在 debug 模式中,触发 panic (crash) |
将 debug 级别用于生产环境可能会对性能造成负面影响。
3.1.2. 配置日志设置 复制链接链接已复制到粘贴板!
您可以在 KnativeServing 自定义资源(CR)和 KnativeEventing CR 中配置 Serving 和 Eventing 的日志记录。
流程
通过在
KnativeServing和KnativeEventingCR 中设置或修改loglevel值来配置 Serving 和 Eventing 的日志设置。以下是两个示例配置,所有可能的日志选项都设置为 levelinfo:KnativeServing CR
apiVersion: operator.knative.dev/v1beta1 kind: KnativeServing metadata: name: knative-serving namespace: knative-serving spec: config: logging: loglevel.controller: "info" loglevel.autoscaler: "info" loglevel.queueproxy: "info" loglevel.webhook: "info" loglevel.activator: "info" loglevel.hpaautoscaler: "info" loglevel.net-certmanager-controller: "info" loglevel.net-istio-controller: "info" loglevel.net-kourier-controller: "info"KnativeEventing CR
apiVersion: operator.knative.dev/v1beta1 kind: KnativeEventing metadata: name: knative-eventing namespace: knative-eventing spec: config: logging: loglevel.controller: "info" loglevel.eventing-webhook: "info" loglevel.inmemorychannel-dispatcher: "info" loglevel.inmemorychannel-webhook: "info" loglevel.mt-broker-controller: "info" loglevel.mt_broker_filter: "info" loglevel.mt_broker_ingress: "info" loglevel.pingsource-mt-adapter: "info"
3.1.3. 配置请求日志设置 复制链接链接已复制到粘贴板!
您可以在 KnativeServing 自定义资源(CR)的 observability 字段中为服务配置请求日志记录。
有关配置请求日志记录的可用参数的详情,请参考"请求日志记录参数"。
流程
通过修改
KnativeServingCR 中的observability字段来配置服务的请求日志记录:KnativeServingCR 示例apiVersion: operator.knative.dev/v1beta1 kind: KnativeServing metadata: name: knative-serving namespace: knative-serving # ... spec: config: observability: logging.enable-request-log: true logging.enable-probe-request-log: true logging.request-log-template: '{"httpRequest": {"requestMethod": "{{.Request.Method}}", "requestUrl": "{{js .Request.RequestURI}}", "requestSize": "{{.Request.ContentLength}}", "status": {{.Response.Code}}, "responseSize": "{{.Response.Size}}", "userAgent": "{{js .Request.UserAgent}}", "remoteIp": "{{js .Request.RemoteAddr}}", "serverIp": "{{.Revision.PodIP}}", "referer": "{{js .Request.Referer}}", "latency": "{{.Response.Latency}}s", "protocol": "{{.Request.Proto}}"}, "traceId": "{{index .Request.Header "X-B3-Traceid"}}"}' # ...
3.1.4. 请求日志记录的参数 复制链接链接已复制到粘贴板!
下表描述了用于配置请求日志记录的参数。
| 参数 | 类型 | 描述 |
|---|---|---|
|
|
布尔值( |
设置为 |
|
|
布尔值( |
设置为 |
|
|
Go | 确定请求日志的形成。使用一行以防止将日志分成多个记录。 |
logging.request-log-template 参数包括以下功能:
-
request 是一个
http.,代表服务器收到的 HTTP 请求。Request response 代表 HTTP 响应,并包括以下字段:
-
Code是 HTTP 状态代码。 -
size是响应的大小,以字节为单位。 -
latency是响应延迟(以秒为单位)。
-
修订包含修订详情,并包括以下字段:-
name是修订版本的名称。 -
namespace是修订版本的命名空间。 -
service是服务的名称。 -
configuration 是
配置的名称。 -
podname 是托管该修订版本的 pod 的名称。 -
podIP是托管 pod 的 IP 地址。
-