tpt_serverless 0.2.1 → 0.3.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/tpt_serverless.rb +1 -0
- data/lib/tpt_serverless/datadog.rb +60 -0
- data/lib/tpt_serverless/version.rb +1 -1
- 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: b6887c4fd9a67c788a18671e57b5710e5e9de0e83057af75f3b2ba9989f947ce
|
4
|
+
data.tar.gz: d8bb6a3f64a4e6b61b56bdf1c634867de17caa493de9ea6d344a8e0e6c598131
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7b21869a41a38fd9a24d32a8c649bfe6914255e0092ebf35f5519b254ef1cd67f113597b38b305696905d67c2206a5221cc6c3a3d7677f1773c3bafdd6d49c5
|
7
|
+
data.tar.gz: 3c1b176c3cad4e4f17d592a7ee967d310c0aa0d4f077ab90f94d339279589ecc3eb301372c85aed14af5d4521fe12c7bedfc009f63ee5bf234c37ccffe312e16
|
data/lib/tpt_serverless.rb
CHANGED
@@ -0,0 +1,60 @@
|
|
1
|
+
require "dogapi"
|
2
|
+
require "timeout"
|
3
|
+
|
4
|
+
# TODO: Look into using Lambda Extensions for Datadog (and logging) instead to avoid blocking or
|
5
|
+
# affecting our application code.
|
6
|
+
module TptServerless
|
7
|
+
class Datadog
|
8
|
+
API_KEY = (ENV["DD_API_KEY"] && !ENV["DD_API_KEY"].strip.empty?) ? ENV["DD_API_KEY"] : nil
|
9
|
+
DATADOG_TIMEOUT = 2 # seconds
|
10
|
+
OUR_TIMEOUT = 3 # seconds. slightly longer than DATADOG_TIMEOUT.
|
11
|
+
|
12
|
+
def initialize(api_key: API_KEY, datadog_timeout: DATADOG_TIMEOUT, our_timeout: OUR_TIMEOUT)
|
13
|
+
@app_name = ENV.fetch("APP_SERVICE_NAME", "unknownService")
|
14
|
+
@stage = ENV.fetch("APP_STAGE", "unknown-stage")
|
15
|
+
@host = ENV.fetch("DD_HOSTNAME", nil)
|
16
|
+
@our_timeout = our_timeout
|
17
|
+
|
18
|
+
@client = if api_key
|
19
|
+
Dogapi::Client.new(
|
20
|
+
api_key, # api key
|
21
|
+
nil, # application_key, not required here
|
22
|
+
@host, # host
|
23
|
+
nil, # device
|
24
|
+
true, # silent
|
25
|
+
datadog_timeout, # timeout in seconds
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def inc(metric, amount: 1, tags: [])
|
31
|
+
# prefix the metric with the app name
|
32
|
+
metric = "#{@app_name}.#{metric}"
|
33
|
+
|
34
|
+
tags += ["env:#{@stage}"]
|
35
|
+
# change characters not supported by datadog to underscores
|
36
|
+
tags.map! { |t| t.gsub(%r([^\w:./-]), "_") }
|
37
|
+
|
38
|
+
# log the metric so that we can correlate between metrics & logs more easily
|
39
|
+
logger.info("metric=#{metric} amount=#{amount} tags=#{tags.join(",")}")
|
40
|
+
|
41
|
+
if @client
|
42
|
+
begin
|
43
|
+
Timeout.timeout(@our_timeout) do
|
44
|
+
@client.emit_point(metric, amount, type: "count", tags: tags, host: "aws.lambda")
|
45
|
+
end
|
46
|
+
rescue Exception => e
|
47
|
+
logger.info("WARNING: Failed to emit metric to datadog: #{e.message}")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def logger
|
57
|
+
ServerlessLogger.logger
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,28 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tpt_serverless
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TpT
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
11
|
+
date: 2021-05-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dogapi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.45'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.45'
|
27
|
+
description:
|
28
|
+
email:
|
15
29
|
executables: []
|
16
30
|
extensions: []
|
17
31
|
extra_rdoc_files: []
|
18
32
|
files:
|
19
33
|
- lib/tpt_serverless.rb
|
34
|
+
- lib/tpt_serverless/datadog.rb
|
20
35
|
- lib/tpt_serverless/sumo_log_forwarder.rb
|
21
36
|
- lib/tpt_serverless/version.rb
|
22
37
|
homepage: https://github.com/TeachersPayTeachers/tpt_serverless-ruby
|
23
38
|
licenses: []
|
24
39
|
metadata: {}
|
25
|
-
post_install_message:
|
40
|
+
post_install_message:
|
26
41
|
rdoc_options: []
|
27
42
|
require_paths:
|
28
43
|
- lib
|
@@ -37,8 +52,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
37
52
|
- !ruby/object:Gem::Version
|
38
53
|
version: '0'
|
39
54
|
requirements: []
|
40
|
-
rubygems_version: 3.1.
|
41
|
-
signing_key:
|
55
|
+
rubygems_version: 3.1.6
|
56
|
+
signing_key:
|
42
57
|
specification_version: 4
|
43
58
|
summary: TpT serverless utils for Ruby
|
44
59
|
test_files: []
|