Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Componentes e frameworks Go suportados pelo ARMS Application Monitoring

Última atualização: Jul 14, 2026

Este tópico descreve os requisitos de sistema operacional e arquitetura para o monitoramento de aplicações Go, além dos componentes e frameworks de terceiros suportados.

Requisitos de sistema operacional

Nome da ferramenta de build

Sistema operacional

Arquitetura

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

Versões do Go suportadas

Versão 1.18 e posteriores

Versões de plug-ins suportadas

Mensagens

Componente

Endereço do repositório

Versões anteriores

Versões posteriores

AMQP

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

v1.4.0

v1.12.0

Segmentio Kafka

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

v0.4.10

sem limite

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.3

IBM Sarama

https://github.com/IBM/sarama

v1.22.0

v1.46.3

Shopify Sarama

https://github.com/Shopify/sarama

v1.22.0

v1.38.1

Mqtt Server

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

v2.6.0

Sem limite

franz-go

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

v1.18.0

Sem limite

confluent-kafka-go

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

v1.7.0

Sem limite

streadway-amqp

https://github.com/streadway/amqp

v1.0.0

Sem limite

Frameworks RPC

Componente

Endereço do Repositório

Versões inferiores

Versões posteriores

Beego

https://github.com/beego/beego

v1.2.0

Sem limite

Dubbo

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

v3.0.1

Sem limite

Echo

https://github.com/labstack/echo

v4.0.0

Sem limite

FastHTTP

https://github.com/valyala/fasthttp

v1.6.0

Sem limite

Fiber

https://github.com/gofiber/fiber

v2.43.0

Sem limite

Gin

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

v1.7.0

Sem limite

GoFrame

https://github.com/gogf/gf

v2.4.0

Sem limite

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

Sem limite

Go Zero

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

v1.5.0

Sem limite

gRPC

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

v1.20.1

Sem limite

Iris

https://github.com/kataras/iris

v12.0.0

Sem limite

Kitex

https://github.com/cloudwego/kitex

v0.5.1

Sem limite

Kratos

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

v2.1.2

v2.9.2

Macaron

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

v1.1.0

Sem limite

Mux

https://github.com/gorilla/mux

v1.3.0

Sem limite

Net/HTTP

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

v1.18

Sem limite

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.3

Rpcx

https://github.com/smallnest/rpcx

v1.9.0

Sem limite

Req

https://github.com/imroc/req

v3.0.0

Sem limite

SQL/NoSQL

Componente

Endereço do Repositório

Versão mínima

Versões posteriores

Go Elasticsearch

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

v7.0.0

Sem limite

Go Redis

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

v8.10.0

Sem limite

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

Ilimitado

GORM MySQL

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

v1.0.4

Sem limite

Biblioteca padrão Go MySQL

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

v1.18

Sem limite

Mongo

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

v1.11.1

Sem limite

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

Sem limite

sqlx

https://github.com/jmoiron/sqlx

v1.3.0

Ilimitado

Xorm

https://github.com/go-xorm

v0.2.2

Sem limite

ClickHouse

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

v2.0.1

Sem limite

GORM ClickHouse

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

v0.2.0

Sem limite

Cassandra

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

v1.3.0

Ilimitado

Logs

Componente

Endereço do Repositório

Versão Anterior

Versão mais recente

Gokit Log

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

v0.1.0

v0.2.1

Zerolog

https://github.com/rs/zerolog

v1.10.0

Sem limite

Zap

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

v1.13.0

Sem limite

Logrus

https://github.com/sirupsen/logrus

v1.4.2

Sem limite

Log

https://pkg.go.dev/log

v1.21

Sem limite

Slog

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

v1.21

Sem limite

go-zero logx

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

v1.6.5

Sem limite

Kratos log

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

v2.1.2

v2.4.0

Agendamento de tarefas

Componente

Endereço do Repositório

Versão mínima

Versão superior

Cron

https://github.com/robfig/cron

v3.0.0

Sem limite

XxlJob

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

v1.2.0

Sem limite

Asynq

https://github.com/hibiken/asynq

v0.23.0

Sem limite

SDK de Rastreamento

Componente

Endereço do Repositório

Versão mínima

Edição Avançada

OpenTracing SDK

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

v1.1.0

v1.2.0

OpenTelemetry SDK

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

v1.6.0

Sem limite superior

SDK de IA

Componente

Endereço do repositório

Versão mínima

Versões superiores

Dify Sandbox

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

v0.2.0

Sem limite

Dify Plugin Daemon

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

v0.0.6

Sem limite

MCP SDK

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

v0.20.0

Sem limite

Langchain SDK

