本文介绍如何开通Ingress访问日志中心,将Ingress日志实时采集到日志服务中并进行可视化分析。
前提条件
已安装日志组件。具体操作,请参见安装Logtail日志组件。默认情况下,在创建Kubernetes集群时自动安装日志组件。
步骤1:部署Ingress采集配置
日志服务采集配置针对Kubernetes进行了CRD扩展,alibaba-log-controller组件会根据您定义的AliyunLogConfig CRD自动创建日志服务相关采集配置和报表资源。
- 在Kubernetes集群中,定义AliyunLogConfig CRD配置。说明
- 请确保日志组件alibaba-log-controller版本不低于0.2.0.0-76648ee-aliyun。
如果您在应用了CRD配置后要更新组件版本,请在更新组件版本后,删除该CRD配置并重新应用。
- 此处的CRD配置只对ACK默认的Ingress Controller中的访问日志格式生效。如果您修改过Ingress Controller的访问日志格式,请修改此处CRD配置中的正则表达式提取processor_regex部分,具体修改内容请参见通过DaemonSet-CRD方式采集容器日志中的CRD配置。
- 如果您当前没有其他系统依赖访问日志,则推荐您将访问日志格式设置为日志服务推荐的格式。设置方式:执行kubectl edit configmap -n kube-system nginx-configuration命令修改configmap,将其中的log-format-upstream字段修改为如下内容:
log-format-upstream: $the_real_ip - [$the_real_ip] - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] $upstream_addr $upstream_response_length $upstream_response_time $upstream_status $req_id $host
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # your config name, must be unique in you k8s cluster name: k8s-nginx-ingress spec: # logstore name to upload log logstore: nginx-ingress # product code, only for k8s nginx ingress productCode: k8s-nginx-ingress # logtail config detail logtailConfig: inputType: plugin # logtail config name, should be same with [metadata.name] configName: k8s-nginx-ingress inputDetail: plugin: inputs: - type: service_docker_stdout detail: IncludeLabel: io.kubernetes.container.name: nginx-ingress-controller Stderr: false Stdout: true processors: - type: processor_regex detail: KeepSource: false Keys: - client_ip - x_forward_for - remote_user - time - method - url - version - status - body_bytes_sent - http_referer - http_user_agent - request_length - request_time - proxy_upstream_name - upstream_addr - upstream_response_length - upstream_response_time - upstream_status - req_id - host - proxy_alternative_upstream_name NoKeyError: true NoMatchError: true Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s*(\S*)\s*\[*([^]]*)\]*.* SourceKey: content
- 请确保日志组件alibaba-log-controller版本不低于0.2.0.0-76648ee-aliyun。
- 部署Ingress采集配置。您可以选择如下任意一种方式进行部署:
- 方式1:执行kubectl命令完成部署。
- 方式2:将步骤1中的AliyunLogConfig CRD配置保存为nginx-ingress.yaml文件,执行kubectl apply -n kube-system -f命令完成部署。
- 方式3:使用编排模板完成部署。
- 登录容器服务管理控制台。
- 将步骤1中的AliyunLogConfig CRD配置保存为编排模板。具体操作,请参见编排模板管理。
- 基于您所创建的模板创建应用。具体操作,请参见通过编排模板创建Linux应用。
其中命名空间选择为您所在集群的默认命名空间。
步骤2:添加日志中心
- 登录日志服务控制台。
- 在日志应用区域,单击Ingress日志中心。
- 在巡检管理页签中,单击添加。
- 在添加日志中心面板中,配置如下参数,并单击确定。
参数 说明 日志中心名称 配置日志中心名称。 项目Project 选择您已创建的Project。 日志库Logstore 选择您已创建的Logstore,该Logstore需与步骤1:部署Ingress采集配置中配置的Logstore保持一致。