Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[opentelemetry-php-contrib] Automatically associate monolog record to the current trace from context #1441

Open
DominicDetta opened this issue Nov 27, 2024 · 4 comments

Comments

@DominicDetta
Copy link

DominicDetta commented Nov 27, 2024

I'm using the open-telemetry/opentelemetry-logger-monolog package but log records generated are not related to request trace.
Following is a screenshot from the Signoz monitoring solution:
Screenshot 2024-11-27 alle 16 24 20

Is this a bug or a normal behaviour?

Without the trace_id the APM is not able to navigate automatically to the associated request trace.

From the example of this page I think it should be possible to inject the trace and span id automatically

@brettmc
Copy link
Collaborator

brettmc commented Nov 28, 2024

Hi @DominicDetta there is some configuration required for that package, and it's not clear whether you have done it or not. You need to create a handler and configure monolog to use it, and the otel logger provider can be either manually or automatically created.

Have you tried something like in the examples?

@DominicDetta
Copy link
Author

DominicDetta commented Nov 28, 2024

Hi, this is the code added to the monolog class:

 $logger = new Logger('formflow');
 /* extra code */
// Opentelemetry
        $openTelemetryHandler = new Handler(
            Globals::loggerProvider(),
            LogLevel::INFO,
            true,
        );

        $logger->pushHandler($streamHandler);
        $logger->pushHandler($handler);
        $logger->pushHandler($openTelemetryHandler);

I verified whether the log is sent to Opentelemetry correctly and I can confirm the problem reside already in the instrumentation, as you can see the attributes trace_id and span_id are empty:

2024-11-28 11:24:29 {
2024-11-28 11:24:29     "resource": {
2024-11-28 11:24:29         "attributes": {
2024-11-28 11:24:29             "host.name": "f78b98028f84",
2024-11-28 11:24:29             "host.arch": "x86_64",
2024-11-28 11:24:29             "os.type": "linux",
2024-11-28 11:24:29             "os.description": "6.6.26-linuxkit",
2024-11-28 11:24:29             "os.name": "Linux",
2024-11-28 11:24:29             "os.version": "#1 SMP Sat Apr 27 04:13:19 UTC 2024",
2024-11-28 11:24:29             "process.pid": 117,
2024-11-28 11:24:29             "process.executable.path": "",
2024-11-28 11:24:29             "process.owner": "www-data",
2024-11-28 11:24:29             "process.runtime.name": "apache2handler",
2024-11-28 11:24:29             "process.runtime.version": "8.3.14",
2024-11-28 11:24:29             "telemetry.sdk.name": "opentelemetry",
2024-11-28 11:24:29             "telemetry.sdk.language": "php",
2024-11-28 11:24:29             "telemetry.sdk.version": "1.0.8",
2024-11-28 11:24:29             "telemetry.distro.name": "opentelemetry-php-instrumentation",
2024-11-28 11:24:29             "telemetry.distro.version": "1.1.0",
2024-11-28 11:24:29             "service.name": "formflow-demo",
2024-11-28 11:24:29             "service.version": "1.11.10"
2024-11-28 11:24:29         },
2024-11-28 11:24:29         "dropped_attributes_count": 0
2024-11-28 11:24:29     },
2024-11-28 11:24:29     "scopes": [
2024-11-28 11:24:29         {
2024-11-28 11:24:29             "name": "formflow",
2024-11-28 11:24:29             "version": null,
2024-11-28 11:24:29             "attributes": [],
2024-11-28 11:24:29             "dropped_attributes_count": 0,
2024-11-28 11:24:29             "schema_url": null,
2024-11-28 11:24:29             "logs": [
2024-11-28 11:24:29                 {
2024-11-28 11:24:29                     "timestamp": 1732789469476225000,
2024-11-28 11:24:29                     "observed_timestamp": 1732789469494023168,
2024-11-28 11:24:29                     "severity_number": 18,
2024-11-28 11:24:29                     "severity_text": "CRITICAL",
2024-11-28 11:24:29                     "body": "Exception: asdsads....",
2024-11-28 11:24:29                     "trace_id": "00000000000000000000000000000000",
2024-11-28 11:24:29                     "span_id": "0000000000000000",
2024-11-28 11:24:29                     "trace_flags": 0,
2024-11-28 11:24:29                     "attributes": {
2024-11-28 11:24:29                     },
2024-11-28 11:24:29                     "dropped_attributes_count": 0
2024-11-28 11:24:29                 }
2024-11-28 11:24:29             ]
2024-11-28 11:24:29         }
2024-11-28 11:24:29     ]

@DominicDetta
Copy link
Author

Maybe the exception is triggered before the instrumentation is able to create the trace id?

@brettmc
Copy link
Collaborator

brettmc commented Nov 29, 2024

Maybe the exception is triggered before the instrumentation is able to create the trace id?

That's a good point - it could be that the error is logged either before or after the trace. Do you use auto-instrumentation or manual in your code?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants