Browse Source

fix prometheus URL used by cscli (#520)

AlteredCoder 4 years ago
parent
commit
0ed92b20a0

+ 2 - 1
Makefile

@@ -66,6 +66,8 @@ clean:
 	@rm -f $(CROWDSEC_BIN)
 	@rm -f $(CSCLI_BIN)
 	@rm -f *.log
+	@rm crowdsec-release.tgz
+	@rm -rf crowdsec-v*
 
 cscli:
 ifeq ($(lastword $(RESPECT_VERSION)), $(CURRENT_GOVERSION))
@@ -102,7 +104,6 @@ else
 	@exit 1;
 endif
 
-
 #.PHONY: test
 test:
 ifeq ($(lastword $(RESPECT_VERSION)), $(CURRENT_GOVERSION))

+ 1 - 1
cmd/crowdsec-cli/collections.go

@@ -129,7 +129,7 @@ func NewCollectionsCmd() *cobra.Command {
 			}
 		},
 	}
-	cmdCollectionsInspect.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "http://127.0.0.1:6060/metrics", "Prometheus url")
+	cmdCollectionsInspect.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "", "Prometheus url")
 	cmdCollections.AddCommand(cmdCollectionsInspect)
 
 	var cmdCollectionsList = &cobra.Command{

+ 16 - 1
cmd/crowdsec-cli/metrics.go

@@ -377,10 +377,25 @@ func NewMetricsCmd() *cobra.Command {
 		Long:  `Fetch metrics from the prometheus server and display them in a human-friendly way`,
 		Args:  cobra.ExactArgs(0),
 		Run: func(cmd *cobra.Command, args []string) {
+			if !csConfig.Prometheus.Enabled {
+				log.Warningf("Prometheus is not enabled, can't show metrics")
+				os.Exit(1)
+			}
+
+			if csConfig.Prometheus.ListenAddr == "" || csConfig.Prometheus.ListenPort == 0 {
+				log.Warningf("No prometheus address or port specified in '%s', can't show metrics", *csConfig.Self)
+				os.Exit(1)
+			}
+
+			if prometheusURL == "" {
+				log.Debugf("No prometheus URL provided using: %s:%d", csConfig.Prometheus.ListenAddr, csConfig.Prometheus.ListenPort)
+				prometheusURL = fmt.Sprintf("http://%s:%d/metrics", csConfig.Prometheus.ListenAddr, csConfig.Prometheus.ListenPort)
+			}
+
 			ShowPrometheus(prometheusURL)
 		},
 	}
-	cmdMetrics.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "http://127.0.0.1:6060/metrics", "Prometheus url")
+	cmdMetrics.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "", "Prometheus url (http://<ip>:<port>/metrics)")
 
 	return cmdMetrics
 }

+ 2 - 1
cmd/crowdsec-cli/parsers.go

@@ -120,10 +120,11 @@ cscli parsers remove crowdsecurity/sshd-logs
 				log.Fatalf("Failed to get Hub index : %v", err)
 				log.Infoln("Run 'sudo cscli hub update' to get the hub index")
 			}
+
 			InspectItem(args[0], cwhub.PARSERS)
 		},
 	}
-	cmdParsersInspect.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "http://127.0.0.1:6060/metrics", "Prometheus url")
+	cmdParsersInspect.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "", "Prometheus url")
 	cmdParsers.AddCommand(cmdParsersInspect)
 
 	var cmdParsersList = &cobra.Command{

+ 1 - 1
cmd/crowdsec-cli/scenarios.go

@@ -123,7 +123,7 @@ cscli scenarios remove crowdsecurity/ssh-bf
 			InspectItem(args[0], cwhub.SCENARIOS)
 		},
 	}
-	cmdScenariosInspect.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "http://127.0.0.1:6060/metrics", "Prometheus url")
+	cmdScenariosInspect.PersistentFlags().StringVarP(&prometheusURL, "url", "u", "", "Prometheus url")
 	cmdScenarios.AddCommand(cmdScenariosInspect)
 
 	var cmdScenariosList = &cobra.Command{

+ 12 - 4
cmd/crowdsec-cli/utils.go

@@ -257,10 +257,18 @@ func InspectItem(name string, objecitemType string) {
 		log.Fatalf("unable to marshal item : %s", err)
 	}
 	fmt.Printf("%s", string(buff))
-
-	fmt.Printf("\nCurrent metrics : \n\n")
-	ShowMetrics(hubItem)
-
+	if csConfig.Prometheus.Enabled {
+		if csConfig.Prometheus.ListenAddr == "" || csConfig.Prometheus.ListenPort == 0 {
+			log.Warningf("No prometheus address or port specified in '%s', can't show metrics", *csConfig.Self)
+			return
+		}
+		if prometheusURL == "" {
+			log.Debugf("No prometheus URL provided using: %s:%d", csConfig.Prometheus.ListenAddr, csConfig.Prometheus.ListenPort)
+			prometheusURL = fmt.Sprintf("http://%s:%d/metrics", csConfig.Prometheus.ListenAddr, csConfig.Prometheus.ListenPort)
+		}
+		fmt.Printf("\nCurrent metrics : \n\n")
+		ShowMetrics(hubItem)
+	}
 }
 
 func ShowMetrics(hubItem *cwhub.Item) {