在服务器上部署Docker后可以采集日志,Docker的日志分为两种类型:标准输出和文件日志。文件日志是指容器内生成的日志被写入服务器的指定文件目录中,而标准输出则指容器自身的实时输出流。本文介绍使用Logtail采集容器的标准输出到Logstore的操作步骤。
概览
在宿主机中安装Docker后,针对您在该环境中部署的业务容器所产生的标准输出(stdout)及标准错误(stderr)日志,您可以使用Logtail进行采集。采集的日志数据将被传输至Logstore中,便于查询和分析。
前提条件
已创建Project和Logstore。更多信息,请参见管理Project和管理Logstore。
宿主机已安装Docker且可以持续产生标准输出日志。
说明Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取日志。
步骤一:安装Logtail容器并创建机器组
拉取Logtail镜像
登录宿主机,根据日志服务Project所在地域,获取对应的
${region_id}。替换${region_id}后,使用以下命令拉取Logtail镜像。重要各地域对应的
${region_id}请参见开服地域,例如华东 1(杭州)对应的${region_id}为cn-hangzhou。
#拉取Logtail镜像: docker pull registry.${region_id}.aliyuncs.com/log-service/logtail #如果您的服务器处于阿里云VPC网络中,请使用如下命令行拉取Logtail镜像: docker pull registry-vpc.${region_id}.aliyuncs.com/log-service/logtail启动Logtail容器
参数说明
参数
参数说明
${region_id}根据日志服务Project所在地域,获取对应的
${region_id},各地域对应的${region_id}请参见开服地域。网络类型选择请参见选择网络。示例:若Project位于华东1(杭州),则以阿里云内网访问时
${region_id}为cn-hangzhou,公网访问时使用cn-hangzhou-internet。
${aliyun_account_id}日志服务所在的阿里云账号(主账号)ID。获取方法,请参见获取日志服务所在的阿里云账号(主账号)ID。
${user_defined_id}设置机器组的用户自定义标识,例如
user-defined-docker-1。该标识在Project所在地域内必须唯一。根据参数说明,替换命令模板中的3个参数:
${region_id}、${aliyun_account_id}和${user_defined_id},然后执行以下命令启动Logtail容器。# 启动Logtail容器,替换${region_id},${aliyun_account_id},${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/${region_id}/ilogtail_config.json \ --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \ --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \ registry.${region_id}.aliyuncs.com/log-service/logtail重要如果您要自定义配置Logtail容器的启动参数,只需保证以下前提条件。
启动时,必须配置3个环境变量
ALIYUN_LOGTAIL_CONFIG,ALIYUN_LOGTAIL_USER_ID和ALIYUN_LOGTAIL_USER_DEFINED_ID。将宿主机上的
/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目录。
输入
docker ps查看容器是否启动成功。
创建用户自定义标识机器组
登录日志服务控制台,在Project列表,单击打开目标Project。
左侧导航栏中,选择。在打开的机器组页面中,选择机器组右侧的。

在创建机器组页面填写名称,机器组标识选择用户自定义标识,并在用户自定义标识中填入步骤一中参数
${user_defined_id}的值,本例为user-defined-docker-1。
参数
说明
机器组Topic
(可选)机器组Topic用于区分不同服务器产生的日志数据。更多信息,请参见日志主题。
检查机器组状态
在机器组列表中,单击目标机器组。在机器组配置页面,可查看机器组配置信息以及服务器状态。

如果心跳状态显示OK,说明配置成功,如果显示FAIL,请等待1分钟后单击刷新重试,若心跳状态仍为FAIL,请检查:
Logtail容器与Project是否同地域。
宿主机安全组是否放行Logtail出方向流量(默认端口80)。
处理操作请参见如何排查容器日志采集异常。
步骤二:创建Logtail采集配置
在页签中,单击目标Logstore。
展开Logstore菜单栏,单击Logtail配置,然后单击添加Logtail配置。

在快速数据接入页面,单击Docker标准输出-旧版。

由于步骤一创建了机器组,此处请单击使用现有机器组。

在机器组配置步骤中,选择步骤一中创建的机器组,单击>添加机器组到应用机器组中,并单击下一步。

在Logtail配置步骤中,输入配置名称,单击下一步。

在查询分析配置步骤中,单击刷新,可预览采集到的日志。若无日志,请确认容器是否持续产生标准输出日志,一般来说,标准输出默认在/var/lib/docker/containers/容器ID/容器ID-json.log中。若确认后仍无预览日志,请查看如何排查容器日志采集异常。

步骤三: 查看上传结果
Logtail只采集增量日志,如果下发Logtail配置后标准输出无新日志产生,则Logtail不会采集以前的日志。更多信息,请参见读取日志。

Docker标准输出的每条日志默认包含如下字段:
字段名 | 说明 |
__source__ | Logtail容器的IP地址。 |
__tag__:__hostname__ | 宿主机的名称。 |
__tag__:__receive_time__ | 日志到达服务端的时间。 |
_time_ | 数据上传时间,例如 |
_source_ | 输入源类型,stdout或stderr。 |
_image_name_ | 镜像名。 |
_container_name_ | 容器名。 |
_container_ip_ | 业务容器IP地址。 |
相关文档
查看Logtail运行状态等信息,请参见Logtail容器信息。
Docker基本使用,请参见安装Docker。
采集Docker文本日志,请参见采集Docker容器文本日志。
采集宿主机文本日志,请参见采集主机文本日志。默认情况下,宿主机根目录会被挂载到Logtail容器的
/logtail_host目录。日志上传到Logstore后,创建索引请参见创建索引,查询分析请参见查询与分析快速指引。
使用Logtail采集Docker容器日志遇到异常情况时,请参见如何排查容器日志采集异常进行排查。
> 创建机器组