mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2026-05-17 08:36:55 +03:00
app/vmagent: initial implementation for vmagent
This commit is contained in:
@@ -23,13 +23,11 @@ func WritePrometheusMetrics(w io.Writer) {
|
||||
fmt.Fprintf(w, "vm_app_start_timestamp %d\n", startTime.Unix())
|
||||
fmt.Fprintf(w, "vm_app_uptime_seconds %d\n", int(time.Since(startTime).Seconds()))
|
||||
|
||||
// TODO: export other interesting stuff.
|
||||
|
||||
// Export flags as metrics.
|
||||
flag.VisitAll(func(f *flag.Flag) {
|
||||
lname := strings.ToLower(f.Name)
|
||||
value := f.Value.String()
|
||||
if strings.Contains(lname, "pass") || strings.Contains(lname, "key") || strings.Contains(lname, "secret") {
|
||||
if isSecretFlag(lname) {
|
||||
// Do not expose passwords and keys to prometheus.
|
||||
value = "secret"
|
||||
}
|
||||
@@ -38,3 +36,23 @@ func WritePrometheusMetrics(w io.Writer) {
|
||||
}
|
||||
|
||||
var startTime = time.Now()
|
||||
|
||||
// RegisterSecretFlag registers flagName as secret.
|
||||
//
|
||||
// This function must be called before starting httpserver.
|
||||
// It cannot be called from concurrent goroutines.
|
||||
//
|
||||
// Secret flags aren't exported at `/metrics` page.
|
||||
func RegisterSecretFlag(flagName string) {
|
||||
lname := strings.ToLower(flagName)
|
||||
secretFlags[lname] = true
|
||||
}
|
||||
|
||||
var secretFlags = make(map[string]bool)
|
||||
|
||||
func isSecretFlag(s string) bool {
|
||||
if strings.Contains(s, "pass") || strings.Contains(s, "key") || strings.Contains(s, "secret") || strings.Contains(s, "token") {
|
||||
return true
|
||||
}
|
||||
return secretFlags[s]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user