https://github.com/tmc/langchaingo

v0.1.0

Sem limite

openai-go

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

v1.5.0

Sem limite

go-openai

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

v1.30.0

Sem limite

deepseek

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

v1.3.0

Sem limite

coze-studio

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

v0.2.0

Sem limite

adk-go

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

v0.3.0

Sem limite

eino

https://github.com/cloudwego/eino

v0.4.0

Sem limite

Google GenAI

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

v1.30.0

Sem limite

(O modo Stream do Google GenAI atualmente suporta apenas as versões v1.36.0, v1.37.0, v1.45.0 e v1.46.0.)

anthropic-sdk-go

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

v1.25.0

Sem limite

volcengine-go-sdk

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

v1.2.21

Sem limite

new-api

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

v0.12.8

Sem limite

SDK da Alibaba Cloud

Componente

Endereço do repositório

Versão mínima

Versão superior

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

Sem limite

Outros SDKs

Componente

Endereço do repositório

Versões anteriores

Versão mais recente

ants pool

https://github.com/panjf2000/ants

v1.1.0

Sem limite

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

Perguntas frequentes

Como manter a continuidade do rastreamento para versões do Asynq anteriores à v0.26.0?

Para mais informações, consulte Como manter a continuidade do rastreamento para versões do Asynq anteriores à v0.26.0?.

Por que ocorre descontinuidade de rastreamento ao usar frameworks de mensagens?

Devido a detalhes de implementação em certos frameworks de mensagens, o agente Go atual apresenta limitações na propagação do contexto de rastreamento entre eles.

Componente

URL do Repositório

Produtor

Consumidor

AMQP

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

Sem limite.

Apenas Spans de Receive são registrados. Spans gerados a partir de chamadas downstream baseadas no conteúdo da mensagem não podem ser vinculados ao Span de Receive.

Segmentio Kafka

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

Sem limite.

Apenas Spans de Receive são registrados. Spans gerados a partir de chamadas downstream baseadas no conteúdo da mensagem não podem ser vinculados ao Span de Receive.

Shopify Sarama

https://github.com/IBM/sarama

Ao usar AsyncProducer, o Span de Publish não pode ser vinculado ao seu Span de chamada pai.

Apenas Spans de Receive são registrados. Spans gerados a partir de chamadas downstream baseadas no conteúdo da mensagem não podem ser vinculados ao Span de Receive.

IBM Sarama

https://github.com/IBM/sarama

Ao usar AsyncProducer, o Span de Publish não pode ser vinculado ao seu Span de chamada pai.

Apenas Spans de Receive são registrados. Spans gerados a partir de chamadas downstream baseadas no conteúdo da mensagem não podem ser vinculados ao Span de Receive.

RocketMQ Client Go

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

Sem limite.

  • Apenas PushConsumer é suportado.

  • Ao consumir múltiplas mensagens de uma vez e realizar chamadas downstream durante o consumo, todos os Spans downstream são anexados sob a última mensagem daquele lote. Esse problema não ocorre ao consumir uma mensagem por vez.

RocketMQ Client

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

Sem limite.

Apenas Spans de Receive são registrados. Spans gerados a partir de chamadas downstream baseadas no conteúdo da mensagem não podem ser vinculados ao Span de Receive.

Por que não vejo chamadas de banco de dados ou NoSQL no console ao usar clientes Redis?

Devido a detalhes de implementação do framework, o agente Go não consegue instrumentar ações executadas antes da função init.

Certifique-se de inicializar seu cliente Redis ou de banco de dados dentro da função init.

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

Por que não vejo minha instrumentação personalizada do OpenTelemetry SDK?

  1. Na página Configuração Personalizada, selecione opentelemetry-plugin na seção Agent Switch Settings e reinicie sua aplicação.

  2. A taxa de amostragem padrão é de 10%. Talvez você não veja rastreamentos se houver poucas requisições. Ajuste a taxa de amostragem conforme necessário.

Como adicionar spans personalizados para RabbitMQ?

Utilize o código de exemplo a seguir para adicionar spans personalizados:

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 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(ctx, "mq", opts...)
        defer span.End()
        // Your message processing logic here
      }
  }
  

Como adicionar spans personalizados para Kafka?

Utilize o código de exemplo a seguir para adicionar spans personalizados:

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 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)
              tracer := otel.GetTracerProvider().Tracer("")
              opts := append([]oTrace.SpanStartOption{}, oTrace.WithSpanKind(oTrace.SpanKindConsumer))
              ctx, span := tracer.Start(ctx, "mq", opts...)
              defer span.End()
              // Your message processing logic here
          }
      }
  }