注意:以下文档只适用于TOP接口,请谨慎使用!
聚石塔控制台-运维中心-集群管理,一键集成SLS,后台会在集群上安装SLS组件(集群管理的logtail)
成功集成后:
1.SLS侧会创建一个k8s-log-{集群id}的project
2.集群中运行一个alibaba-log-controller;
3.集群中运行一个logtail的DaemonSet,每个ECS节点上都会起一个logtail进程
应用日志的采集,需要做一些配置才能接入,主要有三种方法,任选其一:
yaml中配置,原生的deployment中指定相关配置即可;
页面上部署配置进行配置;
SLS控制台手动配置;
注:前两种接入方式,比较快捷方便,但是默认为“极简模式”采集,SLS控制台手动配置可以满足更丰富的采集需求。各个接入方式请看下面的文档:
目前暂时不支持在页面中进行配置,只支持通过open api进行发布。通过指定容器中的env、volumns和volumeMounts等来做一个采集配置。这里面具体涉及哪些主要的配置项呢,先看一个完整的例子:
apiVersion: apps/v1beta2 kind: Deployment metadata: labels: app: tomcat-sls-file name: tomcat-sls-file namespace: tomcat spec: replicas: 2 selector: matchLabels: app: tomcat-sls-file template: metadata: labels: app: tomcat-sls-file spec: containers: - env: # 设置环境变量,aliyun_logs_{key},key可以自己指定唯一标识,例如此处key为'tomcat-catalinaaa' # value值表示要采集的日志文件或目录。如果是采集标准输出,填stdout就行 - name: aliyun_logs_tomcat-catalinaaa value: /usr/local/tomcat/logs/catalina.2020-01-19.log # 设置环境变量,aliyun_logs_{key}_logstore,key为上面一个env指定的 # value值表示要采集到的logstore,没有的话会自动创建 - name: aliyun_logs_tomcat-catalinaaa_logstore value: tomcat-catalinaaa # 设置环境变量,aliyun_logs_{key}_project,如果不设置该env,则使用的是k8s-log-{集群id}这个project # value值表示要采集到的project,没有的话会自动创建 - name: aliyun_logs_tomcat-catalinaaa_project value: new-app-project # 设置环境变量,aliyun_logs_{key}_tags,设置sls 日志数据的标签,用于筛选 # value值表示要设置的标签,键值对形式 - name: aliyun_logs_tomcat-catalinaaa_tags value: app=app110 image: 'tomcat:latest' name: tomcat-sls-file resources: requests: cpu: 250m memory: 512Mi # 容器中将需要采集的目录进行挂载 volumeMounts: - mountPath: /usr/local/tomcat/logs/ name: volumn-sls-catalina # 定义一个emptyDir的volume volumes: - emptyDir: {} name: volumn-sls-catalina
主要是设置volumes和volumeMounts。如果是采集标准输出,则不需要设置。主要目的是将需要采集的容器文件目录挂载出来。
关于volumns和volumeMounts如何配置,这里不再赘述,参考例子就行。
对于环境变量,主要涉及这四个
aliyun_logs_{key},aliyun_logs_{key}_logstore,aliyun_logs_{key}_project,aliyun_logs_{key}_tags
需要注意的是点是,
如果需要用到后面三个变量,则第一个一定要指定,因为需要把key定义出来(value为要采集的文件或目录);
如果不设置aliyun_logs_{key}_logstore,那么会把aliyun_logs_{key}中的key作为logstore,例如下面的配置
更多环境变量:环境变量高级配置
可以看到,在我们指定的project new-app-project中,自动创建了一个logstore tomcat-catalinaaaa,日志记录上打上了相应的TAG.
特别的,
如果不设置aliyun_logs_{key}_project变量去指定project,那么日志采集使用的project为 k8s-log-{集群id};
上述的logstore和采集配置均为自动创建,无需提前创建,采集配置为极简模式(按行),如果需要更丰富的采集方式,可以前往日志服务控制台进行“手动配置”
应用-发布-部署配置(编辑)
每一行代表一个日志采集任务,填写好logstore的名称和要采集的文件就行
注:
1.这里的日志默认存储到集群所对应的Project中
2.logstore的名称要符合阿里云SLS的命名标准
1.日志库名称仅支持小写字母、数字、连字符(-) 2.必须以小写字母和数字开头和结尾 3.名称长度为3-63个字符
3.日志路径要符合阿里云SLS的标准
指定文件夹下所有符合文件名称的文件都会被监控到(包含所有层次的目录),文件名称可以是完整名,也支持通配符模式匹配。 Linux文件路径只支持/开头,例:/apsara/nuwa/.../app.Log, Windows文件路径只支持盘符开头,例如:C:\Program Files\Intel\...\*.Log
4.特别的,如果要采集容器标准输出,日志路径填写stdout
5.这里配置的采集均为"极简模式"
找到集群对应的project,进入到刚刚配置的logstore下查看日志即可
1.如果使用默认的project,即k8s-log-{集群id},则不需要配置
2.如果指定别的project,则需要先创建好机器组(使用与默认project机器组相同的自定义标识)
默认project中,机器组的标识为k8s-group-{集群id},使用这个自定义标识创建的机器组才能动态的对应到集群ECS上的logtail
参考:https://help.aliyun.com/document_detail/28983.html
创建logstore,并在此logstore上创建logtail配置
1.数据类型选择自建软件 docker文件
2.数据源
配置名称,日志路径,采集模式等就不说了,参考阿里云文档。
这里通过io.kubernetes.container.name这个key去筛选我们的目标容器,例子中我们的Deployment中配置的容器名为“tomcat-sls-file”。如果不是通过open api原生方式进行部署,而是通过控制台页面进行部署,容器名则为后台指定:jck-app-container-{appId},appId为应用id,不清楚的答疑群里咨询
3.关联机器组
关联的机器组为上面步骤中介绍的(或自己新建的)