forked from vieter-v/vieter
				
			feat(metrics): add prefix; use base unit for time
							parent
							
								
									849bf54979
								
							
						
					
					
						commit
						60d5fb77e0
					
				| 
						 | 
					@ -10,8 +10,9 @@ fn (mut app App) v1_metrics() web.Result {
 | 
				
			||||||
		return app.status(.not_found)
 | 
							return app.status(.not_found)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mut exporter := metrics.new_prometheus_exporter([0.01, 0.05, 0.1, 0.5, 1, 100])
 | 
						mut exporter := metrics.new_prometheus_exporter([0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5,
 | 
				
			||||||
	exporter.load(app.collector)
 | 
							10])
 | 
				
			||||||
 | 
						exporter.load('vieter_', app.collector)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO stream to connection instead
 | 
						// TODO stream to connection instead
 | 
				
			||||||
	body := exporter.export_to_string() or { return app.status(.internal_server_error) }
 | 
						body := exporter.export_to_string() or { return app.status(.internal_server_error) }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -335,11 +335,15 @@ fn handle_conn<T>(mut conn net.TcpConn, mut app T, routes map[string]Route) {
 | 
				
			||||||
		labels := [
 | 
							labels := [
 | 
				
			||||||
			['method', app.req.method.str()]!,
 | 
								['method', app.req.method.str()]!,
 | 
				
			||||||
			['path', app.req.url]!,
 | 
								['path', app.req.url]!,
 | 
				
			||||||
 | 
								// Not all methods properly set this value yet I think
 | 
				
			||||||
			['status', app.status.int().str()]!,
 | 
								['status', app.status.int().str()]!,
 | 
				
			||||||
		]
 | 
							]
 | 
				
			||||||
		app.collector.counter_increment(name: 'http_requests_total', labels: labels)
 | 
							app.collector.counter_increment(name: 'http_requests_total', labels: labels)
 | 
				
			||||||
		app.collector.histogram_record(time.ticks() - app.page_gen_start,
 | 
							// Prometheus prefers metrics containing base units, as defined here
 | 
				
			||||||
			name: 'http_requests_time_ms'
 | 
							// https://prometheus.io/docs/practices/naming/
 | 
				
			||||||
 | 
							app.collector.histogram_record(f64(time.ticks() - app.page_gen_start) / 1000,
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								name: 'http_requests_duration_seconds'
 | 
				
			||||||
			labels: labels
 | 
								labels: labels
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue