<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
微服務中的紀錄檔採集方案ELK(EFK)已經是基本事實標準了,但是單體服務中卻沒有像ELK這樣的成熟採集方案,這與單體性質有關,單體畢竟涉及到服務少,而ELK又是很耗費資源的,單體要是上ELK,可能需要的伺服器資源比業務伺服器還多,所以單體沒有上ELK的。
但是單體也有紀錄檔採集需要,畢竟出了問題都要查紀錄檔的,如果沒有采集系統,就只能靠tail命令不斷去找,就算有,一般也是直接放到mysql或者mongodb中,然後直接查庫,好點的可能做個查詢頁面。
下面我要介紹的是個號稱ElasticSearch替代方案的zincsearch,這個zincsearch是對標ElasticSearch的,專門解決es的部署困難,資源要求高。這個zincsearch由go語言編寫而成,非常容易就跑起來了。
週末有時間正好對zinsearch進行了調研,網上類似的技術文章真的太少了,有的也是官網檔案的翻譯。
zincsearch用官方的話說是一個全文字搜尋引擎,而且搜尋很快。支援es格式介面,一般ELK中直接filebeat採集資料直接給es,你要使用zincsearch可以直接把它放到filebeat後頭,filebeat採集資料給zincsearch。因為單體比較簡單,filebeat使用也有一定門檻,我就自己寫了一個logfile,專門採集紀錄檔,通過介面把資料傳給zincsearch,構架如下圖。
資料入庫後通過zincsearch自帶ui介面(類似kibana)就可以檢索資料了.
我是通過docker安裝的,為了方便啟動做成了一個docker-compose,設定如下:
docker-compose.yml
version: '3.5' networks: zinnet: driver: ${NETWORKS_DRIVER} services: zinc: ## mqtt 服務 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
# 設定時區 TZ=Asia/Shanghai # 設定網路模式 NETWORKS_DRIVER=bridge # 宿主機上Mysql Reids資料存放的目錄路徑 DATA_PATH_HOST = ./data # 網路名稱 NET_NAME = zinnet
在目錄下建立指定的data目錄 執行 docker-compose up -d 即可。
logbeat是一個我自己寫的類似filebeat的採集器,主要原理也是用了一個由tail作用的go庫對檔案進行監控,當由資料採集上來後進行過濾處理然後傳送給zincsearch。
logbeat也是完全由golang編寫,專案地址 gitee.com/lambdang/lo… 該專案下載下來編譯後進行設定即可使用。
logbeat特點:
如果有filebeat經驗的人也可以直接用filebeat進行資料採集,zincsearch檔案上有filebeat的設定。
設定項如下:
Beat: Files: - Index: api File: ./test.log Hosts: http://localhost:4080 Username: admin Password: "123456" RetrySecond: 300 #重試秒s Log: OutType: all
zincsearch是以索引組織資料的,刪除目前通過檔案只發現了兩種方式,一種是根據記錄的id進行單個刪除,一種是根據索引批次刪除該索引下的所有資料,所以資料最好按照天或者月進行索引組織,這樣方便以後按照天或者月進行資料刪除,畢竟誰的硬碟也不是無窮大的。
之前一直想通過按照搜尋進行資料刪除,比如給一個時間段,然後進行刪除,但是沒有發現類似方法,有能這樣實現的小夥伴歡迎交流。
zincsearch索引資料一共有如下幾種型別
其中date型別是個特殊的存在
檔案中索引的日期型別可以按照實際文字資料設定format。如下圖:
但是通過一番摸索發現這個format只是你紀錄檔的格式,並不是最終ui介面顯示的格式,經過測試,所有date型別資料最終都會轉換成”數值“,可能是為了搜尋的時候可以比較大小吧,但是顯示的時候也是數值,這個就看著很不友好了。
目前我能想到的就覺方案是索引裡不要弄date型別,直接弄numeric型別時間戳和text型別的字串,兩個同時弄,即方便時間區間查詢也方便檢視,也可以根據時間字串進行查詢,畢竟這可是支援全文檢索的。誰有更好的方案歡迎交流。
所有資料查詢都需要一個時間範圍,一般預設是30分鐘內,但是你也可以設定一天,一星期,一個月,也可以設定時間段。但是不要以為設定多少時間就能檢索出該時間內所有資料,還要看資料量,就是資料左下角那個數值。
這個數值可以設定,這個才是決定最終的資料量的,它設定100,你檢索出來的資料只是檢索條件中結束時間點開始往前100條資料。所以你時間跨度設定再大,這個數值很小,你查出來資料也很少的。
整體看這套單體採集方案可行性比較高,不會佔用太多的資源,也能夠對紀錄檔進行實時採集。但是畢竟程式碼都是一天搞出來的,不知道長期測試會有什麼問題,下一步打算用這套採集系統做個長期測試看看。
大家用的什麼樣的紀錄檔採集方案歡迎留言交流。
紀錄檔只是系統可觀測性的一方面,其他還包括,鏈路,效能指標監控,這些東西在為微服務上都有很好的解決方案,可是單體上卻沒有,原因無他,就是複雜性,資源高。
以上就是go單體紀錄檔採集zincsearch方案實現的詳細內容,更多關於go單體紀錄檔採集zincsearch的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45