【可观测性系列】 OpenTelemetry Collector的部署模式分析
作者简介:大家好,我是蓝胖子
️博客首页:主页蓝胖子的编程梦
️热门专题:我的服务监控实践 ,500行代码手写Docker**每日一句:白日莫闲过,青春不再来

大家好,我是蓝胖子,在前面我介绍了下OpenTelemetry的概念,但是究竟在项目中应该如何来使用OpenTelemetry 来帮助我们完成可观测性的构建?接下来,我将会谈谈有关 OpenTelemetry如何落地的一些问题。
这一节我们来看看OpenTelemetry Collector 的部署模式,OpenTelemetry Collector 是OpenTelemetry 项目中的一个代理软件,作为遥测数据(也就是日志,指标,trace数据)的中转站,能够对遥测数据做一些预处理的逻辑。
不使用OpenTelemetry Collector
OpenTelemetry Collector 并不是必须的,我们可以直接使用OpenTelemetry 客户端SDK发送遥测数据到监控组件中,比如将trace数据发送到jaeger,发送metric数据到prometheus。部署模式如下图所示,

代理模式部署
如果要使用OpenTelemetry Collector 对遥测数据的预处理功能,则需要在应用程序和后端监控组件之间部署上OpenTelemetry Collector,OpenTelemetry Collector和应用程序之间是通过OTLP协议传输遥测数据,这个协议是OpenTelemetry 客户端SDK封装好的。

但这种模式有个问题,如果应用程序产生的遥测数据太多,一个OpenTelemetry Collector 已经不能满足快速处理数据的要求,那应该怎么办呢?
集群网关模式
这就要提到第三种部署模式,集群网关模式部署OpenTelemetry Collector ,如下图所示,通过在多个OpenTelemetry Collector 前面部署一个拥有负载均衡功能的OpenTelemetry Collector 来让分发发往整个集群的遥测数据。

负载均衡的策略一般也是按trace id去划分,这样同一个请求轨迹的trace数据会被同一个OpenTelemetry Collector所处理,这对于某些类型的Collector中的处理器而言非常重要,比如后置采样处理器( Tail Sampling processor) ,它需要分析完整的trace链才能决定该条trace数据是否应该被采样。
从OpenTelemetry Collector导出遥测数据的功能是其组成部分之一exporter完成的,社区目前已经有现成的exporter可以配置在Opentelemetry Collector里,Trace ID/Service-name aware load-balancing exporter ,通过该exporter将遥测数据分发到Opentelemetry Collector集群里,在集群节点中做复杂的过滤清洗遥测数据的工作,在负载均衡网关Collector节点上,只做简单的分发操作。
【可观测性系列】 OpenTelemetry Collector的部署模式分析的更多相关文章
- 【Xamarin开发 Android 系列 1】环境部署搭建
原文:[Xamarin开发 Android 系列 1]环境部署搭建 开篇自然先扯一段,近几年移动互联网如果熊猫零食一样,蔓延迅速.楼主身为一个微软忠实的粉丝,无奈,老爹不给力.Silverlight开 ...
- Wix打包系列(五) 部署数据库
原文:Wix打包系列(五) 部署数据库 很多人在使用vs进行打包的时候,经常会为数据库部署的问题犯愁,即便是重写Installer类的方法,也不是很可靠方便,下面我们来看看在wix中如何部署数据库. ...
- RX系列一 | ReactiveX根源 | 观察者模式分析
RX系列一 | ReactiveX根源 | 观察者模式分析 Rx的响应式编程算是很火了,对吧,但是我的工作基本上就不会接触,所以学习的比较晚,到现在才分享给大家,我们一点点的去学,当你看完这整个系列的 ...
- scrapy爬虫学习系列三:scrapy部署到scrapyhub上
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- kubernetes系列03—kubeadm安装部署K8S集群
本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...
- k8s入门系列之guestbook快速部署
k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...
- Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
系列目录 [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...
- kettle系列-kettle管理平台部署说明
本介绍我的开源项目[kettle-manager]kettle管理平台如何获取并部署使用,该项目介绍请参看另一篇博文:http://www.cnblogs.com/majinju/p/5739820. ...
- jQuery MiniUI开发系列之:安装部署
jQuery MiniUI是一套纯Javascript的WebUI控件库,它由几十个Javascript控件组成,是不依赖服务端和数据库的. 下载jQuery MiniUI,解压缩后,开发者可以直接在 ...
随机推荐
- 如何在公司项目中使用 WebSocket— 入门实战指南
本文从 WebSocket 基础概念出发,介绍在实际开发中从本地联调到部署上线的流程以及注意事项,让 WebSocket 小白以最小成本应用到项目中. 一.WebSocket 基础 1.什么是 Web ...
- 11、SpringBoot-mybatis-plus-druid多源数据事务
系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...
- element-china-area-data
https://blog.csdn.net/xiejnpeng/article/details/111400199
- Winform的使用
Winform是什么 以下内容,来自朝夕教育课程,没有基础的可以去朝夕学学.这里主要是为了方便我自己回顾查询 创建Winform程序 Program类 Winform项目结构介绍 Winform控件简 ...
- 机器学习-决策树系列-Adaboost算法-集成学习-29
目录 1. adaboost算法的基本思想 2. 具体实现 1. adaboost算法的基本思想 集成学习是将多个弱模型集成在一起 变成一个强模型 提高模型的准确率,一般有如下两种: bagging: ...
- SpringCloud集成Seata并使用Nacos做注册中心与配置中心
本文为博主原创,未经允许不得转载: 目录: 1. 下载并启动Seata Server,并指定nacos作为配置中心和注册中心 2. 同步seata server的配置到nacos 3. 启动Seata ...
- 06-verilog基础语法_5
How to build and test a module parameter defparam修改参数 Task & function Task Function function不可以调 ...
- 开启大页与否对CacheBuffer的影响的学习
开启大页与否对CacheBuffer的影响的学习 背景 最近遇到数据库压力较高的场景. 原厂工程师到位后修改了几个参数(自己以为参数没问题) 然后最近一周环境就比较正常了. 这个地方很打脸, 自己没有 ...
- [转帖]TLB缓存是个神马鬼,如何查看TLB miss?
https://zhuanlan.zhihu.com/p/79607142 介绍TLB之前,我们先来回顾一个操作系统里的基本概念,虚拟内存. 虚拟内存 在用户的视角里,每个进程都有自己独立的地址空间, ...
- 【转帖】Linux 系统双网卡绑定 bond的7种模式
第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)第二种模式:mod=1,即: (active-backup) Active-backup ...