在大规模工程中,golang 架构带来了可观测性和监控体制,包含:指标监控:考量特性、能源消耗和身体状况(应用内嵌指标包);日志纪录:追踪事件和错误(使用标准日志包);分布式跟踪:掌握跨服务请求实行(应用第三方库,如 opentelemetry)。
Golang 架构在大规模项目中的可观测性和监控体制在对待规模性系统复杂性的同时,可观测性和监控是十分重要的层面。Golang 架构提供了一系列强悍的工具,用以搭建可观测并监控的系统。
指标监控应用指标(Metrics)去衡量系统的性能、能源消耗和身体状况,是可观测性的关键。Golang 架构带来了内置的指标包,可简化指标的收集和公开。
packagemain
import(
"fmt"
"net/http"
"github.com/prometheus/client_golang/prometheus"
)
var(
httpRequestsTotal=prometheus.NewCounter(
prometheus.CounterOpts{
Name:"http_requests_total",
Help:"NumberofHTTPrequests",
},
)
)
funcmain(){
http.HandleFunc("/",func(whttp.ResponseWriter,rhttp.Request){
fmt.Fprintf(w,"Hello,World!")
httpRequestsTotal.Inc()//每次接到请求时提升指标
})
http.ListenAndServe(":8080", nil)
}
日志纪录日志被用来追踪应用程序的事件和错误,给予系统行为的全面了解。Golang 标准库带来了日志包,用以以结构型方法纪录日志。
packagemain
import(
"log"
"net/http"
)
funcmain(){
log.Println("Serverstarted")
http.HandleFunc("/",func(whttp.ResponseWriter,rhttp.Request){
log.Printf("Newrequest:%s",r.URL.Path)
//...
})
http.ListenAndServe(":8080",nil)
log.Println("Serverstopped")
}
分布式跟踪分布式跟踪有利于了解跨多个服务与元件的要求是怎样实施的。Golang 小区带来了第三方库,如 [OpenTelemetry](https://github.com/open-telemetry/opentelemetry-go),用以完成分布式跟踪。
packagemain
import(
"net/http"
"github.com/open-telemetry/opentelemetry-go"
"github.com/open-telemetry/opentelemetry-go/oteltrace"
)
funcmain(){
tracer:=oteltrace.NewTracerProvider().Tracer("my-service")
http.HandleFunc("/",func(whttp.ResponseWriter,rhttp.Request){
ctx,span:=tracer.Start(r.Context(),"handler")
deferspan.End()
//...
})
http.ListenAndServe(":8080", nil)
}
实战案例 这种可观测性体制可以在下列场景下得到应用:
特性监控:应用指标检测关键性能指标,便于快速识别和处理性能问题。 错误监管:根据日志记录和错误处理,识别并追踪应用程序错误,以提升可用性和可靠性。 事件分析:根据分布式跟踪,掌握跨服务与元件的要求流,便于全面了解复杂系统的举动。以上就是golang架构在大规模项目中的可观测性和监控体制有什么?的详细内容,大量请关注其他类似文章!