在伺服器上部署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
,容器啟動如下。
參數說明如下:
參數 | 參數說明 |
|
|
| 請根據Log ServiceProject所在地區及網路類型填寫。其中,地區資訊請參見地區對照表,網路類型選擇請參見選擇網路。
|
| 您的Log Service所在的阿里雲帳號(主帳號)ID。擷取方法,請參見擷取Log Service所在的阿里雲帳號(主帳號)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容器日誌遇到異常情況時,請參見如何排查容器日誌採集異常進行排查。