使用日志服务

更新时间: 2023-07-10 12:27:19

工作流集群集成阿里云日志服务SLS,收集工作流运行过程中Pod产生的日志,上报到您账号下的SLS服务中。日志收集后,无论Pod是否被删除,您都可以通过Argo CLI和Argo UI查看工作流Pod的日志。如果工作流被删除,您可以通过SLS日志服务控制台查看日志。本文介绍如何使用工作流集群的日志服务功能。

索引

注意事项

  • 如果工作流集群开启oss-artifact-repository,同时设置archiveLogs: true,即工作流集群已配置使用oss-artifact-repository存储日志,则SLS日志收集不生效。

  • 相比oss-artifact-repository收集,SLS日志收集具有自动的日志生命周期管理(可配置日志保留的天数),强大的查询能力。如需通过SLS收集日志,可以将archiveLogs: true删除。

开启日志服务

工作流集群创建后,系统会自动创建一个名为k8s-log-<clusterid>的Project,用来收集工作流集群日志。如果日志服务Project不存在,请自行创建名为k8s-log-<clusterid>的Project。关于创建Project的具体操作,请参见创建Project

您可以通过阿里云 Argo CLI或者通过直接创建日志服务CR两种方式开启日志服务。

通过阿里云Argo CLI开启

阿里云Argo CLI完全兼容开源Argo CLI,增强了日志能力,可以获取工作流已删除Pod的日志。

根据不同的操作系统选择对应的版本下载,并重命名为Argo。

执行以下命令,配置日志服务参数。

argo config sls
Please input log retention days. Default is 7 days.
10

预期输出:

Start to config SLS for your cluster.
Created AliyunLogConfig CR workflow-sls-config in default namespace.
Created SLS logstore workflow-logstore in SLS project k8s-log-<clusterid>, log retention days is 10 days

预期输出表明,日志服务配置成功。所有工作流日志将被收集到名为workflow-logstore的日志库(Logstore)中。

您可以登录日志服务控制台,查找名为k8s-log-<clusterid>的Project,然后查看对应的workflow-logstore

通过创建日志服务CR开启

执行以下命令,创建阿里云日志配置CR。日志服务控制器会自动创建一个名为k8s-log-<clusterid>的Project和一个名为workflow-logstore的日志库(Logstore)。

cat << EOF | kubectl apply -f -
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  name: workflow-sls-config
  namespace: default
spec:
  # log will store for 5 days
  lifeCycle: 5
  logstore: workflow-logstore
  logtailConfig:
    inputType: plugin
    configName: workflow-sls-config
    inputDetail:
      plugin:
        inputs:
        - detail:
            Stderr: true
            Stdout: true
          type: service_docker_stdout
EOF

访问日志服务

通过Argo CLI访问日志服务

如需通过Argo CLI访问已删除Pod的日志,则需要先开启Argo Server并配置相关参数。

说明
  • 通过日志服务获取工作流日志,必须指定<pod-name>

  • 若需要访问其他Namespace的Workflow/Pod,则获取KUBE_TOKEN时,需要使用对应Namespace。

  1. 执行以下命令,开启Argo Server并配置参数。

    export ARGO_SERVER=argo.<cluster id>.<region>.alicontainer.com:2746
    export KUBE_TOKEN=$(k create token default -n default --duration 24h)
    export ARGO_TOKEN="Bearer $KUBE_TOKEN"
    export ARGO_INSECURE_SKIP_VERIFY=true
  2. 执行以下命令,获取工作流Pod的日志。

    argo logs <workflow-name> <pod-name>

通过Argo UI访问日志服务

无论工作流Pod是否被删除,您都可以通过Argo UI访问Pod的日志。如果Pod被删除,则访问SLS获取日志并显示到Argo UI,如下图所示。

访问日志

关闭日志服务

  1. 执行以下命令,删除AliyunLogConfig CR。

    kubectl delete aliyunlogconfigs.log.alibabacloud.com workflow-sls-config -n default
  2. 登录日志服务控制台,将名为workflow-logstore的日志库删除。

阿里云首页 容器服务 Kubernetes 版 ACK 相关技术圈