欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go單體日志采集zincsearch方案實(shí)現(xiàn)

 更新時(shí)間:2022年07月25日 15:35:56   作者:lambdang  
這篇文章主要為大家介紹了go單體日志采集zincsearch方案實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

微服務(wù)中的日志采集方案ELK(EFK)已經(jīng)是基本事實(shí)標(biāo)準(zhǔn)了,但是單體服務(wù)中卻沒(méi)有像ELK這樣的成熟采集方案,這與單體性質(zhì)有關(guān),單體畢竟涉及到服務(wù)少,而ELK又是很耗費(fèi)資源的,單體要是上ELK,可能需要的服務(wù)器資源比業(yè)務(wù)服務(wù)器還多,所以單體沒(méi)有上ELK的。

但是單體也有日志采集需要,畢竟出了問(wèn)題都要查日志的,如果沒(méi)有采集系統(tǒng),就只能靠tail命令不斷去找,就算有,一般也是直接放到mysql或者mongodb中,然后直接查庫(kù),好點(diǎn)的可能做個(gè)查詢(xún)頁(yè)面。

下面我要介紹的是個(gè)號(hào)稱(chēng)ElasticSearch替代方案的zincsearch,這個(gè)zincsearch是對(duì)標(biāo)ElasticSearch的,專(zhuān)門(mén)解決es的部署困難,資源要求高。這個(gè)zincsearch由go語(yǔ)言編寫(xiě)而成,非常容易就跑起來(lái)了。

周末有時(shí)間正好對(duì)zinsearch進(jìn)行了調(diào)研,網(wǎng)上類(lèi)似的技術(shù)文章真的太少了,有的也是官網(wǎng)文檔的翻譯。

一 構(gòu)架

zincsearch用官方的話(huà)說(shuō)是一個(gè)全文本搜索引擎,而且搜索很快。支持es格式接口,一般ELK中直接filebeat采集數(shù)據(jù)直接給es,你要使用zincsearch可以直接把它放到filebeat后頭,filebeat采集數(shù)據(jù)給zincsearch。因?yàn)閱误w比較簡(jiǎn)單,filebeat使用也有一定門(mén)檻,我就自己寫(xiě)了一個(gè)logfile,專(zhuān)門(mén)采集日志,通過(guò)接口把數(shù)據(jù)傳給zincsearch,構(gòu)架如下圖。

數(shù)據(jù)入庫(kù)后通過(guò)zincsearch自帶ui界面(類(lèi)似kibana)就可以檢索數(shù)據(jù)了.

二 zinsearch 安裝

我是通過(guò)docker安裝的,為了方便啟動(dòng)做成了一個(gè)docker-compose,配置如下:

docker-compose.yml

version: '3.5'
networks:
  zinnet:
    driver: ${NETWORKS_DRIVER}
services:
  zinc: ## mqtt 服務(wù)
    image: zinc:v1
    environment:
      - TZ=${TZ}
      - DATA_PATH="/data"
      - ZINC_FIRST_ADMIN_USER=admin
      - ZINC_FIRST_ADMIN_PASSWORD=123456
      - ZINC_PROMETHEUS_ENABLE=true
    ports:
      - "4080:4080"
    volumes:
      - ${DATA_PATH_HOST}:/data
    networks:
      - ${NET_NAME}
    restart: always

.env

# 設(shè)置時(shí)區(qū)
TZ=Asia/Shanghai
# 設(shè)置網(wǎng)絡(luò)模式
NETWORKS_DRIVER=bridge
# 宿主機(jī)上Mysql Reids數(shù)據(jù)存放的目錄路徑
DATA_PATH_HOST = ./data
# 網(wǎng)絡(luò)名稱(chēng)
NET_NAME = zinnet

在目錄下創(chuàng)建指定的data目錄 運(yùn)行 docker-compose up -d 即可。

二 logbeat

logbeat是一個(gè)我自己寫(xiě)的類(lèi)似filebeat的采集器,主要原理也是用了一個(gè)由tail作用的go庫(kù)對(duì)文件進(jìn)行監(jiān)控,當(dāng)由數(shù)據(jù)采集上來(lái)后進(jìn)行過(guò)濾處理然后發(fā)送給zincsearch。

logbeat也是完全由golang編寫(xiě),項(xiàng)目地址 gitee.com/lambdang/lo… 該項(xiàng)目下載下來(lái)編譯后進(jìn)行配置即可使用。

