Topik ini mencantumkan persyaratan sistem operasi dan arsitektur untuk pemantauan aplikasi Go, serta komponen dan framework pihak ketiga yang didukung oleh ARMS.
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
Versi 1.18 atau lebih baru
Versi plugin yang didukung
Message
Komponen | Alamat repositori | Versi minimum | Versi lebih tinggi |
AMQP | v1.4.0 | v1.10.0 | |
Segmentio Kafka | v0.4.10 | v0.4.49 | |
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 | v1.22.0 | v1.46.3 | |
Shopify Sarama | v1.22.0 | v1.38.1 | |
Mqtt Server | v2.6.0 | No limit | |
franz-go | v1.18.0 | No limit | |
confluent-kafka-go | v1.7.0 | No limit | |
streadway-amqp | v1.0.0 | No limit |
Framework RPC
Komponen | Alamat Repositori | Versi minimum | Later versions |
Beego | v1.2.0 | No limit | |
Dubbo | v3.0.1 | v3.3.0 | |
Echo | v4.0.0 | No limit | |
FastHTTP | v1.45.0 | No limit | |
Fiber | v2.43.0 | No limit | |
Gin | v1.7.0 | No limit | |
GoFrame | v2.4.0 | No limit | |
Go Micro | v4.9.0 | v5.12.0 | |
Go Restful | v3.7.0 | No limit | |
Go Zero | v1.5.0 | No limit | |
gRPC | v1.44.0 | No limit | |
Iris | v12.0.0 | v12.2.11 | |
Kitex | v0.5.1 | No limit | |
Kratos | v2.1.2 | v2.9.2 | |
Macaron | v1.1.0 | No limit | |
Mux | v1.3.0 | No limit | |
Net/HTTP | v1.18 | No limit | |
Thrift | v0.19.0 | v0.20.0 | |
Hertz | v0.8.0 | v0.10.3 | |
Rpcx | v1.9.0 | No limit |
SQL dan NoSQL
Komponen | Repository Address | Versi minimum | Later versions |
Go Elasticsearch | v7.0.0 | No limit | |
Go Redis | v8.10.0 | No limit | |
Go SQL Driver | v1.4.0 | v1.9.3 | |
GORM | v1.20.12 | v1.31.1 | |
GORM MySQL | v1.0.4 | No limit | |
MySQL driver di pustaka standar Go | v1.18 | Tidak ada batas | |
Mongo | v1.11.1 | No limit | |
PostgreSQL | v10.10.0 | v10.15.0 | |
Redis Go | v1.9.0 | v1.9.3 | |
Rueidis | v1.0.30 | No limit | |
sqlx | v1.3.0 | v1.4.0 | |
Xorm | v0.2.2 | No limit | |
ClickHouse | v2.0.1 | Tidak ada batas | |
GORM ClickHouse | v0.2.0 | No limit |
Logging
Komponen | Alamat repositori | Versi minimum | Versi lebih tinggi |
Gokit Log | v0.1.0 | v0.2.1 | |
Zerolog | v1.10.0 | No limit | |
Zap | v1.13.0 | No limit | |
Logrus | v1.5.0 | No limit | |
Log | v1.21 | No limit | |
Slog | v1.21 | No limit | |
go-zero logx | v1.6.5 | No limit | |
Kratos log | https://github.com/go-kratos/kratos/blob/main/middleware/logging | v2.1.2 | v2.4.0 |
Penjadwalan tugas
Komponen | Repository Address | Minimum version | Versi Lebih Tinggi |
Cron | v3.0.0 | No limit | |
XxlJob | v1.2.0 | Tidak ada batas |
Trace SDK
Komponen | Alamat Repositori | Versi Sebelumnya | Versi Lanjutan |
OpenTracing SDK | v1.1.0 | v1.2.0 | |
OpenTelemetry SDK | v1.6.0 | v1.39.0 |
AI SDK
Komponen | Repository Address | Versi minimum | Versi Lanjutan |
Dify Sandbox | v0.2.0 | No limit | |
Dify Plugin Daemon | v0.0.6 | No limit | |
MCP SDK | v0.20.0 | No limit | |
Langchain SDK | v0.1.0 | No limit | |
openai-go | v1.5.0 | No limit | |
go-openai | v1.30.0 | No limit | |
deepseek | v1.3.0 | No limit | |
coze-studio | v0.2.0 | No limit |
Alibaba Cloud SDK
Komponen | Repository Address | Versi minimum | Versi selanjutnya |
FC Go SDK | v0.2.9 | v0.3.1 | |
OTS Go SDK | v1.5.0 | No limit |
SDK Lainnya
Component | Alamat Repositori | Versi sebelumnya | Versi selanjutnya |
ants pool | v1.1.0 | No limit | |
K8s Client | v0.27.0 | v0.32.3 | |
K8s Controller Runtime | v0.13.1 | v0.22.4 |
FAQ
Mengapa terjadi putus koneksi saat menggunakan framework message?
Karena batasan implementasi pada beberapa framework message, agen Go saat ini memiliki keterbatasan dalam propagasi konteks jejak (trace context). Berikut daftarnya.
Komponen | Alamat Repositori | Producer | Consumer |
AMQP | No limit. | Hanya rentang Receive yang dikumpulkan. Rentang yang dihasilkan dari panggilan downstream yang dipicu oleh konten pesan tidak dapat ditautkan ke rentang Receive. | |
Segmentio Kafka | No limit. | Hanya rentang Receive yang dikumpulkan. Rentang yang dihasilkan dari panggilan downstream yang dipicu oleh konten pesan tidak dapat ditautkan ke rentang Receive. | |
Shopify Sarama | Saat menggunakan AsyncProducer, rentang Publish tidak dapat ditautkan ke rentang induknya. | Hanya rentang Receive yang dikumpulkan. Rentang yang dihasilkan dari panggilan downstream yang dipicu oleh konten pesan tidak dapat ditautkan ke rentang Receive. | |
IBM Sarama | Saat menggunakan AsyncProducer, rentang Publish tidak dapat ditautkan ke rentang induknya. | Hanya rentang Receive yang dikumpulkan. Rentang yang dihasilkan dari panggilan downstream yang dipicu oleh konten pesan tidak dapat ditautkan ke rentang Receive. | |
RocketMQ Client Go | No limit. |
| |
RocketMQ Client | https://github.com/apache/rocketmq-clients/tree/master/golang | No limit. | Hanya rentang Receive yang dikumpulkan. Rentang yang dihasilkan dari panggilan downstream yang dipicu oleh konten pesan tidak dapat ditautkan ke rentang Receive. |
Mengapa saya tidak melihat panggilan database atau NoSQL di Konsol saat menggunakan client Redis?
Agen Go tidak dapat menginstrumentasi aksi yang terjadi sebelum fungsi init dijalankan.
Anda dapat menginisialisasi client Redis atau database lainnya dalam fungsi init.
// Tidak valid
var rdb = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // tidak ada password yang disetel
DB: 0, // gunakan DB default
})
// Valid
var rdb *redis.Client
func init() {
rdb = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // tidak ada password yang disetel
DB: 0, // gunakan DB default
})
}
Mengapa saya tidak melihat instrumentasi OpenTelemetry SDK kustom?
Di halaman Konfigurasi kustom, di bawah Pengaturan switch agen, pilih opentelemetry-plugin. Kemudian, restart aplikasi Anda.

Laju pengambilan sampel (sampling rate) default adalah 10%. Dengan volume permintaan rendah, jejak mungkin tidak muncul. Anda dapat meningkatkan laju pengambilan sampel tersebut.
Bagaimana cara menambahkan span kustom untuk RabbitMQ?
Contoh kode berikut menambahkan Span kustom:
import (
"context"
oTrace "go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"
)
// Buat span untuk setiap pesan di handler.
func handle(deliveries <-chan amqp.Delivery, done chan error) {
cleanup := func() {
Log.Printf("handle: saluran deliveries 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 span kustom untuk Kafka?
Kode contoh berikut menunjukkan cara menambahkan Span 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 span untuk setiap pesan di 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()
// proses lainnya
}
}
}