opentelemetry、grafana、Prometheus、jaeger、victoria-metrics 介绍、关系与使用

news2024/11/16 19:44:26

Opentelemetry

OTEL 是 OpenTelemetry 的简称, 是 CNCF 的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方 vendor 无关的服务。
OpenTelemetry 是一组标准和工具的集合,旨在管理观测类数据,如 Traces、Metrics、Logs 等 (未来可能有新的观测类数据类型出现)。目前已经是业内的标准。
在这里插入图片描述

1. 三个基本概念

1.1 Tracing

opentelemetry可以将trace的数据发送到jaeger去
Tracing 提供了从请求开始接收到处理完毕的整个生命周期的全貌。使用span最为跟踪数据,生成信息(元数据)
在这里插入图片描述

obs-opentelemetry 实现了什么:

- 支持在 hertz 服务端和客户端之间启用 http 链路追踪
- 支持通过设置 http header 以启动自动透明地传输对端服务

使用示例

package main

import (
    "github.com/cloudwego/hertz/pkg/app/server"
    hertztracing "github.com/hertz-contrib/obs-opentelemetry/tracing"
)

func main() {
    tracer, cfg := hertztracing.NewServerTracer()
    h := server.Default(tracer)
    h.Use(hertztracing.ServerMiddleware(cfg))
    // ...
    h.Spin()
}

1.2 Metric

简单说,cpu、内存、运行时候的信息,可以==通过Prometheus+导出器搞定 ==(发过去)

度量指标(Metric)包含了各种各样的方法和实现。

Metric 包括了追踪样本以及自动将指标与产生它们的追踪样本联系起来。手动将指标和追踪联系起来往往是一项繁琐且容易出错的任务。OpenTelemetry 自动执行这项任务将为运维人员节省大量的时间。
在这里插入图片描述

  • grafana与Prometheus
    Grafana是一个开源的可视化平台,用于创建、查询和展示时序数据的仪表盘和图表。它支持多种数据源,其中包括Prometheus。Grafana提供了丰富的可视化选项和灵活的仪表盘配置,可以根据需求创建各种类型的监控指标图表。借助Grafana,用户可以通过图表、面板和警报来监视和分析数据,并以直观和易于理解的方式展示。
    因此,Prometheus是一个用于收集和分析时间序列数据的监测系统,而Grafana是一个用于可视化和展示这些数据的工具。两者可以结合使用,使用户能够实时监控系统的性能、状态和指标,并通过仪表盘和图表直观地展示这些数据。

  • obs-opentelemetry 实现了什么:R.E.D (Rate, Errors, Duration) 定义了架构中的每个微服务测量的三个关键指标。OpenTelemetry 可以根据http.server.duration来计算R.E.D。

  • Rate:你的服务每秒钟所提供的请求数。
    例如: QPS(Queries Per Second)每秒查询率

sum(rate(http_server_duration_count{}[5m])) by (service_name, http_method)
  • Error:每秒失败的请求数。

例如:错误率

sum(rate(http_server_duration_count{status_code="Error"}[5m])) by (service_name, http_method) / 
sum(rate(http_server_duration_count{}[5m])) by (service_name, http_method)
  • Duration
    例如:P99 Latency
histogram_quantile(0.99, sum(rate(http_server_duration_bucket{}[5m])) by (le, service_name, http_method))

1.3 Logging

opentelemetry 发送到rockeyMQ等
在 logrus 的基础上适配了 hertz 日志工具
实现了链路追踪自动关联日志的功能

  • 三种常用log:Log:语言内置,logrus,zap
    在这里插入图片描述

2. 实现

2.1 docker-compose 部署依赖 && otel-collector 配置文件

docker-compse

version: "3.7"
services:

#  # Collector
  otel-collector:
    image: otel/opentelemetry-collector-contrib-dev:latest
    command: [ "--config=/etc/otel-collector-config.yaml", "${OTELCOL_ARGS}" ]
    volumes:
      - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
    ports:
      - "1888:1888"   # pprof extension
      - "8888"   # Prometheus metrics exposed by the collector
      - "8889:8889"   # Prometheus exporter metrics
      - "13133:13133" # health_check extension
      - "4317:4317"   # OTLP gRPC receiver
      - "55679" # zpages extension
    depends_on:
      - jaeger-all-in-one

  # Jaeger
  jaeger-all-in-one:
    image: jaegertracing/all-in-one:latest
    environment:
      - COLLECTOR_OTLP_ENABLED=true
    ports:
      - "16686:16686"
      - "14268"
      - "14250:14250"
      - "6831:6831"
    #  - "4317:4317"   # OTLP gRPC receiver

  # Victoriametrics
  victoriametrics:
    container_name: victoriametrics
    image: victoriametrics/victoria-metrics
    ports:
      - "8428:8428"
      - "8089:8089"
      - "8089:8089/udp"
      - "2003:2003"
      - "2003:2003/udp"
      - "4242:4242"
    command:
      - '--storageDataPath=/storage'
      - '--graphiteListenAddr=:2003'
      - '--opentsdbListenAddr=:4242'
      - '--httpListenAddr=:8428'
      - '--influxListenAddr=:8089'
    restart: always

  # Grafana
  grafana:
    image: grafana/grafana:latest
    environment:
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
      - GF_AUTH_DISABLE_LOGIN_FORM=true
    ports:
      - "3000:3000"

