日志服務Project支持采集Docker容器文本日志,本文為您介紹如何部署Logtail容器并采集業務容器文本日志到Logstore。
方案概覽
一個Logtail容器支持采集宿主機上多個業務容器多種格式的文本日志,您只需在不同的Logstore創建Logtail采集配置并下發到Logtail容器,Logtail容器會將采集到的文本日志發送到不同的Logstore。本文以采集Nginx容器文本日志為例,為您演示具體的配置步驟。
如果您對Logtail采集比較熟悉,可直接在控制臺根據向導提示進行操作。
前提條件
已創建Project、標準型Logstore。具體操作,請參見創建項目Project、創建Logstore。
已創建業務容器,且可以持續產生日志。
說明Logtail只采集增量日志。如果下發Logtail配置后,日志文件無更新,則Logtail不會采集該文件中的日志。更多信息,請參見讀取日志。
步驟一:安裝Logtail容器并創建機器組
拉取Logtail鏡像
登錄宿主機,根據日志服務Project所在地域,獲取對應的
${region_id}
。替換${region_id}
后,使用以下命令拉取Logtail鏡像。重要各地域對應的
${region_id}
請參見開服地域,例如華東 1(杭州)對應的${region_id}
為cn-hangzhou
。如果您的服務器處于阿里云VPC網絡中,需將
registry
修改為registry-vpc
。
docker pull registry.${region_id}.aliyuncs.com/log-service/logtail
啟動Logtail容器
參數說明
參數
參數說明
${region_name}
根據日志服務Project所在地域,獲取對應的
${region_id}
,各地域對應的${region_id}
請參見開服地域。網絡類型選擇請參見選擇網絡。公網:
${region_name}
的值為${region_id}-internet
。例如華東 1(杭州)為cn-hangzhou-internet。阿里云內網:
${region_name}
的值為${region_id}
。例如華東 1(杭州)為cn-hangzhou。
${aliyun_account_id}
日志服務所在的阿里云賬號(主賬號)ID。獲取方法,請參見獲取日志服務所在的阿里云賬號(主賬號)ID。
${user_defined_id}
設置機器組的用戶自定義標識,例如
user-defined-docker-1
。該標識在Project所在地域內必須唯一。根據參數說明,替換命令模板中的3個參數:
${region_id}
、${aliyun_user_id}
和${user_defined_id}
,然后執行以下命令啟動Logtail容器。docker run -d \ -v /:/logtail_host:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${region_name}/ilogtail_config.json \ --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \ --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \ registry.${your_region_name}.aliyuncs.com/log-service/logtail
重要如果您要自定義配置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
目錄。
創建用戶自定義標識機器組
檢查機器組狀態
在機器組列表中,單擊目標機器組。在機器組配置頁面,可查看機器組配置信息以及服務器狀態。
心跳狀態為OK表示服務器上的Logtail實例與日志服務Project連接正常。
如果心跳狀態顯示FAIL,處理操作請參見Logtail機器組問題排查思路(主機場景)。
重要創建機器組大約需要2分鐘。創建未生效,將導致心跳為FAIL。請2分鐘后單擊刷新進行重試。
步驟二:創建Logtail采集配置
在
頁簽中,單擊目標Logstore。展開Logstore菜單欄,單擊Logtail配置,然后單擊添加Logtail配置。
在快速數據接入頁面,單擊Docker文件-容器。
在機器組配置步驟中,選擇步驟一中創建的機器組。然后單擊下一步。
在Logtail配置步驟中,輸入配置名稱和文件路徑,其他配置可保持默認,更多信息,請參見采集主機文本日志。您也可以添加處理插件,處理文本日志。更多信息,請參見處理插件概述。配置完成后,單擊下一步。
說明配置名稱:僅支持小寫字母、數字、連字符(-)和下劃線(_),并且必須以小寫字母或者數字作為開頭和結尾。
文件路徑:為業務容器中日志文件存放的絕對路徑,例如
/var/log/nginx/access.log
。
在查詢分析配置步驟中,單擊自動生成索引,并單擊刷新,可預覽采集到的日志。
保留字段
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。
采集Docker容器的標準輸出,請參見采集Docker容器的標準輸出。
采集宿主機文本日志,請參見采集主機文本日志。默認情況下,宿主機根目錄會被掛載到Logtail容器的
/logtail_host
目錄。使用Logtail采集Docker容器日志遇到異常情況時,請參見如何排查容器日志采集異常進行排查。