首页 > 其他分享 >Open Telemetry手动仪表化实战应用

Open Telemetry手动仪表化实战应用

时间:2024-11-08 16:07:53浏览次数:3  
标签:otel name Telemetry 手动 jaeger collector prometheus config Open

Open Telemetry手动仪表化实战应用

整体框架图

image-20241108150719712

​ 首先在Windows下用golang编写了一个测试代码,导入otel的各种包,在代码中实现对需要收集的追踪数据和指标数据进行侵入,实现一个手动仪表化的功能,使得代码生成观测数据,之后这些观测数据被分为trace类型的数据和metric类型的数据,通过grpc协议将这些数据传输到OpenTelemetry Collector中,Collector 使用 gRPC 接受这些数据并进行处理,最后将处理后的数据导出到后端jaeger以及Prometheus,其中Prometheus是自己主动拉取的数据.

OpenTelemetry Collector部署

​ opentelemetry collector是通过helm进行部署,配置文件如下:

vim otel-helm-config.yaml

  image:
  #repository: 这里定义了使用的容器镜像的地址。otel/opentelemetry-collector-contrib 是 OpenTelemetry Collector 的官方贡献版镜像。
    repository: "otel/opentelemetry-collector-contrib"   
  #enabled: 设置为 true,表示启用 OpenTelemetry Collector
  enabled: true
  #nameOverride: 可以用来覆盖 Helm chart 中的默认名称,这里将其设置为otelcol
  nameOverride: otelcol
  #部署模式为deploy模式
  mode: deployment
  presets:
  #表示启用 Kubernetes 特有的元数据(如 Pod 名称、命名空间等),使得OpenTelemetry收集的指标和追踪数据包含Kubernetes环境的信息
    kubernetesAttributes:
      enabled: true
  #资源相关配置
  resources:
    limits:
      memory: 2048Mi
  #Service 配置
  service:
  # 设置服务类型为ClusterIP,表示服务只能在集群内部访问
    type: ClusterIP
  ports:
    metrics:
      # The metrics port is disabled by default. However you need to enable the port
      # in order to use the ServiceMonitor (serviceMonitor.enabled) or PodMonitor (podMonitor.enabled).
      enabled: true
      containerPort: 8899
      servicePort: 8899
      hostPort: 8899
      protocol: TCP
  #Config 配置
  config:
  #接收器使用otlp,此处配置了使用 gRPC 协议接收来自其他系统的 OTLP 数据,在所有网络接口上监听 55678 端口
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: "0.0.0.0:55678"
  #处理器为批处理模式
    processors:
      batch:
        send_batch_size: 1
        send_batch_max_size: 1
  #导出器配置
    exporters:
    #将OTLP格式的数据导出到 jaeger:4317,jaeger为其服务名
      otlp:
        endpoint: "jaeger:4317"
        tls:
          insecure: true
    #将 Prometheus 格式的指标数据导出到8899端口,使得Prometheus可以抓取
      prometheus:
        endpoint: "0.0.0.0:8899"
    #Service Pipelines 配置
    service:
    #定义了两个数据流管道,一个用于traces(跟踪数据),一个用于 metrics(指标数据)
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlp]
        metrics:
          receivers: [otlp,prometheus]
          processors: [batch]
          exporters: [debug,prometheus]

之后使用helm安装命令进行collector的部署

helm install otel-collector open-telemetry/opentelemetry-collector --values otel-helm-config.yaml

jaeger搭建

jaeger的搭建比较简单,就是写配置文件

vim otel-jaeger-config.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jaeger
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jaeger
  template:
    metadata:
      labels:
        app: jaeger
    spec:
      containers:
      - name: jaeger
        image: jaegertracing/all-in-one:latest
        ports:
        - containerPort: 16686
        - containerPort: 14268
        - containerPort: 14250
        - containerPort: 4317
        env:
        - name: COLLECTOR_OTLP_ENABLED
          value: "true"
---
apiVersion: v1
kind: Service
metadata:
  name: jaeger
spec:
  selector:
    app: jaeger
  ports:
  - protocol: TCP
    port: 16686
    targetPort: 16686
    nodePort: 31686 # 为 Jaeger UI 指定 NodePort
    name: jaeger-ui
  - protocol: TCP
    port: 14268
    targetPort: 14268
    nodePort: 31268
    name: jaeger-collector
  - protocol: TCP
    port: 14250
    targetPort: 14250
    nodePort: 31250
    name: jaeger-agent
  - protocol: TCP
    port: 4317
    targetPort: 4317
    nodePort: 31417
    name: jaeger-otlp
  type: NodePort # 更改为 NodePort 类型

之后对jaeger的配置文件进行部署

kubectl apply -f otel-jaeger-config.yaml -n <命名空间>

