fluent-plugin-lm-logs 1.0.1 → 1.0.2

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: 6ac69aa367c60b885d377a7c818fbfcb70c8af34d86315fee0d2b18778351a92
4
- data.tar.gz: b3cfdfbe4362b7f8d71a79d5aa34e92cc2b29c1a63b18a00b7aaa0cbe09cb14a
3
+ metadata.gz: 1c2298de6fe81e9eb49052ee49d55180193d254fee912339b9c8f6fad6c7aea1
4
+ data.tar.gz: 0a64fdb982ca4d8768175db534198b942d96fdcb22519913c5c077b7201bb6ea
5
5
  SHA512:
6
- metadata.gz: aae1c2c44c9cc03c7256147322eb34d14eb551ea115a5befde0aa56903afb9a98e21d5670f0c253ac6fc7ef9a0be65ebd827ccc0581bda097597de77a1a5861f
7
- data.tar.gz: fb6d25f6b71ad3c30084840e145ec1e7c4d98d036773762babb3b9d18c8136f5f384f85f065c3758972448f861f4e5617a5d57a97efcb5e0d77f30c8a945b446
6
+ metadata.gz: 95fe45b670b97925e672ecad76a724ed9eef24fd1e1685a131a4375ac7e662161aa5612ec34f3fc99e0f5817b24e7d640481b457bd466f2d2b3455f8e004e394
7
+ data.tar.gz: c69f47a5aad81cb1fbf778f14bc3238ee0271cb9530516a31120e46829aa7cf28336d509f9d6be2ddb155794ec9926896b2fc9738f524a30cf222f31013e322c
data/README.md CHANGED
@@ -6,8 +6,8 @@ This output plugin sends Fluentd records to the configured LogicMonitor account.
6
6
  ## Prerequisites
7
7
 
8
8
  Install the plugin:
9
- * With gem: `gem install fluent-plugin-lm-logs`
10
- * For deb packages: `td-agent-gem install fluent-plugin-lm-logs`
9
+ * With gem (if td-agent/fluentd is installed along with native ruby): `gem install fluent-plugin-lm-logs`
10
+ * For native td-agent/fluentd plugin handling: `td-agent-gem install fluent-plugin-lm-logs`
11
11
 
12
12
  Alternatively, you can add `out_lm.rb` to your Fluentd plugins directory.
13
13
 
