大型企業應用規模大,除錯 / 解決問題由於在生產環境中不會有開發環境的除錯工具,如果需要模擬還原當時的環境,目前的解決辦法是進行日誌記錄
elk stack 是 elasticsearch、logstash、kibana 三個開源軟體的組合。
和傳統的日誌處理方案相比,elk stack 具有如下幾個優點:
傳統的日誌收集方案有splunk、logstash、flume、fluentd等,其中splunk和fluentd被列入了docker官方文件裡。fluentd是乙個出來時間不長,但是對傳統收集工具 logstash挑戰比較大的收集方案,同時它也在去年被亞馬遜評為最好的日誌收集工具。splunk則是一套基於商業的解決方案,一般只有大型企業才會使用,這種方案是目前最好的,但也是最昂貴的。
在其他方案中,傳統的解決方案最常見的是logstash,它的配合工具一般是elasticsearch和kibana。圖2是一張經典的elk架構圖,首先在每乙個節點上部署乙個logstash資料端,稱為shipper,然後搭乙個redis的快取,在redis快取後面再用另乙個logstash去做索引,稱為indexer。之所以有這樣乙個架構是因為logstash本身執行效率率比較低,用的是jruby語言,它使得索引不能在每乙個客戶端去做,因為會占用很大的的記憶體。
fluentd的方案與logstash差不多,但是它可以省掉indexer這層,而且它的核心**是c++寫的,從效率上說會比logstash高很多。除此之外,fluentd是除了splunk以外唯一乙個在docker官方日誌驅動裡面的工具。一般來說,日誌收集是通過收集檔案的方式進行的,因為docker會預設將容器的日誌放到乙個指定的目錄裡。logstash會去蒐集目錄裡面的日誌,但是存在乙個問題,就是logstash在蒐集的時候是每隔一定的時間在目錄裡面做一次查詢,這樣很可能因為監測的服務出故障造成日誌丟失。fluentd則不僅支援logstash那種檔案的方式去蒐集日誌,還可以通過docker的fluentd driver直接定向蒐集,但是蒐集的日誌docker log命令是看不到的。對使用者而言,可以根據實際的應用產品,對這兩種方式進行選擇。
go kit微服務 日誌功能
本質上講,go kit中介軟體採用了裝飾者模式,傳入endpoint物件,封裝部分業務邏輯,然後返回endpoint物件。我們通過給service層新增日誌功能來說明一下 新建middleware.go檔案,加入如下 type servicemiddleware func service servi...
dubbo微服務日誌呼叫鏈
dubbo實現日誌呼叫鏈 threadcontext threadlocal 配置修改 1.dubbo 配置預設的客戶端過濾器和服務端過濾器 servicefilter com.logfilter client com.logfilter 修改dubbo的provider配置檔案,在dubbo pr...
微服務海量日誌監控平台
前面幾章蜻蜓點水的介紹了elasticsearch apm相關的內容。本片主要介紹怎麼使用elk stack幫助我們打造乙個支撐起日產tb級的日誌監控系統 在企業級的微服務環境中,跑著成百上千個服務都算是比較小的規模了。在生產環境上,日誌扮演著很重要的角色,排查異常需要日誌,效能優化需要日誌,業務排...