阿里云SLS采集标准Docker容器日志

本文介绍通过阿里云 sls 服务来采集 docker 容器的日志,分为采集标准输出日志和采集日志文件。

参考:部署 Logtail 容器

bash

docker pull registry.cn-shanghai.aliyuncs.com/log-service/logtail

您需要根据实际情况替换registry.cn-hangzhou.aliyuncs.com,地域信息请参见Logtail安装参数

说明
如果您的服务器处于阿里云 VPC 网络中,需将registry修改为registry-vpc
重要

请在配置参数前执行以下任意一种配置,否则删除其他 container 时可能出现错误container text file busy

  • Centos 7.4及以上版本(除Centos 8.0以外),需设置 fs.may_detach_mounts=1。更多信息,请参见Bug 1468249Bug 1441737issue 34538
  • 为Logtail授予privileged权限,即在启动参数中添加--privileged。更多信息,请参见docker run命令

根据实际情况替换模板中的3个参数:${your_region_name}${your_aliyun_user_id}${your_machine_group_user_defined_id}

bash

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_IDALIYUN_LOGTAIL_USER_IDALIYUN_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 目录。

点击创建 Project,填写 Project 名称

创建成功会提示创建 Logstore,此处先不创建,先去维护机器组。点击前往 Project

详情请参见创建用户自定义标识机器组

/etc/ilogtail/user_defined_id文件中配置用户自定义标识。

例如:您要配置用户自定义标识为log-docker,则执行如下命令编辑文件,在文件中输入log-docker

bash

mkdir /etc/ilogtail
echo "log-docker" > /etc/ilogtail/user_defined_id

日志服务 Project 所在地及网络类型:cn-shanghai,地域信息请参见表 1。即下面用到的your_region_name

阿里云账号 ID 可以直接查看阿里云账号管理页面获取,详情请参见配置用户标识。即下面用到的your_aliyun_user_id

机器组的自定义标识:log-docker。即下面用到的your_machine_group_user_defined_id

回到 SLS 进入 Project

创建机器组并填写相应的内容

填写 Logstore 名称,修改需要更改的参数

创建成功后会询问是否立即接入数据

由于这里采集 docker 日志原理与采集 k8s 一致,故文档按照采集 k8s 操作方式。

官方解释:如果您需要采集 Docker 标准输出,可以在接入数据区域的自建开源/商业软件页签下,单击Docker标准输出-容器,进入采集配置流程,其操作步骤与采集 Kubernetes 标准输出类似。具体操作,请参见通过DaemonSet-控制台方式采集标准输出

在 Logstore 的数据接入- logtail 配置点击 +

接入数据选择 Kubernetes - 标准输出。

点击使用现有机器组

选择 Docker 场景,选择创建好的机器组,点击 > 应用机器组

Logtail 配置,配置自己需要的信息,比如采集特定容器

日志数据处理详见:使用Logtail插件处理数据

官方解释:如果您需要采集 Docker 文本日志,可以在接入数据区域的自建开源/商业软件页签下,单击Docker文件-容器,进入采集配置流程,其操作步骤与采集 Kubernetes 文本日志类似。具体操作,请参见通过DaemonSet-控制台方式采集文本文件

image-20210630124930818

这一点还挺有意思的,至少我不用去挂载日志到宿主机了。

接入数据选择 Kubernetes - 文件。

选择 Docker 场景,选择创建好的机器组,点击 > 应用机器组

Logtail 配置,如果日志是JSON格式的话不需要做太多处理直接解析就可以使用

相关内容