采集Docker容器的標(biāo)準(zhǔn)輸出
在服務(wù)器上部署Docker后可以采集日志,Docker的日志分為兩種類型:標(biāo)準(zhǔn)輸出和文件日志。文件日志是指容器內(nèi)生成的日志被寫入服務(wù)器的指定文件目錄中,而標(biāo)準(zhǔn)輸出則指容器的實(shí)時(shí)輸出流。本文介紹使用Logtail采集容器的標(biāo)準(zhǔn)輸出到Logstore的操作步驟。
概覽
本文以云服務(wù)器為例,在Linux系統(tǒng)的ECS實(shí)例中安裝Docker后,針對(duì)您在該環(huán)境中部署的業(yè)務(wù)容器所產(chǎn)生的標(biāo)準(zhǔn)輸出(stdout)及標(biāo)準(zhǔn)錯(cuò)誤(stderr)日志,您可以使用Logtail進(jìn)行采集。采集的日志數(shù)據(jù)將被傳輸至Logstore中,便于查詢和分析。
前提條件
已創(chuàng)建Project和Logstore。更多信息,請(qǐng)參見管理Project和管理Logstore。
ECS實(shí)例處于運(yùn)行中的狀態(tài)并已安裝Docker。
- 目標(biāo)容器持續(xù)產(chǎn)生日志。重要 Logtail只采集增量日志。如果下發(fā)Logtail配置后,日志文件無更新,則Logtail不會(huì)采集該文件中的日志。更多信息,請(qǐng)參見讀取日志。
1. 部署Logtail容器
1.1 拉取Logtail鏡像
登錄ECS管理控制臺(tái),找到目標(biāo)ECS實(shí)例,單擊遠(yuǎn)程連接,連接成功后,使用
docker -v
查看版本信息。如下圖回顯信息所示,表示Docker已安裝成功。拉取Logtail鏡像,地域信息請(qǐng)參見地域?qū)φ毡?/a>,根據(jù)實(shí)際情況替換
cn-hangzhou
。如果您的服務(wù)器處于阿里云VPC網(wǎng)絡(luò)中,需將registry
修改為registry-vpc
。docker pull registry.cn-hangzhou.aliyuncs.com/log-service/logtail
1.2 啟動(dòng)Logtail容器
替換命令模板中的3個(gè)參數(shù):${your_region_name}
、${your_aliyun_user_id}
和${your_machine_group_user_defined_id}
,然后執(zhí)行命令。
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
命令執(zhí)行成功會(huì)生成一個(gè)容器ID,例如我設(shè)置機(jī)器組的用戶自定義標(biāo)識(shí)為docker-log-demo
,容器啟動(dòng)如下。
參數(shù)說明如下:
參數(shù) | 參數(shù)說明 |
|
|
| 請(qǐng)根據(jù)日志服務(wù)Project所在地域及網(wǎng)絡(luò)類型填寫。其中,地域信息請(qǐng)參見地域?qū)φ毡?/a>,網(wǎng)絡(luò)類型選擇請(qǐng)參見選擇網(wǎng)絡(luò)。
|
| 您的日志服務(wù)所在的阿里云賬號(hào)(主賬號(hào))ID。獲取方法,請(qǐng)參見獲取日志服務(wù)所在的阿里云賬號(hào)(主賬號(hào))ID。 |
| 設(shè)置機(jī)器組的用戶自定義標(biāo)識(shí),請(qǐng)確保該標(biāo)識(shí)在您的Project所在地域內(nèi)唯一。比如 |
如果您要自定義配置Logtail容器的啟動(dòng)參數(shù),只需保證以下前提條件。
啟動(dòng)時(shí),必須配置3個(gè)環(huán)境變量
ALIYUN_LOGTAIL_USER_DEFINED_ID
、ALIYUN_LOGTAIL_USER_ID
、ALIYUN_LOGTAIL_CONFIG
。將宿主機(jī)上的
/var/run
目錄掛載到Logtail容器的/var/run
目錄。將宿主機(jī)根目錄掛載到Logtail容器的
/logtail_host
目錄。如果Logtail日志(
/usr/local/ilogtail/ilogtail.LOG
)中出現(xiàn)The parameter is invalid : uuid=none
的錯(cuò)誤日志,請(qǐng)?jiān)谒拗鳈C(jī)上創(chuàng)建一個(gè)product_uuid
文件,在其中輸入任意合法UUID(例如169E98C9-ABC0-4A92-B1D2-AA6239C0D261
),并把該文件掛載到Logtail容器的/sys/class/dmi/id/product_uuid
目錄。
2. 創(chuàng)建Logtail采集配置
進(jìn)入采集配置流程。單擊頁面右側(cè)快速接入數(shù)據(jù)卡片,在自建開源/商業(yè)軟件頁簽下,單擊Docker標(biāo)準(zhǔn)輸出-容器。
選擇目標(biāo)Project和Logstore,然后單擊下一步。
單擊創(chuàng)建機(jī)器組。在右側(cè)面板,單擊用戶自定義標(biāo)識(shí),輸入
log-docker-demo
,然后單擊確定。這里的自定義標(biāo)識(shí)必須和步驟1.2中配置的${your_machine_group_user_defined_id}
一致。在Logtail配置頁面,確定全局配置、輸入配置和處理配置,單擊下一步。參數(shù)說明請(qǐng)參見采集主機(jī)文本日志。
在查詢分析配置頁面創(chuàng)建索引,根據(jù)向?qū)瓿蓴?shù)據(jù)接入。
3. 查看上傳結(jié)果
3.1 查看容器標(biāo)準(zhǔn)輸出日志
例如目標(biāo)容器名為aliweb
,使用docker logs ${container_ID}
命令查看容器標(biāo)準(zhǔn)輸出的日志。
您也可以通過日志文件查看。默認(rèn)情況下,Docker將容器的日志輸出保存在宿主機(jī)的/var/lib/docker/containers
目錄下。每個(gè)容器對(duì)應(yīng)一個(gè)以容器ID命名的文件夾,而容器的日志則存儲(chǔ)在該文件夾內(nèi),文件名通常為${container_id}-json.log
。
3.2 查看上傳結(jié)果
Docker標(biāo)準(zhǔn)輸出的每條日志默認(rèn)包含如下字段:
字段名 | 說明 |
__source__ | Logtail容器的IP地址。 |
__tag__:__hostname__ | 宿主機(jī)的名稱。 |
__tag__:__receive_time__ | 日志到達(dá)服務(wù)端的時(shí)間。 |
_time_ | 數(shù)據(jù)上傳時(shí)間,例如 |
_source_ | 輸入源類型,stdout或stderr。 |
_image_name_ | 鏡像名。 |
_container_name_ | 容器名。 |
_container_ip_ | 業(yè)務(wù)容器IP地址。 |
相關(guān)文檔
查看Logtail運(yùn)行狀態(tài)等信息,請(qǐng)參見Logtail容器信息。
Docker基本使用,請(qǐng)參見安裝Docker并使用(Linux)。
采集Docker文本日志,請(qǐng)參見采集Docker容器文件日志。
采集宿主機(jī)文本日志,請(qǐng)參見采集主機(jī)文本日志。默認(rèn)情況下,宿主機(jī)根目錄會(huì)被掛載到Logtail容器的
/logtail_host
目錄。日志上傳到Logstore后,創(chuàng)建索引請(qǐng)參見創(chuàng)建索引,查詢分析請(qǐng)參見查詢和分析日志。
使用Logtail采集Docker容器日志遇到異常情況時(shí),請(qǐng)參見如何排查容器日志采集異常進(jìn)行排查。