全部产品
Search
文档中心

Cloud Monitor:Komponen dan framework Go yang didukung oleh ARMS Application Monitoring

更新时间:Nov 10, 2025

Topik ini menjelaskan persyaratan sistem operasi dan arsitektur untuk pemantauan aplikasi Go serta mencantumkan komponen pihak ketiga dan framework yang didukung.

Persyaratan sistem operasi

Nama kompiler

Sistem operasi

Arsitektur

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

Versi Go yang Didukung

1.18 atau yang lebih baru

Versi plugin yang didukung

Pesan

Komponen

Alamat repositori

Versi minimum

Versi maksimum

AMQP

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

v1.9.0

v1.10.0

Segmentio Kafka

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

v0.4.10

v0.4.48

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

IBM Sarama

https://github.com/IBM/sarama

v1.22.0

v1.45.2

Shopify Sarama

https://github.com/Shopify/sarama

v1.22.0

v1.38.1

Kerangka RPC

Komponen

Alamat repositori

Versi minimum

Versi maksimum

Beego

https://github.com/beego/beego

v1.2.0

v2.3.8

Dubbo

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

v3.0.1

v3.3.0

Echo

https://github.com/labstack/echo

v4.0.0

v4.13.4

FastHTTP

https://github.com/valyala/fasthttp

v1.45.0

v1.65.0

Fiber

https://github.com/gofiber/fiber

v2.43.0

v2.52.8

Gin

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

v1.7.0

Tidak terbatas

GoFrame

https://github.com/gogf/gf

v2.4.0

v2.9.0

Go Micro

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

v4.9.0

v5.3.1

Go Restful

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

v3.7.0

v3.12.1

Go Zero

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

v1.5.0

v1.9.0

gRPC

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

v1.44.0

Tidak terbatas

Iris

https://github.com/kataras/iris

v12.0.0

v12.2.11

Kitex

https://github.com/cloudwego/kitex

v0.5.1

v0.14.1

Kratos

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

v2.1.2

v2.8.4

Macaron

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

v1.1.0

v1.5.0

Mux

https://github.com/gorilla/mux

v1.3.0

v1.8.1

Net/HTTP

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

v1.18

Tidak terbatas

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

SQL/NoSQL

Komponen

Alamat repositori

Versi minimum

Versi maksimum

Go Elasticsearch

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

v8.0.0

v8.18.1

Go Redis

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

v8.10.0

v9.11.0

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

v1.30.0

GORM MySQL

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

v1.0.4

v1.5.7

Go standard library database/sql

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

v1.18

v1.24

Mongo

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

v1.11.1

v1.17.3

PostgreSQL

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

v10.10.0

v10.14.0

Redis Go

https://github.com/gomodule/redigo

v1.9.0

v1.9.2

Logging

Komponen

Alamat repositori

Versi minimum

Versi maksimum

Gokit Log

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

v0.1.0

v0.2.1

Zerolog

https://github.com/rs/zerolog

v1.10.0

v1.34.0

Zap

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

v1.13.0

v1.27.0

Logrus

https://github.com/sirupsen/logrus

v1.5.0

Tidak ada batas

Log

https://pkg.go.dev/log

v1.21

Tidak ada batas

Slog

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

v1.21

Tidak ada batas

Penjadwalan Tugas

Komponen

Alamat repositori

Versi minimum

Versi maksimum

Cron

https://github.com/robfig/cron

v3.0.0

Tidak ada batas

SDK Trace

Komponen

Alamat repositori

Versi minimum

Versi maksimum

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

v1.37.0

AI SDKs

Komponen

Alamat repositori

Versi minimum

Versi maksimum

Dify Sandbox

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

v0.2.0

Tidak terbatas

Dify Plugin Daemon

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

v0.0.6

Tidak terbatas

MCP SDK

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

v0.20.0

Tidak terbatas

Langchain SDK

https://github.com/tmc/langchaingo

v0.1.0

Tidak terbatas

Alibaba Cloud SDKs

Komponen

Alamat repositori

Versi minimum

Versi maksimum

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

Tidak terbatas

SDK Lainnya

Komponen

Alamat repositori

Versi minimum

Versi maksimum

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

FAQ

Mengapa jejak terputus ketika saya menggunakan framework pesan?