等jaeger的pod起来之后,就能在31686端口上看到jaeger的webUI界面了

prometheus搭建

Prometheus也是通过配置文件进行搭建的

vim otel-prometheus-config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s
    scrape_configs:
      - job_name: 'otel-collector-opentelemetry-collector'
        scrape_interval: 10s
        static_configs:
          - targets: ['otel-collector-otelcol:8899']  # OpenTelemetry Collector 暴露指标的服务名和端口
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
      - name: prometheus
        image: prom/prometheus:latest
        ports:
        - containerPort: 9090
        volumeMounts:
        - name: config-volume
          mountPath: /etc/prometheus
        args:
          - "--config.file=/etc/prometheus/prometheus.yml"
          - "--storage.tsdb.path=/prometheus"
      volumes:
      - name: config-volume
        configMap:
          name: prometheus-config
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus
spec:
  ports:
  - port: 9090
    targetPort: 9090
    nodePort: 30090
    protocol: TCP
  selector:
    app: prometheus
  type: NodePort

之后对Prometheus的配置文件进行部署

kubectl apply -f otel-prometheus-config.yaml -n <命名空间>

等Prometheus的pod起来之后,就能在30090端口上看到jaeger的webUI界面了

结果展示

运行代码程序,jaeger的webUI上,如下图

image-20241108161235301

Prometheus上也有指标数据了,如下图

image-20241108161449912

image-20241108161328101

标签:otel,name,Telemetry,手动,jaeger,collector,prometheus,config,Open
From: https://www.cnblogs.com/lionet-kk/p/18535308

相关文章

  • OpenCV图像处理——基于OpenCV的直线检测与直线拟合
    OpenCV图像处理——基于OpenCV的直线检测与直线拟合前言:本节使用霍夫变换进行直线检测,使用最小二乘法拟合直线。1直线检测直线检测是图像处理中一种常见的任务,旨在从图像中提取出直线。这在许多应用中都很有用,例如道路检测、建筑物轮廓提取、对象检测等。1.1霍夫变换......
  • openssh升级
    测试中标麒麟7.6中标麒麟6.5centos6.10centos7.61、配置telnet为防止openssh升级失败。所以安装telnet。保证openssh升级失败也可以通过telnet连接服务器,进行恢复操作。并不用去机房yuminstall-ytelnet-serverxinetdsystemctlstarttelnet.socket#启动telnet.sock......
  • C++之OpenCV入门到提高004:Mat 对象的使用
    一、介绍今天是这个系列《C++之Opencv入门到提高》得第四篇文章。这篇文章很简单,介绍如何使用Mat对象来实例化图像实例,了解它的构造函数和常用的方法,这是基础,为以后的学习做好铺垫。虽然操作很简单,但是背后有很多东西需要我们深究,才能做到知其然知其所以然。OpenCV具......
  • NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL
    在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、告警、云台控制、语音对讲等高级功能,使其......
  • 三周精通FastAPI:36 OpenAPI 回调
    官方文档:OpenAPI回调¶您可以创建触发外部API请求的路径操作 API,这个外部API可以是别人创建的,也可以是由您自己创建的。API应用调用外部API时的流程叫做回调。因为外部开发者编写的软件发送请求至您的API,然后您的API要进行回调,并把请求发送至外部API。此时,我......
  • Python从0到100(七十):Python OpenCV-Opencv实现人像迁移
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • cenos7.9处理openssh漏洞
    1.openssh漏洞处理:离线包现在地址:***update.sh脚本未经验证,不建议使用,建议按照readme.md文档操作***准备工作:需要准备离线包:安装包结构openssh-9.9p1.tar.gzopenssl-3.4.0.tar.gztelnet#存放telnet离线包pam#存放pam离线包zlib#存放zlib离线包提前创建......
  • 别再手动处理数据了!FastGPT 这个新功能让你提前下班
    大家好!今天给大家介绍FastGPT4.8.11版本新增的一个超强节点-【循环运行】节点。如果你经常需要处理大量数据,这个功能绝对能让你事半功功倍!......
  • OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示
    当打开蓝牙后没有反应时,需要排查蓝牙节点是否对应、固件是否加载成功,本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法,触觉智能SBC3568主板演示,搭载了瑞芯微RK3568芯片,应用可覆盖边缘计算、人工智能、工业HMI、工业网关、智慧医疗、自助终端、智能零售、能源电力等行业。修改......
  • LitServe 快速部署类openai 接口服务
    以前简单说明过LitServe支持openai接口格式的服务api,以下是一个简单试用参考代码app.pyimportlitserveaslsclassSimpleLitAPI(ls.LitAPI):defsetup(self,device):self.model=Nonedefpredict(self,prompt):#`prompt`isalisto......