Todos los productos
Search
Centro de documentos

Cloud Monitor:Componentes y frameworks de Go compatibles con ARMS Application Monitoring

Última actualización: Oct 12, 2026

Este tema describe los requisitos de sistema operativo y arquitectura para el monitoreo de aplicaciones en Go. También enumera los componentes y frameworks de terceros compatibles.

Requisitos del sistema operativo

Nombre del compilador

Sistema operativo

Arquitectura

instgo_linux_amd64

Linux

amd64

instgo_linux_arm64

Linux

arm64

instgo_darwin_amd64

Darwin

amd64

instgo_darwin_arm64

Darwin

arm64

instgo_windows_amd64.exe

Windows

amd64

Versiones de Go compatibles

1.18 y posteriores

Versiones de plugin compatibles

Mensajería

Componente

Dirección del repositorio

Versión mínima

Versión máxima

AMQP

https://github.com/rabbitmq/amqp091-go

v1.4.0

v1.15.0

Segmentio Kafka

https://github.com/segmentio/kafka-go

v0.4.10

Sin límite

RocketMQ Client Go

https://github.com/apache/rocketmq-client-go

v2.1.0

v2.1.2

RocketMQ Client

https://github.com/apache/rocketmq-clients/tree/master/golang

v5.0.0

v5.1.4

IBM Sarama

https://github.com/IBM/sarama

v1.22.0

v1.60.1

Shopify Sarama

https://github.com/Shopify/sarama

v1.22.0

v1.38.1

Mqtt Server

https://github.com/mochi-mqtt/server

v2.6.0

Sin límite

franz-go

https://github.com/twmb/franz-go

v1.18.0

Sin límite

confluent-kafka-go

https://github.com/confluentinc/confluent-kafka-go

v1.7.0

Sin límite

streadway-amqp

https://github.com/streadway/amqp

v1.0.0

Sin límite

Frameworks RPC

Componente

Dirección del repositorio

Versión mínima

Versión máxima

Beego

https://github.com/beego/beego

v1.2.0

Sin límite

Dubbo

https://github.com/apache/dubbo-go

v3.0.1

Sin límite

Echo

https://github.com/labstack/echo

v4.0.0

Sin límite

FastHTTP

https://github.com/valyala/fasthttp

v1.6.0

Sin límite

Fiber

https://github.com/gofiber/fiber

v2.43.0

Sin límite

Gin

https://github.com/gin-gonic/gin

v1.7.0

Sin límite

GoFrame

https://github.com/gogf/gf

v2.4.0

Sin límite

Go Micro

https://github.com/go-micro/go-micro

v4.9.0

v5.30.0

Go Restful

https://github.com/emicklei/go-restful

v3.7.0

Sin límite

Go Zero

https://github.com/zeromicro/go-zero

v1.5.0

Sin límite

gRPC

https://github.com/grpc/grpc-go

v1.20.1

Sin límite

Iris

https://github.com/kataras/iris

v12.0.0

Sin límite

Kitex

https://github.com/cloudwego/kitex

v0.5.1

Sin límite

Kratos

https://github.com/go-kratos/kratos

v2.1.2

v3.0.0

Macaron

https://github.com/go-macaron/macaron

v1.1.0

Sin límite

Mux

https://github.com/gorilla/mux

v1.3.0

Sin límite

Net/HTTP

https://pkg.go.dev/net/http

v1.18

Sin límite

Thrift

https://github.com/apache/thrift/tree/master/lib/go

v0.19.0

v0.20.0

Hertz

https://github.com/cloudwego/hertz

v0.8.0

v0.10.6

Rpcx

https://github.com/smallnest/rpcx

v1.9.0

Sin límite

Req

https://github.com/imroc/req

v3.0.0

Sin límite

SQL/NoSQL

Componente

Dirección del repositorio

Versión mínima

Versión máxima

Go Elasticsearch

https://github.com/elastic/go-elasticsearch

v7.0.0

Sin límite

Go Redis

https://github.com/redis/go-redis

v8.10.0

Sin límite

Go SQL Driver

https://github.com/go-sql-driver/mysql

v1.4.0

v1.9.3

Gorm

https://github.com/go-gorm/gorm

v1.20.12

Sin límite

GORM MySQL

https://github.com/go-gorm/mysql

v1.0.4

Sin límite

Biblioteca estándar de Go database/sql

https://pkg.go.dev/database/sql

v1.18

Sin límite

Mongo

https://github.com/mongodb/mongo-go-driver

v1.11.1

Sin límite

PostgreSQL

https://github.com/go-pg/pg

v10.10.0

v10.15.1

Redis Go

https://github.com/gomodule/redigo

v1.9.0

v1.9.3

Rueidis

https://github.com/redis/rueidis

v1.0.30

Sin límite

sqlx

https://github.com/jmoiron/sqlx

v1.3.0

Sin límite

Xorm

https://github.com/go-xorm

v0.2.2

Sin límite

ClickHouse

https://github.com/ClickHouse/clickhouse-go

v2.0.1

Sin límite

GORM ClickHouse

https://github.com/go-gorm/clickhouse

