Sha256: fa07f5672cc2d0591e38ae576da99b1fde91e44377c3d83d309e519ae880afa4

Contents?: true

Size: 1.83 KB

Versions: 10

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

module ElasticAPM
  module Transport
    module Serializers
      # @api private
      class MetadataSerializer < Serializer
        def build(metadata)
          {
            metadata: {
              service: build_service(metadata.service),
              process: build_process(metadata.process),
              system: build_system(metadata.system)
            }
          }
        end

        private

        # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
        def build_service(service)
          {
            name: keyword_field(service.name),
            environment: keyword_field(service.environment),
            version: keyword_field(service.version),
            agent: {
              name: keyword_field(service.agent.name),
              version: keyword_field(service.agent.version)
            },
            framework: {
              name: keyword_field(service.framework.name),
              version: keyword_field(service.framework.version)
            },
            language: {
              name: keyword_field(service.language.name),
              version: keyword_field(service.language.version)
            },
            runtime: {
              name: keyword_field(service.runtime.name),
              version: keyword_field(service.runtime.version)
            }
          }
        end
        # rubocop:enable Metrics/MethodLength, Metrics/AbcSize

        def build_process(process)
          {
            pid: process.pid,
            title: keyword_field(process.title),
            argv: process.argv
          }
        end

        def build_system(system)
          {
            hostname: keyword_field(system.hostname),
            architecture: keyword_field(system.architecture),
            platform: keyword_field(system.platform)
          }
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
elastic-apm-2.6.1 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.6.0 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.5.0 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.4.0 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.3.1 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.3.0 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.2.0 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.1.2 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.1.1 lib/elastic_apm/transport/serializers/metadata_serializer.rb
elastic-apm-2.1.0 lib/elastic_apm/transport/serializers/metadata_serializer.rb