在 Go 應用程式中,日誌和監控對健康性和可觀察性至關重要。最佳實踐包括:根據重要性選擇日誌級別,只記錄必要資訊。使用結構化日誌和集中式日誌記錄。設定自訂指標和使用 Prometheus 等監控工具。設定告警規則並整合分散式追蹤。
#在Go 框架中,日誌和監控對於應用程式的健康性和可觀察性至關重要。本文重點關注常見的日誌和監控問題,並提供最佳實踐,以幫助您在 Go 應用程式中有效利用這些工具。
配置logrus 進行結構化日誌記錄
import ( "io" "github.com/sirupsen/logrus" ) func main() { // 创建一个带格式化程序的日志记录器 logger := logrus.New() logger.Formatter = &logrus.JSONFormatter{} // 记录一个结构化日志记录 logger.WithFields(logrus.Fields{ "level": "info", "module": "main", "message": "Application started", }).Info("Application started successfully") // 将日志记录写入文件 f, err := os.OpenFile("mylog.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { panic(err) } defer f.Close() logger.SetOutput(io.MultiWriter(f, os.Stdout)) }
使用Prometheus 收集自訂指標
#import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "net/http" ) var requestCount = prometheus.NewCounter( prometheus.CounterOpts{ Name: "http_requests_total", Help: "HTTP 请求总数", }, ) func main() { // 注册指标 prometheus.MustRegister(requestCount) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 增加请求计数 requestCount.Inc() // 发送响应 w.Write([]byte("Hello, world!")) }) // 导出指标 http.Handle("/metrics", promhttp.Handler()) http.ListenAndServe(":8080", nil) }
以上是golang框架日誌與監控常見問題及最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!