最近在使用阿里云日志進(jìn)行“上下文瀏覽”和“LiveTail”的時(shí)候突然發(fā)現(xiàn)無法正常過濾。
比如:我要實(shí)時(shí)查看eureka服務(wù)的日志,通過“Pod名稱”或者“容器名稱”過濾以后,LiveTail還是會顯示其他服務(wù)的日志內(nèi)容,如下圖:

然后提交工單反饋,過了幾個(gè)小時(shí),技術(shù)說處理好了,我去測了下發(fā)現(xiàn)還是一樣的問題,最后售后技術(shù)只好拉了一個(gè)釘釘群,把問題交給后端的技術(shù)來處理。
經(jīng)過反復(fù)溝通,最后確認(rèn)是我采集配置文件的問題。
因?yàn)槲宜腥萜鞑杉褂玫囊粋€(gè)配置,導(dǎo)致所有容器日志在一個(gè)上下文中,無法過濾。
要解決這個(gè)問題,有兩種解決方案:
1、在業(yè)務(wù)pod yaml 中去增加一些環(huán)境變量,這樣logtail會根據(jù)環(huán)境變量自動創(chuàng)建相應(yīng)配置,可以把每個(gè)pod的數(shù)據(jù)采集到不同的logstore,簡化配置代價(jià)。
具體文檔:https://help.aliyun.com/document_detail/87540.html
也就是一個(gè)pod或者一個(gè)業(yè)務(wù)服務(wù)一個(gè)Logstore,這樣會有什么問題呢?
一是日志project下面會有大量的Logstore,我們項(xiàng)目就四十個(gè)服務(wù)左右,我都覺得非常不方便,如果服務(wù)更多呢。
二是無法全局關(guān)鍵詞搜索,這樣和我遠(yuǎn)程到服務(wù)器或者通過kubernetes控制臺直接查看沒啥區(qū)別了。
也可以通過環(huán)境變量 aliyun_logs_{key}_logstore 把所有pod設(shè)置為一個(gè)Logstore,但是只支持極簡模式,也就是按行采集,多行日志就不能使用這種方式了。
因?yàn)槲覀兌际莏ava日志,所以只能放棄這個(gè)方案。
2、在Logstore里面為每個(gè)pod或者業(yè)務(wù)服務(wù)配置一個(gè)采集配置,如果有10個(gè)服務(wù)就10個(gè)配置,有100個(gè)就配置100個(gè),有N個(gè)就配置N個(gè),可以想象有多繁瑣,這不是花錢找虐嗎。
這個(gè)問題在以前未遷移kubernetes集群時(shí)未出現(xiàn)過,也是一個(gè)project下面一個(gè)Logstore,然后一個(gè)通用配置采集所有服務(wù)的日志,“上下文瀏覽”和“LiveTail”也正常。
我一度以為這是一個(gè)bug,但是我又去看了日志服務(wù)采集kubernetes日志的文檔,使用限制的確寫了。
上下文限制:默認(rèn)一個(gè)采集配置在同一上下文中,若需要每個(gè)容器的日志在不同上下文中,請單獨(dú)為每個(gè)容器創(chuàng)建采集配置。

也不知道這個(gè)產(chǎn)品在設(shè)計(jì)這個(gè)邏輯的時(shí)候,是怎么考慮的,把一個(gè)本身繁瑣的事情,更加繁瑣化了,不知道有沒有考慮過操作便利和查詢實(shí)用。
感覺設(shè)計(jì)出來沒有親自用過,就發(fā)布出來斂錢了。
我相信阿里的技術(shù),不可能實(shí)現(xiàn)不了一個(gè)配置采集所有容器日志,然后進(jìn)行“上下文瀏覽”和“LiveTail”。
我也咨詢了幾個(gè)以前的同事,他們項(xiàng)目也是采用的一個(gè)服務(wù)一個(gè)Logstore,放棄全局搜索。
沒辦法最終只能采用第三種方案:暫時(shí)放棄“上下文瀏覽”和“LiveTail”功能。


