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