datadog-lambda 2.23.1 → 3.25.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 +3 -3
- data/lib/datadog/lambda/trace/listener.rb +5 -4
- data/lib/datadog/lambda/utils/extension.rb +13 -1
- data/lib/datadog/lambda/utils/logger.rb +13 -15
- data/lib/datadog/lambda/version.rb +3 -3
- data/lib/datadog/lambda.rb +3 -4
- metadata +9 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea012fe059be249b92847c0f657f87b650df56dfff0f52fc6b81cd4c874ad0ee
|
4
|
+
data.tar.gz: 61b1e147bc6c2f48859d88204c47a69b6699374e3342feb3206b5015b3bdad02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b94452dabcf5384f90701f00772dfa28ac2445ff8bb72aad866e1ce91aae6ee066a7e62c8fffaa409d2b1573ef88335b237417d1db83b5f526a95a7c829237f
|
7
|
+
data.tar.gz: 66cd0290bd69aaff8b579e4424ced2077752d963a644aea79a45079fae884001b954a68852c7057fa4ec5494581071f284e088f056c963d81a95624d99a0b895
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# `
|
3
|
+
# `datadog`` is an optional dependency for the ruby package
|
4
4
|
begin
|
5
|
-
require '
|
5
|
+
require 'datadog'
|
6
6
|
rescue LoadError
|
7
|
-
Datadog::Utils.logger.debug '
|
7
|
+
Datadog::Utils.logger.debug 'datadog unavailable'
|
8
8
|
end
|
9
9
|
|
10
10
|
module Datadog
|
@@ -38,10 +38,9 @@ module Datadog
|
|
38
38
|
context = Datadog::Trace.trace_context
|
39
39
|
source = context[:source] if context
|
40
40
|
options[:tags]['_dd.parent_source'] = source if source && source != 'ddtrace'
|
41
|
-
options[:resource] =
|
41
|
+
options[:resource] = 'dd-tracer-serverless-span'
|
42
42
|
options[:service] = 'aws.lambda'
|
43
|
-
options[:
|
44
|
-
Datadog::Trace.apply_datadog_trace_context(Datadog::Trace.trace_context)
|
43
|
+
options[:type] = 'serverless'
|
45
44
|
|
46
45
|
trace_digest = Datadog::Utils.send_start_invocation_request(event:)
|
47
46
|
# Only continue trace from a new one if it exist, or else,
|
@@ -49,11 +48,13 @@ module Datadog
|
|
49
48
|
options[:continue_from] = trace_digest if trace_digest
|
50
49
|
|
51
50
|
@trace = Datadog::Tracing.trace('aws.lambda', **options)
|
51
|
+
|
52
|
+
Datadog::Trace.apply_datadog_trace_context(Datadog::Trace.trace_context)
|
52
53
|
end
|
53
54
|
# rubocop:enable Metrics/AbcSize
|
54
55
|
|
55
56
|
def on_end(response:)
|
56
|
-
Datadog::Utils.send_end_invocation_request(response:)
|
57
|
+
Datadog::Utils.send_end_invocation_request(response:, span_id: @trace.id)
|
57
58
|
@trace&.finish
|
58
59
|
end
|
59
60
|
|
@@ -19,6 +19,9 @@ module Datadog
|
|
19
19
|
START_INVOCATION_PATH = '/lambda/start-invocation'
|
20
20
|
END_INVOCATION_PATH = '/lambda/end-invocation'
|
21
21
|
|
22
|
+
DD_SPAN_ID_HEADER = 'x-datadog-span-id'
|
23
|
+
DD_PARENT_ID_HEADER = Datadog::Tracing::Distributed::Datadog::PARENT_ID_KEY
|
24
|
+
|
22
25
|
START_INVOCATION_URI = URI(EXTENSION_BASE_URL + START_INVOCATION_PATH).freeze
|
23
26
|
END_INVOCATION_URI = URI(EXTENSION_BASE_URL + END_INVOCATION_PATH).freeze
|
24
27
|
|
@@ -49,7 +52,8 @@ module Datadog
|
|
49
52
|
Datadog::Utils.logger.debug "failed on start invocation request to extension: #{e}"
|
50
53
|
end
|
51
54
|
|
52
|
-
|
55
|
+
# rubocop:disable Metrics/AbcSize
|
56
|
+
def self.send_end_invocation_request(response:, span_id:)
|
53
57
|
return unless extension_running?
|
54
58
|
|
55
59
|
request = Net::HTTP::Post.new(END_INVOCATION_URI)
|
@@ -59,12 +63,20 @@ module Datadog
|
|
59
63
|
trace_digest = Datadog::Tracing.active_trace&.to_digest
|
60
64
|
|
61
65
|
PROPAGATOR.inject!(trace_digest, request)
|
66
|
+
# Propagator doesn't inject span_id, so we do it manually
|
67
|
+
# It is needed for the extension to take this span id
|
68
|
+
request[DD_SPAN_ID_HEADER] = span_id.to_s
|
69
|
+
# Remove Parent ID if it is the same as the Span ID
|
70
|
+
request.delete(DD_PARENT_ID_HEADER) if request[DD_PARENT_ID_HEADER] == span_id.to_s
|
71
|
+
Datadog::Utils.logger.debug "End invocation request headers: #{request.to_hash}"
|
72
|
+
|
62
73
|
Net::HTTP.start(END_INVOCATION_URI.host, END_INVOCATION_URI.port) do |http|
|
63
74
|
http.request(request)
|
64
75
|
end
|
65
76
|
rescue StandardError => e
|
66
77
|
Datadog::Utils.logger.debug "failed on end invocation request to extension: #{e}"
|
67
78
|
end
|
79
|
+
# rubocop:enable Metrics/AbcSize
|
68
80
|
|
69
81
|
def self.request_headers
|
70
82
|
{
|
@@ -14,21 +14,19 @@ module Datadog
|
|
14
14
|
# Utils contains utility functions shared between modules
|
15
15
|
module Utils
|
16
16
|
def self.logger
|
17
|
-
@logger ||= Logger.new($
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
Logger::ERROR
|
31
|
-
end
|
17
|
+
@logger ||= Logger.new($stderr).tap do |logger|
|
18
|
+
log_level = (ENV['DD_LOG_LEVEL'] || 'error').downcase
|
19
|
+
logger.level = case log_level
|
20
|
+
when 'debug'
|
21
|
+
Logger::DEBUG
|
22
|
+
when 'info'
|
23
|
+
Logger::INFO
|
24
|
+
when 'warn'
|
25
|
+
Logger::WARN
|
26
|
+
else
|
27
|
+
Logger::ERROR
|
28
|
+
end
|
29
|
+
end
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
data/lib/datadog/lambda.rb
CHANGED
@@ -56,7 +56,6 @@ module Datadog
|
|
56
56
|
# @param context [Object] lambda context
|
57
57
|
# @param block [Proc] implementation of the handler function.
|
58
58
|
def self.wrap(event, context, &block)
|
59
|
-
Datadog::Utils.update_log_level
|
60
59
|
@listener ||= initialize_listener
|
61
60
|
record_enhanced('invocations', context)
|
62
61
|
begin
|
@@ -115,9 +114,9 @@ module Datadog
|
|
115
114
|
datadog_lambda: Datadog::Lambda::VERSION::STRING.to_sym
|
116
115
|
}
|
117
116
|
begin
|
118
|
-
tags[:dd_trace] = Gem.loaded_specs['
|
117
|
+
tags[:dd_trace] = Gem.loaded_specs['datadog'].version
|
119
118
|
rescue StandardError
|
120
|
-
Datadog::Utils.logger.debug '
|
119
|
+
Datadog::Utils.logger.debug 'datadog unavailable'
|
121
120
|
end
|
122
121
|
# If we have an alias...
|
123
122
|
unless function_alias.nil?
|
@@ -188,7 +187,7 @@ module Datadog
|
|
188
187
|
|
189
188
|
# Only initialize listener if Tracing enabled.
|
190
189
|
unless Datadog::Tracing.enabled?
|
191
|
-
Datadog::Utils.logger.debug '
|
190
|
+
Datadog::Utils.logger.debug 'datadog unavailable'
|
192
191
|
return nil
|
193
192
|
end
|
194
193
|
|
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: 3.25.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: 2025-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-xray-sdk
|
@@ -39,33 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '5.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: datadog
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 1.16.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: ddtrace
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.23.3
|
47
|
+
version: '2.12'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
54
|
+
version: '2.12'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rake
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,20 +108,6 @@ dependencies:
|
|
122
108
|
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '1'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: solargraph
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.47.2
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 0.47.2
|
139
111
|
description: |
|
140
112
|
datadog-lambda is Datadog's AWS Lambda integration for ruby. It is used to perform
|
141
113
|
distributed tracing between serverful and serverless environments, and send
|
@@ -162,7 +134,7 @@ licenses:
|
|
162
134
|
- Apache-2.0
|
163
135
|
metadata:
|
164
136
|
allowed_push_host: https://rubygems.org
|
165
|
-
post_install_message:
|
137
|
+
post_install_message:
|
166
138
|
rdoc_options: []
|
167
139
|
require_paths:
|
168
140
|
- lib
|
@@ -177,8 +149,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
149
|
- !ruby/object:Gem::Version
|
178
150
|
version: '0'
|
179
151
|
requirements: []
|
180
|
-
rubygems_version: 3.5
|
181
|
-
signing_key:
|
152
|
+
rubygems_version: 3.3.5
|
153
|
+
signing_key:
|
182
154
|
specification_version: 4
|
183
155
|
summary: Instruments your Ruby AWS Lambda functions with Datadog
|
184
156
|
test_files: []
|