otel-collector-config.yml

receivers:
  otlp:
    protocols:
      grpc:

exporters:
  prometheusremotewrite:
    endpoint: "http://victoriametrics:8428/api/v1/write"

  logging:
  
  otlp:
    endpoint: jaeger-all-in-one:4317
    tls:
      insecure: true


processors:
  batch:

extensions:
  health_check:
  pprof:
    endpoint: :1888
  zpages:
    endpoint: :55679

service:
  extensions: [ pprof, zpages, health_check ]
  pipelines:
    traces:
      receivers: [ otlp ]
      processors: [ batch ]
      exporters: [ logging, otlp ]
    metrics:
      receivers: [ otlp ]
      processors: [ batch ]
      exporters: [ logging, prometheusremotewrite ]

2.2 OTLP(OpenTelemetry Protocol )

OTLP(全称 OpenTelemetry Protocol )是 OpenTelemetry 原生的遥测信号传递协议,虽然在 OpenTelemetry 的项目中组件支持了Zipkin v2或Jaeger Thrift的协议格式的实现,但是都是以第三方贡献库的形式提供的。只有 OTLP 是 OpenTelemetry 官方原生支持的格式。OTLP 的数据模型定义是基于 ProtoBuf 完成的,如果你需要实现一套可以收集 OTLP 遥测数据的后端服务,那就需要了解里面的内容,对应可以参考代码仓库:opentelemetry-proto(https://github.com/open-telemetry/opentelemetry-proto)

otel-collector-config 中指定接收器部分,定义了数据如何被接收。在这里配置了 otlp 接收器,使用 gRPC 协议进行通信。

receivers:
  otlp:
    protocols:
      grpc:

2.3 Opentelemetry-Collector

OpenTelemetry Collector (以下简称“otel-collector”)针对如何接收、处理和导出遥测数据提供了与供应商无关的实现。它消除了运行、操作和维护多个代理/收集器的需要,以支持将开源可观察性数据格式(例如 Jaeger、Prometheus 等)发送到一个或多个开源或商业后端。此外,收集器让最终用户可以控制他们的数据。收集器是默认位置检测库导出其遥测数据。
在这里插入图片描述
在这里插入图片描述
docker中的部署

version: "3.7"
services:

#  # Collector
  otel-collector:
    image: otel/opentelemetry-collector-contrib-dev:latest
    command: [ "--config=/etc/otel-collector-config.yaml", "${OTELCOL_ARGS}" ]
    volumes:
      - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
    ports:
      - "1888:1888"   # pprof extension
      - "8888"   # Prometheus metrics exposed by the collector
      - "8889:8889"   # Prometheus exporter metrics
      - "13133:13133" # health_check extension
      - "4317:4317"   # OTLP gRPC receiver
      - "55679" # zpages extension
    depends_on:
      - jaeger-all-in-one

2.4 otel-exporter、service

exporters:

  prometheusremotewrite:
    endpoint: "http://victoriametrics:8428/api/v1/write"

  logging:

  otlp:
    endpoint: jaeger-all-in-one:4317
    tls:
      insecure: true
...
service:
  extensions: [ pprof, zpages, health_check ]
  pipelines:
    traces:
      receivers: [ otlp ]
      processors: [ batch ]
      exporters: [ logging, otlp ] # 通过otlp导出给jaeger
    metrics:
      receivers: [ otlp ]
      processors: [ batch ]
      exporters: [ logging, prometheusremotewrite ]
  • exporters:
    导出器部分,定义了数据如何被导出。在这里配置了三个导出器,分别是 prometheusremotewrite 、logging、 通过otlp导出到jaeger。
    prometheusremotewrite 导出器用于将指标数据导出到远程写入的 Prometheus 实例,而 logging 导出器将数据打印到日志中。
    OTLP(OpenTelemetry Protocol)导出器,它将数据导出到指定的 endpoint 中。在这里,endpoint 被配置为 jaeger-all-in-one:4317,即使用 jaeger-all-in-one 全部集成的 Jaeger 实例作为终端节点。此外,还配置了一个 tls 字段,表示该导出器是否启用 TLS/SSL 加密传输。
  • service:
    服务部分,定义了整个服务的配置。在这里配置了使用的扩展以及数据的流程。其中 pipelines 部分定义了多个数据流程,包括 traces 和 metrics。每个数据流程都有对应的接收器、处理器和导出器。

2.5 opentelemetry、grafana、Prometheus、jaeger、victoria-metrics 之间关系

OpenTelemetry、Grafana、Prometheus、Jaeger和VictoriaMetrics 是在观测性和监控领域中使用的一些工具,它们可以相互配合使用以提供全面的监控和观测能力。

  • OpenTelemetry:OpenTelemetry 是一个开源的观测性框架,用于在分布式系统中收集、处理和导出跟踪数据、指标数据和日志数据。它提供了一组库和工具,使开发人员能够在应用程序中插入代码以生成和导出数据,以便进行分析和监控。

  • Grafana:Grafana 是一个流行的开源数据可视化工具,用于创建、查询和可视化各种数据源中的监控指标、日志和其他数据。Grafana 提供了丰富的可视化选项和仪表板功能,使用户能够根据需要自定义显示和分析数据。

  • Prometheus:Prometheus 是一个开源的系统监控和警报工具,用于收集和存储时间序列数据。它具有内置的数据模型和查询语言,可对指标进行高效的存储和查询。Prometheus 支持各种数据源的数据采集,并和Grafana配合使用,可以创建实时监控仪表板,并进行数据可视化和警报。

  • Jaeger:Jaeger 是一个开源的分布式追踪系统,用于收集、存储和查询分布式应用程序的跟踪数据。它可以帮助开发人员理解应用程序中的服务调用关系和性能瓶颈。Jaeger 与 OpenTelemetry 配合使用,提供了对分布式跟踪数据的收集和展示功能。

  • VictoriaMetrics:VictoriaMetrics 是一个高性能、开源的时间序列数据库和监控系统,在处理大规模时间序列数据时表现出色。它兼容 Prometheus 的数据模型和查询语言,并提供了高度可扩展的存储和查询能力。可以将其作为 Prometheus 的后端存储,用于长期存储和检索时间序列数据。(可以代替Prometheus斜体样式

综上所述,OpenTelemetry 用于收集、处理和导出观测性数据,Prometheus 和 VictoriaMetrics 用于存储和查询时间序列数据,Grafana 用于将数据进行可视化展示,而 Jaeger 则用于收集和展示分布式追踪数据。这些工具可以相互配合使用,以构建全面的监控和观测解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1047658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一致性思维链(SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS)

概要 思维链已经在很多任务上取得了非常显著的效果,这篇论文中提出了一种 self-consistency 的算法,来代替 贪婪解码 算法。本方法通过 采样多个思维链集合,然后LLM模型生成后,选择一个最一致的答案作为最后的结果。一致性思维链…

第二十届北京消防展即将开启,汉威科技即将精彩亮相

10月10日~13日,第二十届中国国际消防设备技术交流展览会,将在北京市顺义区中国国际展览中心新馆隆重举行。该展会由中国消防协会举办,是世界三大消防品牌展会之一,本届主题为“助力产业发展,服务消防救援”。届时将有4…

控价维权的意义是什么

品牌为什么要做控价,其目的又是什么,控价是品牌管控渠道的一种方式,通过控价,品牌可以达到管控渠道价格的目标,同时在管控的过程中,可以及时发现渠道中的低价、假货、窜货链接,并及时将这些链接…

山海鲸数字孪生金融解决方案:开创智能金融新时代

在金融行业的数字化浪潮中,数字孪生技术正以惊人的速度崭露头角。这项技术不仅改变了金融机构的运营方式,还为金融从业者提供了更多机会来提高效率、降低风险以及提供更加个性化的服务。为了解决这一需求,山海鲸可视化退出一系列智慧金融解决…

MySQL面试题-索引的基本原理及相关面试题

先了解一下MySQL的结构 下面我们重点讲一下存储引擎 MySQL的数据库和存储数据的目录是一一对应的,这些数据库的文件就保存在磁盘中对应的目录里 下面我们来看一下对应的具体数据文件 .frm是表的结构,不管什么样的索引都会有 .ibd代表我们现在使用的存…

智慧灯杆网关管理平台:城市建设的智慧化之道

随着城市化进程不断推进,城市公共服务和管理的数字化、智能化已经成为必然趋势。而要实现从“灯杆”到“智慧灯杆”的转变,构建新一代城市基础设施,就需要以智慧灯杆管理平台为核心的解决方案。 星创易联自主研发的智慧灯杆管理云平台,是新型城市物联网建设的关键环节。它以LE…

【RocketMQ】【源码】DLedger选主源码分析

RocketMQ 4.5版本之前,可以采用主从架构进行集群部署,但是如果master节点挂掉,不能自动在集群中选举出新的Master节点,需要人工介入,在4.5版本之后提供了DLedger模式,使用Raft算法,如果Master节…

SpringSecurity的认证流程源码深入刨析

环境 SpringBoot版本:2.7.14 流程图 默认的Filter SpringSecurity的默认Filter地址:http://t.csdn.cn/YH838 常见的认证授权技术 1、基于表单的认证(Cookie & Session) 基于表单的认证并不是在 HTTP 协议中定义的&#x…

互联网社交礼仪:我到底该怎么笑才对

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 小黑 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 一切要从不知情的阿福发微笑脸说起。 微笑、呲牙笑、流汗笑,到底哪个才是真正的笑&#xff1…

C++入门篇10---stack+queue+priority_queue

前言 本文主要是介绍C库中的栈、队列和优先级队列(其实就是堆)的一些接口以及如何用C来实现它们,对这三种数据结构就不多介绍了,如有不了解的同学,请查阅我之前写的两篇博客 栈和队列的实现二叉树和堆详解 下面正片开始 一、stack 1.了解s…

企业知识库构建:关于企业知识库及知识平台搭建的重要性!

随着企业规模的不断发展与壮大,在企业运营相关知识信息将不断产生,而知识处理中,建立知识库会面临着信息零散碎片化、信息关系复杂难梳理、信息不完整、碎片数据难以沉淀存储等问题…… 所以作为企业管理者,首先需要意识到关于企业…

SPA项目之主页面--数据表格的增删改查

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于VueElementUI的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.增删改查 1.样式准备 2.编码 …

聚合统一,SpringBoot实现全局响应和全局异常处理

目录 前言 全局响应 数据规范 状态码(错误码) 全局响应类 使用 优化 全局异常处理 为什么需要全局异常处理 业务异常类 全局捕获 使用 优化 总结 前言 在悦享校园1.0版本中的数据返回采用了以Map对象返回的方式,虽然较为便捷但也带来一些问题。一是在…

机器人制作开源方案 | 货物输送小车

作者:周展鹏 黄万森 彭军铭 吕会权 聂文俊 单位:柳州工学院 指导老师:蔡洪炜 王一波 1. 场景调研 目前货物输送已成为人们生活中必不可少的部分,加之国内近年来有因快递配送导致疫情迅速传播的事件常有发生,因此在疫…

Mybatis3详解 之 全局配置文件详解

1、全局配置文件 前面我们看到的Mybatis全局文件并没有全部列举出来&#xff0c;所以这一章我们来详细的介绍一遍&#xff0c;Mybatis的全局配置文件并不是很复杂&#xff0c;它的所有元素和代码如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8&…

精通Linux系列第二章:虚拟机安装Linux系统环境教程

文章目录 一、前言二、VMware Fusion安装教程2.1 说说安装虚拟机的好处2.2 安装VMware Fusion 三、环境搭建3.1 各种Linux发行版介绍与iso下载链接3.2 VMware Fusion安装Linux3.2.1 Ubuntu桌面版安装3.2.2 Debian桌面版安装3.2.3 Fedora桌面版安装3.2.4 CentOS桌面版安装3.2.5 …

RHCA礼品领取步骤

RHCA礼品领取步骤 1. 进入领取页面 考过RHCA的5门课程后会收到5份单科1份RHCA电子证书.其实还有一份玻璃证书笔记本A面贴纸红帽ID号短袖T恤可以领取. 领取地址如下: http://redhat.brandfuel.com 在第一框内填写红帽ID就是考试时填写的9位id号,每3位用-分割 第二个框填写姓,就…

图扑软件受邀亮相 IOTE 2023 国际物联网展

IOTE 2023 国际物联网展&#xff0c;作为全球物联网领域的盛会&#xff0c;于 9 月 20 日 - 22 日在中国深圳拉开帷幕。本届展会以“IoT构建数字经济底座”为主题&#xff0c;由深圳市物联网产业协会主办&#xff0c;打造当前物联网最新科技大秀。促进物联网与各行业深度融合&a…

Android studio “Layout Inspector“工具在Android14 userdebug设备无法正常使用

背景描述 做rom开发的都知道&#xff0c;“Layout Inspector”和“Attach Debugger to Android Process”是studio里很好用的工具&#xff0c;可以用来查看布局、调试系统进程&#xff08;比如setting、launcher、systemui&#xff09;。 问题描述 最进刚开始一个Android 14…

海贝造音强势登陆深圳 助力本土原创音乐升阶

海贝负责人&#xff1a;萧弘天先生 据媒体报导&#xff0c;全球音乐产业收入已恢复至疫情前水平&#xff0c;甚至比往年高出16%&#xff0c;值此佳机&#xff0c;在大湾区深耕娱乐行业30年之久的一众行业先锋&#xff0c;港澳资深传媒人在深圳成立了海贝造音。 深圳&#xff…