Operations | Monitoring | ITSM | DevOps | Cloud

Zero-config Go heap profiling

Coroot's node-agent already collects CPU profiles for any process on the node using eBPF, with zero integration from the application side. For Java, we dynamically inject async-profiler into the JVM to get memory and lock profiles. But Go processes were still a blind spot for non-CPU profiling unless the app exposed a pprof endpoint and the cluster-agent scraped it. We wanted the same zero-config experience for Go heap profiles. This post is about how we got there.

Golang Monitoring Guide - Traces, Logs, APM and Go Runtime Metrics

Golang (Go) applications are known for their high performance, concurrency model, and efficient resource use, making Go an easy choice for building modern distributed systems. But just because your Go application is built for speed doesn't mean it's running perfectly in production. When things go wrong, just checking if your service is "UP" isn't enough.

The Silent Leak: How One Line of Go Drained Memory Across Thousands of Goroutines

This technical deep-dive reveals how Harness engineers discovered and fixed a critical Go memory leak where reassigning context variables in worker loops created invisible chains that prevented garbage collection across thousands of goroutines, ultimately consuming gigabytes of memory in their CI/CD delegate service.

A practical guide to error handling in Go

When you first start coding in Go, you quickly learn how error handling in the language differs from error handling in languages such as Java, Python, JavaScript, or Ruby. In those languages, throwing an exception automatically generates a stack trace. Go, by contrast, provides no built-in error tracing to reveal an error’s origin.

Golang Application Performance Monitoring: A Comprehensive Guide

Application Performance Monitoring (APM) refers to the practice of tracking, analyzing, and optimizing the performance and availability of software applications. When it comes to Go (Golang), a language known for its concurrency, speed, and efficiency, APM becomes crucial to ensure that your applications stay fast, reliable, and scalable under real-world loads. APM in Go involves monitoring the runtime behavior, request response times, system resource usage, and error patterns across your application.