@@ -69,3 +69,8 @@ See the [LogicMonitor Helm repository](https://github.com/logicmonitor/k8s-helm-
69
69
  | `flush_interval` | Defines the time in seconds to wait before sending batches of logs to LogicMonitor. Default is `60s`. |
70
70
  | `debug` | When `true`, logs more information to the fluentd console. |
71
71
  | `force_encoding` | Specify charset when logs contains invalid utf-8 characters. |
72
+ | `include_metadata` | When `true`, appends additional metadata to the log. default `false`. |
73
+ | `device_less_logs` | When `true`, do not map log with any resource. record must have `service` and `namespace` when `true`. default `false`. |
74
+ | `metadata_to_exclude` | `String array` of keys of metadata to exclude. default `empty` |
75
+
76
+
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+ task default: "test"
4
+
5
+ Rake::TestTask.new do |task|
6
+ task.pattern = "test/plugin/*.rb"
7
+ end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "fluent-plugin-lm-logs"
8
- spec.version = '1.0.1'
8
+ spec.version = '1.0.2'
9
9
  spec.authors = ["LogicMonitor"]
10
10
  spec.email = "rubygems@logicmonitor.com"
11
11
  spec.summary = "LogicMonitor logs fluentd output plugin"
@@ -26,6 +26,8 @@ module Fluent
26
26
  config_param :resource_mapping, :hash, :default => {"host": "system.hostname", "hostname": "system.hostname"}
27
27
 
28
28
  config_param :debug, :bool, :default => false
29
+
30
+ config_param :include_metadata, :bool, :default => false
29
31
 
30
32
  config_param :force_encoding, :string, :default => ""
31
33
 
@@ -34,7 +36,11 @@ module Fluent
34
36
  config_param :log_source, :string, :default => "lm-logs-fluentd"
35
37
 
36
38
  config_param :version_id, :string, :default => "version_id"
37
-
39
+
40
+ config_param :device_less_logs, :bool, :default => false
41
+
42
+ config_param :metadata_to_exclude, :array, default: [], value_type: :string
43
+
38
44
  # This method is called before starting.
39
45
  # 'conf' is a Hash that includes configuration parameters.
40
46
  # If the configuration is invalid, raise Fluent::ConfigError.
@@ -71,7 +77,9 @@ module Fluent
71
77
  events = []
72
78
  chunk.msgpack_each do |(tag, time, record)|
73
79
  event = process_record(tag,time,record)
74
- events.push(event)
80
+ if event != nil
81
+ events.push(event)
82
+ end
75
83
  end
76
84
  send_batch(events)
77
85
  end
@@ -79,24 +87,20 @@ module Fluent
79
87
  def process_record(tag, time, record)
80
88
  resource_map = {}
81
89
  lm_event = {}
82
- lm_event["message"] = record["message"]
83
-
84
- if @force_encoding != ""
85
- lm_event["message"] = lm_event["message"].force_encoding(@force_encoding).encode("UTF-8")
86
- end
87
-
88
- if record["_lm.resourceId"] == nil
89
- @resource_mapping.each do |key, value|
90
- k = value
91
- nestedVal = record
92
- key.to_s.split('.').each { |x| nestedVal = nestedVal[x] }
93
- if nestedVal != nil
94
- resource_map[k] = nestedVal
90
+ if !@device_less_logs
91
+ if record["_lm.resourceId"] == nil
92
+ @resource_mapping.each do |key, value|
93
+ k = value
94
+ nestedVal = record
95
+ key.to_s.split('.').each { |x| nestedVal = nestedVal[x] }
96
+ if nestedVal != nil
97
+ resource_map[k] = nestedVal
98
+ end
95
99
  end
96
- end
97
- lm_event["_lm.resourceId"] = resource_map
98
- else
99
- lm_event["_lm.resourceId"] = record["_lm.resourceId"]
100
+ lm_event["_lm.resourceId"] = resource_map
101
+ else
102
+ lm_event["_lm.resourceId"] = record["_lm.resourceId"]
103
+ end
100
104
  end
101
105
 
102
106
  if record["timestamp"] != nil
@@ -105,6 +109,34 @@ module Fluent
105
109
  lm_event["timestamp"] = Time.at(time).utc.to_datetime.rfc3339
106
110
  end
107
111
 
112
+ if @include_metadata
113
+ record.each do |key, value|
114
+ case key
115
+ when *@metadata_to_exclude.concat(["timestamp","_lm.resourceId","log","message"])
116
+ else
117
+ lm_event["#{key}"] = value
118
+
119
+ if @force_encoding != ""
120
+ lm_event["#{key}"] = lm_event["#{key}"].force_encoding(@force_encoding).encode("UTF-8")
121
+ end
122
+ end
123
+ end
124
+ end
125
+ lm_event["message"] = record["message"]
126
+
127
+ if @force_encoding != ""
128
+ lm_event["message"] = lm_event["message"].force_encoding(@force_encoding).encode("UTF-8")
129
+ end
130
+
131
+ if @device_less_logs
132
+ if record["service"]==nil || record["namespace"] == nil
133
+ log.error "When device_less_logs is set \'true\', record must have \'service\' and \'namespace\'. Ignoring this event #{lm_event}."
134
+ return nil
135
+ else
136
+ lm_event["service"] = record["service"]
137
+ lm_event["namespace"] = record["namespace"]
138
+ end
139
+ end
108
140
  return lm_event
109
141
  end
110
142
 
@@ -159,4 +191,4 @@ module Fluent
159
191
  "LMv1 #{@access_id}:#{signature}:#{timestamp}"
160
192
  end
161
193
  end
162
- end
194
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-lm-logs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - LogicMonitor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-15 00:00:00.000000000 Z
11
+ date: 2022-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -65,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  requirements: []
68
- rubygems_version: 3.2.15
68
+ rubygems_version: 3.3.7
69
69
  signing_key:
70
70
  specification_version: 4
71
71
  summary: LogicMonitor logs fluentd output plugin