Golang Monitoring
Features for GoLang
Germain can monitor uptime, performance and usage of GoLang application. And it is customizable to your needs, as any other features.
Dependencies and External Services
If your Go application relies on external services or databases, Germain monitors their availability and response times and tracks metrics related to connection pools, query execution times, and error rates to ensure smooth interactions with dependencies.
Error Monitoring
Germain keeps track of errors and exceptions occurring in your Go application. It monitors and log error messages to identify and debug issues promptly.
Garbage Collection
Germain monitors garbage collection metrics (e.g. pause times, heap size, and allocation rates to optimize memory usage and prevent performance degradation caused by excessive garbage collection).
Goroutine and Concurrency Monitoring
Germain monitors the number of goroutines and their behavior to identify any potential issues such as goroutine leaks or excessive resource consumption.
HTTP Server Metrics
If your Go application serves HTTP requests, Germain monitors server metrics like request rates, response codes, and response sizes. It also keeps an eye on the number of active connections to ensure your application can handle the expected load.
Log Analysis
Germain analyzes logs, that helps track the flow of requests, identifying bottlenecks, and troubleshooting issues across different components.
Performance Profiling
Germain profiles GoLang Code to identify performance bottlenecks and optimize critical sections of your code.
Resource Usage
Germain monitors the CPU and memory usage of your Go application to ensure it's performing efficiently and not causing any resource bottlenecks.
Response Time
Germain measures the response time of your Go application to gauge its performance and user experience. It also monitors the latency of HTTP requests or any other relevant communication channels to ensure timely responses.
KPIs
Preconfigured KPI and you can always create your own KPI.
GoLang CPU Sampler
GoLang Heap Usage
GoLang GoRoutine Count
Dashboard and Portlets
Preconfigured Dashboard, and you can always create your own:

GoLang Performance Trend on Aggregate Dashboard - Germain UX

GoLang Transaction Performance Analysis on RCA Dashboard - Germain UX
Configure
Add Golang profiling to you application
The official Golang documentation best explains how to add the ‘pprof’ package, and start a listener for 'pprof' in your GoLang application: https://golang.org/pkg/net/http/pprof/
Import Golang settings into Germain
The setting json files are available here
[service-disto]/install/configuration/golang/
You will need to import:
germain.apm.monitoringConfig.components.json
germain.apm.monitoringConfig.keyPerformanceIndicators.json
germain.apm.workspace.rcaDashboards.json
Optionally you can import a pre-made Golang Dasboard
germain.apm.workspace.dashboards.json
Go to Germain Workspace > Left Menu > Wizard > Golang

GoLang Wizard - Germain UX
Enter ‘Monitored Server’, ‘Port’, ‘Monitored Application’ and ‘Read Timeout’

GoLang Parameters - Germain UX
Unless you have special configuration, you can click 'skip'

GoLang Wizard (2) - Germain UX
Choose a 'Monitor Name', ‘Monitoring Node’, ‘Engine’
Set a schedule to run the Monitor on

GoLang Wizard (3) - Germain UX
Check whether it is running on the State screen

GoLang Agent Running Status on State Dashboard - Germain UX

GoLang Agent Detailed Running Status on State Dashboard - Germain UX
Component: Code Profiler, Engine, RPA Bot Recorder, RUM JS
Feature Availability: 8.6.0 or later