本文介紹如何開通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保持一致。