fluent-plugin-lm-logs-gcp 1.0.4 → 1.0.6

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: 8fa80af2c5d4c94e6997fd770c42c45160b7ea2348ef39d30d7cbff31d774eb4
4
- data.tar.gz: bdecae119e5d62ec47aa95486757e55bab5a5fac4f2d11abff003488c717d8cb
3
+ metadata.gz: 213a63d23d18929286a8201af426fe7e2b1ff68ac8a30cc9d50dc53cff532786
4
+ data.tar.gz: 9e161f20a42725baf4b32ea931cfe225516802aa0952a221a8d86ce1dbec457e
5
5
  SHA512:
6
- metadata.gz: a87ab7ea7267c820609f9710b10ea1b0f812cb7e7c39aa4a75ee4e4b8b0a75bf36a58745d6f9be02f699f96956328bae19fa9e70e873a5ffea28d44a4ea3cb36
7
- data.tar.gz: ba57fd1f6ea7f7b64d0525a39f826c5d1f8a5ca8fb44289dede47fc292906b3fb7a5912ff51792edc3647c0245f3ab4c87849741b162eb8355fd109e7e063aee
6
+ metadata.gz: 4a1e38a85f385fc408f3b74b40503ff255b2c3a3c29afa37854e4562b55ee21cc1d4c348f3ffda1f2378d22195ce995e842e15cf887d32eba73891027362fbe1
7
+ data.tar.gz: fd3f360ef17b0a568f30dadf56b6df6417fe725a566ece3c3e5c4af7478b2c5132fe94d0866d1a66604bd383d0ccbd66f9df903aa5df0c7d7b4b381c70fc6e78
data/README.md CHANGED
@@ -7,3 +7,9 @@ This filter plugin is provided for mapping the logs coming from GCP pubsub to '_
7
7
  * Google Cloud Composer
8
8
  * Google Cloud Run
9
9
 
10
+ ## LogicMonitor properties
11
+
12
+ | Property | Description |
13
+ | --- | --- |
14
+ | `metadata_keys` | Array of keys to be added as metadata. Filter will look for these keys in fluentd record and extract those if exist. in case of nested json, whole sub json would be added. default ` ["severity", "logName", "labels", "resource.type", "resource.labels", "httpRequest"] ` . few keys will be renamed as part of metadata standardization in Logicmonitor : ` {"trace" => "trace_id", "spanId" => "span_id","resource.type" => "_type"}`|
15
+ | `use_default_severity` | When `true`, and log record does not have severity, severity=`DEFAULT` would be added to log. default `false`. |
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "fluent-plugin-lm-logs-gcp"
8
- spec.version = '1.0.4'
8
+ spec.version = '1.0.6'
9
9
  spec.authors = ["LogicMonitor"]
10
10
  spec.email = "rubygems@logicmonitor.com"
11
11
  spec.summary = "LogicMonitor with GCP logs fluentd filter plugin"
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.required_ruby_version = '>= 2.0.0'
22
22
 
23
23
  spec.add_runtime_dependency "fluentd", [">= 1", "< 2"]
24
+ spec.add_development_dependency 'hashdiff', '>= 1.0.0'
24
25
  end
@@ -4,6 +4,12 @@ module Fluent::Plugin
4
4
  class GCPLMFilter < Filter
5
5
  Fluent::Plugin.register_filter('gcplm', self)
6
6
 
7
+ METADATA_KEYS_TO_RENAME = {"trace" => "trace_id", "spanId" => "span_id","resource.type" => "_type"}.freeze
8
+ STATIC_METADATA = {"_integration" => "gcp"}
9
+
10
+ config_param :metadata_keys, :array, default: ["severity", "logName", "labels", "resource.type", "resource.labels", "httpRequest"], value_type: :string
11
+ config_param :use_default_severity, :bool, default: false
12
+
7
13
  def configure(conf)
8
14
  super
