After a long journey transitioning from a monolithic application into one based on microservices, you have reached a point where all your new and shiny services are happily running in production. At this stage, you will probably start becoming more and more curious about their operation in the long run:
- How much memory are they using?
- How many goroutines are currently running?
- Are there any leaks (memory or goroutines) that can eventually force the service to crash?
- How often does the Go garbage collector run and how much time does each run actually take?
If you are using a container orchestration framework such as Kubernetes, crashing services are not normally a big concern; just bump the number of instances ...