in internal/processmetrics/netweaver/netweaver.go [105:199]
func (p *InstanceProperties) Collect(ctx context.Context) ([]*mrpb.TimeSeries, error) {
scc := sapcontrolclient.New(p.SAPInstance.GetInstanceNumber())
var metricsCollectionError error
metrics, err := collectNetWeaverMetrics(ctx, p, scc)
if err != nil {
metricsCollectionError = err
}
httpMetrics, err := collectHTTPMetrics(ctx, p)
if err != nil {
metricsCollectionError = err
}
if httpMetrics != nil {
metrics = append(metrics, httpMetrics...)
}
abapProcessStatusMetrics, err := collectABAPProcessStatus(ctx, p, scc)
if err != nil {
metricsCollectionError = err
}
if abapProcessStatusMetrics != nil {
metrics = append(metrics, abapProcessStatusMetrics...)
}
abapQueueStats, err := collectABAPQueueStats(ctx, p, scc)
if err != nil {
metricsCollectionError = err
}
if abapQueueStats != nil {
metrics = append(metrics, abapQueueStats...)
}
dpmonPath := `/usr/sap/` + p.SAPInstance.GetSapsid() + `/SYS/exe/run/dpmon`
command := `-c 'echo q | %s pf=%s v'`
abapSessionParams := commandlineexecutor.Params{
User: p.SAPInstance.GetUser(),
Executable: "bash",
ArgsToSplit: fmt.Sprintf(command, dpmonPath, p.SAPInstance.GetProfilePath()),
Env: []string{
"PATH=$PATH:" + p.SAPInstance.GetLdLibraryPath(),
"LD_LIBRARY_PATH=" + p.SAPInstance.GetLdLibraryPath(),
},
}
abapSessionStats, err := collectABAPSessionStats(ctx, p, commandlineexecutor.ExecuteCommand, abapSessionParams)
if err != nil {
metricsCollectionError = err
}
if abapSessionStats != nil {
metrics = append(metrics, abapSessionStats...)
}
command = `-c 'echo q | %s pf=%s c'`
abapRFCParams := commandlineexecutor.Params{
User: p.SAPInstance.GetUser(),
Executable: "bash",
ArgsToSplit: fmt.Sprintf(command, dpmonPath, p.SAPInstance.GetProfilePath()),
Env: []string{
"PATH=$PATH:" + p.SAPInstance.GetLdLibraryPath(),
"LD_LIBRARY_PATH=" + p.SAPInstance.GetLdLibraryPath(),
},
}
rffcConnectionsMetric, err := collectRFCConnections(ctx, p, commandlineexecutor.ExecuteCommand, abapRFCParams)
if err != nil {
metricsCollectionError = err
}
if rffcConnectionsMetric != nil {
metrics = append(metrics, rffcConnectionsMetric...)
}
enqLockParams := commandlineexecutor.Params{
User: p.SAPInstance.GetUser(),
Executable: p.SAPInstance.GetSapcontrolPath(),
ArgsToSplit: fmt.Sprintf("-nr %s -function EnqGetLockTable", p.SAPInstance.GetInstanceNumber()),
Env: []string{"LD_LIBRARY_PATH=" + p.SAPInstance.GetLdLibraryPath()},
}
enqLockMetrics, err := collectEnqLockMetrics(ctx, p, commandlineexecutor.ExecuteCommand, enqLockParams, scc)
if err != nil {
metricsCollectionError = err
}
if enqLockMetrics != nil {
metrics = append(metrics, enqLockMetrics...)
}
roleMetrics, err := collectRoleMetrics(ctx, p, commandlineexecutor.ExecuteCommand)
if err != nil {
log.CtxLogger(ctx).Debugw("Error in collecting role metrics", "error", err)
metricsCollectionError = err
}
if roleMetrics != nil {
metrics = append(metrics, roleMetrics)
}
return metrics, metricsCollectionError
}