fluent-plugin-jfrog-send-metrics 0.1.4 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9478058c782a2032a4c64326c8941af41447d76c37e2d0fc3b503b4f2228e9fe
4
- data.tar.gz: a94e57be5396a7b63df48bf3bef059f8363fbf77f0d865b0314ee60db4af5db1
3
+ metadata.gz: 8c2bbb59536e88ef36eff1311469d0267502fda2055ccbb318998e2df934ce99
4
+ data.tar.gz: 8a0182402b0dc16a93abd622d678b0823e4e86d537f3a6fe1c25e8b0e6e74c83
5
5
  SHA512:
6
- metadata.gz: 6f466df47d3e31fc06288db81256508334c7c88bf84128894b67bb870e9f948218b2daaab5d2bc37f7706c67a9c053a781f580ea07d1a4582c27ed4930708457
7
- data.tar.gz: 4781bd4f82988877e7fd0dcb7b48a6fd4d2fd1c99c3404657c161d970bbe2423ebf654f4f73f0ca1e2bf71ba8420e9c08e363ae06e793ccdac9682b5a977dcf0
6
+ metadata.gz: fa8f245c2ce2c67812610d0c4859646860813945beb5a3444bfb63f5e1d01d68dfef9e3e4b0b2aef7a493ab634dda0bf3f9262712aa61708263568f12fd1cecd
7
+ data.tar.gz: 21a5875ea3dcf360f99ae02a32949b36cd929342b6e6d8c1c8899d3fc2dbd5521e3152b7394c502a8cc4b4a177abf9e1046cffd2845930cbbd46f6cd707b38dd
data/Gemfile.lock CHANGED
@@ -1,26 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-jfrog-send-metrics (0.1.4)
4
+ fluent-plugin-jfrog-send-metrics (0.1.6)
5
5
  fluentd (>= 0.14.10, < 2)
