溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2022-07-26 09:44:48 來源:億速云 閱讀:168 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下go單體日志采集zincsearch怎么實(shí)現(xiàn)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一 構(gòu)架

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

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

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

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

二 zinsearch 安裝

我是通過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ò)名稱
NET_NAME = zinnet

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

二 logbeat

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

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

logbeat特點(diǎn):

  • 當(dāng)zincsearch掛掉后整個(gè)采集就阻塞住了,會(huì)按照設(shè)定的時(shí)長進(jìn)行服務(wù)可用性輪詢試探,直到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ù)的,刪除目前通過文檔只發(fā)現(xiàn)了兩種方式,一種是根據(jù)記錄的id進(jìn)行單個(gè)刪除,一種是根據(jù)索引批量刪除該索引下的所有數(shù)據(jù),所以數(shù)據(jù)最好按照天或者月進(jìn)行索引組織,這樣方便以后按照天或者月進(jìn)行數(shù)據(jù)刪除,畢竟誰的硬盤也不是無窮大的。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以上就是“go單體日志采集zincsearch怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI