filebeat 0x00 概述容器平臺(tái)最近發(fā)布有點(diǎn)問(wèn)題,整個(gè)平臺(tái)每日產(chǎn)生日志量大約在300GB ,,filebeat采用sidecar的方式采集std管道內(nèi)的日志,; 如此巨大的日志量對(duì)filebeat的pod性能造成巨大的壓力,剛剛開(kāi)始filebeat每個(gè)daemonset的性能配置為200M Hz的cpu和200 MB內(nèi)存,,在此次沖擊之下部分filebeat的pod性能不足直接hang死; 后續(xù)將filbeat的cpu性能提升到1G Hz的cpu和2GB的內(nèi)存,大規(guī)模的日志量測(cè)試中發(fā)現(xiàn)filebeat性能正常,,未出現(xiàn)hang死的情況; 但是又發(fā)現(xiàn)了另外一種情況,,由于短時(shí)間內(nèi)部分容器平臺(tái)的主機(jī)節(jié)點(diǎn)產(chǎn)生了大量的docker日志,,導(dǎo)致節(jié)點(diǎn)主機(jī)的/var/log目錄被大量占用,觸發(fā)監(jiān)控告警,; 按照docker日志的log rotate的原理,,docker自己會(huì)控制日志量,即使段短時(shí)間內(nèi)堆積了大量日志,,docker會(huì)通過(guò)加快刪除舊日志的方式,,維持本地磁盤(pán)的日志文件占用量; 但是在此次的場(chǎng)景中,,發(fā)現(xiàn)docker日志的log rotate功能好像并未正常應(yīng)用,,通過(guò)lsof命令發(fā)現(xiàn),filebeat保持著的文件資源,,可以發(fā)現(xiàn)許多被filebeat占用空間的失效文件(deleted)文件,。 此時(shí),通過(guò)直接kill掉filebeat的daemonset可以快速釋放這些deleted文件,,但是此方法并非長(zhǎng)久之計(jì),,需要通過(guò)改變filebeat的文件句柄占用時(shí)長(zhǎng)參數(shù),。 0x01 解決方案對(duì)于我上面的這個(gè)問(wèn)題,之所以有大量的(deleted),,未釋放文件句柄,,還有個(gè)背景,就是由于磁盤(pán)空間非常有限,,臨時(shí)加了任務(wù),,每小時(shí)刪除12小時(shí)前的日志,換句話(huà)說(shuō),,定時(shí)任務(wù)會(huì)自動(dòng)刪除此時(shí)filebeat正在打開(kāi)著的一些文件,,于是這些文件,就變?yōu)榱宋瘁尫诺奈募?,因此?shí)際文件刪除了,,但空間未被釋放。 解決方案1:# 為了迅速釋放空間占用,,最直接的方法,,就是kill -9 filebeat進(jìn)程,此時(shí)空間會(huì)釋放,。但并不是從根本解決,,定時(shí)任務(wù)還會(huì)刪除這些,filebeat打開(kāi)的文件,,導(dǎo)致空間滿(mǎn),。
解決方案2:filebeat的配置文件filebeat.yml,其實(shí)有兩個(gè)參數(shù),,
即如果一個(gè)文件在某個(gè)時(shí)間段內(nèi)沒(méi)有發(fā)生過(guò)更新,,則關(guān)閉監(jiān)控的文件handle,默認(rèn)1小時(shí),。 # force_close_files: false 說(shuō)明:This option closes a file, as soon as the file name changes. This config option is recommended on windows only. Filebeat keeps the files it's reading open. This can cause issues when the file is removed, as the file will not be fully removed until also Filebeat closes the reading. Filebeat closes the file handler after ignore_older. During this time no new file with the same name can be created. Turning this feature on the other hand can lead to loss of data on rotate files. It can happen that after file rotation the beginning of the new file is skipped, as the reading starts at the end. We recommend to leave this option on false but lower the ignore_older value to release files faster.
即當(dāng)文件名稱(chēng)有變化時(shí),,包括改名和刪除,會(huì)自動(dòng)關(guān)閉一個(gè)文件,。 這兩個(gè)參數(shù)結(jié)合起來(lái),,根據(jù)應(yīng)用需求,一個(gè)文件30分鐘內(nèi)不更新,,則需要關(guān)閉句柄,,文件改名或刪除,需要關(guān)閉句柄,,
可以滿(mǎn)足,,filebeat采集日志,以及定時(shí)刪除歷史文件,這兩個(gè)任務(wù)的基本要求,。 0x02 參考??Filebeat holding deleted files which consumes disk space?? ??Filebeat holds open deleted file descriptions with close_removed?? ??filebeat進(jìn)程寫(xiě)滿(mǎn)磁盤(pán)的情況處理?? |
|
來(lái)自: 黃金屋1 > 《日志系統(tǒng)》