使用日志服务
工作流集群集成阿里云日志服务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。
Darwin:下载阿里云Argo CLI。
Linux:下载阿里云Argo CLI。
执行以下命令,配置日志服务参数。
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。
执行以下命令,开启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
执行以下命令,获取工作流Pod的日志。
argo logs <workflow-name> <pod-name>
通过Argo UI访问日志服务
无论工作流Pod是否被删除,您都可以通过Argo UI访问Pod的日志。如果Pod被删除,则访问SLS获取日志并显示到Argo UI,如下图所示。

关闭日志服务
执行以下命令,删除AliyunLogConfig CR。
kubectl delete aliyunlogconfigs.log.alibabacloud.com workflow-sls-config -n default
登录日志服务控制台,将名为workflow-logstore的日志库删除。