6
- rest-client (~> 2.0)
6
+ rest-client (~> 2.1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
11
  ansi (1.5.0)
12
+ base64 (0.2.0)
12
13
  builder (3.2.4)
13
- concurrent-ruby (1.1.9)
14
- cool.io (1.7.1)
14
+ concurrent-ruby (1.3.4)
15
+ cool.io (1.8.1)
16
+ csv (3.3.0)
15
17
  domain_name (0.5.20190701)
16
18
  unf (>= 0.0.5, < 1.0.0)
17
- fluentd (1.16.1)
19
+ drb (2.2.1)
20
+ fluentd (1.17.0)
21
+ base64 (~> 0.2)
18
22
  bundler
19
23
  cool.io (>= 1.4.5, < 2.0.0)
24
+ csv (~> 3.2)
25
+ drb (~> 2.2)
20
26
  http_parser.rb (>= 0.5.1, < 0.9.0)
21
27
  msgpack (>= 1.3.1, < 2.0.0)
22
28
  serverengine (>= 2.3.2, < 3.0.0)
23
- sigdump (~> 0.2.2)
29
+ sigdump (~> 0.2.5)
24
30
  strptime (>= 0.2.4, < 1.0.0)
25
31
  tzinfo (>= 1.0, < 3.0)
26
32
  tzinfo-data (~> 1.0)
@@ -39,7 +45,7 @@ GEM
39
45
  builder
40
46
  minitest (>= 5.0)
41
47
  ruby-progressbar
42
- msgpack (1.7.1)
48
+ msgpack (1.7.2)
43
49
  netrc (0.11.0)
44
50
  power_assert (2.0.1)
45
51
  rake (12.3.3)
@@ -51,13 +57,13 @@ GEM
51
57
  ruby-progressbar (1.11.0)
52
58
  serverengine (2.3.2)
53
59
  sigdump (~> 0.2.2)
54
- sigdump (0.2.4)
60
+ sigdump (0.2.5)
55
61
  strptime (0.2.5)
56
62
  test-unit (3.5.3)
57
63
  power_assert
58
64
  tzinfo (2.0.6)
59
65
  concurrent-ruby (~> 1.0)
60
- tzinfo-data (1.2023.3)
66
+ tzinfo-data (1.2024.1)
61
67
  tzinfo (>= 1.0.0)
62
68
  unf (0.1.4)
63
69
  unf_ext
data/README.md CHANGED
@@ -64,20 +64,24 @@ Configure the match directive parameters as specified below
64
64
  ```
65
65
  <match jfrog.metrics.**>
66
66
  @type jfrog_send_metrics
67
- target_platform "NEWRELIC"
67
+ target_platform "NEWRELIC" # or "DATADOG"
68
68
  apikey <api_key>
69
+ url https://metric-api.newrelic.com/metric/v1 # or DataDog's metrics URL
70
+ http_proxy <proxy_url>
69
71
  </match>
70
-
71
72
  ```
73
+
72
74
  #### Configuration parameters
73
75
 
74
76
  Obtain respective authentication credentials for log-vendors
75
77
 
76
78
  * **target_platform**(string)(required): The target log-vendor ("NEWRELIC" or "DATADOG")
77
79
  * **apikey**(string)(required): APIKEY is the apikey of log-vendor for authentication(LicenseKey for NewRelic)
80
+ * **url**(string)(required): Metrics url of the mertics-vendor (Metrics URL for NewRelic or DataDog)
81
+ * **http_proxy**(string)(optional): Proxy server URL - which will proxy http/s calls to your observability vendor (DataDog/NewRelic)
78
82
 
79
83
  ## Copyright
80
84
 
81
- * Copyright(c) 2022- MahithaB
85
+ * Copyright(c) 2024- MahithaB, BenH
82
86
  * License
83
87
  * Apache License, Version 2.0
@@ -3,9 +3,9 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-jfrog-send-metrics"
6
- spec.version = "0.1.4"
7
- spec.authors = ["MahithaB"]
8
- spec.email = ["60710901+MahithaB@users.noreply.github.com"]
6
+ spec.version = "0.1.6"
7
+ spec.authors = ["MahithaB", "BenH"]
8
+ spec.email = ["partner_support@jfrog.com"]
9
9
 
10
10
  spec.summary = %q{Fluentd Plugin for sending metrics to the respective log-vendor}
11
11
  spec.description = %q{Fluentd Plugin for sending metrics to the respective log-vendor}
@@ -25,5 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "test-unit", "~> 3.0"
26
26
  spec.add_development_dependency "rest-client", "~> 2.0"
27
27
  spec.add_runtime_dependency "fluentd", [">= 0.14.10", "< 2"]
28
- spec.add_runtime_dependency "rest-client", "~> 2.0"
28
+ spec.add_runtime_dependency "rest-client", "~> 2.1.0"
29
29
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require 'json'
3
3
  require 'rest-client'
4
+ require 'uri'
4
5
 
5
6
  class DatadogMetrics
6
7
  def initialize(apikey, url)
@@ -23,22 +24,46 @@ class DatadogMetrics
23
24
  return record
24
25
  end
25
26
 
26
- def send_metrics(ddtags, record)
27
+ def send_metrics(ddtags, record, http_proxy)
27
28
  puts "Additional tags to be added to metrics are", ddtags
28
29
  metrics_data = add_custom_data(ddtags, record)
29
30
  puts "Sending received metrics data"
31
+
32
+ if http_proxy
33
+ RestClient.proxy = URI.parse(http_proxy)
34
+ puts "Using http_proxy param to set proxy for request. Proxy url: #{RestClient.proxy}"
35
+ elsif ENV['HTTP_PROXY']
36
+ RestClient.proxy = ENV['HTTP_PROXY']
37
+ puts "Using 'HTTP_PROXY' environment variable to set proxy for request. Proxy url: #{RestClient.proxy}"
38
+ elsif ENV['http_proxy']
39
+ RestClient.proxy = ENV['http_proxy']
40
+ puts "Using 'http_proxy' environment variable to set proxy for request. Proxy url: #{RestClient.proxy}"
41
+ elsif ENV['https_proxy']
42
+ RestClient.proxy = ENV['https_proxy']
43
+ puts "Using 'https_proxy' environment variable to set proxy for request. Proxy url: #{RestClient.proxy}"
44
+ end
45
+
46
+ begin
30
47
  response = RestClient::Request.new(
31
48
  method: :post,
32
49
  url: @url,
33
50
  payload: metrics_data.to_json,
34
51
  headers: {'DD-API-KEY': @apikey, content_type: :json }
35
52
  ).execute do |response, request, result|
36
- case response.code
37
- when 202
38
- return response.body
39
- else
40
- puts 'Cannot send metrics to Datadog', response.body
53
+ case response.code
54
+ when 202
55
+ puts 'Metrics were successfully sent to DataDog'
56
+ return response.body
57
+ else
58
+ puts "Cannot send metrics to DataDog url: %s. Received response code: %d, Response body: %s" % [@url, response.code, response.body]
59
+ end
41
60
  end
61
+ rescue Net::HTTPClientException => e
62
+ # Handle the HTTP client exception
63
+ puts "An HTTP client error occurred when sending metrics to DataDog: #{e.message}"
64
+ rescue StandardError => e
65
+ # Handle any other exceptions
66
+ puts "An error occurred when sending metrics to DataDog: #{e.message}"
42
67
  end
43
68
  end
44
69
  end
@@ -8,22 +8,46 @@ class NewRelicMetrics
8
8
  @url = url
9
9
  end
10
10
 
11
- def send_metrics(metrics_data)
11
+ def send_metrics(metrics_data, http_proxy)
12
12
  puts "Sending received metrics data"
13
13
  metrics_payload = []
14
14
  metrics_payload.push(JSON.parse(metrics_data.to_json))
15
- response = RestClient::Request.new(
16
- method: :post,
17
- url: @url,
18
- payload: metrics_payload.to_json,
19
- headers: {params: {'Api-Key' => @apikey}}
20
- ).execute do |response, request, result|
21
- case response.code
22
- when 202
23
- return response.body
24
- else
25
- puts 'Cannot send metrics to NewRelic'
15
+
16
+ if http_proxy
17
+ RestClient.proxy = URI.parse(http_proxy)
18
+ puts "Using http_proxy param to set proxy for request. Proxy url: #{RestClient.proxy}"
19
+ elsif ENV['HTTP_PROXY']
20
+ RestClient.proxy = ENV['HTTP_PROXY']
21
+ puts "Using 'HTTP_PROXY' environment variable to set proxy for request. Proxy url: #{RestClient.proxy}"
22
+ elsif ENV['http_proxy']
23
+ RestClient.proxy = ENV['http_proxy']
24
+ puts "Using 'http_proxy' environment variable to set proxy for request. Proxy url: #{RestClient.proxy}"
25
+ elsif ENV['https_proxy']
26
+ RestClient.proxy = ENV['https_proxy']
27
+ puts "Using 'https_proxy' environment variable to set proxy for request. Proxy url: #{RestClient.proxy}"
28
+ end
29
+
30
+ begin
31
+ response = RestClient::Request.new(
32
+ method: :post,
33
+ url: @url,
34
+ payload: metrics_payload.to_json,
35
+ headers: {params: {'Api-Key' => @apikey}}
36
+ ).execute do |response, request, result|
37
+ case response.code
38
+ when 202
39
+ puts 'Metrics were successfully sent to NewRelic'
40
+ return response.body
41
+ else
42
+ puts "Cannot send metrics to NewRelic url: %s. Received response code: %d" % [@url, response&.code]
43
+ end
26
44
  end
45
+ rescue Net::HTTPClientException => e
46
+ # Handle the HTTP client exception
47
+ puts "An HTTP client error occurred when sending metrics to NewRelic: #{e.message}"
48
+ rescue StandardError => e
49
+ # Handle any other exceptions
50
+ puts "An error occurred when sending metrics to NewRelic: #{e.message}"
27
51
  end
28
52
  end
29
53
  end
@@ -29,6 +29,7 @@ module Fluent
29
29
  config_param :apikey, :string, default: ''
30
30
  config_param :url, :string, default: 'https://metric-api.newrelic.com/metric/v1'
31
31
  config_param :ddtags, :array, default: []
32
+ config_param :http_proxy, :string, :default => nil
32
33
 
33
34
  # `configure` is called before `start`.
34
35
  # 'conf' is a `Hash` that includes the configuration parameters.
@@ -38,17 +39,16 @@ module Fluent
38
39
  raise Fluent::ConfigError, 'Must define the vendor to use for getting the metrics.' if @target_platform == ''
39
40
 
40
41
  raise Fluent::ConfigError, 'Must define the apikey to use for authentication.' if @apikey == ''
41
-
42
42
  end
43
43
 
44
44
  def process(tag, es)
45
45
  es.each do |time, record|
46
46
  if @target_platform == 'NEWRELIC'
47
47
  vendor = NewRelicMetrics.new(@apikey, @url)
48
- vendor.send_metrics(record)
48
+ vendor.send_metrics(record, @http_proxy)
49
49
  elsif @target_platform == 'DATADOG'
50
50
  vendor = DatadogMetrics.new(@apikey, @url)
51
- vendor.send_metrics(@ddtags, record)
51
+ vendor.send_metrics(@ddtags, record, @http_proxy)
52
52
  end
53
53
  end
54
54
  end
@@ -15,7 +15,7 @@ class JfrogSendMetricsOutputTest < Test::Unit::TestCase
15
15
  # Default configuration for tests
16
16
  CONFIG = %(
17
17
  target_platform "NEWRELIC"
18
- apikey ""
18
+ apikey "apiKey"
19
19
  url "https://metric-api.newrelic.com/metric/v1"
20
20
  )
21
21
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-jfrog-send-metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - MahithaB
8
+ - BenH
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2024-02-26 00:00:00.000000000 Z
12
+ date: 2024-08-20 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -92,17 +93,17 @@ dependencies:
92
93
  requirements:
93
94
  - - "~>"
94
95
  - !ruby/object:Gem::Version
95
- version: '2.0'
96
+ version: 2.1.0
96
97
  type: :runtime
97
98
  prerelease: false
98
99
  version_requirements: !ruby/object:Gem::Requirement
99
100
  requirements:
100
101
  - - "~>"
101
102
  - !ruby/object:Gem::Version
102
- version: '2.0'
103
+ version: 2.1.0
103
104
  description: Fluentd Plugin for sending metrics to the respective log-vendor
104
105
  email:
105
- - 60710901+MahithaB@users.noreply.github.com
106
+ - partner_support@jfrog.com
106
107
  executables: []
107
108
  extensions: []
108
109
  extra_rdoc_files: []
@@ -143,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
144
  - !ruby/object:Gem::Version
144
145
  version: '0'
145
146
  requirements: []
146
- rubygems_version: 3.1.6
147
+ rubygems_version: 3.5.3
147
148
  signing_key:
148
149
  specification_version: 4
149
150
  summary: Fluentd Plugin for sending metrics to the respective log-vendor