func flattenAndClean()

in internal/kibana/send_config.go [63:112]


func flattenAndClean(conf *ucfg.Config) (map[string]interface{}, error) {
	m := mapstr.M{}
	if err := conf.Unpack(m); err != nil {
		return nil, err
	}
	flat := m.Flatten()
	out := make(mapstr.M, len(flat))
	for k, v := range flat {
		// remove if elasticsearch is NOT in the front position?
		// *.elasticsearch.* according to axw
		if strings.Contains(k, "elasticsearch") {
			continue
		}
		if strings.Contains(k, "kibana") {
			continue
		}
		if strings.HasPrefix(k, "instrumentation") {
			continue
		}
		if strings.HasPrefix(k, "logging.") {
			switch k[8:] {
			case "level", "selectors", "metrics.enabled", "metrics.period":
			default:
				continue
			}
		}
		if strings.HasPrefix(k, "path") {
			continue
		}
		if k == "gc_percent" || k == "name" || k == "xpack.monitoring.enabled" {
			continue
		}
		if k == "apm-server.host" {
			v = "0.0.0.0:8200"
		}
		if strings.HasPrefix(k, "apm-server.ssl.") {
			// Following ssl related settings need to be synced:
			// apm-server.ssl.enabled
			// apm-server.ssl.certificate
			// apm-server.ssl.key
			switch k[15:] {
			case "enabled", "certificate", "key":
			default:
				continue
			}
		}
		out[k] = v
	}
	return out, nil
}