mirror of https://github.com/statping/statping
				
				
				
			unused code
							parent
							
								
									fe8f6750a7
								
							
						
					
					
						commit
						780095cc84
					
				|  | @ -1,160 +0,0 @@ | |||
| package handlers | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"github.com/prometheus/client_golang/prometheus/promhttp" | ||||
| 	"github.com/statping/statping/types/failures" | ||||
| 	"github.com/statping/statping/types/services" | ||||
| 	"github.com/statping/statping/utils" | ||||
| 	"net/http" | ||||
| 	"runtime" | ||||
| 	"strconv" | ||||
| 	"strings" | ||||
| ) | ||||
| 
 | ||||
| //
 | ||||
| //   Use your Statping Secret API Key for Authentication
 | ||||
| //
 | ||||
| //		scrape_configs:
 | ||||
| //		  - job_name: 'statping'
 | ||||
| //			bearer_token: MY API SECRET HERE
 | ||||
| //			static_configs:
 | ||||
| //			  - targets: ['statping:8080']
 | ||||
| //
 | ||||
| 
 | ||||
| var ( | ||||
| 	prefix       string | ||||
| 	promValues   []string | ||||
| 	httpRequests int64 | ||||
| 	httpBytesIn  int64 | ||||
| ) | ||||
| 
 | ||||
| func bToMb(b uint64) uint64 { | ||||
| 	return b / 1024 / 1024 | ||||
| } | ||||
| 
 | ||||
| func hex2int(hexStr string) uint64 { | ||||
| 	cleaned := strings.Replace(hexStr, "0x", "", -1) | ||||
| 	result, _ := strconv.ParseUint(cleaned, 16, 64) | ||||
| 	return uint64(result) | ||||
| } | ||||
| 
 | ||||
| func prometheusHandler() http.Handler { | ||||
| 	return promhttp.Handler() | ||||
| } | ||||
| 
 | ||||
