本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
如果需要每个Pod使用单独的Logtail实例来收集Pod内所有容器的日志,可以使用Sidecar方式在Kubernetes集群上部署Logtail。本文介绍Sidecar方式采集容器文本日志的工作原理、使用限制、前提条件、操作步骤等信息。
工作原理
Sidecar模式
在Sidecar模式中,每个容器组(Pod)运行一个Logtail容器,用于采集当前容器组(Pod)所有容器(Containers)的日志。不同Pod的日志采集相互隔离。
为了采集同一Pod中其它容器的日志文件,需要通过共享存储卷的方式来完成,即将同一份存储卷分别挂载到业务容器和Logtail容器。Sidecar方式采集容器日志的更多信息,请参见Sidecar日志采集介绍和Sidecar模式示例。存储卷的更多信息,请参见存储基础知识。
Logtail采集配置的管理方式
通过控制台管理Logtail采集配置
操作步骤简单,不需连接Kubernetes集群,使用阿里云账号进行鉴权。
(推荐)通过CRD管理Logtail采集配置
通过CRD可以自定义Kubernetes资源,为了便于通过云原生方式管理Logtail采集配置,日志服务定义了AliyunLogConfig
这种CRD,它基本等价于Logtail采集配置。用户可以向kube-apiserver提交YAML配置文件来创建AliyunLogConfig
资源,从而创建相应的Logtail采集配置。这种配置方式需要连接Kubernetes集群,并额外使用Kubernetes鉴权。
通过CRD方式创建的配置,在控制台上对其修改不会同步到CRD中。因此,如需修改由CRD创建的配置内容,只能修改CRD资源,不要直接在控制台操作,避免配置不一致。
前提条件
已安装Logtail组件。具体操作,请参见安装Logtail组件(阿里云Kubernetes集群)。
在安装Logtail组件时所使用的Project中已创建Logstore。具体操作,请参见创建Logstore。
安装Logtail的主机需开放80(HTTP)端口和443(HTTPS)端口。ECS实例的端口由安全组规则控制,添加安全组规则的步骤请参见添加安全组规则。
目标容器持续新增日志。Logtail只采集增量日志。如果下发logtail采集配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取日志。
业务容器中待采集文件必须位于存储卷中,且该存储卷必须挂载到Logtail容器。
步骤一:为业务Pod注入Logtail容器
登录Kubernetes集群。
创建一个YAML文件。
sidecar.yaml
为文件的示例名称,请根据实际情况替换。vim sidecar.yaml
在YAML文件中输入如下脚本,并根据实际情况设置其中的参数。
警告YAML模板中,所有带有
${}
的占位符都需要替换为您环境中实际的值,其他参数禁止改动、删除。执行如下命令使
sidecar.yaml
文件配置生效。sidecar.yaml
为文件名,请根据实际情况替换。kubectl apply -f sidecar.yaml
步骤二:创建Logtail采集配置
通过CRD方式创建的配置,在控制台上对其修改不会同步到CRD中。因此,如需修改由CRD创建的配置内容,只能修改CRD资源,禁止直接在控制台操作,避免导致配置不一致。
控制台
登录日志服务控制台。
单击控制台右侧的快速接入数据区域,在对话框中单击Kubernetes-文件卡片。
在选择日志空间页面,按照选择目标Project和Logstore,单击下一步。
在机器组配置页面。
单击
页签。重要不同页签的后续配置步骤不同,必须正确选择。
确认目标机器组已在应用机器组列表中,然后单击下一步。
重要如果需要新建机器组,请单击创建机器组,按照右侧面板进行创建。机器组的更多信息,请参见机器组简介。
如果机器组心跳为FAIL,您可以单击重试。如果问题仍未解决,请参见Logtail机器组无心跳进行排查。
创建Logtail采集配置,单击下一步,创建Logtail采集配置。Logtail采集配置生效时间最长需要3分钟,请耐心等待。
创建索引和预览数据,然后单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引。
重要如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT语句),必须创建字段索引。
单击查询日志,系统将跳转至Logstore查询分析页面。
您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。查询和分析日志的详细步骤,请参见查询和分析日志。
CRD
只需要定义AliyunLogConfig
这个CRD资源即可创建Logtail配置。创建完成后,系统自动应用该Logtail配置。如果您要删除Logtail配置只需删除对应的CRD资源即可。
登录Kubernetes集群。
执行如下命令创建一个YAML文件。
cube.yaml
为文件名,请根据实际情况替换。vim cube.yaml
在YAML文件输入如下脚本,并根据实际情况设置其中的参数。
重要请确保
configName
参数值在日志服务Project中唯一存在。如果多个CRD关联同一个Logtail配置,则删除或修改任意一个CRD均会影响到该Logtail配置,导致其他关联该Logtail配置的CRD状态与服务端不一致。
通过Sidecar模式只能采集文本日志,需将dockerFile参数设置为false。
apiVersion: log.alibabacloud.com/v1alpha1 # 使用默认值,无需修改。 kind: AliyunLogConfig # 使用默认值,无需修改。 metadata: name: simple-example # 设置资源名,在当前Kubernetes集群内唯一。 spec: project: k8s-my-project # (可选)设置Project名称。默认值为安装Logtail组件时设置的Project。 logstore: k8s # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。 logstoreMode: standard # (可选)设置Logstore类型,该参数值仅在新建Logstore时生效。 machineGroups: # 设置机器组的名称,需与您在安装Sidecar时设置的${your_machine_group_user_defined_id}的值一致。Sidecar与CRD通过此处配置的机器组建立关联。 - nginx-log-sidecar shardCount: 2 # (可选)设置Shard数量。默认值为2,取值范围1~10。 lifeCycle: 90 # (可选)设置Logstore中数据的存储时间。默认值为90,取值范围为1~3650。其中,3650天为永久存储。 logtailConfig: # 设置Logtail配置。 inputType: file # 设置采集的数据源类型,通过Sidecar-CRD方式只支持采集文本日志,即需要设置为file。 configName: simple-example # 设置Logtail配置名称,与资源名(metadata.name)保持一致。 inputDetail: # 设置Logtail配置的详细信息,具体配置请参见本文下方的示例。 ...
执行如下命令使Logtail配置生效。
cube.yaml为文件名,请根据实际情况替换。
kubectl apply -f cube.yaml
创建Logtail配置后,您可以通过CRD方式或控制台方式查看Logtail配置。具体操作,请参见查看Logtail配置。
重要采集到日志后,您需要先创建索引,才能在Logstore中查询和分析日志。具体操作,请参见创建索引。
查看Logtail采集配置
控制台
登录日志服务控制台。
在Project列表区域,单击目标Project。
- 在 页签中,单击目标日志库前面的>,依次选择 。
- 单击目标Logtail采集配置,查看Logtail采集配置详情。
CRD
查看当前Kubernetes集群中所有的Logtail采集配置
查看Logtail采集配置的详细信息和状态
问题排查
- 本页导读 (1)