gdcsst.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. // Imports
  3. import (
  4. "context"
  5. "log"
  6. "net/http"
  7. "github.com/prometheus/client_golang/prometheus"
  8. "github.com/prometheus/client_golang/prometheus/promhttp"
  9. )
  10. var AppConfig Config
  11. var (
  12. // GdcsstOnline Online servers or players
  13. GdcsstOnline = prometheus.NewGaugeVec(prometheus.GaugeOpts{
  14. Name: "gdcsst_online",
  15. Help: "Online",
  16. },
  17. []string{"scope"},
  18. )
  19. // GdcsstPlayers -- Players on Servers
  20. GdcsstPlayers = prometheus.NewGaugeVec(prometheus.GaugeOpts{
  21. Name: "gdcsst_players",
  22. Help: "All players on a server",
  23. },
  24. []string{"server"},
  25. )
  26. )
  27. func init() {
  28. prometheus.MustRegister(GdcsstOnline)
  29. prometheus.MustRegister(GdcsstPlayers)
  30. AppConfig = processConfig()
  31. }
  32. // Required for Redis
  33. var ctx = context.Background()
  34. // Main function
  35. func main() {
  36. // The Main loop to update servers
  37. // Handled in "backend.go"
  38. go updateServers()
  39. // Configure the net/http module
  40. // Handled in "frontend.go"
  41. http.Handle("/", http.RedirectHandler("/servers", 301))
  42. http.HandleFunc("/servers", handleServers)
  43. http.HandleFunc("/servers/", handleServer)
  44. http.HandleFunc("/stats", handlerStats)
  45. http.HandleFunc("/about", handlerAbout)
  46. http.Handle("/metrics", promhttp.HandlerFor(
  47. prometheus.DefaultGatherer,
  48. promhttp.HandlerOpts{
  49. EnableOpenMetrics: true,
  50. },
  51. ))
  52. log.Fatal(http.ListenAndServe(AppConfig.ListenAddress, nil))
  53. }