fluent-plugin-papertrail 0.1.1 → 0.1.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
- SHA256:
3
- metadata.gz: f429bfeb54532e0b7dbc5c8763f2f921c401b3e4a8ec1e77cdbbbf5a6384f91d
4
- data.tar.gz: a4e63376cd325b8244c0fc0f5213a1deb071bbdd587e2aa9b4220b34560656a0
2
+ SHA1:
3
+ metadata.gz: 13f071d87f88a75ef2453e21eafd29feebff7b91
4
+ data.tar.gz: 4abf3a957a68b902098a944577a1d2c3c5ec75ca
5
5
  SHA512:
6
- metadata.gz: 50a9f91d9bdec204c08eae8a2e7b3b57dc236d8688f4d77575fd0e5723e3faf21d0ce8a73368d092664b36ded3df1d6e0db60fde2b842ed43ba1f7d1e0e76fe1
7
- data.tar.gz: 2f85bcaa56654e00e17918907d3c49dbbe0fafa0923dec3b9f99eedcad7b57b376ba5a48433ceda3262b5f0974126cf4db377a116cb92016ef73ccfa428e5ec0
6
+ metadata.gz: 9fcdbd9fd6d970117b86d27c6455019ce459da0a5315521e37c0f0ddf21d5d182f2f5cbbd8de785cefb44ac744a70d667432cc887cf54ad9859a0c647a401378
7
+ data.tar.gz: 18dfa2b58cae05762579db20ddff31dbee6efc3b40f42797cdff7d5e9e41b42e4a98dca5a07c1b635f11b3b7d84ddbba929e10dae075c53dc16da595d7fd261f
data/.circleci/config.yml CHANGED
@@ -7,7 +7,7 @@ jobs:
7
7
  build:
8
8
  docker:
9
9
  # specify the version you desire here
10
- - image: circleci/ruby:2.3.6
10
+ - image: circleci/ruby:2.4.3
11
11
 
12
12
  # Specify service dependencies here if necessary
13
13
  # CircleCI maintains a library of pre-built images
data/Makefile CHANGED
@@ -1,25 +1,16 @@
1
1
  REPO_NAME=fluent-plugin-papertrail
2
- SCRATCH_CONTAINER_DOCKERFILE=Dockerfile.scratch
3
- SCRATCH_IMAGE_NAME=${REPO_NAME}_scratch
4
- SCRATCH_CONTAINER_NAME=${REPO_NAME}_scratch
5
- SCRATCH_CONTAINER_DOCKER_OPTS=--rm -v $(PWD):/home -v $(PWD)/vendor/bundle:/usr/local/bundle -w=/home
6
2
 
7
- build-image-scratch:
8
- docker build --file ${SCRATCH_CONTAINER_DOCKERFILE} --tag ${SCRATCH_IMAGE_NAME} .
3
+ bundle:
4
+ bundle install
9
5
 
10
- install: build-image-scratch
11
- docker run ${SCRATCH_CONTAINER_DOCKER_OPTS} --name ${SCRATCH_CONTAINER_NAME} ${SCRATCH_IMAGE_NAME} bundle install
6
+ test: bundle
7
+ bundle exec rake test
12
8
 
13
- test: install
14
- docker run ${SCRATCH_CONTAINER_DOCKER_OPTS} --name ${SCRATCH_CONTAINER_NAME} ${SCRATCH_IMAGE_NAME} bundle exec rake test
15
-
16
- release: install
9
+ release: bundle
17
10
  rm -rf ${REPO_NAME}-*.gem
18
- docker run ${SCRATCH_CONTAINER_DOCKER_OPTS} --name ${SCRATCH_CONTAINER_NAME} ${SCRATCH_IMAGE_NAME} bundle exec gem build ${REPO_NAME}.gemspec
19
- docker run -it ${SCRATCH_CONTAINER_DOCKER_OPTS} --name ${SCRATCH_CONTAINER_NAME} ${SCRATCH_IMAGE_NAME} bundle exec gem push ${REPO_NAME}-*.gem
20
-
21
- clean:
22
- docker rm ${SCRATCH_CONTAINER_NAME}
11
+ bundle exec gem build ${REPO_NAME}.gemspec
12
+ bundle exec gem push ${REPO_NAME}-*.gem
23
13
 
