askill
go-observability

go-observabilitySafety 90Repository

Vendor-neutral observability with OpenTelemetry: structured logging (slog), distributed tracing, metrics, and export to object storage. Trigger: When adding logging, tracing, metrics, or configuring observability pipelines in microservices.

0 stars
1.2k downloads
Updated 2/9/2026

Package Files

Loading files...
SKILL.md

When to Use

  • Adding structured logging to a service
  • Implementing distributed tracing across microservices
  • Collecting and exporting metrics
  • Exporting observability data to object storage for long-term retention
  • Setting up Gin/gRPC middleware for automatic instrumentation

Critical Patterns

PatternRule
OpenTelemetry standardOTel SDK for traces + metrics — vendor neutral, export anywhere
slog for loggingGo stdlib log/slog — no Zap, no Logrus, no external deps
JSON in productionStructured JSON logs in prod, text in dev
Trace context propagationEvery request gets a trace ID, propagated across services
Export to object storagePeriodic export of logs/metrics/traces to S3/GCS/MinIO for retention
Cloud agnosticOpenTelemetry Collector handles export — backend is config, not code

Three Pillars

┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│   Logging    │    │   Tracing    │    │   Metrics    │
│   (slog)     │    │   (OTel)     │    │   (OTel)     │
└──────┬───────┘    └──────┬───────┘    └──────┬───────┘
       │                   │                   │
       └───────────┬───────┴───────────────────┘
                   │
         ┌─────────▼──────────┐
         │  OTel Collector    │     ← Deployed as sidecar or standalone
         └─────────┬──────────┘
                   │
       ┌───────────┼───────────┐
       ▼           ▼           ▼
   Object Store  Jaeger    Prometheus
   (long-term)  (traces)   (metrics)

Structured Logging (slog)

Reference: assets/logger.go

Logging Convention

Reference: assets/logging_convention.go

Distributed Tracing (OpenTelemetry)

Reference: assets/tracing.go

Metrics (OpenTelemetry)

Reference: assets/metrics.go

Custom Business Metrics

Reference: assets/business_metrics.go

Gin Middleware

Reference: assets/gin_middleware.go

gRPC Interceptors

Reference: assets/grpc_interceptors.go

Export to Object Storage

Use the OpenTelemetry Collector to batch and export to object storage:

Reference: assets/otel-collector-config.yaml

Local Dev Stack (docker-compose)

Reference: assets/docker-compose-observability.yml

Commands

# OpenTelemetry SDK
go get go.opentelemetry.io/otel
go get go.opentelemetry.io/otel/sdk
go get go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
go get go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc

# Gin instrumentation
go get go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin

# gRPC instrumentation
go get go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc

# View traces locally
open http://localhost:16686  # Jaeger UI

# View metrics
open http://localhost:9090   # Prometheus UI

Anti-Patterns

Don'tDo
log.Printf / fmt.Printlnslog.InfoContext(ctx, ...) with structured fields
Vendor-specific tracing SDKsOpenTelemetry standard
Skip trace context propagationAlways pass ctx, use OTel propagators
Log sensitive data (passwords, tokens)Log IDs and metadata only
Metrics in domain layerMetrics in infrastructure, referenced via interface if needed
Custom log format per serviceSame slog setup shared via observability.SetupLogger()

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

74/100Analyzed 2/19/2026

Solid technical reference for Go observability with OpenTelemetry covering structured logging, distributed tracing, and metrics. Well-structured with clear sections, tables, and ASCII diagrams. However, actual implementation code is externalized to referenced asset files, limiting immediate actionability - users must access separate files for working code. Includes useful anti-patterns table and commands section. High reusability due to vendor-neutral approach.

90
90
85
60
55

Metadata

Licenseunknown
Version-
Updated2/9/2026
Publisher333-333-333

Tags

apigithubobservability