Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    bbehnke
    @bbehnke
    Hi all, is there a chat specific to opentelemetry-swift?
    gagansingh355
    @gagansingh355
    The batch processor stated that is is for logs, but how can i control if I want to put a cap. Let say i want to send batch of logs of size 2mb to exporter?
    ghilainm
    @ghilainm
    Hi guys what’s the best free UI according to you to visualise opentelemetry data ?
    Marc Schipperheyn
    @mschipperheyn

    Trying to get open telemetry working for node, but I'm only getting a single span registered: the one I manually execute at the end of startup.

    Using Express, Graphql, Redis, Mysql, Node 14.15.1

    docker-compose.yml

    version: '3.8'
    
    services:
      elasticsearch:
        container_name: fnb_elasticsearch
        image: elasticsearch:7.9.3
        tty: true
        environment:
          - discovery.type=single-node
          - network.bind_host=0.0.0.0
        volumes:
          - ./elastic/db:/usr/share/elasticsearch/data
        restart: always
        ports:
        - "9200:9200/tcp"
        - "9300:9300"
    
      collector:
          container_name: fnb_opentelemetry_collector
          image: otel/opentelemetry-collector:latest
          command: ["--config=./conf/collector-config.yaml", "--log-level=DEBUG"]
          volumes:
            - ./telemetry/collector-config.yaml:/conf/collector-config.yaml
          ports:
            - "9464:9464"
            - "8888:8888"   # Prometheus metrics exposed by the collector
            - "8889:8889"   # Prometheus exporter metrics
            - "55680:55680"
            - "55681:55681"
          depends_on:
            - jaeger-collector
    
      jaeger-collector:
        container_name: fnb_jaeger_collector
        image: jaegertracing/jaeger-opentelemetry-collector:latest
        command: [
          "--es.num-shards=1",
          "--es.num-replicas=0",
          "--es.server-urls=http://elasticsearch:9200"
        ]
        environment:
          - SPAN_STORAGE_TYPE=elasticsearch
        restart: always
        ports:
          - "14250:14250"
          - "14268:14268"
        depends_on:
          - elasticsearch
    
      jaeger-agent:
        container_name: fnb_jaeger_agent
        image: jaegertracing/jaeger-opentelemetry-agent:latest
        command: [
          "--reporter.grpc.host-port=jaeger-collector:14250"
        ]
        volumes:
          - ./:/config/:ro
        ports:
          - "6831:6831/udp"
          - "6832:6832/udp"
          - "5778:5778"
        restart: always
        depends_on:
          - jaeger-collector
    
      jaeger-query:
        container_name: fnb_jaeger_query
        image: jaegertracing/jaeger-query:latest
        command: [
          "--es.num-shards=1",
          "--es.num-replicas=0",
          "--es.server-urls=http://elasticsearch:9200"
        ]
        environment:
          - SPAN_STORAGE_TYPE=elasticsearch
          - LOG_LEVEL=debug
          - JAEGER_ENDPOINT=http://fnb_jaeger_collector:14268/api/traces
        restart: always
        ports:
          - "16686:16686"
          - "16687"
        depends_on:
          - elasticsearch

    tracer.js imported at the top

    const opentelemetry = require('@opentelemetry/api').default;
    const { GraphQLInstrumentation } = require('@trendhim/opentelemetry-instrumentation-graphql');
    const { ConsoleSpanExporter, BatchSpanProcessor } = require('@opentelemetry/tracing');
    const { LogLevel } = require('@opentelemetry/core');
    const { NodeTracerProvider } = require('@opentelemetry/node');
    const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
    
    const serviceName = 'FNB';
    
    const provider = new NodeTracerProvider({
      logLevel: LogLevel.DEBUG,
      plugins: {
        dns: {
          enabled: false,
          path: '@opentelemetry/plugin-dns',
        },
        http: {
          enabled: true,
          path: '@opentelemetry/plugin-http',
          ignoreOutgoingUrls: [
            /\/v1\/trace/,
            /\/v1\/metrics/,
          ],
        },
        https: {
          enabled: true,
          path: '@opentelemetry/plugin-https',
          ignoreOutgoingUrls: [
            /\/v1\/trace/,
            /\/v1\/metrics/,
          ],
        },
        express: { enabled: true, path: '@opentelemetry/plugin-express' },
        ioredis: { enabled: true, path: '@opentelemetry/plugin-ioredis' },
        mysql: { enabled: true, path: '@opentelemetry/plugin-mysql' },
      },
    });
    
    const graphQLInstrumentation = new GraphQLInstrumentation({
      allowAttributes: true,
      depth: 5,
      mergeItems: true,
    });
    
    graphQLInstrumentation.setTracerProvider(provider);
    
    graphQLInstrumentation.enable();
    
    const exporter = new JaegerExporter({
      serviceName,
    });
    
    provider.addSpanProcessor(new BatchSpanProcessor(exporter));
    provider.addSpanProcessor(new BatchSpanProcessor(new ConsoleSpanExporter()));
    
    provider.register();
    4 replies
    gagansingh355
    @gagansingh355
    Is there a way to add other programs in parser file of fluentbit other than already given in that parsers file?
    sanjaygopinath89
    @sanjaygopinath89
    Hi There , I trying to create grafana dashboard from collector metrics , Checking the document to see what all alerts need to be created https://github.com/open-telemetry/opentelemetry-collector/blob/master/docs/monitoring.md . I am using opentelemetry-collector-contrib and in the exposed metric i am not seeing most of the metrics . I tried --metric-level option to get DETAILED metric , but still not getting it .
    Altiano Gerung
    @Altiano

    Hello,

    Would like to understand the telemetry printed on the console,

    Does anyone know what is the meaning of each of these fields:

    [
        {
            "SpanContext": {
                "TraceID": "1a56f684a2626798c55d7bd5b2febcd0",
                "SpanID": "f3562ddd3625c7f0",
                "TraceFlags": 1
            },
            "ParentSpanID": "0000000000000000",
            "SpanKind": 2,
            "Name": "GoTemplate/RegisterViaEmail",
            "StartTime": "2020-12-25T21:10:42.719104+07:00",
            "EndTime": "2020-12-25T21:10:42.726077171+07:00",
            "Attributes": [
                {
                    "Key": "rpc.system",
                    "Value": {
                        "Type": "STRING",
                        "Value": "grpc"
                    }
                },
                {
                    "Key": "rpc.service",
                    "Value": {
                        "Type": "STRING",
                        "Value": "GoTemplate"
                    }
                },
                {
                    "Key": "rpc.method",
                    "Value": {
                        "Type": "STRING",
                        "Value": "RegisterViaEmail"
                    }
                },
                {
                    "Key": "net.peer.ip",
                    "Value": {
                        "Type": "STRING",
                        "Value": "127.0.0.1"
                    }
                },
                {
                    "Key": "net.peer.port",
                    "Value": {
                        "Type": "STRING",
                        "Value": "50147"
                    }
                },
                {
                    "Key": "rpc.grpc.status_code",
                    "Value": {
                        "Type": "UINT32",
                        "Value": 0
                    }
                }
            ],
            "MessageEvents": [
                {
                    "Name": "message",
                    "Attributes": [
                        {
                            "Key": "message.type",
                            "Value": {
                                "Type": "STRING",
                                "Value": "RECEIVED"
                            }
                        },
                        {
                            "Key": "message.id",
                            "Value": {
                                "Type": "INT64",
                                "Value": 1
                            }
                        },
                        {
                            "Key": "message.uncompressed_size",
                            "Value": {
                                "Type": "INT64",
                                "Value": 12
                            }
                        }
                    ],
                    "Time": "2020-12-25T21:10:42.719123+07:00"
                },
                {
                    "Name": "message",
                    "Attributes": [
                        {
                            "Key": "message.type",
                            "Value": {
                                "Type": "STRING",
                                "Value": "SENT"
                            }
                        },
                        {
                            "Key": "message.id",
                            "Value": {
                                "Type": "INT64",
                                "Value": 1
                            }
                        },
                        {
                            "Key": "message.uncompressed_size",
                            "Value": {
                                "Type": "INT64",
                                "Value": 26
                            }
                        }
                    ],
                    "Time": "2020-12-25T21:10:42.726072+07:00"
                }
            ],
            "Links": null,
            "StatusCode": "Unset",
            "StatusMessage": "",
            "HasRemoteParent": false,
            "DroppedAttributeCount": 0,
            "DroppedMessageEventCount": 0,
            "DroppedLinkCount": 0,
            "ChildSpanCount": 0,
            "Resource": null,
            "InstrumentationLibrary": {
                "Name": "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc",
                "Version": "semver:0.15.1"
            }
        }
    ]

    I can't seem to find the docs

    gagansingh355
    @gagansingh355
    Hello, While using fluenbit as extension suddenly i have started to get this error. I have been using fluentbit from last couple of weeks. My fluenbit is up and running.Can someone please help me with this? This error occurs while running the binary.
    2020-12-26T05:50:58.970-0500 info service/service.go:253 Everything is ready. Begin running and processing data.
    2020-12-26T05:50:59.038-0500 error fluentbitextension/process.go:118 FluentBit process died {"component_kind": "extension", "component_type": "fluentbit", "component_name": "fluentbit", "error": "exit status 1"}
    go.opentelemetry.io/collector/extension/fluentbitextension.run
    /root/go/pkg/mod/go.opentelemetry.io/collector@v0.15.1-0.20201130171404-7c281055f7e4/extension/fluentbitextension/process.go:118
    go.opentelemetry.io/collector/extension/fluentbitextension.(*processManager).Start.func1
    /root/go/pkg/mod/go.opentelemetry.io/collector@v0.15.1-0.20201130171404-7c281055f7e4/extension/fluentbitextension/process.go:80
    Aditya Prajapati
    @Syn3rman
    Hey @Altiano,
    You can find the proto file with the verbose description of the fields here
    Hope this helps!
    1 reply
    Himanshu Gupta
    @gupta-himanshu

    In opentelemetery-api v0.8.0, we used to set a new SpanContext in current Context via following code:

    TracingContextUtils.currentContextWith(DefaultSpan.create(newSpanCtx))

    However, in v0.13.1, both - TracingContextUtils and DefaultSpan are removed. Then how can I set a new SpanContext in the current Context?

    1 reply
    Gutemberg Ribeiro
    @galvesribeiro
    hello folks!
    image.png

    I'm using JaegerExporter for .Net and all my telemetry is reporting as "OpenTelemetry Exporter" as you may see on this picture on jaeger UI.

    What should be set on the telemetry reports or the exporter in order to have the proper service name there?

    Thanks!

    Bruno Bonfils
    @asyd
    hello, anyone use flask intrusmentation by chance? I have few questions. How to add custom tags for example, and if it possible to add system metrics inside a trace
    1 reply
    Gutemberg Ribeiro
    @galvesribeiro

    I'm using JaegerExporter for .Net and all my telemetry is reporting as "OpenTelemetry Exporter" as you may see on this picture on jaeger UI.

    What should be set on the telemetry reports or the exporter in order to have the proper service name there?

    Thanks!

    Just found it, thanks!

    deyan-georgiev
    @deyan-georgiev

    Hello,
    I was curious as per the standard, are labels meant to be per value or per metric?
    As a concrete example, I want all HTTP requests sent from an application to be exposed as two metrics - requests count(as Counter) and latency(as ValueRecorder). The application is sending requests to a verity of 3rd party systems, I want the metric to contain a way to group the request based on DNS name, response code, path and others. Is labels the correct abstraction to allow such grouping or there is something else, better suited?

    P.S If this is not the correct place to ask this question, could somebody point me to the correct one?

    2 replies
    Buchi Reddy Busi Reddy
    @buchireddy
    Hello, I'm curious about what the community thinks about using OTel libraries for this use case:
    In microservices world, we need to propagate the Authorization header across different services, just like tracing headers are propagated. I think we can use OTel's Propagator implementation for this, when the services are using tracing with OTel. Is someone doing that already?
    7 replies
    gagansingh355
    @gagansingh355
    Hey, My question is regarding fluentbit. Does anyone know what's the format of logs in which fluentbit send data to the OTEL exporter?
    1 reply
    BuRnCycL
    @burncycl
    Hello OTEL community.If I want to exclude a span received from being exported, is there a means to do that using span processor. Example:
    span/1:
            span:
              exclude:
                match_type: regexp
                span_names:
                  - .*/health
    1 reply
    Matt
    @pabrahamusa
    I just started looking at open-telemetry for Java apps , Wondering whether there are any open source tool that do visualizations like LightStep?
    Kenny Long
    @kennethlong
    Anybody have an OpenTelemetry overview slidedeck, something like Steve Flanders "How OpenTelemetry is eating the World" @flands . Thanks in advance!
    4 replies
    filip popa
    @fpopa_gitlab

    Hi everyone :)

    I'm looking for an example of using open telemetry in a go grpc project, I think it should be doable to add it inside 2 receiving interceptors, unary and stream.

    Unfortunately I've only found examples using open tracing

    Jamie Snell
    @jamiegs
    What APMs are people using with OpenTelemetry? I tried out a few of them, Sumo Logic, Sentry.io , SignalFx, Light Step.. They seem to have varying levels of OpenTelemetry support.. some don’t support things like reading the environment out of the traces or that sentry doesn’t seem to work great for traces across multiple applications.
    I’m looking for an APM that follows the OpenTelemetry specification well and has things like operation performance over time other sorts of trend analysis
    Juraci Paixão Kröhling
    @jpkrohling
    @jamiegs jaeger won't give you that kind of analysis, but people have been using it with Kafka as storage and then creating custom consumers to extract the information they need. As you might indeed want an APM from a SaaS provider, you are missing as couple from your list: honeycomb, datadog, splunk, aws ... Perhaps a good source is to go over the list of otel-collector exporters and check which ones are related to commercial vendors? https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/master/exporter
    Steve Flanders
    @flands
    @jamiegs Also note that OpenTelemetry is not GA yet and the spec is still changing. Once GA hits vendors should begin to fully support the spec and its features. If anything is missing on the Splunk/SignalFx side let me know and happy to assist.
    2 replies
    Ghost
    @ghost~60008d26d73408ce4ff8d1b7
    Can someone talk to me about OpenTelemetry as a sidecar, mixed with prometheus receivers (for scraping the container)? I'm losing labels I'm trying to set in the sidecar. My architecture is, a workload deployed in kubernetes with an otel sidecar, the workload either pushes via opencensus/otlp to the sidecar, or the prometheus receiver on the sidecar scrapes the workload directly. Labels are applied under receivers.prometheus.config.global.external_labels. This sidecar then exports via OTLP to a central collector on the cluster that is scraped by a master prometheus instance. I get/can see the metrics, but my external_labels aren't being set. I'm expecting this isn't a supported configuration and the global block in the receivers is just ignored?
    I'm interested to see either a working example using prometheus in this way, or a better way in general.
    Tigran Najaryan
    @tigrannajaryan
    @/all if you are interested in logs please check out the proposal to contribute Stanza to OpenTelemetry with the goal of using it as the log collection library for OpenTelemetry Collector: open-telemetry/community#605
    Ghost
    @ghost~60008d26d73408ce4ff8d1b7
    To my above question, nevermind. I figured out my labeling issue; the labels have to be applied under the static_configs block, the global.external_labels isn't honored here.
    Joshua MacDonald
    @jmacd

    The @opentelemetry Metrics Workshop happens tomorrow at 9:30 PST at https://zoom.us/j/8203130519

    9:30 - 9:45am PST: Opening remarks, organization of the day, how we got here, and the many streams of work. We have an API, language SDKs, a Protocol, a Collector, Receivers, Exporters, Semantic Conventions, and a connection to Tracing [organizer: OTel Committee]

    9:45-10:15am PST: Community building: @opentelemetry has first-class @OpenMetricsIO support, and @PrometheusIO users are first-class users. These projects are meant to get along, and committed to it. [organizer: Alolita Sharma]

    10:15 - 11:00am PST: @opentelemetry Collector deployment models (e.g., Daemonset vs. Statefulset), Agents, Sidecars, and first-class support for Prometheus Remote-Write [organizer: Jaana Dogan]

    11:30 - 12:15pm The Metrics API and Data Model, how we integrated the @opencensusio feature set (Tracing and Metrics, combined!) with the @OpenMetricsIO and StatsD data models. Presenting the six @opentelemetry metric instruments [organizer: Bogdan Drutu]

    12:15 - 13:00pm Histograms! How we’ll support high-resolution and variable-boundary histograms and the connection to sampling metric events [organizers: Josh MacDonald, Michael Gerstenhaber]

    13:30 - 15:00pm Questions and answers

    4 replies
    Devi
    @asldevi
    hello, Is there anyone working on adaptive sampling as described in this issue or differently? jaegertracing/jaeger#365
    5 replies
    Stephen Hong
    @stephenhong
    Hello team, according to Resource SDK, a resource can be associated with the TracerProvider when the TracerProvider is created or it can be associated with the MeterProvider when the MeterProvider is created. So does this mean that an application would need to use both providers in order for the traces and metrics to be linked to each other? I'm understanding this as, by using both providers, the traces and metrics from an application share the same resource attributes and therefore, are able to be linked to each other. Am I correct to assume this?
    5 replies
    taman9333
    @taman9333

    Hello everyone I had a problem when installing OTEL with istio
    I had set b3-propagator as here https://www.npmjs.com/package/@opentelemetry/propagator-b3
    and it works but I get a warning in all my spans " invalid parent span IDs "?

    Screen Shot 2021-01-19 at 4.51.35 PM.png

    5 replies
    Jonatan Ivanov
    @jonatan-ivanov
    Are there plans to enable GH Discussions on https://github.com/open-telemetry/opentelemetry-specification too as it was enabled for other repos?
    Ulrich Romahn
    @uromahn
    Quick question: are people/companies are using OTEL in production or is most of the work just PoC and explorations?
    4 replies
    Trying to figure out if we should go with OTEL or better stick with OpenTracing for now.
    Not sure if this is the right conversation for this question ...
    Naga
    @tannaga
    Hello .. I am writing a custom processor in otel collector. Is there a way to access the content in the request headers? I was looking to extract user agent, x-forwarded-for, etc info from the header
    Juraci Paixão Kröhling
    @jpkrohling
    @tannaga there isn't a way to do it reliably, as an aggregating processor might be running before your processor, like the batch processor
    1 reply
    in other cases, you should have access to the HTTP (or only gRPC, not sure now) metadata contained in the context
    paullly
    @paullly
    Hello guys, we are planning to use opentelemetry in our Program. I was wondering if there is anything like a weaver in order to add traces for every method. Is the Otel tracing designed to be used like that, or would you recommend opening spans in every method manual? Thanks
    1 reply
    Juraci Paixão Kröhling
    @jpkrohling
    it's typically an anti-pattern to trace all method calls -- you probably should use an instrumentation library to get data about your boundaries only (like incoming and outgoing HTTP calls )
    if you need more info, then you instrument the parts that you need to understand better
    paullly
    @paullly
    Thank you very much for your answer! I will look into it!
    arjantop-cai
    @arjantop-cai

    Hi, I have trouble setting up prometheus kubelet/node scraping with otel-collector. I have this config:

    - job_name: k8s/kubelet
        scheme: https
        tls_config:
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        kubernetes_sd_configs:
          - role: node
        relabel_configs:
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)

    This is what I see in logs:

    2021-01-21T21:43:21.433Z    warn    internal/metricsbuilder.go:104    Failed to scrape Prometheus endpoint    {"component_kind": "receiver", "component_type": "prometheus", "component_name": "prometheus", "scrape_timestamp": 1611265401788, "target_labels": "map[beta_kubernetes_io_arch:amd64 beta_kubernetes_io_instance_type:k3s beta_kubernetes_io_os:linux instance:k3d-dev-server-0 job:k8s/kubelet k3s_io_hostname:k3d-dev-server-0 k3s_io_internal_ip:172.20.0.3 kubernetes_io_arch:amd64 kubernetes_io_hostname:k3d-dev-server-0 kubernetes_io_os:linux node_kubernetes_io_instance_type:k3s node_role_kubernetes_io_master:true]"}
    Bhavesh Mistry
    @bmistry13
    I have OTEL instrumented via Spring Sleuth and OpenTenemetry agent
    but traceid for Spring Sleuth is different from OpenTenemetry agent
    How can I make traceid to be same so they both report same traceid
    arjantop-cai
    @arjantop-cai

    Hi, I have trouble setting up prometheus kubelet/node scraping with otel-collector. I have this config:

    - job_name: k8s/kubelet
        scheme: https
        tls_config:
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
          insecure_skip_verify: true
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        kubernetes_sd_configs:
          - role: node
        relabel_configs:
          - action: labelmap
            regex: __meta_kubernetes_node_label_(.+)

    This is what I see in logs:

    2021-01-21T21:43:21.433Z    warn    internal/metricsbuilder.go:104    Failed to scrape Prometheus endpoint    {"component_kind": "receiver", "component_type": "prometheus", "component_name": "prometheus", "scrape_timestamp": 1611265401788, "target_labels": "map[beta_kubernetes_io_arch:amd64 beta_kubernetes_io_instance_type:k3s beta_kubernetes_io_os:linux instance:k3d-dev-server-0 job:k8s/kubelet k3s_io_hostname:k3d-dev-server-0 k3s_io_internal_ip:172.20.0.3 kubernetes_io_arch:amd64 kubernetes_io_hostname:k3d-dev-server-0 kubernetes_io_os:linux node_kubernetes_io_instance_type:k3s node_role_kubernetes_io_master:true]"}

    Had to enable debug logging to see that the error is actually forbidden, my role was missing the node endpoint

    1 reply
    I feel like this should be logged at error log level
    Captain Meow
    @captain-me0w
    Anyone used tempo for tracing?
    1 reply