FluentedFluented也許你對Fluentd的統(tǒng)一日志記錄層已經(jīng)有所耳聞??赡苣銓θ罩臼橇鞑皇俏募@個概念也已經(jīng)很熟悉,所以現(xiàn)在就讓我們用這個方法來思考日志層。事實上,最后導(dǎo)致決定性的一點就是fluentd是如何被配置的。全部都是關(guān)于我們?nèi)绾翁幚韘tream的不同元素的:我們從哪里得到數(shù)據(jù),當(dāng)我們獲取到的時候......
也許你對Fluentd的統(tǒng)一日志記錄層已經(jīng)有所耳聞??赡苣銓θ罩臼橇鞑皇俏募@個概念也已經(jīng)很熟悉,所以現(xiàn)在就讓我們用這個方法來思考日志層。
事實上,最后導(dǎo)致決定性的一點就是fluentd是如何被配置的。全部都是關(guān)于我們?nèi)绾翁幚韘tream的不同元素的:我們從哪里得到數(shù)據(jù),當(dāng)我們獲取到的時候用它來做什么,我們將處理過的數(shù)據(jù)發(fā)國際快遞哪里,以及它們在發(fā)快遞過程中的時候,我們要如何處理它。在這篇博客中,我們會回顧一下這些概念,并且將他們運用到以下案例中:
1、日志從Docker容器中輸出命令(但是當(dāng)容器中止的時候,要保持配置)
2、處理JSON日志
3、通過等級將信息進行分類
4、將數(shù)據(jù)流分離到兩個目的地
事實證明,谷歌云平臺和Kubernetes默認設(shè)置下已經(jīng)包括了fluentd日志層輸出,這樣的話,你就可以精確地做這些事情,但是首先,讓我們來看一下fluentd.conf文件中的指令:
1、source指令確定輸入源
2、match指令確定輸出目的地
3、filter指令確定event處理管道
4、system指令設(shè)置系統(tǒng)范圍的配置
5、label指令將內(nèi)部路由的輸出和過濾器分組
6、include指令包括其他文件
基本方案(用于日志記錄Docker標(biāo)準(zhǔn)輸出命令)
現(xiàn)在對于我們的目標(biāo)來說,我們主要會考慮source和match指令。以下是一個樣本,為日志記錄命令配置,命令是從一個容器直接到Treasure Data(而且,因為我們的配置是在Ubuntu主機上,所以它不會和Docker容器一起中止?。?。
那么,發(fā)生了什么呢?
我們的source指令告訴我們正在使用forwardinput plugin,這就告訴fluentd要監(jiān)聽TCP socket來接收event流。
我們有兩個match指令。當(dāng)我們啟動容器的時候,最后一個假定我們已經(jīng)設(shè)置了我們的日志記錄選項:
--log-opt fluentd-tag=td.docker.{{.Name}}
這條指令告訴我們使用標(biāo)準(zhǔn)輸出plugin來打印events到標(biāo)準(zhǔn)輸出。
然而,它不僅第一條指令,也是最有趣的一條?,F(xiàn)在假定一樣的日志記錄選項,我們將所有標(biāo)記有td.*.*的東西都匹配好,并且使用td日志output plugin,將每個console輸出作為單個記錄輸出,發(fā)國際快遞一個名為docker的Treasure Data數(shù)據(jù)庫,在這里,表格也同樣是Docker容器的名字:
auto_create_table在第一個實例上創(chuàng)建表格。
buffer_type file將緩沖區(qū)寫入一個文件。
buffer_path在我們的Docker容器上指定緩沖文件路徑。
flush_interval 5s在刷新緩沖區(qū)時設(shè)置了一個5秒的間隔,并且寫進了Treasure Data表格。
是不是開始明白這是怎么運作的了?想要了解更多關(guān)于fluentd配置和參數(shù),點擊這里查看更多文章:https://docs.fluentd.org/articles/configfile
日志記錄結(jié)果到谷歌云平臺
準(zhǔn)備好查看fluentd是怎么用谷歌云平臺來運行的了嗎?讓我們來看一些不一樣的場景。多虧了Kubernetes團隊,使得這些配置(以及跟這些很相似的配置)在github上實現(xiàn)可用。
處理JSON日志
在這里,我們跟蹤JSON上的日志,并將日志記錄結(jié)果到Kubernetes上。我們要處理一下時間戳,所以我們已經(jīng)包括了time_key和time_format指令。最后,我們用Kubernetes和適當(dāng)?shù)莫毺睾缶Y來標(biāo)注數(shù)據(jù)流。我們同樣也已經(jīng)指定位置文件,并且設(shè)置read_from_head為真。這就使得我們要停止并且重啟處理if,由于某些原因,我們的stream就被打斷了。
通過不同的層面來分類信息
我們可以追蹤不同的信息,使用常規(guī)表達方式來查找部分信息,比如格式,層次(嚴(yán)重性),信息,錯誤(如果有錯誤的話)和狀態(tài)碼。注意,我們必須在輸出上解析時間。再一次,我們使用位置文件來保持我們在stream中的位置。我們應(yīng)該包括一個match部分來路由數(shù)據(jù)到一個特定的目的地。
將數(shù)據(jù)流分離到兩個不同的目的地
在這里,我們解析自動定量日志,管理我們的緩沖區(qū),查詢和區(qū)塊大小。在這兩個目的地(也就是,GCP和Kubernetes)的案例中,我們一直在重新嘗試。
Whats next
你能夠自己創(chuàng)建最簡單的日志記錄基礎(chǔ)設(shè)施嗎?讓Fluentd來!
fluentd.org
這個網(wǎng)站上有不下于200個輸入,也還有其它插件。這里的話,你可以看到他們通過人氣降序排列的
fluentd.org/plugins/all
如果想要通過分類了解plug-ins,點擊上面這個網(wǎng)址
fluentd.org/plugins
最后,在這個網(wǎng)站上可以獲取Treasure Data(你可以在treasuredata.com上注冊一個賬號,有14天的試用期)
特別聲明:以上文章內(nèi)容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部