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

Support Instana as a Tracing Backend #3589

Open
kdhamric opened this issue Feb 1, 2024 · 6 comments
Open

Support Instana as a Tracing Backend #3589

kdhamric opened this issue Feb 1, 2024 · 6 comments
Assignees
Labels

Comments

@kdhamric
Copy link
Collaborator

kdhamric commented Feb 1, 2024

As a User
That is sending Tracing Information to Instana for observability
I would like to be able to leverage Tracetest
To ensure my system is functioning via a system wide trace-based test.

As I user,
I would prefer a direct integration if possible
So all I have to do is configure the Instana connection in Tracetest,
But getting access via the OpenTelemetry Collector is ok if that is not possible.

@kdhamric kdhamric added feature request triage requires triage labels Feb 1, 2024
@joshleecreates
Copy link

Looking forward to this, let me know how I can support!

@kdhamric
Copy link
Collaborator Author

kdhamric commented Feb 1, 2024

@joshleecreates has provided @kdhamric with an account to use. Ken has invited @xoscar to the instance as an owner. Once we begin work, either Oscar or Ken should be able to add the dev to the account.

@joshleecreates
Copy link

Excellent. Our API documentation is available here in the meantime: https://instana.github.io/openapi/

@xoscar
Copy link
Collaborator

xoscar commented Feb 1, 2024

Thanks @joshleecreates I'll be taking a look today :D

@danielbdias
Copy link
Contributor

hi @joshleecreates ! I created a small PoC using OTLP, and I was able to make it work with Instana, here: #3594

Now, I'm trying to do the same example with Tracetest, connecting directly on Instana to get traces and spans. Experimenting with Instana API using two APIs:

One thing that I noticed is that the second API only returns data about spans at a high level without tags:

{
    "items": [
        // ...
        {
            "id": "6ca00c8fa410fa0a",
            "timestamp": 1707177111058,
            "parentId": "0fce2fa8983cb58f",
            "foreignParentId": null,
            "name": "query SELECT",
            "duration": 1,
            "minSelfTime": 1,
            "networkTime": null,
            "callCount": 1,
            "errorCount": 0,
            "destination": {
                "service": {
                    "id": "UNKNOWN",
                    "label": "Unspecified"
                },
                "endpoint": {
                    "id": "F8uZbXdq3oXmscc5yADFItCR6kY",
                    "label": "",
                    "type": "OPENTELEMETRY"
                },
                "technologies": []
            },
            "cursor": {
                "@class": ".IngestionOffsetCursor",
                "ingestionTime": 1707178503000,
                "offset": 6
            }
        }
    ]
}

However, I can see them on Instana UI:
image

Do you know if there are other endpoints that we can use to fetch this data?

@danielbdias
Copy link
Contributor

Folks, complementing our discussion on CNCF slack:

V1 Integration

Add Instana as an OTLP-based provider, as we did with Datadog, New Relic, etc., using OTel Collector to send OTLP traffic for both Instana and Tracetest.

flowchart LR
  Instana["Instana"]
  TracetestCore["Tracetest Core"]
  UserAPI["User API"]
  OTelCollector["Open Telemetry\nCollector"]
  
  UserAPI -- Send OTLP data --> OTelCollector
  OTelCollector-- Redirects data --> Instana
  OTelCollector -- Redirects data --> TracetestCore
Loading

The first implementation of this version using the OTLP provider is made on this PR: #3610 .

V2 Integration

Add Instana as a direct integration, connecting on their APIs to grab Traces and Spans. We can use https://instana.github.io/openapi/#operation/getTraceDownload to do that. However, this API has only high-level data about the spans, which will not help users use selectors effectively.

flowchart LR
  Instana["Instana"]
  TracetestCore["Tracetest Core"]
  UserAPI["User API"]
  OTelCollector["Open Telemetry\nCollector"]
  
  UserAPI -- Send OTLP data --> OTelCollector
  OTelCollector-- Redirects data --> Instana
  TracetestCore -- Fetch traces from API --> Instana
Loading

Some questions that we need to figure out yet:

  1. What is the time needed to emit a trace and see them on their API?
  2. Can we have access to span attributes to build selectors?

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

No branches or pull requests

4 participants