Simple Log ServiceProject支援採集Docker容器文本日誌,本文為您介紹如何部署Logtail容器並採集業務容器文本日誌到Logstore。
方案概覽
一個Logtail容器支援採集宿主機上多個業務容器多種格式的文本日誌,您只需在不同的Logstore建立Logtail採集配置並下發到Logtail容器,Logtail容器會將採集到的文本日誌發送到不同的Logstore。本文以採集Nginx容器文本日誌為例,為您示範具體的配置步驟。
如果您對Logtail採集比較熟悉,可直接在控制台根據嚮導提示進行操作。
前提條件
已建立Project、標準型Logstore。具體操作,請參見建立專案Project、建立Logstore。
已建立業務容器,且可以持續產生日誌。
說明Logtail只採集增量日誌。如果下發Logtail配置後,記錄檔無更新,則Logtail不會採集該檔案中的日誌。更多資訊,請參見讀取日誌。
步驟一:安裝Logtail容器並建立機器組
拉取Logtail鏡像
登入宿主機,根據Simple Log ServiceProject所在地區,擷取對應的
${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}
根據Simple Log ServiceProject所在地區,擷取對應的
${region_id}
,各地區對應的${region_id}
請參見開服地區。網路類型選擇請參見選擇網路。公網:
${region_name}
的值為${region_id}-internet
。例如華東 1(杭州)為cn-hangzhou-internet。阿里雲內網:
${region_name}
的值為${region_id}
。例如華東 1(杭州)為cn-hangzhou。
${aliyun_account_id}
Simple Log Service所在的阿里雲帳號(主帳號)ID。擷取方法,請參見擷取Log Service所在的阿里雲帳號(主帳號)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
目錄。
建立使用者自訂標識機器組
登入Log Service控制台,在Project列表,單擊開啟目標Project。
左側導覽列中,選擇
。在開啟的機器組頁面中,選擇機器組右側的 。在彈出的建立機器組頁面,填寫以下資訊,並單擊確定。
參數
說明
名稱
機器組名稱,命名規則如下所示:
只能包括小寫字母、數字、短劃線(-)和底線(_)。
必須以小寫字母或者數字開頭和結尾。
長度必須在 2~128 字元之間。
重要建立後,不支援修改機器組名稱,請謹慎填寫。
機器組標識
選擇使用者自訂標識。
機器組Topic
(可選)機器組Topic用於區分不同伺服器產生的日誌資料。更多資訊,請參見日誌主題。
使用者自訂標識
輸入上述步驟中配置的
${user_defined_id}
。
檢查機器組狀態
在機器組列表中,單擊目標機器組。在機器組配置頁面,可查看機器組配置資訊以及伺服器狀態。
心跳狀態為OK表示伺服器上的Logtail執行個體與Simple Log ServiceProject串連正常。
如果心跳狀態顯示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容器日誌遇到異常情況時,請參見如何排查容器日誌採集異常進行排查。