Skip to content

Terminology Suggestion: Change "Manual Instrumentation" to "Code based Instrumentation" in docs #3228

Open
@martinjt

Description

@martinjt

This is more of a wider suggestion based on a lot of conversations I've been having recently about the ways people instrument their applications.

The general feeling I've been hearing is that "If I'm using Manual Instrumentation I'm doing it wrong". For context, this is from engineering conferences primarily focused on JS/TS and .NET, I understand that languages like Java may put more focus on AOP style techniques that may make Manual actually be more of an anti-pattern.

Automatic instrumentation, using an external application to generate/setup tracing/metrics/logs is not a bad thing, I'm not at all saying that, I'm also not saying that Manual is the one true way. I'm saying that the terminology is making people I speak to a little confused about the "right" approach.

I talk about 3 different avenues to instrumentation with Otel.

  • Auto/Agent based - Useful when you don't have access to the code (i.e. an infrastructure or some SRE's who aren't coders too), or when it's cost/time prohibitive to change each application, and you're willing to have over-instrumentation (not an exhaustive list).
  • Instrumentation Libraries - Coded into your application code, getting opinionated Spans/Attributes from the authors of the libraries you use like Database calls and making/receiving HTTP requests.
  • Manual - Adding your own context to existing spans and creating new spans around interesting areas of your code that would be useful to understand in production when debugging.

In our docs, we have only "Auto" and "Manual", meaning that engineers feel that to get anything using "Manual" they have to write all the code for all the spans.

I'm not sure of the "right" answer here, I just know that it's an issue, and I'm hearing it more and more (likely a good sign as people are starting to talk about OTel more in my communities).

One thought I had would be use the term "Code based" instead of "Manual". Which I think signifies the idea that you can get what Auto does, but configure it in code rather than via an external application. The other was that we have a standard "Getting Started" page for each language that jumps off into Auto and Code-based detailing reasons to choose each with the specific language idioms in mind (i.e. Java is more of an agent based/AOP style user base so maybe it's more prevalent there to use Auto).

I'd love some thoughts, especially from people outside of the .NET community. If you are putting in opinions though, please let us know which language, and also role like SRE/Application Engineer, you're coming from.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdiscussionInput from everyone is helpful to drive this forward

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions