在伺服器上部署Docker後可以採集日誌,Docker的日誌分為兩種類型:標準輸出和檔案日誌。檔案日誌是指容器內產生的日誌被寫入伺服器的指定檔案目錄中,而標準輸出則指容器自身的即時輸出資料流。本文介紹使用Logtail採集容器的標準輸出到LogStore的操作步驟。
概覽
在宿主機中安裝Docker後,針對您在該環境中部署的業務容器所產生的標準輸出(stdout)及標準錯誤(stderr)日誌,您可以使用Logtail進行採集。採集的日誌資料將被傳輸至LogStore中,便於查詢和分析。
前提條件
已建立Project和LogStore。更多資訊,請參見管理Project和管理LogStore。
宿主機已安裝並使用Docker和Docker Compose且可以持續產生標準輸出日誌。
說明Logtail只採集增量日誌。如果下發Logtail配置後,記錄檔無更新,則Logtail不會採集該檔案中的日誌。更多資訊,請參見讀取日誌。
步驟一:安裝Logtail容器並建立機器組
拉取Logtail鏡像
登入宿主機,根據Simple Log ServiceProject所在地區,擷取對應的
${region_id}。替換${region_id}後,使用以下命令拉取Logtail鏡像。重要各地區對應的
${region_id}請參見開服地區,例如華東 1(杭州)對應的${region_id}為cn-hangzhou。
#拉取Logtail鏡像: docker pull registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun #如果您的伺服器處於阿里雲VPC網路中,請使用如下命令列拉取Logtail鏡像: docker pull registry-vpc.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun啟動Logtail容器
參數說明
參數
參數說明
${region_id}根據Simple Log ServiceProject所在地區,擷取對應的
${region_id},各地區對應的${region_id}請參見開服地區。網路類型選擇請參見Logtail網路類型,啟動參數與設定檔。樣本:若Project位於華東1(杭州),則以阿里雲內網訪問時
${region_id}為cn-hangzhou,公網訪問時使用cn-hangzhou-internet。
${aliyun_account_id}Simple Log Service所在的阿里雲帳號(主帳號)ID。擷取方法,請參見擷取Log Service所在的阿里雲帳號(主帳號)ID。
${user_defined_id}設定機器組的使用者自訂標識,例如
user-defined-docker-1。該標識在Project所在地區內必須唯一。根據參數說明,替換命令模板中的3個參數:
${region_id}、${aliyun_account_id}和${user_defined_id},然後執行以下命令啟動Logtail容器。# 啟動Logtail容器,替換${region_id},${aliyun_account_id},${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/${region_id}/ilogtail_config.json \ --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \ --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \ registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun重要如果您要自訂配置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目錄。
輸入
docker ps查看容器是否啟動成功。
建立使用者自訂標識機器組
登入Log Service控制台,在Project列表,單擊開啟目標Project。
左側導覽列中,選擇。在開啟的機器組頁面中,選擇機器組右側的。

在建立機器組頁面填寫名稱,機器組標識選擇使用者自訂標識,並在使用者自訂標識中填入步驟一中參數
${user_defined_id}的值,本例為user-defined-docker-1。
參數
說明
機器組Topic
(可選)機器組Topic用於區分不同伺服器產生的日誌資料。更多資訊,請參見日誌主題。
檢查機器組狀態
在機器組列表中,單擊目標機器組。在機器組配置頁面,可查看機器組配置資訊以及伺服器狀態。

如果心跳狀態顯示OK,說明配置成功,如果顯示FAIL,請等待1分鐘後單擊重新整理重試,若心跳狀態仍為FAIL,請檢查:
Logtail容器與Project是否同地區。
宿主機安全性群組是否允許存取Logtail出方向流量(預設連接埠80)。
處理操作請參見如何排查容器日誌採集異常。
步驟二:建立Logtail採集配置
在頁簽中,單擊目標Logstore。
展開LogStore功能表列,單擊Logtail配置,然後單擊添加Logtail配置。

在快速資料接入頁面,單擊Docker標準輸出-舊版。

由於步驟一建立了機器組,此處請單擊使用現有機器組。

在機器組配置步驟中,選擇步驟一中建立的機器組,單擊>添加機器組到應用機器組中,並單擊下一步。

在Logtail配置步驟中,輸入配置名稱,單擊下一步。

在查詢分析配置步驟中,單擊重新整理,可預覽採集到的日誌。若無日誌,請確認容器是否持續產生標準輸出日誌,一般來說,標準輸出預設在/var/lib/docker/containers/容器ID/容器ID-json.log中。若確認後仍無預覽日誌,請查看如何排查容器日誌採集異常。

步驟三: 查看上傳結果
Logtail只採集增量日誌,如果下發Logtail配置後標準輸出無新日誌產生,則Logtail不會採集以前的日誌。更多資訊,請參見讀取日誌。

Docker標準輸出的每條日誌預設包含如下欄位:
欄位名 | 說明 |
__source__ | Logtail容器的IP地址。 |
__tag__:__hostname__ | Logtail所在Docker主機的名稱。 |
__tag__:__receive_time__ | 日誌到達服務端的時間。 |
_time_ | 資料上傳時間,例如 |
_source_ | 輸入源類型,stdout或stderr。 |
_image_name_ | 鏡像名。 |
_container_name_ | 容器名。 |
_container_ip_ | 業務容器IP地址。 |
相關文檔
查看Logtail運行狀態等資訊,請參見Logtail容器資訊。
Docker基本使用,請參見安裝並使用Docker和Docker Compose。
採集Docker文本日誌,請參見採集Docker容器日誌(標準輸出/檔案)。
採集宿主機文本日誌,請參見採集主機文本日誌。預設情況下,宿主機根目錄會被掛載到Logtail容器的
/logtail_host目錄。使用Logtail採集Docker容器日誌遇到異常情況時,請參見如何排查容器日誌採集異常進行排查。
> 建立機器組