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