在服务器上部署Docker后可以采集日志,Docker的日志分为两种类型:标准输出(stdout)和文件日志。文件日志是指容器内生成的日志被写入服务器的指定文件目录中,而标准输出则指容器的实时输出流。本文以业务容器aliweb
和文件路径/var/www/test.log
为例,介绍使用Logtail采集容器的文件日志到Logstore的操作步骤。
概览
本文以云服务器为例,在Linux系统环境下,完成ECS实例中Docker的安装后,针对您在该环境中部署的业务容器所产生的容器日志,您可以使用Logtail进行采集。采集的日志数据将被传输至Logstore中,进行查询和分析。
前提条件
已创建Project和Logstore。更多信息,请参见管理Project和管理Logstore。
ECS实例处于运行中的状态并已安装Docker。
- 目标容器持续产生日志。重要 Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取日志。
1. 部署Logtail容器
1.1 拉取Logtail镜像
1.2 启动Logtail容器
替换命令模板中的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} \
registry.${your_region_name}.aliyuncs.com/log-service/logtail
命令执行成功会生成一个容器ID,例如我设置机器组的用户自定义标识为docker-log-demo
,容器启动如下。
参数说明如下:
参数 | 参数说明 |
|
|
| 请根据日志服务Project所在地域及网络类型填写。其中,地域信息请参见地域对照表,网络类型选择请参见选择网络。
|
| 您的日志服务所在的阿里云账号(主账号)ID。获取方法,请参见获取日志服务所在的阿里云账号(主账号)ID。 |
| 设置机器组的用户自定义标识,请确保该标识在您的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
目录。
2. 创建Logtail采集配置
登录日志服务控制台,单击页面右侧快速接入数据卡片,在自建开源/商业软件页签下,单击Docker文件-容器。
选择目标Project和Logstore,然后单击下一步。
单击创建机器组。在右侧面板,单击用户自定义标识,输入
log-docker-demo
,然后单击确定。这里的自定义标识必须和步骤1.2中配置的${your_machine_group_user_defined_id}
一致。在Logtail配置页面,设置配置名称和文件路径,例如目标容器的日志存放在
/var/www/test.log
中,设置完成单击下一步。详细的参数说明,请参见通过DaemonSet方式采集Kubernetes容器文本日志。在查询分析配置页面创建索引,根据向导完成数据接入。
3. 查询分析
3.1 查看容器文件日志
例如目标容器名为aliweb
,使用docker exec -it ${container_ID} /bin/bash
命令进入到容器,查看目标容器持续产生日志。
3.2 查看上传结果
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并使用(Linux)。
采集Docker容器的标准输出,请参见采集Docker容器的标准输出。
采集宿主机文本日志,请参见采集主机文本日志。默认情况下,宿主机根目录会被挂载到Logtail容器的
/logtail_host
目录。使用Logtail采集Docker容器日志遇到异常情况时,请参见如何排查容器日志采集异常进行排查。