opentelemetry实践

2024-03-06 09:32
文章标签 实践 opentelemetry

本文主要是介绍opentelemetry实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

场景描述

根据 open-telemetry 提供的exampleshttps://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo

假设我们有两个服务,一个是demo-server,一个是demo-client,demo-client会周期性调用demo-server,我们希望可以采集到demo-server与demo-client之间的监控数据,包括请求延迟和请求数统计(demo里面也提供了如何把数据接入到分布式调用链系统上,比如jaegre)

服务架构图

基于opentelemetry我们实现的架构图大概如下

如果是我们直接使用Promutheus的话,可能是如下的架构图

 

 

如果我们想Demo-Server和Demo-Client使用推数据的方式的话,可以使用PushGateway,如下

这里补充下,那这样的话,使用Opentelemetry的好处式啥呢?其实就是标准化了,比如我们现在想接入jaegre来做分布式调用链分析,如果有Opentelemetry的话,我们也是一样Demo-Server和Demo-Client直接上报给Opentelemetry Collector就可以了,也不用引入新的SDK;没有opentelemetry的话,我们就需要俩套SDK,而且也没有一个标准化

 

Docker 部署

Opentelemetry项目提供了一个docker-compose的启动方案,具体可以参考:https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo

部署之后,我们可以通过访问promutheus,看到相应的数据收集

k8s 部署

基于官网提供的dmeo (https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo),适配到k8s。

代码地址:https://github.com/khalid-jobs/khalid.project/tree/main/opentelemetry-k8s

为了方便,下面的服务暴露都使用nodePort进行暴露

1. 在k8s上搭建promutheus + grafna

cd promutheus_grafna
# 部署promutheus
kubectl apply -f prometheus-sa.yaml
kubectl apply -f prometheus-cm.yaml
kubectl apply -f prometheus-deployment.yaml
kubectl apply -f prometheus-service.yaml
# 部署grafna
kubectl apply -f grafna.yaml
kubectl apply -f grafna-service.yaml

2. 在k8s 部署collector

kubectl apply -f otel-collector/deploy.yaml

3. 部署demo-server 和 demo-client

# 部署demo-server
cd server
make image
kubectl apply -f deploy.yaml # 注意配置好节点和镜像地址
# 部署demo-client也是类似

4. promutheus收集collector

 

 

参考

1. Opentelemetry Collector的配置和使用 - charlieroro - 博客园 定义的推送

2. 例子说明:https://www.cnblogs.com/charlieroro/p/13883602.html (collector 包含了exporter之类的)

3. Getting Started | OpenTelemetry

4. promutheus+grafana

  • 部署 Prometheus 和 Grafana 到 k8s - WeihanLi - 博客园
  • K8s 部署 Prometheus + Grafana - LB477 - 博客园
  • How To Setup Prometheus Monitoring On Kubernetes Cluster [Tutorial]

这篇关于opentelemetry实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779596

相关文章

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实