fluent-plugin-kubernetes_metadata_filter_splunk 2.2.0

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.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +56 -0
  3. data/.gitignore +20 -0
  4. data/Gemfile +7 -0
  5. data/LICENSE.txt +201 -0
  6. data/README.md +209 -0
  7. data/Rakefile +37 -0
  8. data/fluent-plugin-kubernetes_metadata_filter.gemspec +36 -0
  9. data/lib/fluent/plugin/filter_kubernetes_metadata.rb +446 -0
  10. data/lib/fluent/plugin/kubernetes_metadata_cache_strategy.rb +98 -0
  11. data/lib/fluent/plugin/kubernetes_metadata_common.rb +113 -0
  12. data/lib/fluent/plugin/kubernetes_metadata_stats.rb +46 -0
  13. data/lib/fluent/plugin/kubernetes_metadata_watch_namespaces.rb +65 -0
  14. data/lib/fluent/plugin/kubernetes_metadata_watch_pods.rb +68 -0
  15. data/test/cassettes/invalid_api_server_config.yml +53 -0
  16. data/test/cassettes/kubernetes_docker_metadata.yml +228 -0
  17. data/test/cassettes/kubernetes_docker_metadata_annotations.yml +239 -0
  18. data/test/cassettes/kubernetes_docker_metadata_dotted_labels.yml +231 -0
  19. data/test/cassettes/kubernetes_docker_metadata_using_bearer_token.yml +248 -0
  20. data/test/cassettes/kubernetes_get_api_v1.yml +193 -0
  21. data/test/cassettes/kubernetes_get_api_v1_using_token.yml +195 -0
  22. data/test/cassettes/kubernetes_get_namespace_default.yml +69 -0
  23. data/test/cassettes/kubernetes_get_namespace_default_using_token.yml +71 -0
  24. data/test/cassettes/kubernetes_get_pod.yml +146 -0
  25. data/test/cassettes/kubernetes_get_pod_using_token.yml +148 -0
  26. data/test/cassettes/metadata_from_tag_and_journald_fields.yml +408 -0
  27. data/test/cassettes/metadata_from_tag_journald_and_kubernetes_fields.yml +540 -0
  28. data/test/cassettes/metadata_with_namespace_id.yml +276 -0
  29. data/test/cassettes/non_kubernetes_docker_metadata.yml +97 -0
  30. data/test/cassettes/valid_kubernetes_api_server.yml +55 -0
  31. data/test/cassettes/valid_kubernetes_api_server_using_token.yml +57 -0
  32. data/test/helper.rb +64 -0
  33. data/test/plugin/test.token +1 -0
  34. data/test/plugin/test_cache_stats.rb +36 -0
  35. data/test/plugin/test_cache_strategy.rb +196 -0
  36. data/test/plugin/test_filter_kubernetes_metadata.rb +970 -0
  37. data/test/plugin/test_watch_namespaces.rb +91 -0
  38. data/test/plugin/test_watch_pods.rb +145 -0
  39. data/test/plugin/watch_test.rb +57 -0
  40. metadata +295 -0
