in internal/pacemaker/pacemakermetrics.go [819:867]
func setERSConfigMetrics(ctx context.Context, labels map[string]string, groups []Group) {
labels["ers_automatic_recover"] = ""
labels["is_ers"] = ""
labels["ers_monitor_interval"] = ""
labels["ers_monitor_timeout"] = ""
instanceAttributes := map[string]string{
"AUTOMATIC_RECOVER": "ers_automatic_recover",
"IS_ERS": "is_ers",
}
// Identify the resource group containing the ERS resource.
var ersGroup *Group
ERSLoop:
for _, group := range groups {
for _, primitive := range group.Primitives {
if primitive.ClassType != "SAPInstance" {
continue
}
for _, nvPair := range primitive.InstanceAttributes.NVPairs {
if nvPair.Name == "START_PROFILE" && strings.Contains(nvPair.Value, "ERS") {
ersGroup = &group
break ERSLoop
}
}
}
}
if ersGroup == nil {
log.CtxLogger(ctx).Debug("Could not find ERS resource group. Skipping ERS metric collection.")
return
}
for _, primitive := range ersGroup.Primitives {
if primitive.ClassType != "SAPInstance" {
continue
}
for _, nvPair := range primitive.InstanceAttributes.NVPairs {
if key, ok := instanceAttributes[nvPair.Name]; ok {
labels[key] = nvPair.Value
}
}
for _, op := range primitive.Operations {
if op.Name == "monitor" {
labels["ers_monitor_interval"] = op.Interval
labels["ers_monitor_timeout"] = op.Timeout
}
}
}
}