本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文介紹Logtail的使用限制。
運行環境
限制項 | 限制說明 |
體系結構 |
|
內存 | 負載為空時,不開啟插件最少需要20 MB內存,開啟插件最少需要120 MB內存。 實際使用量與采集速率、監控目錄和文件數量、發送阻塞程度有關。 |
系統環境 |
|
Kubernetes |
|
Docker | 采集容器標準輸出的限制說明如下:
|
ACK logtail-ds組件 |
重要 以上組件均為system-cluster-critical優先級,集群資源不足時請勿部署,否則可能驅逐節點上原有的Pod。 |
文件采集
限制項 | 限制說明 |
單條日志長度 | 默認限制為512 KB。您可通過啟動參數max_read_buffer_size進行調整,最大不能超過8 MB。具體操作,請參見設置Logtail啟動參數。 多行日志按行首正則表達式劃分后,每條日志大小限制仍為512 KB。如果日志超過512 KB,會被強制拆分為多條進行采集。例如:單條日志大小為1025 KB,則第一次處理512 KB,第二次處理512 KB,第三次處理1 KB,最終采集結果為多條不完整的日志。 |
文件編碼 | 支持UTF-8或GBK的編碼日志文件,建議使用UTF-8編碼獲得更好的處理性能。 警告 如果日志文件為其它編碼格式則會出現亂碼、數據丟失等問題。 |
日志文件大小 | 無限制。 |
日志文件輪轉 | 日志輪轉隊列大小默認為20。您可通過啟動參數logreader_max_rotate_queue_size進行調整。具體操作,請參見設置Logtail啟動參數。 支持設置采集路徑為 重要 同一個Logtail實例中請勿混用兩種形式,否則可能導致同一文件匹配多個Logtail采集配置,出現重復采集。 如果未處理完成的文件超過20個,將導致新生成的日志丟失。此類情況,請優先排查Logstore Shard寫入Quota是否超限,并調整Logtail并發水平。具體操作,請推薦參數值。 更多信息,請參見相關技術文章。 |
日志解析阻塞時采集行為 | 日志解析阻塞時,Logtail會保持該日志文件描述符為打開狀態,避免阻塞期間文件被刪除,導致日志丟失。 如果解析阻塞期間出現多次日志文件輪轉,Logtail會將文件放入輪轉隊列。 |
正則表達式 | 支持Perl兼容正則表達式。 |
JSON | 完全支持標準JSON(RFC7159、ECMA-404)。不支持非標準JSON,例如 |
同一文件對應多個Logtail配置 | 默認一個文件只能匹配一個Logtail采集配置。如果文件中的日志需要被采集多份,請參見如何實現文件中的日志被采集多份。 重要 采集多份時,文件讀取的IO、計算資源和網絡IO都會線性增加。 |
文件打開行為 | Logtail會保持被采集的文件和輪轉隊列中待采集的文件處于打開狀態,以保證采集數據完整性。出現以下情況,會關閉文件。
如果無論文件是否采集完成或仍有日志寫入文件,您都希望文件在刪除后的可控時間內釋放文件句柄,則您可通過啟動參數force_release_deleted_file_fd_timeout設置超時時間。具體操作,請參見設置Logtail啟動參數。 |
首次日志采集行為 | Logtail只采集增量的日志文件。首次發現文件被修改后,如果文件大小超過1 MB(容器標準輸出為512 KB),則從最后1 MB處開始采集,否則從開始位置采集。 您可通過Logtail采集配置中的tail_size_kb參數調整新文件首次采集的大小。具體操作,請參見Logtail配置。 如果下發Logtail采集配置后,日志文件一直無修改,則Logtail不會采集該文件。如果需要采集歷史文件,請參見導入歷史日志文件。 |
文件發生覆蓋的行為 | Logtail采用inode+文件中前1024字節的Hash識別文件。文件被覆蓋后,如果inode或文件前1024字節Hash發生變化,則文件會作為新文件從頭開始采集,否則不會被采集。 |
文件發生移動的行為 | 文件發生移動后,如果匹配Logtail采集配置,且該Logtail采集配置之前從未匹配過該文件,則移動后的文檔將被當成新文件從頭開始采集,否則不會被采集。 |
文件采集歷史 | Logtail會在內存中保留文件采集歷史進度,保證文件發生變化后僅采集增量部分,超過保留范圍的日志如果發生寫入,會導致重復采集。
|
非標準文本日志 | 對于日志中包含\0的行,該條日志會被截斷到第一個\0處,之后部分丟棄。對于其他轉義字符(如ASCII顏色)或不可見字符,Logtail將按原樣上報。 |
容器采集
通過Logtail采集容器日志時,除上述文件采集的限制項外,還存在如下限制項。
限制項 | 限制說明 |
首次日志采集行為 | 如果采集的是容器標準輸出,則首次發現文件修改后,默認如果文件大小超過512 KB,則從最后512 KB處開始采集,否則從頭采集。您可通過Logtail采集配置中的StartLogMaxOffset參數調整。具體操作,請參見通過DaemonSet-控制臺方式采集容器標準輸出。 |
軟鏈接 | 采集容器文件中的日志時,不支持目錄及文件的軟連接。 |
容器生命周期 | 默認情況下,容器生命周期至少在10秒以上,Logtail才能采集到日志。在容器文件采集場景下,出于性能因素,Logtail將限制3分鐘內容器更新次數為10次。您可通過啟動參數docker_config_update_interval和max_docker_config_update_times進行調整。具體操作,請設置Logtail啟動參數。 |
標準輸出日志輪轉 | 容器的標準輸出文件由docker或kubelet進行輪轉,kubelet日志文件輪轉默認大小為10 MB(docker日志輪轉在ACK上被設置為100 MB),如果容器每秒輸出標準輸出的速率大于10 MB/s,將導致文件快速輪轉,建議改用容器文件方式采集或修改kubelet的containerLogMaxSize參數以避免日志丟失。 |
標準輸出日志驅動 | 如果使用Docker作為容器運行時,必須在Docker的配置文件daemon.json中添加 |
CheckPoint管理
限制項 | 限制說明 |
CheckPoint超時時間 | 默認情況下,如果文件超過30天未被修改,該Checkpoint將被刪除。如果在Logtail采集配置中設置了 |
CheckPoint保存策略 | 定期保存(15分鐘),程序退出時會自動保存。您可以通過啟動參數check_point_dump_interval進行調整。具體操作,請參見設置Logtail啟動參數。 |
CheckPoint保存位置 | 保存路徑默認為 |
宕機時的處理 | 由于CheckPoint是定期保存,因此宕機恢復時將從上一個完整保存的CheckPoint開始恢復,可能導致數據采集重復。調整Checkpoint保存策略以減少數據被重復采集。 |
Logtail采集配置
限制項 | 限制說明 |
配置更新生效的延時 | 從通過控制臺或API更新配置到Logtail客戶端配置生效的延時約為30秒。 |
配置動態加載 | 支持,且其中某一配置更新不影響其他配置。 |
單個Logtail實例的總體可加載配置數 | 理論上無限制。建議一臺服務器中的Logtail采集配置數不超過100個。 |
第三方Flusher輸出 | 通過日志服務控制臺或者API創建的配置會與Logstore建立關聯,因此,當您在插件配置中使用第三方Flusher時,Logtail會默認往當前Logstore發送一份數據。 |
多賬號、跨賬號 | 支持。更多信息,請參見多賬號場景和通過Logtail跨阿里云賬號采集容器日志。 |
多地域 | 默認不支持,如有需求請提工單申請。 |
全球加速 | 支持。需在服務側開啟后,在客戶端設置全球加速。更多信息,請參見開啟全球加速服務。 |
機器組
限制項 | 限制說明 |
機器數量 | 理論上無限制,建議配置不超過100,000個,否則心跳無法正常獲取。 |
應用配置數 | 理論上無限制,建議配置數不超過1,000個。 |
性能
限制項 | 限制說明 |
日志處理吞吐能力 | 原始日志流量默認限制為20 MB/s(數據被編碼壓縮后上傳,一般壓縮率為5~10倍)。超過該日志流量則有可能丟失日志,您可啟動參數max_bytes_per_sec進行調整。具體操作,請參見設置Logtail啟動參數。 |
最大性能 | 單核的能力如下:
通過啟動參數process_thread_count設置多個處理線程,可提升1.5~3倍性能。 |
最大監控目錄及文件數 | 與內存使用限制參數mem_usage_limit有關(主機場景默認為384 MB,容器場景默認為2048 MB),分為以下四個層級:
當上述任一層級所監控的目錄及文件數達到上限時,Logtail不再對該層級中剩余的目錄和文件進行監控。您可以通過提高Logtail采集配置監控目錄的精度或調整啟動參數mem_usage_limit來提高監控上限。關于mem_usage_limit參數的更多信息,請參見設置Logtail啟動參數。 另外,針對Linux系統,Logtail還支持通過inotify機制對目錄進行監聽,從而減少日志采集的延時。inotify機制所能監控的最大目錄數(含子目錄)為3000。 |
資源超限處理策略 | 如果Logtail占用相關資源超過最大限制的時間5分鐘,則Logtail會強制重啟,此時數據可能會丟失或重復。 |
多租戶隔離 | Logtail在配置級別實現隔離,即單個Logtail采集配置出現異常不影響其他Logtail采集配置。更多信息,請參見相關技術文章。 |
日志采集延遲 | 正常情況下從日志寫入磁盤到Logtail采集到日志的延遲不超過1秒。 |
日志上傳策略 | Logtail會將同一文件的日志自動聚合上傳,聚合條件為日志超過4000條、日志總大小超過512 KB或者日志采集時間超過3秒。任一條件滿足則觸發上傳行為 |
錯誤處理
限制項 | 限制說明 |
網絡錯誤處理 | 在出現網絡異常時會主動重試并自動調整重試間隔。在極端情況下,可能存在日志重復采集或丟棄的風險:
|
資源配額超限處理 | 如果數據發送速率超出Logstore最大配額,Logtail會阻塞采集并自動重試。請嘗試擴大Logstore的Shard數量。更多信息,請參見相關技術文章。 |
客戶端時間異常 | 可能因為請求時間和服務端時間差別超過15分鐘,導致最大重試5次仍然不成功,數據被丟棄。請修正客戶端機器時間。 |
Project或Logstore不存在 | 重試5次仍然不成功后丟棄數據。這種情況可能是因為您通過API刪除了Logstore。請通過API刪除對應Logtail采集配置和配置應用。 |
鑒權失敗 | 重試5次仍然不成功后丟棄數據。這種情況通常有2種可能。
|
其他未知錯誤 | 重試5次仍然不成功后丟棄數據。 |
超時最大嘗試時間 | 如果數據持續發送失敗超過6小時,該數據將被丟棄。 |
狀態自檢 | 支持異常情況下自動重啟,例如程序異常退出及使用資源超限等。 |