v0.2.0

Sin límite

Cassandra

https://github.com/apache/cassandra-gocql-driver

v1.3.0

Sin límite

Registros

Componente

Dirección del repositorio

Versión mínima

Versión máxima

Gokit Log

https://github.com/go-kit/log

v0.1.0

v0.2.1

Zerolog

https://github.com/rs/zerolog

v1.10.0

Sin límite

Zap

https://github.com/uber-go/zap

v1.13.0

Sin límite

Logrus

https://github.com/sirupsen/logrus

v1.4.2

Sin límite

Log

https://pkg.go.dev/log

v1.21

Sin límite

Slog

https://pkg.go.dev/log/slog

v1.21

Sin límite

go-zero logx

https://github.com/zeromicro/go-zero/tree/master/core/logx

v1.6.5

Sin límite

Kratos log

https://github.com/go-kratos/kratos/blob/main/middleware/logging

v2.1.2

v2.4.0

Programación de tareas

Componente

Dirección del repositorio

Versión mínima

Versión máxima

Cron

https://github.com/robfig/cron

v3.0.0

Sin límite

XxlJob

https://github.com/xxl-job/xxl-job-executor-go

v1.2.0

Sin límite

Asynq

https://github.com/hibiken/asynq

v0.23.0

Sin límite

SDK de trazas

Componente

Dirección del repositorio

Versión mínima

Versión máxima

SDK de OpenTracing

https://github.com/opentracing/opentracing-go

v1.1.0

v1.2.0

SDK de OpenTelemetry

https://github.com/open-telemetry/opentelemetry-go

v1.6.0

Sin límite

SDK de IA

Componente

Dirección del repositorio

Versión mínima

Versión máxima

Dify Sandbox

https://github.com/langgenius/dify-sandbox

v0.2.0

Sin límite

Dify Plugin Daemon

https://github.com/langgenius/dify-plugin-daemon

v0.0.6

Sin límite

MCP SDK

https://github.com/mark3labs/mcp-go

v0.20.0

Sin límite

SDK de Langchain

https://github.com/tmc/langchaingo

v0.1.0

Sin límite

openai-go

https://github.com/openai/openai-go

v1.5.0

Sin límite

go-openai

https://github.com/sashabaranov/go-openai

v1.30.0

Sin límite

deepseek

https://github.com/cohesion-org/deepseek-go

v1.3.0

Sin límite

coze-studio

https://github.com/coze-dev/coze-studio

v0.2.0

Sin límite

adk-go

https://github.com/google/adk-go

v0.3.0

Sin límite

eino

https://github.com/cloudwego/eino

v0.4.0

Sin límite

Google GenAI

https://github.com/googleapis/go-genai

v1.30.0

Sin límite (el modo Stream de Google GenAI solo es compatible actualmente con las versiones v1.36.0, v1.37.0, v1.45.0 y v1.46.0)

anthropic-sdk-go

https://github.com/anthropics/anthropic-sdk-go

v1.25.0

Sin límite

volcengine-go-sdk

https://github.com/volcengine/volc-sdk-golang

v1.2.21

Sin límite

new-api

https://github.com/QuantumNous/new-api

v0.12.8

Sin límite

milvus client

https://github.com/milvus-io/milvus/tree/master/client

v2.5.0

Sin límite

beads

https://github.com/gastownhall/beads

v1.0.0

Sin límite

trpc-go-agent

https://github.com/trpc-group/trpc-agent-go

v0.1.0

Sin límite

agent-orchestrator

https://github.com/AgentWrapper/agent-orchestrator

v0.1.0

Sin límite

bifrost

https://github.com/maximhq/bifrost

v1.4.0

Sin límite

e2b

https://github.com/openkruise/agents-api/

v0.4.0-alpha4

Sin límite

SDK de Alibaba Cloud

Componente

Dirección del repositorio

Versión mínima

Versión máxima

FC Go SDK

https://github.com/aliyun/fc-runtime-go-sdk

v0.2.9

v0.3.1

OTS Go SDK

https://github.com/aliyun/aliyun-tablestore-go-sdk

v1.5.0

Sin límite

Otros SDK

Componente

Dirección del repositorio

Versión mínima

Versión máxima

ants pool

https://github.com/panjf2000/ants

v1.1.0

Sin límite

K8s Client

https://github.com/kubernetes/client-go

v0.27.0

v0.32.3

K8s Controller Runtime

https://github.com/kubernetes-sigs/controller-runtime

v0.13.1

v0.23.3

Preguntas frecuentes

¿Cómo mantengo la continuidad de las trazas con versiones de Asynq anteriores a la v0.26.0?

Maintain trace continuity in Asynq versions earlier than v0.26.0

¿Por qué se interrumpen las trazas cuando uso un framework de mensajería?

Debido a detalles de implementación en algunos frameworks de mensajería, el agente de Go presenta limitaciones al propagar el contexto de la traza. A continuación se detallan dichas limitaciones:

Componente

Dirección del repositorio

Productor

Consumidor

AMQP

https://github.com/rabbitmq/amqp091-go

Sin limitaciones.