24
- clean-image-scratch:
25
- docker rmi -f ${SCRATCH_IMAGE_NAME}
14
+ release-docker:
15
+ cd docker; docker build -t quay.io/solarwinds/fluentd-kubernetes:$(TAG) .
16
+ docker push quay.io/solarwinds/fluentd-kubernetes:$(TAG)
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Fluent::Plugin::Papertrail
2
2
 
3
- Welcome to the Papertrail Fluentd plugin!
3
+ [![Gem Version](https://badge.fury.io/rb/fluent-plugin-papertrail.svg)](https://badge.fury.io/rb/fluent-plugin-papertrail) [![Docker Repository on Quay](https://quay.io/repository/solarwinds/fluentd-kubernetes/status "Docker Repository on Quay")](https://quay.io/repository/solarwinds/fluentd-kubernetes) [![CircleCI](https://circleci.com/gh/solarwinds/fluent-plugin-papertrail/tree/master.svg?style=shield)](https://circleci.com/gh/solarwinds/fluent-plugin-papertrail/tree/master)
4
+
5
+ ## Description
6
+
7
+ This repository contains the Fluentd Papertrail Output Plugin and the Docker and Kubernetes assets for deploying that combined Fluentd, Papertrail, Kubernetes log aggregation toolset to your cluster.
4
8
 
5
9
  ## Installation
6
10
 
@@ -57,7 +61,7 @@ the [fluent-plugin-kubernetes_metadata_filter](https://github.com/fabric8io/flue
57
61
  ```
58
62
 
59
63
  ### Advanced Configuration
60
- This plugin inherits a few useful config parameters from Fluent's BufferedOutput class.
64
+ This plugin inherits a few useful config parameters from Fluent's `BufferedOutput` class.
61
65
 
62
66
  Parameters for flushing the buffer, based on size and time, are `buffer_chunk_limit` and `flush_interval`, respectively. This plugin overrides the inherited default `flush_interval` to `1`, causing the fluent buffer to flush to Papertrail every second.
63
67
 
@@ -74,23 +78,39 @@ If you want to change any of these parameters simply add them to a match stanza.
74
78
  </match>
75
79
  ```
76
80
 
81
+ ## Kubernetes
82
+
83
+ This repo also includes Kubernetes and Docker assets which do all of the heavy lifting for you.
84
+
85
+ If you'd like to deploy this plugin as a DaemonSet to your Kubernetes cluster, just adjust the `FLUENT_*` environment variables in `kubernetes/fluentd-daemonset-papertrail.yaml` and push it to your cluster with:
86
+
87
+ ```
88
+ kubectl apply -f kubernetes/fluentd-daemonset-papertrail.yaml
89
+ ```
90
+
91
+ The Dockerfile that generates [the image used in this DaemonSet](https://quay.io/repository/solarwinds/fluentd-kubernetes), can be found at `docker/Dockerfile`.
92
+
77
93
  ## Development
78
94
 
79
- We use git, Make and Docker.
80
- We have a [Dockerfile](Dockerfile.scratch) where we build a scratch image that contains all the dependencies.
81
- We have a [Makefile](Makefile) to wrap the common functions and make life easier.
95
+ This plugin is targeting Ruby 2.4 and Fluentd v1.0, although it should work with older versions of both.
82
96
 
83
- ### Install
84
- `make install`
97
+ We have a [Makefile](Makefile) to wrap common functions and make life easier.
98
+
99
+ ### Install Dependencies
100
+ `make bundle`
85
101
 
86
102
  ### Test
87
103
  `make test`
88
104
 
89
- ### Release in [RubyGems](RubyGems.org)
90
- To release a new version, update the version number in the [Makefile](Makefile) and then, run:
105
+ ### Release in [RubyGems](https://rubygems.org/gems/fluent-plugin-papertrail)
106
+ To release a new version, update the version number in the [GemSpec](fluent-plugin-papertrail.gemspec) and then, run:
91
107
 
92
108
  `make release`
93
109
 
110
+ ### Release in [Quay.io](https://quay.io/repository/solarwinds/fluentd-kubernetes)
111
+
112
+ `make release-docker TAG=$(VERSION)`
113
+
94
114
  ## Contributing
95
115
 
96
116
  Bug reports and pull requests are welcome on GitHub at https://github.com/solarwinds/fluent-plugin-papertrail.
data/docker/Dockerfile ADDED
@@ -0,0 +1,50 @@
1
+ FROM fluent/fluentd:v1.1.1-debian
2
+
3
+ USER root
4
+ WORKDIR /home/fluent
5
+ ENV PATH /home/fluent/.gem/ruby/2.3.0/bin:$PATH
6
+
7
+ RUN buildDeps="sudo make gcc g++ libc-dev ruby-dev libffi-dev" \
8
+ && apt-get update \
9
+ && apt-get upgrade -y \
10
+ && apt-get install \
11
+ -y --no-install-recommends \
12
+ $buildDeps \
13
+ && echo 'gem: --no-document' >> /etc/gemrc \
14
+ && gem install fluent-plugin-secure-forward \
15
+ && gem install fluent-plugin-record-reformer \
16
+ && gem install fluent-plugin-systemd -v 0.3.1 \
17
+ && gem install fluent-plugin-rewrite-tag-filter -v 1.6.0 \
18
+ && gem install fluent-plugin-papertrail -v 0.1.2.pre.dev \
19
+ && gem install fluent-plugin-kubernetes_metadata_filter \
20
+ && gem install ffi \
21
+ && SUDO_FORCE_REMOVE=yes \
22
+ apt-get purge -y --auto-remove \
23
+ -o APT::AutoRemove::RecommendsImportant=false \
24
+ $buildDeps \
25
+ && rm -rf /var/lib/apt/lists/* \
26
+ && gem sources --clear-all \
27
+ && rm -rf /tmp/* /var/tmp/* /usr/lib/ruby/gems/*/cache/*.gem
28
+
29
+ # Copy configuration files
30
+ COPY ./conf/fluent.conf /fluentd/etc/
31
+ COPY ./conf/systemd.conf /fluentd/etc/
32
+ COPY ./conf/kubernetes.conf /fluentd/etc/
33
+
34
+ # Copy plugins
35
+ COPY plugins /fluentd/plugins/
36
+
37
+ # Environment variables
38
+ ENV FLUENTD_OPT=""
39
+ ENV FLUENTD_CONF="fluent.conf"
40
+
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
+ # Overriding entrypoint, otherwise parent image causes to run as user fluent
47
+ ENTRYPOINT []
48
+
49
+ # Run Fluentd
50
+ CMD exec fluentd -c /fluentd/etc/$FLUENTD_CONF -p /fluentd/plugins $FLUENTD_OPT
@@ -0,0 +1,18 @@
1
+ @include systemd.conf
2
+ @include kubernetes.conf
3
+
4
+ ## Capture audit logs
5
+ #<match kube-apiserver-audit>
6
+ # type papertrail
7
+ #
8
+ # papertrail_host "#{ENV['FLUENT_PAPERTRAIL_AUDIT_HOST']}"
9
+ # papertrail_port "#{ENV['FLUENT_PAPERTRAIL_AUDIT_PORT']}"
10
+ #</match>
11
+
12
+ <match **>
13
+ type papertrail
14
+
15
+ papertrail_host "#{ENV['FLUENT_PAPERTRAIL_HOST']}"
16
+ papertrail_port "#{ENV['FLUENT_PAPERTRAIL_PORT']}"
17
+
18
+ </match>
@@ -0,0 +1,169 @@
1
+ <match fluent.**>
2
+ type null
3
+ </match>
4
+
5
+ <source>
6
+ type tail
7
+ path /var/log/containers/*.log
8
+ pos_file /var/log/fluentd-containers.log.pos
9
+ time_format %Y-%m-%dT%H:%M:%S.%NZ
10
+ tag kubernetes.*
11
+ format json
12
+ read_from_head true
13
+ </source>
14
+
15
+ <source>
16
+ type tail
17
+ format /^(?<time>[^ ]* [^ ,]*)[^\[]*\[[^\]]*\]\[(?<severity>[^ \]]*) *\] (?<message>.*)$/
18
+ time_format %Y-%m-%d %H:%M:%S
19
+ path /var/log/salt/minion
20
+ pos_file /var/log/fluentd-salt.pos
21
+ tag salt
22
+ </source>
23
+
24
+ <source>
25
+ type tail
26
+ format syslog
27
+ path /var/log/startupscript.log
28
+ pos_file /var/log/fluentd-startupscript.log.pos
29
+ tag startupscript
30
+ </source>
31
+
32
+ <source>
33
+ type tail
34
+ format /^time="(?<time>[^)]*)" level=(?<severity>[^ ]*) msg="(?<message>[^"]*)"( err="(?<error>[^"]*)")?( statusCode=($<status_code>\d+))?/
35
+ path /var/log/docker.log
36
+ pos_file /var/log/fluentd-docker.log.pos
37
+ tag docker
38
+ </source>
39
+
40
+ <source>
41
+ type tail
42
+ format none
43
+ path /var/log/etcd.log
44
+ pos_file /var/log/fluentd-etcd.log.pos
45
+ tag etcd
46
+ </source>
47
+
48
+ <source>
49
+ type tail
50
+ format kubernetes
51
+ multiline_flush_interval 5s
52
+ path /var/log/kubelet.log
53
+ pos_file /var/log/fluentd-kubelet.log.pos
54
+ tag kubelet
55
+ </source>
56
+
57
+ <source>
58
+ type tail
59
+ format kubernetes
60
+ multiline_flush_interval 5s
61
+ path /var/log/kube-proxy.log
62
+ pos_file /var/log/fluentd-kube-proxy.log.pos
63
+ tag kube-proxy
64
+ </source>
65
+
66
+ <source>
67
+ type tail
68
+ format kubernetes
69
+ multiline_flush_interval 5s
70
+ path /var/log/kube-apiserver.log
71
+ pos_file /var/log/fluentd-kube-apiserver.log.pos
72
+ tag kube-apiserver
73
+ </source>
74
+
75
+ <source>
76
+ type tail
77
+ format kubernetes
78
+ multiline_flush_interval 5s
79
+ path /var/log/kube-controller-manager.log
80
+ pos_file /var/log/fluentd-kube-controller-manager.log.pos
81
+ tag kube-controller-manager
82
+ </source>
83
+
84
+ <source>
85
+ type tail
86
+ format kubernetes
87
+ multiline_flush_interval 5s
88
+ path /var/log/kube-scheduler.log
89
+ pos_file /var/log/fluentd-kube-scheduler.log.pos
90
+ tag kube-scheduler
91
+ </source>
92
+
93
+ <source>
94
+ type tail
95
+ format kubernetes
96
+ multiline_flush_interval 5s
97
+ path /var/log/rescheduler.log
98
+ pos_file /var/log/fluentd-rescheduler.log.pos
99
+ tag rescheduler
100
+ </source>
101
+
102
+ <source>
103
+ type tail
104
+ format kubernetes
105
+ multiline_flush_interval 5s
106
+ path /var/log/glbc.log
107
+ pos_file /var/log/fluentd-glbc.log.pos
108
+ tag glbc
109
+ </source>
110
+
111
+ <source>
112
+ type tail
113
+ format kubernetes
114
+ multiline_flush_interval 5s
115
+ path /var/log/cluster-autoscaler.log
116
+ pos_file /var/log/fluentd-cluster-autoscaler.log.pos
117
+ tag cluster-autoscaler
118
+ </source>
119
+
120
+ # Example:
121
+ # 2017-02-09T00:15:57.992775796Z AUDIT: id="90c73c7c-97d6-4b65-9461-f94606ff825f" ip="104.132.1.72" method="GET" user="kubecfg" as="<self>" asgroups="<lookup>" namespace="default" uri="/api/v1/namespaces/default/pods"
122
+ # 2017-02-09T00:15:57.993528822Z AUDIT: id="90c73c7c-97d6-4b65-9461-f94606ff825f" response="200"
123
+ <source>
124
+ type tail
125
+ format multiline
126
+ multiline_flush_interval 5s
127
+ format_firstline /^\S+\s+AUDIT:/
128
+ # Fields must be explicitly captured by name to be parsed into the record.
129
+ # Fields may not always be present, and order may change, so this just looks
130
+ # for a list of key="\"quoted\" value" pairs separated by spaces.
131
+ # Unknown fields are ignored.
132
+ # Note: We can't separate query/response lines as format1/format2 because
133
+ # they don't always come one after the other for a given query.
134
+ format1 /^(?<time>\S+) AUDIT:(?: (?:id="(?<id>(?:[^"\\]|\\.)*)"|ip="(?<ip>(?:[^"\\]|\\.)*)"|method="(?<method>(?:[^"\\]|\\.)*)"|user="(?<user>(?:[^"\\]|\\.)*)"|groups="(?<groups>(?:[^"\\]|\\.)*)"|as="(?<as>(?:[^"\\]|\\.)*)"|asgroups="(?<asgroups>(?:[^"\\]|\\.)*)"|namespace="(?<namespace>(?:[^"\\]|\\.)*)"|uri="(?<uri>(?:[^"\\]|\\.)*)"|response="(?<response>(?:[^"\\]|\\.)*)"|\w+="(?:[^"\\]|\\.)*"))*/
135
+ time_format %FT%T.%L%Z
136
+ path /var/log/kubernetes/kube-apiserver-audit.log
137
+ pos_file /var/log/kube-apiserver-audit.log.pos
138
+ tag kube-apiserver-audit
139
+ </source>
140
+
141
+ <filter kubernetes.**>
142
+ type kubernetes_metadata
143
+ </filter>
144
+
145
+ <filter kube-apiserver-audit>
146
+ type record_transformer
147
+ enable_ruby true
148
+ <record>
149
+ hostname #{ENV['FLUENT_HOSTNAME']}
150
+ program kube-apiserver-audit
151
+ severity info
152
+ facility local0
153
+ message ${record}
154
+ </record>
155
+ </filter>
156
+
157
+ # append namespace and pod name to hostname, so that logs in Papertrail are filterable by each
158
+ # use container name as program name, but trim it to 32 characters to match remote_syslog spec
159
+ <filter kubernetes.**>
160
+ type record_transformer
161
+ enable_ruby true
162
+ <record>
163
+ hostname #{ENV['FLUENT_HOSTNAME']}-${record["kubernetes"]["namespace_name"]}-${record["kubernetes"]["pod_name"]}
164
+ program ${record["kubernetes"]["container_name"][0..31]}
165
+ severity info
166
+ facility local0
167
+ message ${record['log']}
168
+ </record>
169
+ </filter>
@@ -0,0 +1,51 @@
1
+ <source>
2
+ @type systemd
3
+ pos_file /var/log/fluentd-journald-systemd.pos
4
+ read_from_head true
5
+ strip_underscores true
6
+ tag systemd
7
+ </source>
8
+
9
+ # rewrite tags as systemd.* for the specefic SYSTEMD_UNIT, then we can filter specifically on kubelet and docker below
10
+ <match systemd>
11
+ @type rewrite_tag_filter
12
+ rewriterule1 SYSTEMD_UNIT ^kubelet.service$ systemd.kubelet
13
+ rewriterule2 SYSTEMD_UNIT ^docker.service$ systemd.docker
14
+ </match>
15
+
16
+ # toss all other systemd logs in the bin
17
+ <match systemd>
18
+ @type null
19
+ </match>
20
+
21
+ # transform systemd logs to Papertrail format
22
+ <filter systemd.kubelet>
23
+ @type record_transformer
24
+ enable_ruby true
25
+ <record>
26
+ hostname "#{ENV['FLUENT_HOSTNAME']}-${record['HOSTNAME']}"
27
+ program kubelet
28
+ severity info
29
+ facility local0
30
+ message ${record['MESSAGE']}
31
+ </record>
32
+ </filter>
33
+
34
+ <filter systemd.docker>
35
+ type parser
36
+ format /^time="(?<time>[^)]*)" level=(?<severity>[^ ]*) msg="(?<message>[^"]*)"( err="(?<error>[^"]*)")?( statusCode=($<status_code>\d+))?/
37
+ reserve_data true
38
+ key_name MESSAGE
39
+ suppress_parse_error_log true
40
+ </filter>
41
+
42
+ <filter systemd.docker>
43
+ @type record_transformer
44
+ enable_ruby true
45
+ <record>
46
+ hostname "#{ENV['FLUENT_HOSTNAME']}-${record['HOSTNAME']}"
47
+ program docker
48
+ severity info
49
+ facility local0
50
+ </record>
51
+ </filter>
@@ -0,0 +1,65 @@
1
+ #
2
+ # Fluentd
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ # The following Fluentd parser plugin, aims to simplify the parsing of multiline
18
+ # logs found in Kubernetes nodes. Since many log files shared the same format and
19
+ # in order to simplify the configuration, this plugin provides a 'kubernetes' format
20
+ # parser (built on top of MultilineParser).
21
+ #
22
+ # When tailing files, this 'kubernetes' format should be applied to the following
23
+ # log file sources:
24
+ #
25
+ # - /var/log/kubelet.log
26
+ # - /var/log/kube-proxy.log
27
+ # - /var/log/kube-apiserver.log
28
+ # - /var/log/kube-controller-manager.log
29
+ # - /var/log/kube-scheduler.log
30
+ # - /var/log/rescheduler.log
31
+ # - /var/log/glbc.log
32
+ # - /var/log/cluster-autoscaler.log
33
+ #
34
+ # Usage:
35
+ #
36
+ # ---- fluentd.conf ----
37
+ #
38
+ # <source>
39
+ # type tail
40
+ # format kubernetes
41
+ # path ./kubelet.log
42
+ # read_from_head yes
43
+ # tag kubelet
44
+ # </source>
45
+ #
46
+ # ---- EOF ---
47
+
48
+ require 'fluent/parser'
49
+
50
+ module Fluent
51
+ class KubernetesParser < Fluent::TextParser::MultilineParser
52
+ Fluent::Plugin.register_parser("kubernetes", self)
53
+
54
+ CONF_FORMAT_FIRSTLINE = %q{/^\w\d{4}/}
55
+ CONF_FORMAT1 = %q{/^(?<severity>\w)(?<time>\d{4} [^\s]*)\s+(?<pid>\d+)\s+(?<source>[^ \]]+)\] (?<message>.*)/}
56
+ CONF_TIME_FORMAT = "%m%d %H:%M:%S.%N"
57
+
58
+ def configure(conf)
59
+ conf['format_firstline'] = CONF_FORMAT_FIRSTLINE
60
+ conf['format1'] = CONF_FORMAT1
61
+ conf['time_format'] = CONF_TIME_FORMAT
62
+ super
63
+ end
64
+ end
65
+ end
@@ -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.1"
7
+ spec.version = "0.1.2"
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
 
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.add_dependency "fluentd", "~> 0.10.45"
24
- spec.add_dependency "fluent-mixin-config-placeholders", "~> 0.2.0"
23
+ spec.add_dependency "fluentd", '>= 0.10', '< 2'
24
+ spec.add_dependency "fluent-mixin-config-placeholders", "~> 0.4.0"
25
25
  spec.add_dependency "syslog_protocol"
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 1.12"
@@ -0,0 +1,96 @@
1
+ # Uncomment sections below to allow audit logs to go to a separate host
2
+ apiVersion: extensions/v1beta1
3
+ kind: DaemonSet
4
+ metadata:
5
+ name: fluentd-papertrail-global-logging
6
+ namespace: kube-system
7
+ labels:
8
+ k8s-app: fluentd-logging
9
+ version: v1
10
+ kubernetes.io/cluster-service: "true"
11
+ spec:
12
+ updateStrategy:
13
+ type: RollingUpdate
14
+ template:
15
+ metadata:
16
+ labels:
17
+ k8s-app: fluentd-logging
18
+ version: v1
19
+ kubernetes.io/cluster-service: "true"
20
+ spec:
21
+ tolerations:
22
+ - key: node-role.kubernetes.io/master
23
+ effect: NoSchedule
24
+ containers:
25
+ - name: fluentd
26
+ image: quay.io/solarwinds/fluentd-kubernetes:v0.12.33-debian-papertrail
27
+ imagePullPolicy: Always
28
+ env:
29
+ - name: FLUENT_PAPERTRAIL_HOST
30
+ value: 'logsN.papertrailapp.com'
31
+ - name: FLUENT_PAPERTRAIL_PORT
32
+ value: 'NNNNN'
33
+ # - name: FLUENT_PAPERTRAIL_AUDIT_HOST
34
+ # value: 'logsN.papertrailapp.com'
35
+ # - name: FLUENT_PAPERTRAIL_AUDIT_PORT
36
+ # value: 'NNNNN'
37
+ - name: FLUENT_HOSTNAME
38
+ value: 'my-cluster-name'
39
+ resources:
40
+ limits:
41
+ cpu: 200m
42
+ memory: 400Mi
43
+ requests:
44
+ cpu: 200m
45
+ memory: 400Mi
46
+ volumeMounts:
47
+ - name: varlog
48
+ mountPath: /var/log
49
+ - name: varlibdockercontainers
50
+ mountPath: /var/lib/docker/containers
51
+ readOnly: true
52
+ - name: config
53
+ mountPath: /fluentd/etc/fluent.conf
54
+ subPath: fluent.conf
55
+ terminationGracePeriodSeconds: 30
56
+ volumes:
57
+ - name: varlog
58
+ hostPath:
59
+ path: /var/log
60
+ - name: varlibdockercontainers
61
+ hostPath:
62
+ path: /var/lib/docker/containers
63
+ - name: config
64
+ configMap:
65
+ name: fluentd-papertrail-global-logging-config
66
+ items:
67
+ - key: fluent.conf
68
+ path: fluent.conf
69
+ ---
70
+ apiVersion: v1
71
+ kind: ConfigMap
72
+ metadata:
73
+ name: fluentd-papertrail-global-logging-config
74
+ namespace: kube-system
75
+ data:
76
+ fluent.conf: |-
77
+ @include kubernetes.conf
78
+ @include systemd.conf
79
+
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
+ <match **>
91
+ type papertrail
92
+ num_threads 4
93
+
94
+ papertrail_host "#{ENV['FLUENT_PAPERTRAIL_HOST']}"
95
+ papertrail_port "#{ENV['FLUENT_PAPERTRAIL_PORT']}"
96
+ </match>
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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Lozinski
@@ -10,36 +10,42 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2018-01-04 00:00:00.000000000 Z
13
+ date: 2018-03-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fluentd
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0.10'
22
+ - - "<"
20
23
  - !ruby/object:Gem::Version
21
- version: 0.10.45
24
+ version: '2'
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
25
28
  requirements:
26
- - - "~>"
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: '0.10'
32
+ - - "<"
27
33
  - !ruby/object:Gem::Version
28
- version: 0.10.45
34
+ version: '2'
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: fluent-mixin-config-placeholders
31
37
  requirement: !ruby/object:Gem::Requirement
32
38
  requirements:
33
39
  - - "~>"
34
40
  - !ruby/object:Gem::Version
35
- version: 0.2.0
41
+ version: 0.4.0
36
42
  type: :runtime
37
43
  prerelease: false
38
44
  version_requirements: !ruby/object:Gem::Requirement
39
45
  requirements:
40
46
  - - "~>"
41
47
  - !ruby/object:Gem::Version
42
- version: 0.2.0
48
+ version: 0.4.0
43
49
  - !ruby/object:Gem::Dependency
44
50
  name: syslog_protocol
45
51
  requirement: !ruby/object:Gem::Requirement
@@ -121,7 +127,6 @@ extra_rdoc_files: []
121
127
  files:
122
128
  - ".circleci/config.yml"
123
129
  - ".gitignore"
124
- - Dockerfile.scratch
125
130
  - Gemfile
126
131
  - LICENSE
127
132
  - Makefile
@@ -129,7 +134,13 @@ files:
129
134
  - Rakefile
130
135
  - bin/console
131
136
  - bin/setup
137
+ - docker/Dockerfile
138
+ - docker/conf/fluent.conf
139
+ - docker/conf/kubernetes.conf
140
+ - docker/conf/systemd.conf
141
+ - docker/plugins/parser_kubernetes.rb
132
142
  - fluent-plugin-papertrail.gemspec
143
+ - kubernetes/fluentd-daemonset-papertrail.yaml
133
144
  - lib/fluent/plugin/out_papertrail.rb
134
145
  homepage: https://github.com/solarwinds/fluent-plugin-papertrail
135
146
  licenses:
@@ -151,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
162
  version: '0'
152
163
  requirements: []
153
164
  rubyforge_project:
154
- rubygems_version: 2.7.4
165
+ rubygems_version: 2.6.14
155
166
  signing_key:
156
167
  specification_version: 4
157
168
  summary: Remote Syslog Output Fluentd plugin for papertrail
data/Dockerfile.scratch DELETED
@@ -1,21 +0,0 @@
1
- # vim:set ft=dockerfile:
2
- FROM ruby:2.3.6-alpine
3
-
4
- MAINTAINER Alex Ouzounis <alex.ouzounis@solarwinds.com>
5
-
6
- ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1
7
-
8
- RUN \
9
- apk add --update \
10
- ruby-bigdecimal \
11
- ruby-bundler \
12
- ruby-rdoc \
13
- build-base \
14
- ruby-dev \
15
- git \
16
- openssh \
17
- ca-certificates \
18
- \
19
- && bundle config build.nokogiri --use-system-libraries \
20
- \
21
- && rm -rf /var/cache/apk/* /tmp