fluent-plugin-lm-logs 0.0.7 → 0.0.12
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/README.md +17 -8
- data/fluent-plugin-lm-logs.gemspec +5 -5
- data/lib/fluent/plugin/out_lm.rb +30 -12
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c930b2614b184eeba146418a22a10d732b8fd7aa57aabc8db45ec6d9e8608f0a
|
4
|
+
data.tar.gz: 6ced74d3ff2e35a3771b63d7f88572c2ebfd4e3dccd23e7a450a5bce6b7a22f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd6ecf139c62cfba239000b45f134bd5c162ea773112438223fcbc20291ddaf97aebc3dec7aca2469639160f585baa2af628b94d445cee01dcb10d5bea7ffc31
|
7
|
+
data.tar.gz: e4e97f690c535f223b8c934bcdcf03cf3821f799f6018520ea8c2400eeb726b75de98d7eefa52ab80abf679ec85cc8941123596275f964755b4751372ffc1daf
|
data/README.md
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
|
2
|
+
[](http://badge.fury.io/rb/fluent-plugin-lm-logs)
|
2
3
|
# lm-logs-fluentd (beta)
|
3
4
|
This output plugin sends Fluentd records to the configured LogicMonitor account.
|
4
5
|
|
5
6
|
## Prerequisites
|
6
7
|
|
7
8
|
Install the plugin:
|
8
|
-
* With gem: `gem install lm-logs
|
9
|
-
* For deb packages: `td-agent-gem install lm-logs
|
9
|
+
* With gem: `gem install fluent-plugin-lm-logs`
|
10
|
+
* For deb packages: `td-agent-gem install fluent-plugin-lm-logs`
|
10
11
|
|
11
12
|
Alternatively, you can add `out_lm.rb` to your Fluentd plugins directory.
|
12
13
|
|
@@ -19,11 +20,15 @@ Create a custom `fluent.conf` or edit the existing one to specify which logs sho
|
|
19
20
|
# send them to LogicMonitor
|
20
21
|
<match lm.**>
|
21
22
|
@type lm
|
22
|
-
company_name <account_name>
|
23
23
|
resource_mapping {"<event_key>": "<lm_property>"}
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
company_name <lm_company_name>
|
25
|
+
access_id <lm_access_id>
|
26
|
+
access_key <lm_access_key>
|
27
|
+
<buffer>
|
28
|
+
@type memory
|
29
|
+
flush_interval 1s
|
30
|
+
chunk_limit_size 5m
|
31
|
+
</buffer>
|
27
32
|
debug false
|
28
33
|
</match>
|
29
34
|
```
|
@@ -34,7 +39,7 @@ Sending:
|
|
34
39
|
|
35
40
|
`curl -X POST -d 'json={"message":"hello LogicMonitor from fluentd", "event_key":"lm_property_value"}' http://localhost:8888/lm.test`
|
36
41
|
|
37
|
-
|
42
|
+
Produces this event:
|
38
43
|
```
|
39
44
|
{
|
40
45
|
"message": "hello LogicMonitor from fluentd"
|
@@ -43,6 +48,10 @@ Returns the event:
|
|
43
48
|
|
44
49
|
**Note:** Make sure that logs have a message field. Requests sent without a message will not be accepted.
|
45
50
|
|
51
|
+
### Kubernetes
|
52
|
+
The Kubernetes configuration for LM Logs is deployed as a Helm chart.
|
53
|
+
See the [LogicMonitor Helm repository](https://github.com/logicmonitor/k8s-helm-charts/tree/master/lm-logs).
|
54
|
+
|
46
55
|
### Resource mapping examples
|
47
56
|
|
48
57
|
- `{"message":"Hey!!", "event_key":"lm_property_value"}` with mapping `{"event_key": "lm_property"}`
|
@@ -59,4 +68,4 @@ Returns the event:
|
|
59
68
|
| `access_key` | LM API Token access key. |
|
60
69
|
| `flush_interval` | Defines the time in seconds to wait before sending batches of logs to LogicMonitor. Default is `60s`. |
|
61
70
|
| `debug` | When `true`, logs more information to the fluentd console. |
|
62
|
-
|
71
|
+
| `force_encoding` | Specify charset when logs contains invalid utf-8 characters. |
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# Unless explicitly stated otherwise all files in this repository are licensed
|
2
2
|
# under the Apache License Version 2.0.
|
3
|
-
# This product includes software developed at
|
4
|
-
# Copyright 2020
|
3
|
+
# This product includes software developed at LogicMonitor (https://www.logicmonitor.com).
|
4
|
+
# Copyright 2020 LogicMonitor, Inc.
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "fluent-plugin-lm-logs"
|
8
|
-
spec.version = '0.0.
|
9
|
-
spec.authors = ["
|
8
|
+
spec.version = '0.0.12'
|
9
|
+
spec.authors = ["LogicMonitor"]
|
10
10
|
spec.email = "rubygems@logicmonitor.com"
|
11
|
-
spec.summary = "
|
11
|
+
spec.summary = "LogicMonitor logs fluentd output plugin"
|
12
12
|
spec.description = "This output plugin sends fluentd records to the configured LogicMonitor account."
|
13
13
|
spec.homepage = "https://www.logicmonitor.com"
|
14
14
|
spec.license = "Apache-2.0"
|
data/lib/fluent/plugin/out_lm.rb
CHANGED
@@ -5,9 +5,10 @@ require 'uri'
|
|
5
5
|
require 'digest'
|
6
6
|
require 'json'
|
7
7
|
require 'openssl'
|
8
|
-
require
|
8
|
+
require 'base64'
|
9
9
|
require 'net/http'
|
10
10
|
require 'net/https'
|
11
|
+
require('zlib')
|
11
12
|
|
12
13
|
|
13
14
|
module Fluent
|
@@ -25,6 +26,10 @@ module Fluent
|
|
25
26
|
config_param :resource_mapping, :hash, :default => {"host": "system.hostname", "hostname": "system.hostname"}
|
26
27
|
|
27
28
|
config_param :debug, :bool, :default => false
|
29
|
+
|
30
|
+
config_param :force_encoding, :string, :default => ""
|
31
|
+
|
32
|
+
config_param :compression, :string, :default => ""
|
28
33
|
|
29
34
|
# This method is called before starting.
|
30
35
|
# 'conf' is a Hash that includes configuration parameters.
|
@@ -71,6 +76,11 @@ module Fluent
|
|
71
76
|
resource_map = {}
|
72
77
|
lm_event = {}
|
73
78
|
lm_event["message"] = record["message"]
|
79
|
+
|
80
|
+
if @force_encoding != ""
|
81
|
+
lm_event["message"] = lm_event["message"].force_encoding(@force_encoding).encode("UTF-8")
|
82
|
+
end
|
83
|
+
|
74
84
|
if record["_lm.resourceId"] == nil
|
75
85
|
@resource_mapping.each do |key, value|
|
76
86
|
k = value
|
@@ -84,8 +94,13 @@ module Fluent
|
|
84
94
|
else
|
85
95
|
lm_event["_lm.resourceId"] = record["_lm.resourceId"]
|
86
96
|
end
|
87
|
-
|
88
|
-
|
97
|
+
|
98
|
+
if record["timestamp"] != nil
|
99
|
+
lm_event["timestamp"] = record["timestamp"]
|
100
|
+
else
|
101
|
+
lm_event["timestamp"] = Time.at(time).utc.to_datetime.rfc3339
|
102
|
+
end
|
103
|
+
|
89
104
|
return lm_event
|
90
105
|
end
|
91
106
|
|
@@ -93,10 +108,9 @@ module Fluent
|
|
93
108
|
url = "https://#{@company_name}.logicmonitor.com/rest/log/ingest"
|
94
109
|
body = events.to_json
|
95
110
|
uri = URI.parse(url)
|
96
|
-
|
97
|
-
log.info "Sending #{events.length} events to logic monitor at #{url}"
|
98
111
|
|
99
112
|
if @debug
|
113
|
+
log.info "Sending #{events.length} events to logic monitor at #{url}"
|
100
114
|
log.info "Request json #{body}"
|
101
115
|
end
|
102
116
|
|
@@ -105,16 +119,20 @@ module Fluent
|
|
105
119
|
|
106
120
|
request = Net::HTTP::Post.new(uri.request_uri)
|
107
121
|
request['authorization'] = generate_token(events)
|
108
|
-
request['Content-type'] = "application/json"
|
109
|
-
request.body = body
|
122
|
+
request['Content-type'] = "application/json"
|
110
123
|
|
111
|
-
|
112
|
-
|
113
|
-
|
124
|
+
if @compression == "gzip"
|
125
|
+
request['Content-Encoding'] = "gzip"
|
126
|
+
gzip = Zlib::GzipWriter.new(StringIO.new)
|
127
|
+
gzip << body
|
128
|
+
request.body = gzip.close.string
|
129
|
+
else
|
130
|
+
request.body = body
|
114
131
|
end
|
115
132
|
|
116
|
-
|
117
|
-
|
133
|
+
resp = http.request(request)
|
134
|
+
if @debug || (!resp.kind_of? Net::HTTPSuccess)
|
135
|
+
log.info "Status code:#{resp.code} Request Id:#{resp.header['x-request-id']}"
|
118
136
|
end
|
119
137
|
end
|
120
138
|
|
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: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- LogicMonitor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -65,8 +65,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '0'
|
67
67
|
requirements: []
|
68
|
-
rubygems_version: 3.1.
|
68
|
+
rubygems_version: 3.1.4
|
69
69
|
signing_key:
|
70
70
|
specification_version: 4
|
71
|
-
summary:
|
71
|
+
summary: LogicMonitor logs fluentd output plugin
|
72
72
|
test_files: []
|