当前位置: 首页 > news >正文

建的网站打开很慢廉政网站 建设需求

建的网站打开很慢,廉政网站 建设需求,网站服务器镜像,绿色资源网由上文分布式链路追踪入门篇-基础原理与快速应用可以知道分布式链路追踪的作用,但是距离应用到项目中,我们还需要对项目中一些关键组件进行opentelemetry的集成,例如日志库,ORM、http框架、rpc框架等。 一、日志库如何集成opentel…

由上文分布式链路追踪入门篇-基础原理与快速应用可以知道分布式链路追踪的作用,但是距离应用到项目中,我们还需要对项目中一些关键组件进行opentelemetry的集成,例如日志库,ORM、http框架、rpc框架等。

一、日志库如何集成opentelemetry?

其实对日志库的集成无非就是调用日志库的方法进行日志打印时,可以把日志信息也被记录下来,推送到可视化的后端(eg:jaeger)。而由上文分布式链路追踪入门篇-基础原理与快速应用可以知道,通过span可以关联上相关的操作信息

二、简单demo演示

例如就对我们go原生的log库进行封装:

log.go

package pkgimport (`context``log``os``go.opentelemetry.io/otel/attribute``go.opentelemetry.io/otel/trace`
)//封装一下日志
type Logger struct {log *log.Logger
}var Log *Loggerfunc init()  {Log = &Logger{log: log.New(os.Stderr, "", log.LstdFlags),}
}func (l *Logger) Debug(ctx context.Context, msg string) {span := trace.SpanFromContext(ctx)span.AddEvent("", trace.WithAttributes(attribute.String("log", msg)))l.log.Println(msg)
}//todo 原生日志库只有Print方法,没有INFO、WARNd等分级
func (l *Logger) Info(ctx context.Context, msg string) {}
//todo
func (l *Logger) Warn(ctx context.Context, msg string) {}
//todo
func (l *Logger) Error(ctx context.Context, msg string) {}
//todo
func (l *Logger) Fatal(ctx context.Context, msg string) {}

main.go

package mainimport ("context""fmt""log""net/http""go.opentelemetry.io/otel""go.opentelemetry.io/otel/exporters/trace/jaeger"`go.opentelemetry.io/otel/sdk/resource`sdktrace "go.opentelemetry.io/otel/sdk/trace"`go.opentelemetry.io/otel/semconv``otel/log/pkg`
)// 初始化 OpenTelemetry
func initTracer() *sdktrace.TracerProvider {exporter, err := jaeger.NewRawExporter(jaeger.WithAgentEndpoint(func(options *jaeger.AgentEndpointOptions) {options.Host = "localhost"options.Port = "6831"}),)if err != nil {log.Fatalf("Error creating Jaeger exporter: %v", err)}tp := sdktrace.NewTracerProvider(sdktrace.WithBatcher(exporter),sdktrace.WithSampler(sdktrace.AlwaysSample()),sdktrace.WithResource(resource.NewWithAttributes(semconv.ServiceNameKey.String("demo_service"), // 服务名)),)otel.SetTracerProvider(tp)return tp
}func main() {tp := initTracer()defer func() {if cerr := tp.Shutdown(context.Background()); cerr != nil {log.Fatalf("Error shutting down tracer provider: %v", cerr)}}()//启动http服务器http.HandleFunc("/log/demo", handleRequest)go func() {if err := http.ListenAndServe(":8080", nil); err != nil {log.Fatalf("Error starting Service A server: %v", err)}}()//模拟请求SimulateRequest()
}func SimulateRequest()  {req, err := http.NewRequest("GET", "http://localhost:8080/log/demo", nil)if err != nil {log.Fatalf("Creating request fail: %v", err)}resp, err := http.DefaultClient.Do(req)if err != nil {log.Fatalf("Request failed: %v", err)}defer resp.Body.Close()fmt.Println("Response received from Root Service")
}func handleRequest(w http.ResponseWriter, req *http.Request) {tracer := otel.Tracer("root")//开始创建root spanctx, span := tracer.Start(req.Context(), "root service")defer span.End()pkg.Log.Debug(ctx, "this is root service")//访问服务AcallServiceA(ctx)w.WriteHeader(http.StatusOK)fmt.Fprintf(w, "Response from Service Root")
}// Service A
func callServiceA(ctx context.Context) {tracer := otel.Tracer("service A")ctx, span := tracer.Start(ctx, "ServiceA")defer span.End()pkg.Log.Debug(ctx, "this is A service")fmt.Println("Service A")
}

运行程序后,访问jeager:
在这里插入图片描述

三、总结

1. 其实日志库的集成就是对原先的日志库进行一层封装,日志打印方法传入上下文,通过上下文获取到操作单元span,然后给span关联上日志信息
2. 上面demo只是一个演示,我们也可以依照这个思路封装我们自己项目中的日志库

http://www.yayakq.cn/news/332215/

相关文章:

  • 网络宣传网站建设价格如何用ip做网站
  • 绍兴建设网站嘉兴学网站建设
  • 怎么用php自己做网站下载室内设计排版模板网站有哪些
  • 学而思的网站哪里做的云南网络营销公司哪家好
  • 网站建设 蔬菜配送免费建立网站的有哪里
  • 手表大全网站网站制作的预算
  • 湖南营销型网站建设公司排名潮南最新消息今晚
  • 黄江镇网站建设WordPress的theme父主题命名
  • 新人如何自学做网站小制作简单手工
  • 网站开发属于什么大学专业网站怎么做百度才会收录
  • 兰州建设工程信息网站wordpress 背景音乐插件
  • 腾讯云wordpress搭建网站合肥建公司网站
  • 20个外国平面设计网站无锡网站优化排名推广
  • 北京网站平台建设安阳做网站多少钱
  • 和客户谈建网站怎么说网页生成pdf
  • 旅游网站系统设计公司网站怎么更新需要怎么做
  • 网站建设伍金手指下拉7用百度云服务器做网站
  • 辞职做网站优秀作文网站推荐
  • 购物网站开发需求文档网站设计在营销中的作用
  • 重视网站阵地建设php 网站开发案例教程
  • wp企业网站模板做网站前的准备
  • 新媒体包不包括公司网站的建设厦门网站推广公司
  • 动易网站 设置背景图片网站的设计流程是怎么样的?
  • 网站建设的大纲网站专栏怎么做漂亮
  • 做php网站用什么软件好重庆有哪些科技骗子公司
  • 宁波模板建站源码郯城建设局网站
  • 企业网站建设骆诗设计Wordpress创建数据库的文件
  • 做网站和做微信小程序汕头论坛网
  • 电商网站建设实验心得1500cms免费
  • 有哪些做短租的网站好网站备案符号