fluent-plugin-cmetrics 0.1.0.rc6 → 0.1.0.rc7
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 +20 -6
- data/fluent-plugin-cmetrics.gemspec +1 -1
- data/lib/fluent/plugin/filter_cmetrics_parser.rb +17 -6
- data/test/plugin/test_filter_cmetrics_parser.rb +11 -9
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2da1d6e9e9b821b5992d1e6989d034d04f074bc10a11ecd35d2842207a77754
|
4
|
+
data.tar.gz: c71b5a5c8ad4a33328b4c542d00a2a562639fa9f9b646db3bd9c66cf922c2b53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5cd27f38bb9ea19e325589293f29cf13b07bf3158adb0d21febc502d6f5c2e76ed8841ebea47436478890c79fa9ac546918abd91bce17f48ef2970a71695bc38
|
7
|
+
data.tar.gz: 6661de3897ecac7c2a07a5765dbf16f9c6876e6ab2d6ae80d789793473c67ca91ac3fe4a8091335f99dcc517c4343253e3369c5cdd2c977d3d4141a85b82fd19
|
data/README.md
CHANGED
@@ -44,12 +44,6 @@ cmetrics labels key
|
|
44
44
|
|
45
45
|
Default value: `labels`.
|
46
46
|
|
47
|
-
### host_key (string) (optional)
|
48
|
-
|
49
|
-
hostname key
|
50
|
-
|
51
|
-
Default value: `host`.
|
52
|
-
|
53
47
|
### format_to_splunk_metric (bool) (optional)
|
54
48
|
|
55
49
|
format to Splunk metrics
|
@@ -58,6 +52,26 @@ format to Splunk metrics
|
|
58
52
|
|
59
53
|
dimensions key
|
60
54
|
|
55
|
+
|
56
|
+
### \<fields\> section (optional) (single)
|
57
|
+
|
58
|
+
This secsion is used for adding extra fields into cmetrics msgpack payload parsed records.
|
59
|
+
|
60
|
+
For example, the following configuration should add hostname records into parsed records:
|
61
|
+
|
62
|
+
```aconf
|
63
|
+
<filter super.awesome.tag.**>
|
64
|
+
@type cmetrics_parser
|
65
|
+
format_to_splunk_metric true
|
66
|
+
dimensions_key dims
|
67
|
+
<fields>
|
68
|
+
hostname
|
69
|
+
</fields>
|
70
|
+
</filter>
|
71
|
+
```
|
72
|
+
|
73
|
+
On later data pipeline, `hostname` key can be used as some additional work.
|
74
|
+
|
61
75
|
## Fluent::Plugin::CMetricsSplunkMetricPayloadFormatter
|
62
76
|
|
63
77
|
### cmetrics_name_key (string) (optional)
|
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = "fluent-plugin-cmetrics"
|
6
|
-
spec.version = "0.1.0.
|
6
|
+
spec.version = "0.1.0.rc7"
|
7
7
|
spec.authors = ["Hiroshi Hatake"]
|
8
8
|
spec.email = ["cosmo0920.oucc@gmail.com"]
|
9
9
|
|
@@ -30,19 +30,27 @@ module Fluent
|
|
30
30
|
config_param :cmetrics_metric_key, :string, default: "cmetrics"
|
31
31
|
desc "cmetrics labels key"
|
32
32
|
config_param :cmetrics_labels_key, :string, default: "labels"
|
33
|
-
desc "hostname key"
|
34
|
-
config_param :host_key, :string, default: "host"
|
35
33
|
desc "format to Splunk metrics"
|
36
34
|
config_param :format_to_splunk_metric, :bool, default: false
|
37
35
|
desc "dimensions key"
|
38
36
|
config_param :dimensions_key, :string, default: nil
|
37
|
+
desc "Add additional records for Splunk dimensions"
|
38
|
+
config_section :fields, init: false, multi: false,required: false do
|
39
|
+
# Nothing here. For later purpose.
|
40
|
+
end
|
39
41
|
|
40
42
|
def configure(conf)
|
41
43
|
super
|
42
44
|
@serde = ::CMetrics::Serde.new
|
43
45
|
@record_accessor = record_accessor_create(@cmetrics_metric_key)
|
44
46
|
@labels_accessor = record_accessor_create(@cmetrics_labels_key)
|
45
|
-
@
|
47
|
+
@fields_accessors = {}
|
48
|
+
conf.elements(name: "fields").each do |e|
|
49
|
+
e.each_pair{|k, _v|
|
50
|
+
e.has_key?(k) # Suppress unused warnings.
|
51
|
+
@fields_accessors[k] = record_accessor_create(k)
|
52
|
+
}
|
53
|
+
end
|
46
54
|
end
|
47
55
|
|
48
56
|
def format_to_splunk_style_with_dims(inner)
|
@@ -62,7 +70,10 @@ module Fluent
|
|
62
70
|
new_es = Fluent::MultiEventStream.new
|
63
71
|
es.each do |time, record|
|
64
72
|
data = @record_accessor.call(record)
|
65
|
-
|
73
|
+
extra_fields = {}
|
74
|
+
@fields_accessors.each do |key, accessor|
|
75
|
+
extra_fields[key] = accessor.call(record)
|
76
|
+
end
|
66
77
|
@serde.feed_each(data) do |cmetrics|
|
67
78
|
metrics = cmetrics.metrics
|
68
79
|
metrics.each do |metric|
|
@@ -77,8 +88,8 @@ module Fluent
|
|
77
88
|
inner.merge!(dims)
|
78
89
|
end
|
79
90
|
end
|
80
|
-
if
|
81
|
-
inner
|
91
|
+
if @fields_accessors
|
92
|
+
inner.merge!(extra_fields)
|
82
93
|
end
|
83
94
|
time = Time.at(inner.delete("timestamp"))
|
84
95
|
new_es.add(Fluent::EventTime.new(time.to_i, time.nsec), inner)
|
@@ -61,16 +61,18 @@ class CmetricsParserTest < Test::Unit::TestCase
|
|
61
61
|
test "#filter_stream with host_key" do |data|
|
62
62
|
use_dimensions = data
|
63
63
|
d = if use_dimensions
|
64
|
-
create_driver(
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
64
|
+
create_driver(Fluent::Config::Element.new('ROOT', '', {
|
65
|
+
"format_to_splunk_metric" => true,
|
66
|
+
"dimensions_key" => "dims",
|
67
|
+
}, [
|
68
|
+
Fluent::Config::Element.new('fields', '', {"hostname" => ""}, [])
|
69
|
+
]))
|
69
70
|
else
|
70
|
-
create_driver(
|
71
|
-
|
72
|
-
|
73
|
-
|
71
|
+
create_driver(Fluent::Config::Element.new('ROOT', '', {
|
72
|
+
"format_to_splunk_metric" => true,
|
73
|
+
}, [
|
74
|
+
Fluent::Config::Element.new('fields', '', {"hostname" => ""}, [])
|
75
|
+
]))
|
74
76
|
end
|
75
77
|
time = event_time("2012-01-02 13:14:15")
|
76
78
|
record = {"cmetrics" => @binary, "hostname" => Socket.gethostname}
|