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

Add few debug level internal logs to PeriodicReader #2277

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion opentelemetry-sdk/src/metrics/periodic_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,12 @@
}));
};

otel_debug!(
name: "PeriodicReaderBuilt",
cijothomas marked this conversation as resolved.
Show resolved Hide resolved
message = "Periodic reader built.",
interval_in_secs = self.interval.as_secs(),

Check warning on line 137 in opentelemetry-sdk/src/metrics/periodic_reader.rs

View check run for this annotation

Codecov / codecov/patch

opentelemetry-sdk/src/metrics/periodic_reader.rs#L137

Added line #L137 was not covered by tests
);

PeriodicReader {
exporter: Arc::new(self.exporter),
inner: Arc::new(Mutex::new(PeriodicReaderInner {
Expand Down Expand Up @@ -251,6 +257,10 @@
async fn process_message(&mut self, message: Message) -> bool {
match message {
Message::Export => {
otel_debug!(
name: "PeriodicReader.ExportMessageReceived",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Message and channels are implementation related terms. I think we should use more generic and intuitive terms for event names such as these:

  • PeriodicReader.ExportTriggered
  • PeriodicReader.ForceFlushCalled
  • PeriodicReader.ShutdownCalled

Copy link
Member

@lalitb lalitb Nov 6, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not related to this comment, but just wondering if it should be fine to include implementation-specific terms in debug macros, as they're not intended for the end user?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think its inevitable that we need to use implementation specific terms in some places. My only goal is to restrict them to TRACE/DEBUG level logs only.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's use user-friendly names wherever possible for any log level? It would make the collected logs more readable. It would also save the effort of renaming event names, if at all we change the underlying implementation details.

We can use implementation details in the event name, when it's indeed inevitable.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's the plan.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is just adding some debug logs, so I can see some logs without having to "trigger" an error condition to see a log, and see if self-diag example can be removed. (#2274 (comment))

message = "Export message received.",
);
if let Err(err) = self.collect_and_export().await {
otel_error!(
name: "PeriodicReader.ExportFailed",
Expand All @@ -259,16 +269,24 @@
}
}
Message::Flush(ch) => {
otel_debug!(
name: "PeriodicReader.FlushMessageReceived",
message = "Flush message received.",
);
let res = self.collect_and_export().await;
if let Err(send_error) = ch.send(res) {
otel_debug!(
name: "PeriodicReader.Flush.SendResultError",
message = "Failed to send flush result",
message = "Failed to send flush result.",
reason = format!("{:?}", send_error),
);
}
}
Message::Shutdown(ch) => {
otel_debug!(
name: "PeriodicReader.ShutdownMessageReceived",
message = "Shutdown message received",
);
let res = self.collect_and_export().await;
let _ = self.reader.exporter.shutdown();
if let Err(send_error) = ch.send(res) {
Expand Down
Loading