全部產品
Search
文件中心

Simple Log Service:採集Docker容器文本日誌

更新時間:Nov 27, 2024

Simple Log ServiceProject支援採集Docker容器文本日誌,本文為您介紹如何部署Logtail容器並採集業務容器文本日誌到Logstore。

方案概覽

一個Logtail容器支援採集宿主機上多個業務容器多種格式的文本日誌,您只需在不同的Logstore建立Logtail採集配置並下發到Logtail容器,Logtail容器會將採集到的文本日誌發送到不同的Logstore。本文以採集Nginx容器文本日誌為例,為您示範具體的配置步驟。

如果您對Logtail採集比較熟悉,可直接在控制台根據嚮導提示進行操作。

前提條件

  • 已建立Project、標準型Logstore。具體操作,請參見建立專案Project建立Logstore

  • 已建立業務容器,且可以持續產生日誌。

    說明

    Logtail只採集增量日誌。如果下發Logtail配置後,記錄檔無更新,則Logtail不會採集該檔案中的日誌。更多資訊,請參見讀取日誌

步驟一:安裝Logtail容器並建立機器組

  1. 拉取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
  2. 啟動Logtail容器

    1. 參數說明

      參數

      參數說明

      ${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所在地區內必須唯一。

    2. 根據參數說明,替換命令模板中的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_CONFIGALIYUN_LOGTAIL_USER_IDALIYUN_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目錄。

  3. 建立使用者自訂標識機器組

    1. 登入Log Service控制台,在Project列表,單擊開啟目標Project。

    2. 左側導覽列中,選擇資源 > 機器組。在開啟的機器組頁面中,選擇機器組右側的機器組 > 建立機器組image

    3. 在彈出的建立機器組頁面,填寫以下資訊,並單擊確定

      參數

      說明

      名稱

      機器組名稱,命名規則如下所示:

      • 只能包括小寫字母、數字、短劃線(-)和底線(_)。

      • 必須以小寫字母或者數字開頭和結尾。

      • 長度必須在 2~128 字元之間。

      重要

      建立後,不支援修改機器組名稱,請謹慎填寫。

      機器組標識

      選擇使用者自訂標識

      機器組Topic

      (可選)機器組Topic用於區分不同伺服器產生的日誌資料。更多資訊,請參見日誌主題

      使用者自訂標識

      輸入上述步驟中配置的${user_defined_id}

  4. 檢查機器組狀態

    機器組列表中,單擊目標機器組。在機器組配置頁面,可查看機器組配置資訊以及伺服器狀態。

    • 心跳狀態為OK表示伺服器上的Logtail執行個體與Simple Log ServiceProject串連正常。

    • 如果心跳狀態顯示FAIL,處理操作請參見Logtail機器組問題排查思路(主機情境)

      重要

      建立機器組大約需要2分鐘。建立未生效,將導致心跳為FAIL。請2分鐘後單擊重新整理進行重試。

步驟二:建立Logtail採集配置

  1. 日誌儲存 > 日誌庫頁簽中,單擊目標Logstore。

  2. 展開Logstore功能表列,單擊Logtail配置,然後單擊添加Logtail配置image

  3. 快速資料接入頁面,單擊Docker檔案-容器image

  4. 機器組配置步驟中,選擇步驟一中建立的機器組。然後單擊下一步image

  5. Logtail配置步驟中,輸入配置名稱檔案路徑,其他配置可保持預設,更多資訊,請參見採集主機文本日誌。您也可以添加處理外掛程式,處理文本日誌。更多資訊,請參見處理外掛程式概述。配置完成後,單擊下一步

    說明
    • 配置名稱:僅支援小寫字母、數字、連字號(-)和底線(_),並且必須以小寫字母或者數字作為開頭和結尾。

    • 檔案路徑:為業務容器中記錄檔存放的絕對路徑,例如 /var/log/nginx/access.log

    image

  6. 查詢分析配置步驟中,單擊自動產生索引,並單擊重新整理,可預覽採集到的日誌。image

保留欄位

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

相關文檔