Solo se recopilan los spans Receive. Los spans que generan las llamadas descendentes según el contenido del mensaje no se pueden vincular al span Receive.

Segmentio Kafka

https://github.com/segmentio/kafka-go

Sin limitaciones.

Solo se recopilan los spans Receive. Los spans que generan las llamadas descendentes según el contenido del mensaje no se pueden vincular al span Receive.

Shopify Sarama

https://github.com/IBM/sarama

Cuando usa AsyncProducer, el span Publish no se puede vincular a su span de llamada principal.

Solo se recopilan los spans Receive. Los spans que generan las llamadas descendentes según el contenido del mensaje no se pueden vincular al span Receive.

IBM Sarama

https://github.com/IBM/sarama

Cuando usa AsyncProducer, el span Publish no se puede vincular a su span de llamada principal.

Solo se recopilan los spans Receive. Los spans que generan las llamadas descendentes según el contenido del mensaje no se pueden vincular al span Receive.

RocketMQ Client Go

https://github.com/apache/rocketmq-client-go

Sin limitaciones.

  • Solo se admite PushConsumer.

  • Si se consumen varios mensajes a la vez y se llama a un servicio descendente, los spans de esas llamadas se adjuntan al span del último mensaje del lote. Este problema no ocurre cuando se consume un solo mensaje a la vez.

RocketMQ Client

https://github.com/apache/rocketmq-clients/tree/master/golang

Sin limitaciones.

Solo se recopilan los spans Receive. Los spans que generan las llamadas descendentes según el contenido del mensaje no se pueden vincular al span Receive.

¿Por qué no puedo ver las llamadas a la base de datos o NoSQL en la consola cuando uso un cliente de Redis?

Debido a implementaciones específicas de cada framework, el agente de Go no instrumenta correctamente las acciones que se ejecutan antes de la función init.

Inicialice el cliente de Redis o de la base de datos dentro de la función init.

// Invalid code
var rdb = redis.NewClient(&redis.Options{
	Addr:     "localhost:6379",
	Password: "", // no password set
	DB:       0,  // use default DB
})

// Valid code
var rdb *redis.Client

func init() {
	rdb = redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})
}

¿Por qué no puedo ver la instrumentación personalizada de mi SDK de OTel?

  1. En la página Custom Configurations, seleccione opentelemetry-plugin en la sección Probe switch settings. Luego, reinicie la aplicación.

  2. La tasa de muestreo predeterminada es del 10 %. Si el volumen de solicitudes es bajo, es posible que no vea ningún dato. Ajuste la tasa de muestreo según sus necesidades.

¿Cómo agrego un span personalizado para RabbitMQ?

A continuación se muestra un ejemplo de código para agregar un span personalizado:

import (
    "context"
    oTrace "go.opentelemetry.io/otel/trace"
    "go.opentelemetry.io/otel/propagation"
    "go.opentelemetry.io/otel"
    "go.opentelemetry.io/otel/trace"
  )
  
  // Create a span for each message in the message handler.
  func handle(deliveries <-chan amqp.Delivery, done chan error) {
      cleanup := func() {
          Log.Printf("handle: deliveries channel closed")
          done <- nil
      }
  
      defer cleanup()
      for d := range deliveries {
        var headerMap propagation.MapCarrier
        headerMap = make(map[string]string)
        headerMap["traceparent"] = delivery.Headers["traceparent"]
        ctx := otel.GetTextMapPropagator().Extract(context.Background(), headerMap)
        ctx = oTrace.ContextWithSpanContext(context.Background(), oTrace.SpanFromContext(ctx).SpanContext())
        tracer = otel.GetTracerProvider().Tracer("")
        opts := append([]oTrace.SpanStartOption{}, oTrace.WithSpanKind(oTrace.SpanKindConsumer))
        ctx, span := tracer.Start(context.Background(), "mq", opts...)
        defer span.End()
        //other process
      }
  }
  
  

¿Cómo agrego un span personalizado para Kafka?

A continuación se muestra un ejemplo de código para agregar un span personalizado:

import (
    kafka "github.com/segmentio/kafka-go"
      "go.opentelemetry.io/otel"
      "go.opentelemetry.io/otel/propagation"
      "go.opentelemetry.io/otel/trace"
      oTrace "go.opentelemetry.io/otel/trace"
  )
  
  // Create a span for each message in the message handler.
  func handle(msg kafka.Message) {
      for _, attr := range msg.Headers {
          if attr.Key == "traceparent" {
              var headerMap propagation.MapCarrier
              headerMap = make(map[string]string)
              headerMap["traceparent"] = string(attr.Value)
              ctx := otel.GetTextMapPropagator().Extract(context.Background(), headerMap)
              ctx = oTrace.ContextWithSpanContext(context.Background(), oTrace.SpanFromContext(ctx).SpanContext())
              tracer := otel.GetTracerProvider().Tracer("")
              opts := append([]oTrace.SpanStartOption{}, oTrace.WithSpanKind(oTrace.SpanKindConsumer))
              ctx, span := tracer.Start(context.Background(), "mq", opts...)
              defer span.End()
              //other process
          }
  
      }
  }