logbeat特點(diǎn):

  • 當(dāng)zincsearch掛掉后整個(gè)采集就阻塞住了,會(huì)按照設(shè)定的時(shí)長(zhǎng)進(jìn)行服務(wù)可用性輪詢(xún)?cè)囂?,直到zincsearch服務(wù)恢復(fù)
  • 該logbeat支持多文本日志監(jiān)控,采集后為了減少zincsearch的壓力,會(huì)順序進(jìn)行數(shù)據(jù)發(fā)送。

如果有filebeat經(jīng)驗(yàn)的人也可以直接用filebeat進(jìn)行數(shù)據(jù)采集,zincsearch文檔上有filebeat的配置。

配置項(xiàng)如下:

Beat:
  Files:
    - 
      Index: api
      File: ./test.log
  Hosts: http://localhost:4080
  Username: admin
  Password: "123456"
  RetrySecond: 300 #重試秒s
Log:
  OutType: all

三 zincsearch 使用經(jīng)驗(yàn)

1 關(guān)于刪除

zincsearch是以索引組織數(shù)據(jù)的,刪除目前通過(guò)文檔只發(fā)現(xiàn)了兩種方式,一種是根據(jù)記錄的id進(jìn)行單個(gè)刪除,一種是根據(jù)索引批量刪除該索引下的所有數(shù)據(jù),所以數(shù)據(jù)最好按照天或者月進(jìn)行索引組織,這樣方便以后按照天或者月進(jìn)行數(shù)據(jù)刪除,畢竟誰(shuí)的硬盤(pán)也不是無(wú)窮大的。

之前一直想通過(guò)按照搜索進(jìn)行數(shù)據(jù)刪除,比如給一個(gè)時(shí)間段,然后進(jìn)行刪除,但是沒(méi)有發(fā)現(xiàn)類(lèi)似方法,有能這樣實(shí)現(xiàn)的小伙伴歡迎交流。

2 關(guān)于日期date類(lèi)型

zincsearch索引數(shù)據(jù)一共有如下幾種類(lèi)型

其中date類(lèi)型是個(gè)特殊的存在

文檔中索引的日期類(lèi)型可以按照實(shí)際文本數(shù)據(jù)設(shè)置format。如下圖:

但是通過(guò)一番摸索發(fā)現(xiàn)這個(gè)format只是你日志的格式,并不是最終ui界面顯示的格式,經(jīng)過(guò)測(cè)試,所有date類(lèi)型數(shù)據(jù)最終都會(huì)轉(zhuǎn)換成”數(shù)值“,可能是為了搜索的時(shí)候可以比較大小吧,但是顯示的時(shí)候也是數(shù)值,這個(gè)就看著很不友好了。

目前我能想到的就覺(jué)方案是索引里不要弄date類(lèi)型,直接弄numeric類(lèi)型時(shí)間戳和text類(lèi)型的字符串,兩個(gè)同時(shí)弄,即方便時(shí)間區(qū)間查詢(xún)也方便查看,也可以根據(jù)時(shí)間字符串進(jìn)行查詢(xún),畢竟這可是支持全文檢索的。誰(shuí)有更好的方案歡迎交流。

3 關(guān)于檢索中時(shí)間選項(xiàng)

所有數(shù)據(jù)查詢(xún)都需要一個(gè)時(shí)間范圍,一般默認(rèn)是30分鐘內(nèi),但是你也可以設(shè)置一天,一星期,一個(gè)月,也可以設(shè)置時(shí)間段。但是不要以為設(shè)置多少時(shí)間就能檢索出該時(shí)間內(nèi)所有數(shù)據(jù),還要看數(shù)據(jù)量,就是數(shù)據(jù)左下角那個(gè)數(shù)值。

這個(gè)數(shù)值可以設(shè)置,這個(gè)才是決定最終的數(shù)據(jù)量的,它設(shè)置100,你檢索出來(lái)的數(shù)據(jù)只是檢索條件中結(jié)束時(shí)間點(diǎn)開(kāi)始往前100條數(shù)據(jù)。所以你時(shí)間跨度設(shè)置再大,這個(gè)數(shù)值很小,你查出來(lái)數(shù)據(jù)也很少的。

結(jié)語(yǔ)

