阿里云SLS采集标准Docker容器日志
本文介绍通过阿里云 sls 服务来采集 docker 容器的日志,分为采集标准输出日志和采集日志文件。
1 部署 Logtail 容器
1.1 拉取 Logtail 镜像
docker pull registry.cn-shanghai.aliyuncs.com/log-service/logtail
您需要根据实际情况替换registry.cn-hangzhou.aliyuncs.com
,地域信息请参见Logtail安装参数。
1.2 启动 Logtail 容器
请在配置参数前执行以下任意一种配置,否则删除其他 container 时可能出现错误container text file busy
。
- Centos 7.4及以上版本(除Centos 8.0以外),需设置 fs.may_detach_mounts=1。更多信息,请参见Bug 1468249、Bug 1441737和issue 34538。
- 为Logtail授予
privileged
权限,即在启动参数中添加--privileged
。更多信息,请参见docker run命令。
根据实际情况替换模板中的3个参数:${your_region_name}
、${your_aliyun_user_id}
和${your_machine_group_user_defined_id}
。
docker run -d \
-v /:/logtail_host:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
--env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${your_region_name}/ilogtail_config.json \
--env ALIYUN_LOGTAIL_USER_ID=${your_aliyun_user_id} \
--env ALIYUN_LOGTAIL_USER_DEFINED_ID=${your_machine_group_user_defined_id} \
--name logtail \
registry.cn-shanghai.aliyuncs.com/log-service/logtail
如果您要自定义配置 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 目录。
2 基础配置
2.1 阿里云 SLS 相关配置
2.1.1 创建 Project
点击创建 Project,填写 Project 名称
创建成功会提示创建 Logstore,此处先不创建,先去维护机器组。点击前往 Project
2.2 创建机器组
2.2.1 创建机器组自定义标识
详情请参见创建用户自定义标识机器组
在/etc/ilogtail/user_defined_id
文件中配置用户自定义标识。
例如:您要配置用户自定义标识为log-docker
,则执行如下命令编辑文件,在文件中输入log-docker
。
mkdir /etc/ilogtail
echo "log-docker" > /etc/ilogtail/user_defined_id
2.2.2 整理 logtail 容器所需信息
日志服务 Project 所在地及网络类型:cn-shanghai
,地域信息请参见表 1。即下面用到的your_region_name
阿里云账号 ID 可以直接查看阿里云账号管理页面获取,详情请参见配置用户标识。即下面用到的your_aliyun_user_id
机器组的自定义标识:log-docker
。即下面用到的your_machine_group_user_defined_id
2.2.3 创建机器组
回到 SLS 进入 Project
创建机器组并填写相应的内容
2.3 创建 Logstore
填写 Logstore 名称,修改需要更改的参数
创建成功后会询问是否立即接入数据
3 采集配置
由于这里采集 docker 日志原理与采集 k8s 一致,故文档按照采集 k8s 操作方式。
3.1 采集 Docker 标准输出
官方解释:如果您需要采集 Docker 标准输出,可以在接入数据区域的自建开源/商业软件页签下,单击Docker标准输出-容器,进入采集配置流程,其操作步骤与采集 Kubernetes 标准输出类似。具体操作,请参见通过DaemonSet-控制台方式采集标准输出。
3.1.1 logtail 配置
在 Logstore 的数据接入- logtail 配置点击 +
接入数据选择 Kubernetes - 标准输出。
点击使用现有机器组
选择 Docker 场景,选择创建好的机器组,点击 > 应用机器组
Logtail 配置,配置自己需要的信息,比如采集特定容器
日志数据处理详见:使用Logtail插件处理数据
3.2 采集 Docker 文本日志
官方解释:如果您需要采集 Docker 文本日志,可以在接入数据区域的自建开源/商业软件页签下,单击Docker文件-容器,进入采集配置流程,其操作步骤与采集 Kubernetes 文本日志类似。具体操作,请参见通过DaemonSet-控制台方式采集文本文件。
这一点还挺有意思的,至少我不用去挂载日志到宿主机了。
3.2.1 logtail 配置
接入数据选择 Kubernetes - 文件。
选择 Docker 场景,选择创建好的机器组,点击 > 应用机器组
Logtail 配置,如果日志是JSON格式的话不需要做太多处理直接解析就可以使用