Karena detail implementasi di beberapa framework pesan, agen Go memiliki keterbatasan dalam menyebarkan konteks jejak. Keterbatasannya adalah sebagai berikut:

Komponen

Alamat repositori

Produsen

Konsumen

AMQP

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

Tidak ada batasan.

Hanya rentang Receive yang dikumpulkan. Rentang yang dibuat oleh panggilan hilir berdasarkan isi pesan tidak dapat dihubungkan ke rentang Receive.

Segmentio Kafka

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

Tidak ada keterbatasan.

Hanya rentang Receive yang dikumpulkan. Rentang yang dibuat oleh panggilan hilir berdasarkan isi pesan tidak dapat dihubungkan ke rentang Receive.

Shopify Sarama

https://github.com/IBM/sarama

Saat Anda menggunakan AsyncProducer, rentang Publish tidak dapat dihubungkan dengan rentang pemanggilan induknya.

Hanya rentang Receive yang dikumpulkan. Rentang yang dibuat oleh panggilan hilir berdasarkan isi pesan tidak dapat dihubungkan ke rentang Receive.

IBM Sarama

https://github.com/IBM/sarama

Saat Anda menggunakan AsyncProducer, rentang Publish tidak dapat dihubungkan dengan rentang pemanggilan induknya.

Hanya rentang Receive yang dikumpulkan. Rentang yang dibuat oleh panggilan hilir berdasarkan isi pesan tidak dapat dihubungkan ke rentang Receive.

RocketMQ Client Go

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

Tidak ada keterbatasan.

  • Hanya PushConsumer yang didukung.

  • Jika beberapa pesan dikonsumsi sekaligus dan layanan hilir dipanggil, rentang untuk panggilan hilir semuanya dilampirkan pada rentang pesan terakhir dalam batch. Masalah ini tidak terjadi saat mengonsumsi satu pesan pada satu waktu.

RocketMQ Client

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

Tidak ada keterbatasan.

Hanya rentang Receive yang dikumpulkan. Rentang yang dibuat oleh panggilan hilir berdasarkan isi pesan tidak dapat dihubungkan ke rentang Receive.

Mengapa saya tidak bisa melihat panggilan database/NoSQL di Konsol saat menggunakan klien Redis?

Karena implementasi spesifik framework, agen Go tidak dapat secara efektif menginstrumen tindakan yang dieksekusi sebelum fungsi init.

Inisialisasi klien Redis atau klien database dalam fungsi init.

// Kode tidak valid
var rdb = redis.NewClient(&redis.Options{
	Addr:     "localhost:6379",
	Password: "", // tidak ada kata sandi yang disetel
	DB:       0,  // gunakan DB default
})

// Kode valid
var rdb *redis.Client

func init() {
	rdb = redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // tidak ada kata sandi yang disetel
		DB:       0,  // gunakan DB default
	})
}

Mengapa saya tidak bisa melihat instrumen SDK OTel kustom saya?

  1. Pada halaman Konfigurasi Kustom, pilih opentelemetry-plugin di bagian Pengaturan Saklar Probe. Kemudian, mulai ulang aplikasi.

    image

  2. Laju sampel default adalah 10%. Jika volume permintaan Anda rendah, Anda mungkin tidak melihat data apa pun. Anda dapat menyesuaikan laju sampel sesuai kebutuhan.

Bagaimana cara menambahkan rentang kustom untuk RabbitMQ?

Contoh kode berikut menunjukkan cara menambahkan rentang kustom:

import (
    "context"
    oTrace "go.opentelemetry.io/otel/trace"
    "go.opentelemetry.io/otel/propagation"
    "go.opentelemetry.io/otel"
    "go.opentelemetry.io/otel/trace"
  )
  
  // Buat rentang untuk setiap pesan dalam penangan pesan.
  func handle(deliveries <-chan amqp.Delivery, done chan error) {
      cleanup := func() {
          Log.Printf("handle: saluran pengiriman ditutup")
          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()
        // proses lainnya
      }
  }
  
  

Bagaimana cara menambahkan rentang kustom untuk Kafka?

Contoh kode berikut menunjukkan cara menambahkan rentang kustom:

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"
  )
  
  // Buat rentang untuk setiap pesan dalam penangan pesan.
  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()
              // proses lainnya
          }
  
      }
  }