在伺服器上部署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
,容器啟動如下。
參數說明如下:
參數 | 參數說明 |
|
|
| 請根據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採集配置
登入Log Service控制台,單擊頁面右側快速接入資料卡片,在自建開源/商業軟體頁簽下,單擊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容器日誌遇到異常情況時,請參見如何排查容器日誌採集異常進行排查。