日志服务Project支持采集Docker容器文本日志,本文为您介绍如何部署Logtail容器并采集业务容器文本日志到Logstore。
方案概览
一个Logtail容器支持采集宿主机上多个业务容器多种格式的文本日志,您只需在不同的Logstore创建Logtail采集配置并下发到Logtail容器,Logtail容器会将采集到的文本日志发送到不同的Logstore。本文以采集Nginx容器文本日志为例,为您演示具体的配置步骤。
如果您对Logtail采集比较熟悉,可直接在控制台根据向导提示进行操作。
前提条件
已创建Project、标准型Logstore。具体操作,请参见创建项目Project、创建Logstore。
已创建业务容器,且可以持续产生日志。
说明Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取日志。
步骤一:安装Logtail容器并创建机器组
拉取Logtail镜像
登录宿主机,根据日志服务Project所在地域,获取对应的
${region_id}
。替换${region_id}
后,使用以下命令拉取Logtail镜像。重要各地域对应的
${region_id}
请参见开服地域,例如华东 1(杭州)对应的${region_id}
为cn-hangzhou
。如果您的服务器处于阿里云VPC网络中,需将
registry
修改为registry-vpc
。
docker pull registry.${region_id}.aliyuncs.com/log-service/logtail
启动Logtail容器
参数说明
参数
参数说明
${region_name}
根据日志服务Project所在地域,获取对应的
${region_id}
,各地域对应的${region_id}
请参见开服地域。网络类型选择请参见选择网络。公网:
${region_name}
的值为${region_id}-internet
。例如华东 1(杭州)为cn-hangzhou-internet。阿里云内网:
${region_name}
的值为${region_id}
。例如华东 1(杭州)为cn-hangzhou。
${aliyun_account_id}
日志服务所在的阿里云账号(主账号)ID。获取方法,请参见获取日志服务所在的阿里云账号(主账号)ID。
${user_defined_id}
设置机器组的用户自定义标识,例如
user-defined-docker-1
。该标识在Project所在地域内必须唯一。根据参数说明,替换命令模板中的3个参数:
${region_id}
、${aliyun_user_id}
和${user_defined_id}
,然后执行以下命令启动Logtail容器。docker run -d \ -v /:/logtail_host:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${region_name}/ilogtail_config.json \ --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \ --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \ registry.${your_region_name}.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
目录。
创建用户自定义标识机器组
检查机器组状态
在机器组列表中,单击目标机器组。在机器组配置页面,可查看机器组配置信息以及服务器状态。
心跳状态为OK表示服务器上的Logtail实例与日志服务Project连接正常。
如果心跳状态显示FAIL,处理操作请参见Logtail机器组问题排查思路(主机场景)。
重要创建机器组大约需要2分钟。创建未生效,将导致心跳为FAIL。请2分钟后单击刷新进行重试。
步骤二:创建Logtail采集配置
在
页签中,单击目标Logstore。展开Logstore菜单栏,单击Logtail配置,然后单击添加Logtail配置。
在快速数据接入页面,单击Docker文件-容器。
在机器组配置步骤中,选择步骤一中创建的机器组。然后单击下一步。
在Logtail配置步骤中,输入配置名称和文件路径,其他配置可保持默认,更多信息,请参见采集主机文本日志。您也可以添加处理插件,处理文本日志。更多信息,请参见处理插件概述。配置完成后,单击下一步。
说明配置名称:仅支持小写字母、数字、连字符(-)和下划线(_),并且必须以小写字母或者数字作为开头和结尾。
文件路径:为业务容器中日志文件存放的绝对路径,例如
/var/log/nginx/access.log
。
在查询分析配置步骤中,单击自动生成索引,并单击刷新,可预览采集到的日志。
保留字段
Docker文件中每条日志默认包含的字段如下所示:
字段名 | 说明 |
__source__ | Logtail容器的IP地址。 |
_container_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
相关文档
Docker基本使用,请参见安装Docker。
采集Docker容器的标准输出,请参见采集Docker容器的标准输出。
采集宿主机文本日志,请参见采集主机文本日志。默认情况下,宿主机根目录会被挂载到Logtail容器的
/logtail_host
目录。使用Logtail采集Docker容器日志遇到异常情况时,请参见如何排查容器日志采集异常进行排查。