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

奉贤北京网站建设代做毕业设计实物网站

奉贤北京网站建设,代做毕业设计实物网站,中国接单外发加工网,个人社保缴费记录查询参考资料 https://aws-otel.github.io/docs/introductionhttps://aws-otel.github.io/docs/introduction aws distro for opentelemetry 官方提供了不同语言不同使用场景下完善的使用实例和相关配置。 AWS Distro for OpenTelemetrics 由以下部分组成,用于向后端…

参考资料

  • https://aws-otel.github.io/docs/introduction
  • https://aws-otel.github.io/docs/introduction

aws distro for opentelemetry 官方提供了不同语言不同使用场景下完善的使用实例和相关配置。

AWS Distro for OpenTelemetrics 由以下部分组成,用于向后端服务发送数据

  • SDK
  • Auto-instrumentation agent,自动注入代理
  • OpenTelemetry Collector,收集器

使用opentelemetry的一般架构如以下ecs示例。将opentelemetry collector作为sidecar运行。

ADOT setup with prometheus metrics

opentelemetry基础

所有的opentelemery关注点,比如跟踪和度量,都共享一个底层 Context 机制,用于在分布式事务的整个生命周期中存储状态和访问数据

  • trace,通过span隐式定义trace,trace是span组成的有向无环图

  • span,span代表事务中的一个操作,每个span封装以下状态:

    • 事件,每个事件都是元组(时间戳,名称,属性)

      • 操作名称
      • 开始和结束的时间戳
      • 属性(键值对)
    • span之间的因果关系链接

Http追踪

服务端追踪

使用gorilla/mux HTTP 多路复用器。通过opentelemetry库包装 HTTP 处理程序。对这些端点的所有调用都将根据现有的采样规则自动跟踪并发送到 AWS X-Ray

import(go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmuxgithub.com/gorilla/mux...
)
...
func MakeHttpHandler(s Service, Logger log.logger) http.Handler{r := mux.NewRouter()r.Use(otelmux.Middleware("petlistadoptions"))r.Methods("GET").Path("/api/adoptionlist/").Handler(handlerFunc)return r
}

客户端追踪

使用go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp封装客户端的http调用

client := http.Client{Transport: otelhttp.NewTransport(http.DefaultTransport)}
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)

对于没有提供自动追踪检测支持的库调用,可以通过span和go context创建自定义追踪

tracer := otel.GetTracerProvider().Tracer("petlistadoptions")
_, span := tracer.Start(ctx, "PGSQL Query", trace.WithSpanKind(trace.SpanKindClient))sql := `SELECT pet_id, transaction_id, adoption_date FROM transactions ORDER BY id DESC LIMIT 25`// injecting custom attributes
span.SetAttributes(label.String("sql", sql),label.String("url", r.safeConnStr),
)rows, err := r.db.Query(sql)
if err != nil {handleErr(err)
}
span.End()

java追踪代理

https://github.com/aws-samples/one-observability-demo

使用java代理并修改JVM启动参数,使得自动台历能够收集追踪信息

ADD https://github.com/aws-observability/aws-otel-java-instrumentation/releases/download/version/aws-opentelemetry-agent.jar /app/aws-opentelemetry-agent.jar
ENV JAVA_TOOL_OPTIONS "-javaagent:/app/aws-opentelemetry-agent.jar"

其他的opentelemetry配置

# OpenTelemetry agent configuration
ENV OTEL_TRACES_SAMPLER "always_on"
ENV OTEL_PROPAGATORS "tracecontext,baggage,xray"
ENV OTEL_RESOURCE_ATTRIBUTES "service.name=PetSearch" # 资源属性
ENV OTEL_IMR_EXPORT_INTERVAL "10000" # 将OTLP指标导出到collector的频率
ENV OTEL_EXPORTER_OTLP_ENDPOINT "http://localhost:4317"	 # collector监听断电

像aws sdk和流行框架都得到了opentelemetry的支持,对于java来说任何经由spring MVC的请求和对aws服务的调用都会被追踪和发布。

lambda追踪

lambda提供了专门的ADTO lambda layer,自动检测lambda函数,使用步骤如下

  • 添加ADOT lambda层

  • 在lambda函数中添加环境变量AWS_LAMBDA_EXEC_WRAPPER = /opt/otel-instrument

  • 在lambda函数中启动Active Tracing

示例cdk代码如下

