func()

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
}