go語言練手小專案,基於go語言實現日誌收集,需要用到docker+influxdb+grafana,
**負責收集日誌並處理資料然後寫入influxdb,grafana負責展示。
第一天實現檔案的讀,處理及寫入,由淺到深。
一下為main檔案**
main.go
package main
import "time"
type logprocess struct
func (l *logprocess)readfromfile()
func (l *logprocess)process()
func (l *logprocess)write()
func main()
go l.readfromfile()
go l.process()
go l.write()
time.sleep(1 * time.second)
}
我們先定義了乙個空的結構體,結構體變數暫時還不知道需要什麼,然後定義了讀取、處理、寫入的方法,這些方法我們用的協程的方式啟動,最後的休眠一秒,是因為要讓主程序等待協程的執行。方法有了現在需要豐富我們的**來實現相對應的功能。**如下:
package main
import (
"fmt"
"strings"
"time"
)type logprocess struct
func (l *logprocess) readfromfile()
func (l *logprocess) process()
func (l *logprocess) write()
func main()
go l.readfromfile()
go l.process()
go l.write()
time.sleep(1 * time.second)
}
因為這裡需要協程間通訊,我們在結構體中定義了乙個讀取資料管道和寫入資料管道方便資料的傳遞。
至此日誌收集簡單的流程已經打通,後面我們會進行寫入方法,處理方法,寫入方法的詳解。
go語言收集nginx容器日誌(二 讀取模組實現)
昨天大致流程已經實現,今天我們按照模組化實現功能 首先是讀取模組的實現 package main import bufio fmt io log os strings time type logprocess struct func l logprocess readfromfile 0,2 是指向...
Docker 容器日誌收集
root node1 cat ngxlog.sh bin bash nginx logs dir var log nginx web nginx pid file var log nginx nginx.pid pid ps ef grep nginx grep apache awk nginx l...
容器日誌收集ELK Filebeat Kafka
隨著容器如火如荼的發展,分布式的業務架構日誌收集便也成了我們需要重點考慮之一 傳統方式中已經有相對成熟的解決方案,無不外乎容器中我們同樣能夠採取相同的架構解決容器基於kubernetes的日誌收集問題 對於這套方案,網上已經有無數種介紹,在此就不再對各大元件進行贅述,僅做簡單描述 元件作用 優點fi...