@@ -38,11 +38,14 @@ func NewContainer(conf config.Config) *Container {
3838
3939 c .Debug ("Container is being created" )
4040
41- c .Redis = redis . NewClient ( conf , c .Logger )
41+ c .metricsManager = metrics . NewMetricsManager ( exporters . Prometheus ( c . appName , c . appVersion ) , c .Logger )
4242
43- c .DB = sql .NewSQL (conf , c .Logger )
43+ // Register framework metrics
44+ c .registerFrameworkMetrics ()
4445
45- c .metricsManager = metrics .NewMetricManager (exporters .Prometheus (c .appName , c .appVersion ), c .Logger )
46+ c .Redis = redis .NewClient (conf , c .Logger , c .metricsManager )
47+
48+ c .DB = sql .NewSQL (conf , c .Logger , c .metricsManager )
4649
4750 return c
4851}
@@ -57,6 +60,29 @@ func (c *Container) Metrics() metrics.Manager {
5760 return c .metricsManager
5861}
5962
63+ func (c * Container ) registerFrameworkMetrics () {
64+ // system info metrics
65+ c .Metrics ().NewGauge ("app_go_routines" , "Number of Go routines running." )
66+ c .Metrics ().NewGauge ("app_sys_memory_alloc" , "Number of bytes allocated for heap objects." )
67+ c .Metrics ().NewGauge ("app_sys_total_alloc" , "Number of cumulative bytes allocated for heap objects." )
68+ c .Metrics ().NewGauge ("app_go_numGC" , "Number of completed Garbage Collector cycles." )
69+ c .Metrics ().NewGauge ("app_go_sys" , "Number of total bytes of memory." )
70+
71+ histogramBuckets := []float64 {.001 , .003 , .005 , .01 , .02 , .03 , .05 , .1 , .2 , .3 , .5 , .75 , 1 , 2 , 3 , 5 , 10 , 30 }
72+
73+ // http metrics
74+ c .Metrics ().NewHistogram ("app_http_response" , "Response time of http requests in seconds." , histogramBuckets ... )
75+ c .Metrics ().NewHistogram ("app_http_service_response" , "Response time of http service requests in seconds." , histogramBuckets ... )
76+
77+ // redis metrics
78+ c .Metrics ().NewHistogram ("app_redis_stats" , "Observes the response time for Redis commands." , histogramBuckets ... )
79+
80+ // sql metrics
81+ c .Metrics ().NewHistogram ("app_sql_stats" , "Observes the response time for SQL queries." , histogramBuckets ... )
82+ c .Metrics ().NewGauge ("app_sql_open_connections" , "Number of open SQL connections." )
83+ c .Metrics ().NewGauge ("app_sql_inUse_connections" , "Number of inUse SQL connections." )
84+ }
85+
6086func (c * Container ) GetAppName () string {
6187 return c .appName
6288}
0 commit comments