9
15
  # Do the usual configuration here
@@ -12,6 +18,12 @@ module Fluent::Plugin
12
18
  # This method is called when starting.
13
19
  # Open sockets or files here.
14
20
  def start
21
+ @final_metadata_keys = Hash.new
22
+ if @metadata_keys
23
+ @metadata_keys.each do | nested_key |
24
+ @final_metadata_keys[nested_key] = nested_key.to_s.split('.')
25
+ end
26
+ end
15
27
  super
16
28
  end
17
29
 
@@ -64,6 +76,8 @@ module Fluent::Plugin
64
76
  resourceMap = {"system.gcp.resourcename" => record.dig("resource", "labels", "service_name"), "system.cloud.category" => 'GCP/CloudRun'}
65
77
  when 'cloud_composer_environment'
66
78
  resourceMap = {"system.gcp.resourcename" => "projects/" + project_id + "/locations/" + record.dig("resource", "labels", "location") + "/environments/" + record.dig("resource", "labels", "environment_name"), "system.cloud.category" => 'GCP/CloudComposer'}
79
+ when 'k8s_container'
80
+ resourceMap = {"system.gcp.resourcename" => record.dig("labels", "compute.googleapis.com/resource_name"), "system.cloud.category" => 'GCP/ComputeEngine'}
67
81
  end
68
82
 
69
83
  if(record.key?("protoPayload") && record.dig('protoPayload', '@type') == "type.googleapis.com/google.cloud.audit.AuditLog")
@@ -76,6 +90,27 @@ module Fluent::Plugin
76
90
  filteredRecord['message'] = message
77
91
  filteredRecord['_lm.resourceId'] = resourceMap
78
92
  filteredRecord['timestamp'] = record['timestamp']
93
+
94
+ # Add metadata
95
+ if @final_metadata_keys
96
+ @final_metadata_keys.each do | key, value |
97
+ final_key = METADATA_KEYS_TO_RENAME[key] ? METADATA_KEYS_TO_RENAME[key] : key
98
+ nestedVal = record
99
+ value.each { |x| nestedVal = nestedVal[x] }
100
+ if nestedVal != nil
101
+ filteredRecord[final_key] = nestedVal
102
+ end
103
+ end
104
+ end
105
+
106
+ # Add static metadata
107
+ STATIC_METADATA.each { | key, value| filteredRecord[key] = value }
108
+
109
+ # Add default severity if does not exist
110
+ if !filteredRecord["severity"] and @use_default_severity
111
+ filteredRecord["severity"] = "DEFAULT"
112
+ end
113
+
79
114
  filteredRecord
80
115
  end
81
116
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-lm-logs-gcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - LogicMonitor
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-29 00:00:00.000000000 Z
11
+ date: 2023-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -30,6 +30,20 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2'
33
+ - !ruby/object:Gem::Dependency
34
+ name: hashdiff
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.0.0
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.0.0
33
47
  description: This filter plugin filters fluentd records in gcp to the configured LogicMonitor
34
48
  account.
35
49
  email: rubygems@logicmonitor.com
@@ -50,7 +64,7 @@ licenses:
50
64
  metadata:
51
65
  source_code_uri: https://github.com/logicmonitor/lm-logs-fluentd-gcp-filter
52
66
  documentation_uri: https://www.rubydoc.info/gems/lm-logs-fluentd-gcp-filter
53
- post_install_message:
67
+ post_install_message:
54
68
  rdoc_options: []
55
69
  require_paths:
56
70
  - lib
@@ -65,8 +79,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
79
  - !ruby/object:Gem::Version
66
80
  version: '0'
67
81
  requirements: []
68
- rubygems_version: 3.3.26
69
- signing_key:
82
+ rubygems_version: 3.4.10
83
+ signing_key:
70
84
  specification_version: 4
71
85
  summary: LogicMonitor with GCP logs fluentd filter plugin
72
86
  test_files: []