datadog-lambda 1.14.0 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/datadog/lambda/trace/ddtrace.rb +8 -11
- data/lib/datadog/lambda/utils/extension.rb +33 -0
- data/lib/datadog/lambda/version.rb +2 -2
- data/lib/datadog/lambda.rb +9 -6
- metadata +24 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14af71dd28cbd28bb7245d9a265c1ef5aae17cc7fca08cdfeec920a0df15863f
|
4
|
+
data.tar.gz: ddaef0b0f205fd9fabdcd1ee2d6663e3f47f1b80e5a7640bb8b0906600807a9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e91c96b8bd3c20e420b94621df6eb260e3baaa310fc131600e6343663a6b8f613091a5f7b7beba460cce0c3c4c62b2a932e18c83f47ce2848c4a89b8c135053
|
7
|
+
data.tar.gz: 9dbf1189862c063bdf8eaa361fcebcbca5ee857bb8196b8d420d5a0f9151e7468f971d3628a68baf8182247a57227366ca6387f98523ccb6a86b2ad2b748536d
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# ddtrace is an optional dependency for the ruby package
|
3
|
+
# `ddtrace`` is an optional dependency for the ruby package
|
4
4
|
begin
|
5
5
|
require 'ddtrace'
|
6
6
|
rescue LoadError
|
@@ -16,27 +16,24 @@ module Datadog
|
|
16
16
|
trace_id = context[:trace_id].to_i
|
17
17
|
span_id = context[:parent_id].to_i
|
18
18
|
sampling_priority = context[:sample_mode]
|
19
|
-
|
20
|
-
trace_id: trace_id,
|
19
|
+
trace_digest = Datadog::Tracing::TraceDigest.new(
|
21
20
|
span_id: span_id,
|
22
|
-
|
21
|
+
trace_id: trace_id,
|
22
|
+
trace_sampling_priority: sampling_priority
|
23
23
|
)
|
24
|
+
Datadog::Tracing.continue_trace!(trace_digest)
|
24
25
|
end
|
25
26
|
rescue StandardError
|
26
27
|
Datadog::Utils.logger.debug 'dd-trace unavailable'
|
27
28
|
end
|
28
29
|
|
29
30
|
def wrap_datadog(options, &block)
|
30
|
-
|
31
|
-
begin
|
32
|
-
Datadog.tracer
|
33
|
-
tracer_available = true
|
34
|
-
rescue StandardError
|
31
|
+
unless Datadog::Tracing.enabled?
|
35
32
|
Datadog::Utils.logger.debug 'dd-trace unavailable'
|
33
|
+
return block.call
|
36
34
|
end
|
37
|
-
return block.call unless tracer_available
|
38
35
|
|
39
|
-
Datadog.
|
36
|
+
Datadog::Tracing.trace('aws.lambda', **options) do |_span|
|
40
37
|
block.call
|
41
38
|
end
|
42
39
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# Unless explicitly stated otherwise all files in this repository are licensed
|
5
|
+
# under the Apache License Version 2.0.
|
6
|
+
#
|
7
|
+
# This product includes software developed at Datadog (https://www.datadoghq.com/).
|
8
|
+
# Copyright 2023 Datadog, Inc.
|
9
|
+
#
|
10
|
+
require 'net/http'
|
11
|
+
|
12
|
+
module Datadog
|
13
|
+
# Utils contains utility functions shared between modules
|
14
|
+
module Utils
|
15
|
+
AGENT_URL = 'http://127.0.0.1:8124'
|
16
|
+
HELLO_PATH = '/lambda/hello'
|
17
|
+
EXTENSION_CHECK_URI = URI(AGENT_URL + HELLO_PATH).freeze
|
18
|
+
EXTENSION_PATH = '/opt/extensions/datadog-agent'
|
19
|
+
|
20
|
+
def self.extension_running
|
21
|
+
return false unless File.exist?(EXTENSION_PATH)
|
22
|
+
|
23
|
+
begin
|
24
|
+
Net::HTTP.get(EXTENSION_CHECK_URI)
|
25
|
+
rescue StandardError => e
|
26
|
+
Datadog::Utils.logger.debug "extension is not running, returned with error #{e}"
|
27
|
+
return false
|
28
|
+
end
|
29
|
+
|
30
|
+
true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/datadog/lambda.rb
CHANGED
@@ -11,6 +11,7 @@
|
|
11
11
|
|
12
12
|
require 'datadog/lambda/trace/listener'
|
13
13
|
require 'datadog/lambda/utils/logger'
|
14
|
+
require 'datadog/lambda/utils/extension'
|
14
15
|
require 'datadog/lambda/trace/patch_http'
|
15
16
|
require 'json'
|
16
17
|
require 'time'
|
@@ -27,17 +28,19 @@ module Datadog
|
|
27
28
|
# Same options can be given as Datadog.configure in tracer
|
28
29
|
# See https://github.com/DataDog/dd-trace-rb/blob/master/docs/GettingStarted.md#quickstart-for-ruby-applications
|
29
30
|
def self.configure_apm
|
30
|
-
require '
|
31
|
-
require 'ddtrace/
|
31
|
+
require 'datadog/tracing'
|
32
|
+
require 'ddtrace/transport/io'
|
32
33
|
|
33
34
|
@patch_http = false
|
34
35
|
# Needed to keep trace flushes on a single line
|
35
36
|
$stdout.sync = true
|
36
37
|
|
37
38
|
Datadog.configure do |c|
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
unless Datadog::Utils.extension_running
|
40
|
+
c.tracing.writer = Datadog::Tracing::SyncWriter.new(
|
41
|
+
transport: Datadog::Transport::IO.default
|
42
|
+
)
|
43
|
+
end
|
41
44
|
c.tags = { "_dd.origin": 'lambda' }
|
42
45
|
yield(c) if block_given?
|
43
46
|
end
|
@@ -160,7 +163,7 @@ module Datadog
|
|
160
163
|
end
|
161
164
|
|
162
165
|
# Check the DD_ENHANCED_METRICS environment variable
|
163
|
-
# @
|
166
|
+
# @return [boolean] true if this lambda should have
|
164
167
|
# enhanced metrics
|
165
168
|
def self.do_enhanced_metrics?
|
166
169
|
dd_enhanced_metrics = ENV['DD_ENHANCED_METRICS']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datadog-lambda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-xray-sdk
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.11.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.11.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,8 +94,22 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.74'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: solargraph
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.47.2
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.47.2
|
97
111
|
description: |
|
98
|
-
datadog-lambda is Datadog
|
112
|
+
datadog-lambda is Datadog's AWS Lambda integration for ruby. It is used to perform
|
99
113
|
distributed tracing between serverful and serverless environments, and send
|
100
114
|
custom metrics to Datadog.
|
101
115
|
email:
|
@@ -111,6 +125,7 @@ files:
|
|
111
125
|
- lib/datadog/lambda/trace/listener.rb
|
112
126
|
- lib/datadog/lambda/trace/patch_http.rb
|
113
127
|
- lib/datadog/lambda/trace/xray.rb
|
128
|
+
- lib/datadog/lambda/utils/extension.rb
|
114
129
|
- lib/datadog/lambda/utils/logger.rb
|
115
130
|
- lib/datadog/lambda/version.rb
|
116
131
|
homepage: https://github.com/DataDog/datadog-lambda-rb
|
@@ -118,7 +133,7 @@ licenses:
|
|
118
133
|
- Apache-2.0
|
119
134
|
metadata:
|
120
135
|
allowed_push_host: https://rubygems.org
|
121
|
-
post_install_message:
|
136
|
+
post_install_message:
|
122
137
|
rdoc_options: []
|
123
138
|
require_paths:
|
124
139
|
- lib
|
@@ -126,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
141
|
requirements:
|
127
142
|
- - ">="
|
128
143
|
- !ruby/object:Gem::Version
|
129
|
-
version: 2.
|
144
|
+
version: 2.7.0
|
130
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
146
|
requirements:
|
132
147
|
- - ">="
|
@@ -134,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
149
|
version: '0'
|
135
150
|
requirements: []
|
136
151
|
rubygems_version: 3.1.6
|
137
|
-
signing_key:
|
152
|
+
signing_key:
|
138
153
|
specification_version: 4
|
139
154
|
summary: Instruments your Ruby AWS Lambda functions with Datadog
|
140
155
|
test_files: []
|