整體看這套單體采集方案可行性比較高,不會(huì)占用太多的資源,也能夠?qū)θ罩具M(jìn)行實(shí)時(shí)采集。但是畢竟代碼都是一天搞出來(lái)的,不知道長(zhǎng)期測(cè)試會(huì)有什么問(wèn)題,下一步打算用這套采集系統(tǒng)做個(gè)長(zhǎng)期測(cè)試看看。

大家用的什么樣的日志采集方案歡迎留言交流。

日志只是系統(tǒng)可觀(guān)測(cè)性的一方面,其他還包括,鏈路,性能指標(biāo)監(jiān)控,這些東西在為微服務(wù)上都有很好的解決方案,可是單體上卻沒(méi)有,原因無(wú)他,就是復(fù)雜性,資源高。

以上就是go單體日志采集zincsearch方案實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于go單體日志采集zincsearch的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語(yǔ)言中一些不常見(jiàn)的命令參數(shù)詳解

    Go語(yǔ)言中一些不常見(jiàn)的命令參數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言中一些不常見(jiàn)的命令參數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • go判斷文件夾是否存在并創(chuàng)建的實(shí)例

    go判斷文件夾是否存在并創(chuàng)建的實(shí)例

    這篇文章主要介紹了go判斷文件夾是否存在,并創(chuàng)建的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • GO 使用Webhook 實(shí)現(xiàn)github 自動(dòng)化部署的方法

    GO 使用Webhook 實(shí)現(xiàn)github 自動(dòng)化部署的方法

    這篇文章主要介紹了GO 使用Webhook 實(shí)現(xiàn)github 自動(dòng)化部署的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Golang Defer作用域及執(zhí)行順序使用案例

    Golang Defer作用域及執(zhí)行順序使用案例

    這篇文章主要為大家介紹了Golang Defer作用域及執(zhí)行順序使用案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 深入理解Go語(yǔ)言中的結(jié)構(gòu)體

    深入理解Go語(yǔ)言中的結(jié)構(gòu)體

    本文主要介紹了深入理解Go語(yǔ)言中的結(jié)構(gòu)體,包括定義結(jié)構(gòu)體、聲明結(jié)構(gòu)體變量、使用結(jié)構(gòu)體、結(jié)構(gòu)體關(guān)聯(lián)函數(shù)、new、組合等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • go語(yǔ)言讀取json并下載高清妹子圖片

    go語(yǔ)言讀取json并下載高清妹子圖片

    前面我們介紹了使用python下載高清妹子圖,作為程序猿,我們當(dāng)然不能只會(huì)一種語(yǔ)言,今天我們就來(lái)使用go語(yǔ)言來(lái)讀取API來(lái)下載妹子圖吧,有需要的宅男們可以參考下。
    2015-03-03
  • Go語(yǔ)言同步等待組sync.WaitGroup結(jié)構(gòu)體對(duì)象方法詳解

    Go語(yǔ)言同步等待組sync.WaitGroup結(jié)構(gòu)體對(duì)象方法詳解

    這篇文章主要為大家介紹了Go語(yǔ)言同步等待組sync.WaitGroup結(jié)構(gòu)體對(duì)象方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Go 實(shí)現(xiàn)HTTP中間人代理的操作

    Go 實(shí)現(xiàn)HTTP中間人代理的操作

    這篇文章主要介紹了Go 實(shí)現(xiàn)HTTP中間人代理的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Go 實(shí)現(xiàn)一次性打包各個(gè)平臺(tái)的可執(zhí)行程序

    Go 實(shí)現(xiàn)一次性打包各個(gè)平臺(tái)的可執(zhí)行程序

    這篇文章主要介紹了Go 實(shí)現(xiàn)一次性打包各個(gè)平臺(tái)的可執(zhí)行程序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    Golang如何實(shí)現(xiàn)任意進(jìn)制轉(zhuǎn)換的方法示例

    進(jìn)制轉(zhuǎn)換是人們利用符號(hào)來(lái)計(jì)數(shù)的方法,進(jìn)制轉(zhuǎn)換由一組數(shù)碼符號(hào)和兩個(gè)基本因素“基數(shù)”與“位權(quán)”構(gòu)成,這篇文章主要給大家介紹了關(guān)于Golang如何實(shí)現(xiàn)10進(jìn)制轉(zhuǎn)換62進(jìn)制的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí)學(xué)習(xí),下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09

最新評(píng)論