package main import ( "log" "net/http" "github.com/gliderlabs/ssh" "github.com/gorilla/mux" ) var ( metrics_num_passwords int metrics_city_num map[string]int cities map[string]location ) func main() { // create a map mapping a city to an amount of hits metrics_city_num = make(map[string]int) // create a cities map mapping a city to a location cities = make(map[string]location) // start the ssh server log.Println("Starting SSH listener") go func() { listenErr := ssh.ListenAndServe(":2222", nil, ssh.PasswordAuth(handlePass)) if listenErr != nil { log.Fatalln(listenErr.Error()) } }() // start the http server logging the metrics log.Println("Starting HTTP metrics listener") r := mux.NewRouter() r.HandleFunc("/", indexHandler) r.HandleFunc("/metrics", metricsHandler) r.HandleFunc("/locations", locationHandlerEndpoint) // start the http server exposing the metrics and the locations listenErr := http.ListenAndServe(":8084", r) // handle potential errors if listenErr != nil { log.Fatalln(listenErr.Error()) } }