var adotLayerArn = "arn:aws:lambda:"+ process.env.CDK_DEFAULT_REGION + ":901920570463:layer:aws-otel-python-amd64-ver-1-11-1:2"
var adotlayer = lambda.LayerVersion.fromLayerVersionArn(this,'otelPythonLambdaLayer',adotLayerArn);
var layers: lambda.ILayerVersion[] = [adotlayer]// lambda自动追踪请求,业务代码中没有相关逻辑
new pythonlambda.PythonFunction(this, lambdaFileName, {entry: './resources/stepfn_lambdas/',index: lambdaFileName + '.py',handler: 'lambda_handler',memorySize: 128,runtime: lambda.Runtime.PYTHON_3_9,role: lambdaRole,layers: lambdalayers, //加入otel层tracing: Tracing.ACTIVE // 启用主动追踪});
pythonFn.addEnvironment("AWS_LAMBDA_EXEC_WRAPPER", "/opt/otel-instrument") //添加环境变量

python示例

https://github.com/aws-samples/one-observability-demo/tree/main/PetAdoptions/petadoptionshistory-py

https://catalog.workshops.aws/observability/en-US/aws-managed-oss/adot/python-instrumentation/tracing

手动追踪

配置环境

pip3 install opentelemetry-api
pip3 install opentelemetry-sdk
pip3 install opentelemetry-distro
pip3 install opentelemetry-exporter-otlp-proto-grpc
pip3 install opentelemetry-sdk-extension-aws
pip3 install opentelemetry-propagator-aws-xray

导入依赖

# OTLP Tracing
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.sdk.resources import SERVICE_NAME, Resource, get_aggregated_resources# Exporter
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter# Propagation
from opentelemetry.propagate import set_global_textmap
from opentelemetry.propagators.aws import AwsXRayPropagator# AWS X-Ray ID Generator
from opentelemetry.sdk.extension.aws.trace import AwsXRayIdGenerator# Resource detector
from opentelemetry.sdk.extension.aws.resource.eks import AwsEksResourceDetector

手动追踪,最终去哦那个球

# Setup AWX X-Ray Propagator
# 跨 AWS 服务注入或提取跟踪上下文
set_global_textmap(AwsXRayPropagator())# Setup AWS EKS resource detector 
# 从 EKS 环境中检测到的额外资源字段(例如集群名称和容器 ID)添加到单个跟踪中
resource = get_aggregated_resources([AwsEksResourceDetector(), ]
)# Setup tracer provider with the X-Ray ID generator
tracer_provider = TracerProvider(resource=resource, id_generator=AwsXRayIdGenerator())
processor = BatchSpanProcessor(OTLPSpanExporter())
tracer_provider.add_span_processor(processor)# Sets the global default tracer provider
trace.set_tracer_provider(tracer_provider)# Creates a tracer from the global tracer provider
tracer = trace.get_tracer(__name__)

在flask中手动创建span追踪,注意start_as_current_span

@app.route('/api/home/transactions', methods=['GET'])
def transactions_get():with tracer.start_as_current_span("transactions_get") as transactions_span:transactions_get_counter.add(1)transactions = repository.list_transaction_history(db)return jsonify(transactions)

自动追踪

自动检测 boto3和 psycopg2之类的库调用来生成跟踪

pip3 install opentelemetry-instrumentation-botocore
pip3 install opentelemetry-instrumentation-flask

封装调用

# Instrumentation
from opentelemetry.instrumentation.botocore import BotocoreInstrumentor
from opentelemetry.instrumentation.flask import FlaskInstrumentor# Instrumentation
BotocoreInstrumentor().instrument()# Setup flask app
app = Flask(__name__)
FlaskInstrumentor().instrument_app(app)
...
http://www.yayakq.cn/news/904365/

相关文章:

  • 设计用哪些网站有哪些中国有多少家做外贸网站设计的公司
  • 东莞网站优化公司哪家好怎么查询企业信息
  • 龙口网站建设价格如何创建网站的快捷方式到桌面
  • 豪华跑车网站建设免费网址导航网站建设
  • 郑州建站网快速开发平台
  • 家教中介怎么利用网站来做的品牌注册查询官网
  • 织梦网站 联系方式修改淘宝客网站做seo有用吗
  • 网站开发框架的工具设计网店运营策划方案
  • 国外 电商网站公司装修风格
  • 云南建设投资集团网站asp.net网站结构
  • 网站内部链接有什么作用兰州网络推广关键词优化
  • 推荐做流程图的网站渠道查官网
  • 自己做平台网站怎么查公司名称是否被注册商标
  • 保定网站建设模板联系方式typecho跟wordpress
  • php禁止ip访问网站设计师去哪找
  • 贵阳手机网站建设酒店宣传推广方案
  • 石家庄有哪些做网站的公司h5页面制作工具下载
  • 网站建设分析报告网站链接失效怎么做
  • 网站的登录功能一般是用cookie做的怎样用wordpress
  • 网站营销活动济南营销型网站建设
  • 最新有限公司网站网络营销与传统营销相比的优势
  • 网站的主题网站开发说明文档
  • 餐饮外哪个网站做推广网页设计
  • 网站设置的关键词怎么做万网网站
  • 民治网站建设国家建设官方网站
  • 购买一个网站多少钱最新新闻热点事件简短
  • 网站建设属于什么合同wordpress长文章分页
  • 卫计局网站建设信息公开总结新加坡室内设计公司排名
  • dell公司网站设计特色网站建设内部下单流程图
  • 网站建设徐州望野古诗原文翻译