全部产品

ASK中采集日志到日志服务

更新时间:2020-09-27 16:41:33

前提条件:

通过日志服务采集ECI日志

采集ECI日志的操作步骤:

1、登录容器服务管理控制台

2、在选择的Serverless集群菜单下,单击左侧导航栏中的工作负载。

之后我们可以使用镜像或者模版两种方式设置pod的环境变量,对于已经创建好的Pod,可以采用更新模版的方式。

3、新建并部署以下YAML模板。采集配置通过ENV来暴露,为了收集文件日志,也需要创建对应的volumeMounts和volumes。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: alpine
  name: alpine
spec:
  replicas: 2
  selector:
    matchLabels:
      app: alpine
  template:
    metadata:
      labels:
        app: alpine
    spec:
      containers:
      - image: alpine
        imagePullPolicy: Always
        args:
        - ping
        - 127.0.0.1
        name: alpine
        env:
        ######### 配置 环境变量 ###########
        ######### 配置 project,如果使用k8s集群默认的project可以不填 ###########
        - name: aliyun_logs_test-stdout_project
          value: k8s-log-xxx
        - name: aliyun_logs_test-file_project
          value: k8s-log-xxx
        ######### 配置 机器组,如果使用k8s集群默认的project下的默认机器组可以不填 ###########
        - name: aliyun_logs_test-stdout_machinegroup
          value: k8s-group-app-alpine
        - name: aliyun_logs_test-file_machinegroup
          value: k8s-group-app-alpine
        ######### 设置标准输出和错误输出的logstore test-stdout###########
        - name: aliyun_logs_test-stdout
          value: stdout
        ######### 将/log/*.log目录下的日志收集到logstore test-file###########
        ######### 注:除了标准输出和错误输出,其他的自定义收集目录必须挂载emptyDirVolume,否者无法收集###########
        ######### 注:比如/log/目录就需要挂载emptyDirVolume,如下###########
        - name: aliyun_logs_test-file
          value: /log/*.log
        ######### 日志保留时间,只对单个logstore生效 ###########
        - name: aliyun_logs_test-stdout_ttl
          value: "7"
        ######### 日志分区数,只对单个logstore生效 ###########
        - name: aliyun_logs_test-stdout_shard
          value: "2"
        #################################
        ######### 配置vulume mount,该volume就是为了上面的自定义的日志收集目录#######
        volumeMounts:
        - name: volume-sls
          mountPath: /log
      volumes:
      - name: volume-sls
        emptyDir: {}

通过环境变量来创建您的采集配置,所有与配置相关的环境变量都采用 aliyun_logs_ 作为前缀

其中有部分需要根据您的需求进行配置:

样例中创建了两个采集配置,其中 aliyun_logs_test-stdout 这个 env 表示创建一个 Logstore 名字为 test-stdout,日志采集路径为 stdout 的配置,从而将容器的标准输出采集到 test-stdout 这个 Logstore 中。

  • 配置非 stdout 的采集路径

​非stdout 的采集路径需要在此部分创建相应的 volumeMounts,示例中采集配置添加了对/log/*.log 的采集,因此相应地添加了/log/的volumeMounts。

更多关于环境变量的高级配置,请参考:sls-config.yaml

4、当YAML编写完成后,单击 创建 ,即可将相应的配置交由Kubernetes集群执行。访问日志服务控制台,可以查看已经配置的收集日志。

标准输出收集效果:

sls-stdout

文件收集效果:

sls-file