本文介绍如何部署Logtail容器以及创建Logtail配置,用于采集标准Docker容器日志(文本日志和标准输出)。
前提条件
-
已创建Project和Logstore。更多信息,请参见 管理Project 和 管理Logstore 。
-
目标容器持续产生日志。
重要 Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见 读取日志 。
步骤一:部署Logtail容器
-
拉取Logtail镜像。根据实际情况替换
registry.cn-hangzhou.aliyuncs.com
,地域信息请参见 安装Logtail(Linux系统) 。如果您的服务器处于阿里云VPC网络中,需将registry
修改为registry-vpc
。docker pull registry.cn-hangzhou.aliyuncs.com/log-service/logtail
-
执行以下命令,启动Logtail容器。
docker run --privileged -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} \ registry.cn-hangzhou.aliyuncs.com/log-service/logtail
参数
参数说明
--privileged
--privileged
参数是必要的,否则删除其他容器时可能出现错误container text file busy
,更多信息请参见 Bug 1468249 、 Bug 1441737 和 issue 34538 。对于Centos 7.4及以上版本(不包括Centos 8.0),可以去掉--privileged
参数,然后执行以下命令设置fs.may_detach_mounts=1
。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 sysctl fs.may_detach_mounts
${your_region_name}
请根据日志服务Project所在地域及网络类型填写。其中,地域信息请参见 安装Logtail(Linux系统) ,网络类型选择请参见 选择网络 。
-
如果为公网,格式为
region-internet
。例如 华东 1(杭州) 为 cn-hangzhou-internet 。 -
如果为阿里云内网,格式为
region
。例如 华东 1(杭州) 为 cn-hangzhou 。
${your_aliyun_user_id}
您的日志服务所在的阿里云账号(主账号)ID。获取方法,请参见 获取日志服务所在的阿里云账号(主账号)ID 。
${your_machine_group_user_defined_id}
设置机器组的用户自定义标识,例如
log-docker-demo
。重要-
请确保该标识在您的Project所在地域内唯一。
-
在 步骤二 中创建机器组时,您需要在 用户自定义标识 中输入此处设置的用户自定义标识。
重要如果您要自定义配置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
目录。
-
步骤二:创建Logtail采集配置
-
如果您需要采集宿主机文本日志,请参见 采集主机文本日志 。默认情况下,宿主机根目录会被挂载到Logtail容器的
/logtail_host
目录。 -
本文以 Docker文件-容器 为例,如果需要配置 Docker标准输出-容器 ,请参见 通过DaemonSet-控制台方式采集Kubernetes容器标准输出
-
进入采集配置流程。单击页面右侧 快速接入数据 卡片,在 自建开源/商业软件 页签下,单击 Docker文件-容器 或 Docker标准输出-容器 。
-
选择目标Project和Logstore,然后单击下一步。
-
创建机器组。如果已有机器组,请前往第5步。
-
在右侧面板,单击 用户自定义标识 ,然后输入 用户自定义标识 ,然后单击 确定 。这里的自定义标识必须和 步骤一 中设置的自定义标识一致,本文为
log-docker-demo
。 -
从 源机器组 列表选择目标机器组,然后单击 下一步 。
-
在Logtail配置页面,确定全局配置、输入配置和处理配置,配置参数说明请参见 采集主机文本日志 。如果需要对日志进行进一步处理例如正则解析、JSON解析等,可以在 处理配置 的 处理模式 中添加 处理插件概述 。完成配置后,单击 下一步 。
-
在查询分析配置页面 创建索引 。
步骤三:查看上传结果
日志上传到Logstore后,必须 创建索引 才能进行查询分析。
快速查看
如果未创建索引,可以在Logstore的 查询分析页面 ,单击 消费预览 快速查看日志。
查询分析日志
-
调用 CreateIndex 创建全文索引或字段索引,如果需要使用SELECT语句,必须创建字段索引。
-
调用 GetLogsV2 - 查询Logstore中的日志数据 ,返回结果是日志数组Logs,每个元素就是一条日志。
默认字段
Docker标准输出
每条日志默认包含的字段如下所示。
字段名 |
说明 |
__source__ |
容器的IP地址。 |
__tag__:__client_ip__ |
宿主机的IP地址。 |
__tag__:__hostname__ |
容器的名称。 |
__tag__:__receive_time__ |
日志到达服务端的时间。 |
_time_ |
数据上传时间,例如
|
_source_ |
输入源类型,stdout或stderr。 |
_image_name_ |
镜像名。 |
_container_name_ |
容器名。 |
_container_ip_ |
容器IP地址。 |
Docker文件
每条日志默认包含的字段如下所示。
字段名 |
说明 |
__source__ |
容器的IP地址。 |
__tag__:__client_ip__ |
宿主机的IP地址。 |
__tag__:__hostname__ |
容器的名称。 |
__tag__:__path__ |
日志采集路径。 |
__tag__:__receive_time__ |
日志到达服务端的时间。 |
__tag__:__user_defined_id__ |
机器组的自定义标识。 |
其他操作
查看Logtail运行状态
您可以执行
docker exec ${logtail_container_id} /etc/init.d/ilogtaild status
命令查看Logtail运行状态。
查看Logtail的版本号、IP地址和启动时间等信息
您可以执行
docker exec ${logtail_container_id} cat /usr/local/ilogtail/app_info.json
命令查看Logtail相关信息。
查看Logtail的运行日志
Logtail运行日志保存在容器内的
/usr/local/ilogtail/
目录下,文件名为
ilogtail.LOG
,轮转文件会压缩存储为
ilogtail.LOG.x.gz
。示例如下:
[sudo@iZb****exh2Z ilogtail]# docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/ilogtail.LOG
[2018-02-06 08:13:35.721864] [INFO] [8] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
[2018-02-06 08:13:35.722135] [INFO] [8] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtail plugin Resume:success
[2018-02-06 08:13:35.722149] [INFO] [8] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] start add existed check point events, size:0
[2018-02-06 08:13:35.722155] [INFO] [8] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] add existed check point events, size:0 cache size:0 event size:0 success count:0
[2018-02-06 08:13:39.725417] [INFO] [8] [build/release64/sls/ilogtail/ConfigManager.cpp:3776] check container path update flag:0 size:1
Logtail容器中的标准输出并不具备参考意义,请忽略以下标准输出内容。
start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running
重启Logtail
请参考以下示例重启Logtail。
[sudo@iZb****xh2Z ilogtail]# docker exec a287de895e40 /etc/init.d/ilogtaild stop
kill process Name: ilogtail pid: 7
kill process Name: ilogtail pid: 8
stop success
[sudo@iZb****xh2Z ilogtail]# docker exec a287de895e40 /etc/init.d/ilogtaild start
ilogtail is running
问题排查
当您使用Logtail采集Docker容器日志遇到异常情况时,您可以参见 如何排查容器日志采集异常 进行排查。