fluent-plugin-papertrail 0.1.2 → 0.1.3
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 +18 -4
- data/docker/Dockerfile +13 -20
- data/fluent-plugin-papertrail.gemspec +1 -1
- data/kubernetes/fluentd-daemonset-papertrail.yaml +1 -16
- data/lib/fluent/plugin/out_papertrail.rb +8 -4
- metadata +2 -4
- data/bin/console +0 -14
- data/bin/setup +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c64afb4983305a88b12faeb066bedb5dd09c077
|
4
|
+
data.tar.gz: dd5f6d86951f19f121609a5fab36aac1b6a30658
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 991a840b6840f26e3812b95908905ce16e9151b3d1c1c15d0ca81a10079f2967324ee78614ca830db6d14211d0b48bd16cb54e365cb2ad809bf0df352506c679
|
7
|
+
data.tar.gz: '056480b9fb04bc1789745c5cc0481e21761e7e8651aad1b01946598dd6daa5194f73b3227349a5f70e98b061c145da14d2674f8d53abfde9965a9a060571a089'
|
data/README.md
CHANGED
@@ -31,7 +31,9 @@ To configure this in fluentd:
|
|
31
31
|
</match>
|
32
32
|
```
|
33
33
|
|
34
|
-
|
34
|
+
### Configuring a record_transformer
|
35
|
+
|
36
|
+
This plugin expects the following fields to be set for each Fluent record:
|
35
37
|
```
|
36
38
|
message The log
|
37
39
|
program The program/tag
|
@@ -40,8 +42,7 @@ Use a record transform plugin to populate within the record the following fields
|
|
40
42
|
hostname The source hostname for papertrail logging
|
41
43
|
```
|
42
44
|
|
43
|
-
The following
|
44
|
-
the [fluent-plugin-kubernetes_metadata_filter](https://github.com/fabric8io/fluent-plugin-kubernetes_metadata_filter) plugin which populates the record with useful metadata:
|
45
|
+
The following example is a `record_transformer` filter, from the [Kubernetes assets](docker/conf/kubernetes.conf) in this repo, that is used along with the [fluent-plugin-kubernetes_metadata_filter](https://github.com/fabric8io/fluent-plugin-kubernetes_metadata_filter) to populate the required fields for our plugin:
|
45
46
|
```yaml
|
46
47
|
<filter kubernetes.**>
|
47
48
|
type kubernetes_metadata
|
@@ -60,6 +61,8 @@ the [fluent-plugin-kubernetes_metadata_filter](https://github.com/fabric8io/flue
|
|
60
61
|
</filter>
|
61
62
|
```
|
62
63
|
|
64
|
+
If you don't set `hostname` and `program` values in your record, they will default to the environment variable `FLUENT_HOSTNAME` or `'unidentified'` and the fluent tag, respectively.
|
65
|
+
|
63
66
|
### Advanced Configuration
|
64
67
|
This plugin inherits a few useful config parameters from Fluent's `BufferedOutput` class.
|
65
68
|
|
@@ -90,6 +93,17 @@ kubectl apply -f kubernetes/fluentd-daemonset-papertrail.yaml
|
|
90
93
|
|
91
94
|
The Dockerfile that generates [the image used in this DaemonSet](https://quay.io/repository/solarwinds/fluentd-kubernetes), can be found at `docker/Dockerfile`.
|
92
95
|
|
96
|
+
If you'd like to redirect Kubernetes API Server Audit logs to a seperate Papertrail destination, add the following to your `fluent.conf`:
|
97
|
+
```
|
98
|
+
<match kube-apiserver-audit>
|
99
|
+
type papertrail
|
100
|
+
num_threads 4
|
101
|
+
|
102
|
+
papertrail_host "#{ENV['FLUENT_PAPERTRAIL_AUDIT_HOST']}"
|
103
|
+
papertrail_port "#{ENV['FLUENT_PAPERTRAIL_AUDIT_PORT']}"
|
104
|
+
</match>
|
105
|
+
```
|
106
|
+
|
93
107
|
## Development
|
94
108
|
|
95
109
|
This plugin is targeting Ruby 2.4 and Fluentd v1.0, although it should work with older versions of both.
|
@@ -113,7 +127,7 @@ To release a new version, update the version number in the [GemSpec](fluent-plug
|
|
113
127
|
|
114
128
|
## Contributing
|
115
129
|
|
116
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/solarwinds/fluent-plugin-papertrail
|
130
|
+
Bug reports and pull requests are welcome on GitHub at: https://github.com/solarwinds/fluent-plugin-papertrail
|
117
131
|
|
118
132
|
## License
|
119
133
|
|
data/docker/Dockerfile
CHANGED
@@ -3,25 +3,23 @@ FROM fluent/fluentd:v1.1.1-debian
|
|
3
3
|
USER root
|
4
4
|
WORKDIR /home/fluent
|
5
5
|
ENV PATH /home/fluent/.gem/ruby/2.3.0/bin:$PATH
|
6
|
+
ENV BUILDDEPS="sudo make gcc g++ libc-dev ruby-dev libffi-dev"
|
6
7
|
|
7
|
-
RUN
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
&& echo 'gem: --no-document' >> /etc/gemrc \
|
14
|
-
&& gem install fluent-plugin-secure-forward \
|
15
|
-
&& gem install fluent-plugin-record-reformer \
|
8
|
+
RUN apt-get update \
|
9
|
+
&& apt-get upgrade -y \
|
10
|
+
&& apt-get install -y --no-install-recommends \
|
11
|
+
$BUILDDEPS
|
12
|
+
|
13
|
+
RUN echo 'gem: --no-document' >> /etc/gemrc \
|
16
14
|
&& gem install fluent-plugin-systemd -v 0.3.1 \
|
17
15
|
&& gem install fluent-plugin-rewrite-tag-filter -v 1.6.0 \
|
18
|
-
&& gem install fluent-plugin-papertrail -v 0.1.
|
19
|
-
&& gem install fluent-plugin-kubernetes_metadata_filter
|
20
|
-
|
21
|
-
|
16
|
+
&& gem install fluent-plugin-papertrail -v 0.1.3 \
|
17
|
+
&& gem install fluent-plugin-kubernetes_metadata_filter
|
18
|
+
|
19
|
+
RUN SUDO_FORCE_REMOVE=yes \
|
22
20
|
apt-get purge -y --auto-remove \
|
23
21
|
-o APT::AutoRemove::RecommendsImportant=false \
|
24
|
-
$
|
22
|
+
$BUILDDEPS \
|
25
23
|
&& rm -rf /var/lib/apt/lists/* \
|
26
24
|
&& gem sources --clear-all \
|
27
25
|
&& rm -rf /tmp/* /var/tmp/* /usr/lib/ruby/gems/*/cache/*.gem
|
@@ -38,13 +36,8 @@ COPY plugins /fluentd/plugins/
|
|
38
36
|
ENV FLUENTD_OPT=""
|
39
37
|
ENV FLUENTD_CONF="fluent.conf"
|
40
38
|
|
41
|
-
# jemalloc is memory optimization only available for td-agent
|
42
|
-
# td-agent is provided and QA'ed by treasuredata as rpm/deb/.. package
|
43
|
-
# -> td-agent (stable) vs fluentd (edge)
|
44
|
-
#ENV LD_PRELOAD="/usr/lib/libjemalloc.so.2"
|
45
|
-
|
46
39
|
# Overriding entrypoint, otherwise parent image causes to run as user fluent
|
47
40
|
ENTRYPOINT []
|
48
41
|
|
49
42
|
# Run Fluentd
|
50
|
-
CMD exec fluentd -c /fluentd/etc/$FLUENTD_CONF -p /fluentd/plugins $FLUENTD_OPT
|
43
|
+
CMD exec fluentd -c /fluentd/etc/$FLUENTD_CONF -p /fluentd/plugins $FLUENTD_OPT
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "fluent-plugin-papertrail"
|
7
|
-
spec.version = "0.1.
|
7
|
+
spec.version = "0.1.3"
|
8
8
|
spec.authors = ["Jonathan Lozinski", "Alex Ouzounis", "Chris Rust"]
|
9
9
|
spec.email = ["jonathan.lozinski@solarwinds.com", "alex.ouzounis@solarwinds.com", "chris.rust@solarwinds.com"]
|
10
10
|
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# Uncomment sections below to allow audit logs to go to a separate host
|
2
1
|
apiVersion: extensions/v1beta1
|
3
2
|
kind: DaemonSet
|
4
3
|
metadata:
|
@@ -23,17 +22,13 @@ spec:
|
|
23
22
|
effect: NoSchedule
|
24
23
|
containers:
|
25
24
|
- name: fluentd
|
26
|
-
image: quay.io/solarwinds/fluentd-kubernetes:
|
25
|
+
image: quay.io/solarwinds/fluentd-kubernetes:v1.1.1-debian-papertrail
|
27
26
|
imagePullPolicy: Always
|
28
27
|
env:
|
29
28
|
- name: FLUENT_PAPERTRAIL_HOST
|
30
29
|
value: 'logsN.papertrailapp.com'
|
31
30
|
- name: FLUENT_PAPERTRAIL_PORT
|
32
31
|
value: 'NNNNN'
|
33
|
-
# - name: FLUENT_PAPERTRAIL_AUDIT_HOST
|
34
|
-
# value: 'logsN.papertrailapp.com'
|
35
|
-
# - name: FLUENT_PAPERTRAIL_AUDIT_PORT
|
36
|
-
# value: 'NNNNN'
|
37
32
|
- name: FLUENT_HOSTNAME
|
38
33
|
value: 'my-cluster-name'
|
39
34
|
resources:
|
@@ -77,16 +72,6 @@ data:
|
|
77
72
|
@include kubernetes.conf
|
78
73
|
@include systemd.conf
|
79
74
|
|
80
|
-
# # Capture audit logs
|
81
|
-
# <match kube-apiserver-audit>
|
82
|
-
# type papertrail
|
83
|
-
# num_threads 4
|
84
|
-
#
|
85
|
-
# papertrail_host "#{ENV['FLUENT_PAPERTRAIL_AUDIT_HOST']}"
|
86
|
-
# papertrail_port "#{ENV['FLUENT_PAPERTRAIL_AUDIT_PORT']}"
|
87
|
-
# </match>
|
88
|
-
#
|
89
|
-
# Capture all unmatched tags
|
90
75
|
<match **>
|
91
76
|
type papertrail
|
92
77
|
num_threads 4
|
@@ -8,15 +8,19 @@ module Fluent
|
|
8
8
|
# if left empty in fluent config these config_param's will error
|
9
9
|
config_param :papertrail_host, :string
|
10
10
|
config_param :papertrail_port, :integer
|
11
|
+
# default to ENV['FLUENT_HOSTNAME'] or :default_hostname if no hostname in record
|
12
|
+
config_param :default_hostname, :string, default: 'unidentified'
|
11
13
|
# overriding default flush_interval (60 sec) from Fluent::BufferedOutput
|
12
14
|
config_param :flush_interval, :time, default: 1
|
13
15
|
|
16
|
+
|
14
17
|
# register as 'papertrail' fluent plugin
|
15
18
|
Fluent::Plugin.register_output('papertrail', self)
|
16
19
|
|
17
20
|
def configure(conf)
|
18
21
|
super
|
19
22
|
@socket = create_socket(@papertrail_host, @papertrail_port)
|
23
|
+
@default_hostname = ENV['FLUENT_HOSTNAME'] || @default_hostname
|
20
24
|
end
|
21
25
|
|
22
26
|
def format(tag, time, record)
|
@@ -50,10 +54,10 @@ module Fluent
|
|
50
54
|
def create_packet(tag,time,record)
|
51
55
|
# construct syslog packet from fluent record
|
52
56
|
packet = SyslogProtocol::Packet.new
|
53
|
-
packet.hostname = record['hostname']
|
54
|
-
packet.facility = record['facility']
|
55
|
-
packet.severity = record['severity']
|
56
|
-
packet.tag = record['program']
|
57
|
+
packet.hostname = record['hostname'] || @default_hostname
|
58
|
+
packet.facility = record['facility'] || 'local0'
|
59
|
+
packet.severity = record['severity'] || 'info'
|
60
|
+
packet.tag = record['program'] || tag
|
57
61
|
packet.content = record['message']
|
58
62
|
packet.time = time ? Time.at(time) : Time.now
|
59
63
|
packet
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-papertrail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Lozinski
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-03-
|
13
|
+
date: 2018-03-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: fluentd
|
@@ -132,8 +132,6 @@ files:
|
|
132
132
|
- Makefile
|
133
133
|
- README.md
|
134
134
|
- Rakefile
|
135
|
-
- bin/console
|
136
|
-
- bin/setup
|
137
135
|
- docker/Dockerfile
|
138
136
|
- docker/conf/fluent.conf
|
139
137
|
- docker/conf/kubernetes.conf
|
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "fluent/plugin/papertrail"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start
|