| func prometheusOldHandler(w http.ResponseWriter, r *http.Request) { | ||||
| 	promValues = []string{} | ||||
| 	prefix = utils.Params.GetString("PREFIX") | ||||
| 	if prefix != "" { | ||||
| 		prefix = prefix + "_" | ||||
| 	} | ||||
| 
 | ||||
| 	secondsOnline := utils.Now().Sub(utils.StartTime).Seconds() | ||||
| 	allFails := failures.All() | ||||
| 
 | ||||
| 	var m runtime.MemStats | ||||
| 	runtime.ReadMemStats(&m) | ||||
| 
 | ||||
| 	promValues = append(promValues, "# Statping Prometheus Exporter") | ||||
| 
 | ||||
| 	PrometheusComment("Statping Totals") | ||||
| 	PrometheusKeyValue("total_failures", len(allFails)) | ||||
| 	PrometheusKeyValue("total_services", len(services.Services())) | ||||
| 	PrometheusKeyValue("seconds_online", secondsOnline) | ||||
| 
 | ||||
| 	for _, ser := range services.AllInOrder() { | ||||
| 		online := 1 | ||||
| 		if !ser.Online { | ||||
| 			online = 0 | ||||
| 		} | ||||
| 		id := ser.Id | ||||
| 		name := ser.Name | ||||
| 
 | ||||
| 		PrometheusComment(fmt.Sprintf("Service #%d '%s':", ser.Id, ser.Name)) | ||||
| 		PrometheusExportKey("service_failures", id, name, ser.AllFailures().Count()) | ||||
| 		PrometheusExportKey("service_latency", id, name, ser.Latency) | ||||
| 		PrometheusExportKey("service_online", id, name, online) | ||||
| 		PrometheusExportKey("service_status_code", id, name, ser.LastStatusCode) | ||||
| 		PrometheusExportKey("service_response_length", id, name, len([]byte(ser.LastResponse))) | ||||
| 		PrometheusExportKey("service_ping_time", id, name, ser.PingTime) | ||||
| 		PrometheusExportKey("service_last_latency", id, name, ser.LastLatency) | ||||
| 		PrometheusExportKey("service_last_lookup", id, name, ser.LastLookupTime) | ||||
| 		PrometheusExportKey("service_last_check", id, name, utils.Now().Sub(ser.LastCheck).Milliseconds()) | ||||
| 		//PrometheusExportKey("service_online_seconds", id, name, ser.SecondsOnline)
 | ||||
| 		//PrometheusExportKey("service_offline_seconds", id, name, ser.SecondsOffline)
 | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	for _, n := range services.AllNotifiers() { | ||||
| 		notif := n.Select() | ||||
| 		if notif.Enabled.Bool { | ||||
| 			PrometheusComment(fmt.Sprintf("Notifier %s:", notif.Method)) | ||||
| 			PrometheusNoIDExportKey("notifier_on_success", notif.Method, notif.Hits.OnSuccess) | ||||
| 			PrometheusNoIDExportKey("notifier_on_failure", notif.Method, notif.Hits.OnFailure) | ||||
| 			PrometheusNoIDExportKey("notifier_on_user_new", notif.Method, notif.Hits.OnNewUser) | ||||
| 			PrometheusNoIDExportKey("notifier_on_user_update", notif.Method, notif.Hits.OnUpdatedUser) | ||||
| 			PrometheusNoIDExportKey("notifier_on_user_delete", notif.Method, notif.Hits.OnDeletedUser) | ||||
| 			PrometheusNoIDExportKey("notifier_on_service_new", notif.Method, notif.Hits.OnNewService) | ||||
| 			PrometheusNoIDExportKey("notifier_on_service_update", notif.Method, notif.Hits.OnUpdatedService) | ||||
| 			PrometheusNoIDExportKey("notifier_on_service_delete", notif.Method, notif.Hits.OnDeletedService) | ||||
| 			PrometheusNoIDExportKey("notifier_on_notifier_new", notif.Method, notif.Hits.OnNewNotifier) | ||||
| 			PrometheusNoIDExportKey("notifier_on_notifier_update", notif.Method, notif.Hits.OnUpdatedNotifier) | ||||
| 			PrometheusNoIDExportKey("notifier_on_notifier_save", notif.Method, notif.Hits.OnSave) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// https://golang.org/pkg/runtime/#MemStats
 | ||||
| 
 | ||||
| 	PrometheusComment("Golang Metrics") | ||||
| 	PrometheusKeyValue("go_heap_allocated", m.Alloc) | ||||
| 	PrometheusKeyValue("go_total_allocated", m.TotalAlloc) | ||||
| 	PrometheusKeyValue("go_heap_in_use", m.HeapInuse) | ||||
| 	PrometheusKeyValue("go_heap_objects", m.HeapObjects) | ||||
| 	PrometheusKeyValue("go_heap_idle", m.HeapIdle) | ||||
| 	PrometheusKeyValue("go_heap_released", m.HeapReleased) | ||||
| 	PrometheusKeyValue("go_heap_frees", m.Frees) | ||||
| 	PrometheusKeyValue("go_lookups", m.Lookups) | ||||
| 	PrometheusKeyValue("go_system", m.Sys) | ||||
| 	PrometheusKeyValue("go_number_gc", m.NumGC) | ||||
| 	PrometheusKeyValue("go_number_gc_forced", m.NumForcedGC) | ||||
| 	PrometheusKeyValue("go_goroutines", runtime.NumGoroutine()) | ||||
| 
 | ||||
| 	output := strings.Join(promValues, "\n") | ||||
| 	w.WriteHeader(http.StatusOK) | ||||
| 	w.Write([]byte(output)) | ||||
| } | ||||
| 
 | ||||
| func PrometheusKeyValue(keyName string, value interface{}) { | ||||
| 	val := promValue(value) | ||||
| 	prom := fmt.Sprintf("%sstatping_%s %s", prefix, keyName, val) | ||||
| 	promValues = append(promValues, prom) | ||||
| } | ||||
| 
 | ||||
| func PrometheusExportKey(keyName string, id int64, name string, value interface{}) { | ||||
| 	val := promValue(value) | ||||
| 	prom := fmt.Sprintf("%sstatping_%s{id=\"%d\" name=\"%s\"} %s", prefix, keyName, id, name, val) | ||||
| 	promValues = append(promValues, prom) | ||||
| } | ||||
| 
 | ||||
| func PrometheusNoIDExportKey(keyName string, name string, value interface{}) { | ||||
| 	val := promValue(value) | ||||
| 	prom := fmt.Sprintf("%sstatping_%s{name=\"%s\"} %s", prefix, keyName, name, val) | ||||
| 	promValues = append(promValues, prom) | ||||
| } | ||||
| 
 | ||||
| func PrometheusComment(comment string) { | ||||
| 	prom := fmt.Sprintf("\n# %v", comment) | ||||
| 	promValues = append(promValues, prom) | ||||
| } | ||||
| 
 | ||||
| func promValue(val interface{}) string { | ||||
| 	var newVal string | ||||
| 	switch v := val.(type) { | ||||
| 	case float64: | ||||
| 		newVal = fmt.Sprintf("%.4f", v) | ||||
| 	default: | ||||
| 		newVal = fmt.Sprintf("%v", v) | ||||
| 	} | ||||
| 	return newVal | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 hunterlong
						hunterlong