在服务器上部署Docker后可以采集日志,Docker的日志分为两种类型:标准输出和文件日志。文件日志是指容器内生成的日志被写入服务器的指定文件目录中,而标准输出则指容器的实时输出流。本文介绍使用Logtail采集容器的标准输出到Logstore的操作步骤。
概览
本文以云服务器为例,在Linux系统的ECS实例中安装Docker后,针对您在该环境中部署的业务容器所产生的标准输出(stdout)及标准错误(stderr)日志,您可以使用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采集配置
3. 查看上传结果
3.1 查看容器标准输出日志
例如目标容器名为aliweb
,使用docker logs ${container_ID}
命令查看容器标准输出的日志。
您也可以通过日志文件查看。默认情况下,Docker将容器的日志输出保存在宿主机的/var/lib/docker/containers
目录下。每个容器对应一个以容器ID命名的文件夹,而容器的日志则存储在该文件夹内,文件名通常为${container_id}-json.log
。
3.2 查看上传结果
Docker标准输出的每条日志默认包含如下字段:
字段名 | 说明 |
__source__ | Logtail容器的IP地址。 |
__tag__:__hostname__ | 宿主机的名称。 |
__tag__:__receive_time__ | 日志到达服务端的时间。 |
_time_ | 数据上传时间,例如 |
_source_ | 输入源类型,stdout或stderr。 |
_image_name_ | 镜像名。 |
_container_name_ | 容器名。 |
_container_ip_ | 业务容器IP地址。 |
相关文档
查看Logtail运行状态等信息,请参见Logtail容器信息。
Docker基本使用,请参见安装Docker并使用(Linux)。
采集Docker文本日志,请参见采集Docker容器文件日志。
采集宿主机文本日志,请参见采集主机文本日志。默认情况下,宿主机根目录会被挂载到Logtail容器的
/logtail_host
目录。使用Logtail采集Docker容器日志遇到异常情况时,请参见如何排查容器日志采集异常进行排查。