Verified Commit 3354c151 authored by Bob Van Landuyt's avatar Bob Van Landuyt 💬 Committed by GitLab
Browse files

Merge branch 'feat/otel-protocol' into 'master'

feat: Open Telemetry protocol support for Labkit::Tracing

Closes gitlab-com/gl-infra/observability/team#4430

See merge request !228

Merged-by: Bob Van Landuyt's avatarBob Van Landuyt <bob@gitlab.com>
Approved-by: Bob Van Landuyt's avatarBob Van Landuyt <bob@gitlab.com>
Reviewed-by: Bob Van Landuyt's avatarBob Van Landuyt <bob@gitlab.com>
Reviewed-by: Hercules Merscher's avatarHercules Merscher <hmerscher@gitlab.com>
Reviewed-by: default avatarGitLab Duo <gitlab-duo@gitlab.com>
Co-authored-by: Hercules Merscher's avatarHercules Merscher <hmerscher@gitlab.com>
parents 3ae0d375 72ecedae
Loading
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -27,8 +27,11 @@ Gem::Specification.new do |spec|
  spec.add_runtime_dependency "grpc", ">= 1.75" # Be sure to update the "grpc-tools" dev_dependency too
  spec.add_runtime_dependency "google-protobuf", ">= 3.25", "< 5.0"
  spec.add_runtime_dependency "jaeger-client", "~> 1.1.0"
  spec.add_runtime_dependency 'json_schemer', '>= 2.3.0', '< 3.0'
  spec.add_runtime_dependency "json_schemer", ">= 2.3.0", "< 3.0"
  spec.add_runtime_dependency "openssl", "~> 3.3.2"
  spec.add_runtime_dependency "opentelemetry-sdk", "~> 1.10"
  spec.add_runtime_dependency "opentelemetry-instrumentation-all", "~> 0.89.1"
  spec.add_runtime_dependency "opentelemetry-exporter-otlp", "~> 0.31.1"
  spec.add_runtime_dependency "opentracing", "~> 0.4"
  spec.add_runtime_dependency "pg_query", ">= 6.1.0", "< 7.0"
  spec.add_runtime_dependency "prometheus-client-mmap", ">= 1.2", "< 2.0"
@@ -46,6 +49,7 @@ Gem::Specification.new do |spec|
  spec.add_development_dependency "pry", "~> 0.12"
  spec.add_development_dependency "pry-byebug", "~> 3.11"
  spec.add_development_dependency "rack", "~> 2.0"
  spec.add_development_dependency "railties", ">= 5.0.0", "< 8.1.0"
  spec.add_development_dependency "rake", "~> 13.2"
  spec.add_development_dependency "rest-client", "~> 2.1.0"
  spec.add_development_dependency "rspec", "~> 3.12.0"
+2 −0
Original line number Diff line number Diff line
@@ -47,4 +47,6 @@ module Labkit
  autoload :HTTPClientPublisher, "labkit/httpclient_publisher"
end

Labkit::Tracing::AutoInitialize.initialize! if defined?(Labkit::Tracing)

# rubocop:enable Naming/FileName
+10 −11
Original line number Diff line number Diff line
# frozen_string_literal: true

require 'set'
require 'json'
require 'yaml'
require "json"
require "yaml"

require_relative 'field_validator/config'
require_relative 'field_validator/log_interceptor'
require_relative 'field_validator/registry'
require_relative "field_validator/config"
require_relative "field_validator/log_interceptor"
require_relative "field_validator/registry"

module Labkit
  module Logging
@@ -46,14 +45,14 @@ module Labkit

          return if detected_offenses.empty? && new_offenses.empty? && removed_offenses.empty?

          in_ci = ENV['CI'] == 'true'
          in_ci = ENV["CI"] == "true"

          output_ndjson(detected_offenses) if in_ci

          # Auto-remove fixed offenses (not in CI to avoid race conditions)
          handle_removed_offenses(removed_offenses) if removed_offenses.any? && !in_ci

          if ENV['LABKIT_LOGGING_TODO_UPDATE'] == 'true'
          if ENV["LABKIT_LOGGING_TODO_UPDATE"] == "true"
            handle_update(new_offenses)
          elsif new_offenses.any?
            handle_new_offenses(new_offenses)
@@ -98,7 +97,7 @@ module Labkit
        end

        def handle_new_offenses(new_offenses)
          if ENV['CI'] == 'true' && Config.skip_ci_failure?
          if ENV["CI"] == "true" && Config.skip_ci_failure?
            warn baseline_generation_message(new_offenses)
          else
            warn report_new_offenses(new_offenses)
@@ -120,7 +119,7 @@ module Labkit
            "Documentation: https://gitlab.com/gitlab-org/ruby/gems/labkit-ruby/-/blob/master/doc/FIELD_STANDARDIZATION.md",
            "",
            "--- Offenses Summary ---",
            "Total offenses: #{offenses.size} across #{offenses.map { |o| o['callsite'] }.uniq.size} file(s)",
            "Total offenses: #{offenses.size} across #{offenses.map { |o| o['callsite'] }.uniq.size} file(s)", # rubocop:disable Rails/Pluck
            ""
          ]
          lines.join("\n")
@@ -157,7 +156,7 @@ module Labkit

          lines << ""
          lines << ("=" * 80)
          lines << "Total: #{new_offenses.size} new offense(s) in #{new_offenses.map { |o| o['callsite'] }.uniq.size} file(s)"
          lines << "Total: #{new_offenses.size} new offense(s) in #{new_offenses.map { |o| o['callsite'] }.uniq.size} file(s)" # rubocop:disable Rails/Pluck
          lines << ""
          lines << "See https://gitlab.com/gitlab-org/ruby/gems/labkit-ruby/-/blob/master/doc/FIELD_STANDARDIZATION.md"
          lines << ("=" * 80)
+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ module Labkit
          def call(_worker_class, job, _queue, _redis_pool)
            Labkit::Tracing::TracingUtils.with_tracing(operation_name: "sidekiq:#{job_class(job)}", tags: tags_from_job(job, SPAN_KIND)) do |span|
              # Inject the details directly into the job
              Labkit::Tracing::TracingUtils.tracer.inject(span.context, OpenTracing::FORMAT_TEXT_MAP, job)
              Labkit::Tracing::TracingUtils.tracer.inject_context(span, job)

              yield
            end
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ module Labkit
          SPAN_KIND = "server"

          def call(_worker, job, _queue)
            context = Labkit::Tracing::TracingUtils.tracer.extract(OpenTracing::FORMAT_TEXT_MAP, job)
            context = Labkit::Tracing::TracingUtils.tracer.extract_context(job)

            Labkit::Tracing::TracingUtils.with_tracing(operation_name: "sidekiq:#{job_class(job)}", child_of: context, tags: tags_from_job(job, SPAN_KIND)) { |_span| yield }
          end
Loading