pinpoint-apm/pinpoint · info

- apikey

Error message

- apikey: {}

What it means

WARN log line printing the ObjectNameV4 apikey, deliberately masked via MaskUtils.masking(apiKey, 2) so only the first characters are visible. Informational; confirms an apikey was loaded without leaking the secret.

Solutions

  1. No action needed; the key is masked by design.
  2. If the apikey appears null/short, check the credential file/config supplying the apikey.
  3. Never replace this logging with unmasked output; keep secrets out of logs.
Defensive patterns

Strategy: validation

Prevention

When it happens

Trigger: Agent startup when ObjectNameV4 is used and an apikey is configured; always printed masked in the option dump.

Common situations: Verifying an apikey was actually picked up (fully masked output still proves presence); auditing logs to confirm secrets are not printed in clear.

Related errors


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/ff5cbc5496564bfd. Report an issue: GitHub.

Appendix: source

Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/DefaultAgent.java:143

        return AgentContextOptionBuilder.build(agentOption, objectName, profilerConfig);
    }

    private AgentSystemConfig agentSystemConfig(ObjectName objectName) {
        AgentSystemConfig agentSystemConfig = new AgentSystemConfig(objectName.getAgentId(), Version.VERSION);
        agentSystemConfig.dump(System.getProperties());
        return agentSystemConfig;
    }

    private void dumpAgentOption(AgentContextOption agentOption) {
        final ObjectName objectName = agentOption.getObjectName();
        logger.warn("AgentOption : {}", objectName.getClass().getSimpleName());
        logger.warn("- agentId: {}", objectName.getAgentId());
        logger.warn("- agentName: {}", objectName.getAgentName());
        logger.warn("- applicationName: {}", objectName.getApplicationName());
        if (objectName instanceof ObjectNameV4) {
            ObjectNameV4 v4 = (ObjectNameV4) objectName;
            logger.warn("- serviceName: {}", objectName.getServiceName());
            logger.warn("- apikey: {}", MaskUtils.masking(v4.getApiKey(), 2));
        }
        logger.info("- instrumentation: {}", agentOption.getInstrumentation());
    }


    private LoggingSystem newLoggingSystem(Path agentPath) {
        return Log4j2LoggingSystem.searchPath(agentPath);
    }

    protected ApplicationContext newApplicationContext(AgentContextOption agentOption) {
        Objects.requireNonNull(agentOption, "agentOption");
        ProfilerConfig profilerConfig = Objects.requireNonNull(agentOption.getProfilerConfig(), "profilerConfig");

        String factoryClazzName = getInjectionModuleFactoryClazzName(profilerConfig);
        ModuleFactoryResolver moduleFactoryResolver = new DefaultModuleFactoryResolver(factoryClazzName);
        ModuleFactory moduleFactory = moduleFactoryResolver.resolve();
        return new DefaultApplicationContext(agentOption, moduleFactory);
    }

View on GitHub (pinned to 744c3d3075)