@@ -0,0 +1,231 @@
1
+ #
2
+ # Fluentd Kubernetes Metadata Filter Plugin - Enrich Fluentd events with
3
+ # Kubernetes metadata
4
+ #
5
+ # Copyright 2015 Red Hat, Inc.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ ---
20
+ http_interactions:
21
+ - request:
22
+ method: get
23
+ uri: https://localhost:8443/api
24
+ body:
25
+ encoding: US-ASCII
26
+ string: ''
27
+ headers:
28
+ Accept:
29
+ - "*/*; q=0.5, application/xml"
30
+ Accept-Encoding:
31
+ - gzip, deflate
32
+ User-Agent:
33
+ - Ruby
34
+ response:
35
+ status:
36
+ code: 200
37
+ message: OK
38
+ headers:
39
+ Content-Type:
40
+ - application/json
41
+ Date:
42
+ - Fri, 08 May 2015 10:35:37 GMT
43
+ Content-Length:
44
+ - '67'
45
+ body:
46
+ encoding: UTF-8
47
+ string: |-
48
+ {
49
+ "versions": [
50
+ "v1"
51
+ ]
52
+ }
53
+ http_version:
54
+ recorded_at: Fri, 08 May 2015 10:35:37 GMT
55
+ - request:
56
+ method: get
57
+ uri: https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc
58
+ body:
59
+ encoding: US-ASCII
60
+ string: ''
61
+ headers:
62
+ Accept:
63
+ - "*/*; q=0.5, application/xml"
64
+ Accept-Encoding:
65
+ - gzip, deflate
66
+ User-Agent:
67
+ - Ruby
68
+ response:
69
+ status:
70
+ code: 200
71
+ message: OK
72
+ headers:
73
+ Content-Type:
74
+ - application/json
75
+ Date:
76
+ - Fri, 08 May 2015 10:35:37 GMT
77
+ Transfer-Encoding:
78
+ - chunked
79
+ body:
80
+ encoding: UTF-8
81
+ string: |-
82
+ {
83
+ "kind": "Pod",
84
+ "apiVersion": "v1",
85
+ "metadata": {
86
+ "name": "fabric8-console-controller-98rqc",
87
+ "generateName": "fabric8-console-controller-",
88
+ "namespace": "default",
89
+ "selfLink": "/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc",
90
+ "uid": "c76927af-f563-11e4-b32d-54ee7527188d",
91
+ "resourceVersion": "122",
92
+ "creationTimestamp": "2015-05-08T09:22:42Z",
93
+ "labels": {
94
+ "kubernetes.io/test": "somevalue"
95
+ }
96
+ },
97
+ "spec": {
98
+ "volumes": [
99
+ {
100
+ "name": "openshift-cert-secrets",
101
+ "hostPath": null,
102
+ "emptyDir": null,
103
+ "gcePersistentDisk": null,
104
+ "gitRepo": null,
105
+ "secret": {
106
+ "secretName": "openshift-cert-secrets"
107
+ },
108
+ "nfs": null,
109
+ "iscsi": null,
110
+ "glusterfs": null
111
+ }
112
+ ],
113
+ "containers": [
114
+ {
115
+ "name": "fabric8-console-container",
116
+ "image": "fabric8/hawtio-kubernetes:latest",
117
+ "ports": [
118
+ {
119
+ "containerPort": 9090,
120
+ "protocol": "TCP"
121
+ }
122
+ ],
123
+ "env": [
124
+ {
125
+ "name": "OAUTH_CLIENT_ID",
126
+ "value": "fabric8-console"
127
+ },
128
+ {
129
+ "name": "OAUTH_AUTHORIZE_URI",
130
+ "value": "https://localhost:8443/oauth/authorize"
131
+ }
132
+ ],
133
+ "resources": {},
134
+ "volumeMounts": [
135
+ {
136
+ "name": "openshift-cert-secrets",
137
+ "readOnly": true,
138
+ "mountPath": "/etc/secret-volume"
139
+ }
140
+ ],
141
+ "terminationMessagePath": "/dev/termination-log",
142
+ "imagePullPolicy": "IfNotPresent",
143
+ "capabilities": {}
144
+ }
145
+ ],
146
+ "restartPolicy": "Always",
147
+ "dnsPolicy": "ClusterFirst",
148
+ "nodeName": "jimmi-redhat.localnet"
149
+ },
150
+ "status": {
151
+ "phase": "Running",
152
+ "Condition": [
153
+ {
154
+ "type": "Ready",
155
+ "status": "True"
156
+ }
157
+ ],
158
+ "hostIP": "172.17.42.1",
159
+ "podIP": "172.17.0.8",
160
+ "containerStatuses": [
161
+ {
162
+ "name": "fabric8-console-container",
163
+ "state": {
164
+ "running": {
165
+ "startedAt": "2015-05-08T09:22:44Z"
166
+ }
167
+ },
168
+ "lastState": {},
169
+ "ready": true,
170
+ "restartCount": 0,
171
+ "image": "fabric8/hawtio-kubernetes:latest",
172
+ "imageID": "docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303",
173
+ "containerID": "docker://49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459"
174
+ }
175
+ ]
176
+ }
177
+ }
178
+ http_version:
179
+ recorded_at: Fri, 08 May 2015 10:35:37 GMT
180
+ - request:
181
+ method: get
182
+ uri: https://localhost:8443/api/v1/namespaces/default
183
+ body:
184
+ encoding: US-ASCII
185
+ string: ''
186
+ headers:
187
+ Accept:
188
+ - "*/*; q=0.5, application/xml"
189
+ Accept-Encoding:
190
+ - gzip, deflate
191
+ User-Agent:
192
+ - Ruby
193
+ response:
194
+ status:
195
+ code: 200
196
+ message: OK
197
+ headers:
198
+ Content-Type:
199
+ - application/json
200
+ Date:
201
+ - Fri, 08 May 2015 10:35:37 GMT
202
+ Transfer-Encoding:
203
+ - chunked
204
+ body:
205
+ encoding: UTF-8
206
+ string: |-
207
+ {
208
+ "kind": "Namespace",
209
+ "apiVersion": "v1",
210
+ "metadata": {
211
+ "name": "default",
212
+ "selfLink": "/api/v1/namespaces/default",
213
+ "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
214
+ "resourceVersion": "6",
215
+ "creationTimestamp": "2015-05-08T09:22:01Z",
216
+ "labels": {
217
+ "kubernetes.io/namespacetest": "somevalue"
218
+ }
219
+ },
220
+ "spec": {
221
+ "finalizers": [
222
+ "kubernetes"
223
+ ]
224
+ },
225
+ "status": {
226
+ "phase": "Active"
227
+ }
228
+ }
229
+ http_version:
230
+ recorded_at: Fri, 08 May 2015 10:35:37 GMT
231
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,248 @@
1
+ #
2
+ # Fluentd Kubernetes Metadata Filter Plugin - Enrich Fluentd events with
3
+ # Kubernetes metadata
4
+ #
5
+ # Copyright 2015 Red Hat, Inc.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+ ---
20
+ http_interactions:
21
+ - request:
22
+ method: get
23
+ uri: https://localhost:8443/api
24
+ body:
25
+ encoding: US-ASCII
26
+ string: ''
27
+ headers:
28
+ Accept:
29
+ - "*/*; q=0.5, application/xml"
30
+ Accept-Encoding:
31
+ - gzip, deflate
32
+ User-Agent:
33
+ - Ruby
34
+ Authorization:
35
+ - Bearer YzYyYzFlODMtODdhNS00ZTMyLWIzMmItNmY4NDc4OTI1ZWFh
36
+ response:
37
+ status:
38
+ code: 200
39
+ message: OK
40
+ headers:
41
+ Content-Type:
42
+ - application/json
43
+ Date:
44
+ - Sat, 09 May 2015 13:51:07 GMT
45
+ Content-Length:
46
+ - '67'
47
+ body:
48
+ encoding: UTF-8
49
+ string: |-
50
+ {
51
+ "versions": [
52
+ "v1"
53
+ ]
54
+ }
55
+ http_version:
56
+ recorded_at: Sat, 09 May 2015 13:51:07 GMT
57
+ - request:
58
+ method: get
59
+ uri: https://localhost:8443/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc
60
+ body:
61
+ encoding: US-ASCII
62
+ string: ''
63
+ headers:
64
+ Accept:
65
+ - "*/*; q=0.5, application/xml"
66
+ Accept-Encoding:
67
+ - gzip, deflate
68
+ User-Agent:
69
+ - Ruby
70
+ Authorization:
71
+ - Bearer YzYyYzFlODMtODdhNS00ZTMyLWIzMmItNmY4NDc4OTI1ZWFh
72
+ response:
73
+ status:
74
+ code: 200
75
+ message: OK
76
+ headers:
77
+ Content-Type:
78
+ - application/json
79
+ Date:
80
+ - Sat, 09 May 2015 13:51:07 GMT
81
+ Transfer-Encoding:
82
+ - chunked
83
+ body:
84
+ encoding: UTF-8
85
+ string: |-
86
+ {
87
+ "kind": "Pod",
88
+ "apiVersion": "v1",
89
+ "metadata": {
90
+ "name": "fabric8-console-controller-98rqc",
91
+ "generateName": "fabric8-console-controller-",
92
+ "namespace": "default",
93
+ "selfLink": "/api/v1/namespaces/default/pods/fabric8-console-controller-98rqc",
94
+ "uid": "c76927af-f563-11e4-b32d-54ee7527188d",
95
+ "resourceVersion": "3556",
96
+ "creationTimestamp": "2015-05-08T09:22:42Z",
97
+ "labels": {
98
+ "component": "fabric8Console"
99
+ }
100
+ },
101
+ "spec": {
102
+ "volumes": [
103
+ {
104
+ "name": "openshift-cert-secrets",
105
+ "hostPath": null,
106
+ "emptyDir": null,
107
+ "gcePersistentDisk": null,
108
+ "gitRepo": null,
109
+ "secret": {
110
+ "secretName": "openshift-cert-secrets"
111
+ },
112
+ "nfs": null,
113
+ "iscsi": null,
114
+ "glusterfs": null
115
+ }
116
+ ],
117
+ "containers": [
118
+ {
119
+ "name": "fabric8-console-container",
120
+ "image": "fabric8/hawtio-kubernetes:latest",
121
+ "ports": [
122
+ {
123
+ "containerPort": 9090,
124
+ "protocol": "TCP"
125
+ }
126
+ ],
127
+ "env": [
128
+ {
129
+ "name": "OAUTH_CLIENT_ID",
130
+ "value": "fabric8-console"
131
+ },
132
+ {
133
+ "name": "OAUTH_AUTHORIZE_URI",
134
+ "value": "https://localhost:8443/oauth/authorize"
135
+ }
136
+ ],
137
+ "resources": {},
138
+ "volumeMounts": [
139
+ {
140
+ "name": "openshift-cert-secrets",
141
+ "readOnly": true,
142
+ "mountPath": "/etc/secret-volume"
143
+ }
144
+ ],
145
+ "terminationMessagePath": "/dev/termination-log",
146
+ "imagePullPolicy": "IfNotPresent",
147
+ "capabilities": {}
148
+ }
149
+ ],
150
+ "restartPolicy": "Always",
151
+ "dnsPolicy": "ClusterFirst",
152
+ "nodeName": "jimmi-redhat.localnet"
153
+ },
154
+ "status": {
155
+ "phase": "Running",
156
+ "Condition": [
157
+ {
158
+ "type": "Ready",
159
+ "status": "True"
160
+ }
161
+ ],
162
+ "hostIP": "172.17.42.1",
163
+ "podIP": "172.17.0.4",
164
+ "containerStatuses": [
165
+ {
166
+ "name": "fabric8-console-container",
167
+ "state": {
168
+ "running": {
169
+ "startedAt": "2015-05-09T13:33:38Z"
170
+ }
171
+ },
172
+ "lastState": {},
173
+ "ready": true,
174
+ "restartCount": 2,
175
+ "image": "fabric8/hawtio-kubernetes:latest",
176
+ "imageID": "docker://b2bd1a24a68356b2f30128e6e28e672c1ef92df0d9ec01ec0c7faea5d77d2303",
177
+ "containerID": "docker://49095a2894da899d3b327c5fde1e056a81376cc9a8f8b09a195f2a92bceed459"
178
+ },
179
+ {
180
+ "name": "POD",
181
+ "state": {
182
+ "termination": {
183
+ "exitCode": 0,
184
+ "startedAt": "2015-05-09T09:45:08Z",
185
+ "finishedAt": "2015-05-09T09:47:00Z"
186
+ }
187
+ },
188
+ "lastState": {},
189
+ "ready": false,
190
+ "restartCount": 1,
191
+ "image": "openshift/origin-pod:v0.4.4",
192
+ "imageID": "docker://81fa37a83ec46fed9dddf30a9c3c43f54bfe4b65dea74a4c152fd515a0bf92a8",
193
+ "containerID": "docker://9c8ed1a9bbb6d9804b12379654461dcd3b447438c02c52ca7f7d2504e14ae96b"
194
+ }
195
+ ]
196
+ }
197
+ }
198
+ http_version:
199
+ recorded_at: Sat, 09 May 2015 13:51:07 GMT
200
+ - request:
201
+ method: get
202
+ uri: https://localhost:8443/api/v1/namespaces/default
203
+ body:
204
+ encoding: US-ASCII
205
+ string: ''
206
+ headers:
207
+ Accept:
208
+ - "*/*; q=0.5, application/xml"
209
+ Accept-Encoding:
210
+ - gzip, deflate
211
+ User-Agent:
212
+ - Ruby
213
+ response:
214
+ status:
215
+ code: 200
216
+ message: OK
217
+ headers:
218
+ Content-Type:
219
+ - application/json
220
+ Date:
221
+ - Fri, 08 May 2015 10:35:37 GMT
222
+ Transfer-Encoding:
223
+ - chunked
224
+ body:
225
+ encoding: UTF-8
226
+ string: |-
227
+ {
228
+ "kind": "Namespace",
229
+ "apiVersion": "v1",
230
+ "metadata": {
231
+ "name": "default",
232
+ "selfLink": "/api/v1/namespaces/default",
233
+ "uid": "898268c8-4a36-11e5-9d81-42010af0194c",
234
+ "resourceVersion": "6",
235
+ "creationTimestamp": "2015-05-08T09:22:01Z"
236
+ },
237
+ "spec": {
238
+ "finalizers": [
239
+ "kubernetes"
240
+ ]
241
+ },
242
+ "status": {
243
+ "phase": "Active"
244
+ }
245
+ }
246
+ http_version:
247
+ recorded_at: Fri, 08 May 2015 10:35:37 GMT
248
+ recorded_with: VCR 2.9.3