tpt_serverless 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e40167211120d2403b0f6c91770b43384ff2d9781cb0282e2fad5c34f0a1459
4
- data.tar.gz: 790516d5026b0a26123d929ddab13424e46ce56e27eb7de1dcd05d135cd7dba5
3
+ metadata.gz: b6887c4fd9a67c788a18671e57b5710e5e9de0e83057af75f3b2ba9989f947ce
4
+ data.tar.gz: d8bb6a3f64a4e6b61b56bdf1c634867de17caa493de9ea6d344a8e0e6c598131
5
5
  SHA512:
6
- metadata.gz: 4731b9cf978c054b73779578280757be12d8e7ecc08305bdf5e87a6b3d272ac3f6101eddd6fdf3f9d60371126b227603a6eb218156d73a05e2856a72fcf83d22
7
- data.tar.gz: f0f048fb5a0b0f02b34c2a06e5a157b8727ae13cfdb69c8fa2a3ebced4132c939e4a3b833a7d438c800fc00830e58f31279c1b2d75086c1ba6399a5694b51711
6
+ metadata.gz: f7b21869a41a38fd9a24d32a8c649bfe6914255e0092ebf35f5519b254ef1cd67f113597b38b305696905d67c2206a5221cc6c3a3d7677f1773c3bafdd6d49c5
7
+ data.tar.gz: 3c1b176c3cad4e4f17d592a7ee967d310c0aa0d4f077ab90f94d339279589ecc3eb301372c85aed14af5d4521fe12c7bedfc009f63ee5bf234c37ccffe312e16
@@ -1,5 +1,6 @@
1
1
  require "tpt_serverless/version"
2
2
  require 'tpt_serverless/sumo_log_forwarder'
3
+ require 'tpt_serverless/datadog'
3
4
 
4
5
  module TptServerless
5
6
  class Error < StandardError; end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module TptServerless
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  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.2.1
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: 2020-03-02 00:00:00.000000000 Z
12
- dependencies: []
13
- description:
14
- email:
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.2
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: []