阿里云SLS采集标准Docker容器日志
本文介绍通过阿里云sls服务来采集docker容器的日志,分为采集标准输出日志和采集日志文件。
1 基础配置
1.1 阿里云SLS相关配置
1.1.1 创建Project
同时会提示创建Logstore
创建成功后会询问是否立即接入数据,目前先取消暂不接入。
1.1.2 创建机器组自定义标识
详情请参见创建用户自定义标识机器组
在/etc/ilogtail/user_defined_id
文件中配置用户自定义标识。
例如:您要配置用户自定义标识为log-docker
,则执行如下命令编辑文件,在文件中输入log-docker
。
|
|
根据上面的信息我们可以获得
日志服务Project所在地及网络类型:cn-shanghai
,地域信息请参见表 1。下面用到的your_region_name
阿里云账号ID可以直接查看阿里云账号管理页面获取,详情请参见配置用户标识。下面用到的your_aliyun_user_id
机器组的自定义标识:log-docker
。下面用到的your_machine_group_user_defined_id
2 部署Logtail容器
拉取Logtail镜像。
|
|
其中,registry.cn-hangzhou.aliyuncs.com需根据实际情况替换,地域信息请参见表 1。如果您的服务器处于阿里云VPC网络中,需将registry修改为 registry-vpc。
启动Logtail容器。
说明 请在配置参数前执行以下任意一种配置,否则删除其他container时可能出现错误container text file busy
。
Centos 7.4及以上版本设置
fs.may_detach_mounts=1
,相关说明请参见Bug 1468249、Bug 1441737和issue 34538。1 2 3 4 5
# set echo fs.may_detach_mounts=1 | sudo tee /etc/sysctl.d/may_detach_mounts.conf sudo sysctl -p /etc/sysctl.d/may_detach_mounts.conf # confirm set. expected output: `fs.may_detach_mounts = 1` sysctl fs.may_detach_mounts
为Logtail授予
privileged
权限,启动参数中添加--privileged
。详细内容请参见docker run命令。
根据实际情况替换模板中的3个参数:${your_region_name}
、${your_aliyun_user_id}
和${your_machine_group_user_defined_id}
。
|
|
说明
您可以自定义配置Logtail容器的启动参数,只需保证以下前提条件。
- 启动时,必须配置3个环境变量:
ALIYUN_LOGTAIL_USER_DEFINED_ID
、ALIYUN_LOGTAIL_USER_ID
、ALIYUN_LOGTAIL_CONFIG
。- 必须宿主机将
/var/run
挂载到Logtail容器的/var/run
目录。- 将宿主机根目录挂载到Logtail容器的
/logtail_host
目录。- 如果Logtail日志
/usr/local/ilogtail/ilogtail.LOG
中出现The parameter is invalid : uuid=none
的错误日志,请在宿主机上创建一个product_uuid文件,在其中输入任意合法UUID(例如169E98C9-ABC0-4A92-B1D2-AA6239C0D261
),并把该文件挂载到Logtail容器的/sys/class/dmi/id/product_uuid
目录。
3 创建采集配置
回到阿里云进入Project,
3.1 创建机器组
填写之前定义的机器组标识
4 采集配置
由于这里采集docker日志原理与采集k8s一致,故文档按照采集k8s操作方式。
4.1 采集Docker标准输出
官方解释:如果您需要采集Docker文件,操作步骤与采集Kubernetes文件类似。更多信息,请参见通过DaemonSet-控制台方式采集标准输出。
4.1.1 logtail配置
接入数据区域,Kubernetes - 标准输出单击。
若您已经安装Logtail日志组件,请点击【使用现有机器组】。
采集配置
我的内容如下
该输入源类型为: service_docker_stdout
。
|
|
代表的意思是只采集Label为io.container.name=tms
的日志。详情请参见通过DaemonSet-控制台方式采集标准输出。
如果日志输出为json,使用以下配置即可。
|
|
日志数据处理详见:使用Logtail插件处理数据
4.2 采集Docker文件
官方解释:如果您需要采集Docker文件,操作步骤与采集Kubernetes文件类似。更多信息,请参见请参见通过DaemonSet-控制台方式采集文本文件。
这一点还挺有意思的,至少我不用去挂载日志到宿主机了。
4.2.1 logtail配置
接入数据区域,单击Kubernetes - 文件。
若您已经安装Logtail日志组件,请点击【使用现有机器组】。
采集配置,由于我这里日志文件为json格式,不需要做太多处理。