diff --git a/internal/collector/nginxplusreceiver/factory.go b/internal/collector/nginxplusreceiver/factory.go index 5f053e73a..fb1b9c34c 100644 --- a/internal/collector/nginxplusreceiver/factory.go +++ b/internal/collector/nginxplusreceiver/factory.go @@ -19,6 +19,7 @@ import ( "github.com/nginx/agent/v3/internal/collector/nginxplusreceiver/internal/metadata" ) +// nolint: ireturn const defaultTimeout = 10 * time.Second // nolint: ireturn diff --git a/internal/watcher/instance/nginx_process_parser.go b/internal/watcher/instance/nginx_process_parser.go index 84cd737ac..5e7289921 100644 --- a/internal/watcher/instance/nginx_process_parser.go +++ b/internal/watcher/instance/nginx_process_parser.go @@ -136,6 +136,8 @@ func (npp *NginxProcessParser) getInfo(ctx context.Context, proc *nginxprocess.P } } + confPath := getConfPathFromCommand(proc.Cmd) + var nginxInfo *Info outputBuffer, err := npp.executer.RunCmd(ctx, exePath, "-V") @@ -148,6 +150,10 @@ func (npp *NginxProcessParser) getInfo(ctx context.Context, proc *nginxprocess.P nginxInfo.ExePath = exePath nginxInfo.ProcessID = proc.PID + if nginxInfo.ConfPath = getNginxConfPath(ctx, nginxInfo); confPath != "" { + nginxInfo.ConfPath = confPath + } + loadableModules := getLoadableModules(nginxInfo) nginxInfo.LoadableModules = loadableModules @@ -268,7 +274,6 @@ func parseNginxVersionCommandOutput(ctx context.Context, output *bytes.Buffer) * } nginxInfo.Prefix = getNginxPrefix(ctx, nginxInfo) - nginxInfo.ConfPath = getNginxConfPath(ctx, nginxInfo) return nginxInfo } @@ -392,3 +397,17 @@ func convertToMap(processes []*nginxprocess.Process) map[int32]*nginxprocess.Pro return processesByPID } + +func getConfPathFromCommand(command string) string { + commands := strings.Split(command, " ") + + for i, command := range commands { + if command == "-c" { + if i < len(commands)-1 { + return commands[i+1] + } + } + } + + return "" +} diff --git a/internal/watcher/instance/nginx_process_parser_test.go b/internal/watcher/instance/nginx_process_parser_test.go index b67de7bd8..4f3c0271c 100644 --- a/internal/watcher/instance/nginx_process_parser_test.go +++ b/internal/watcher/instance/nginx_process_parser_test.go @@ -616,3 +616,14 @@ func TestNginxProcessParser_GetExe(t *testing.T) { }) } } + +func TestGetConfigPathFromCommand(t *testing.T) { + result := getConfPathFromCommand("nginx: master process nginx -c /tmp/nginx.conf") + assert.Equal(t, "/tmp/nginx.conf", result) + + result = getConfPathFromCommand("nginx: master process nginx -c") + assert.Equal(t, "", result) + + result = getConfPathFromCommand("") + assert.Equal(t, "", result) +}