Skip to content

Commit 18ac6a0

Browse files
committed
Add legacy vcap filtering [Finishes #159961631]
1 parent 895503c commit 18ac6a0

File tree

5 files changed

+84
-0
lines changed

5 files changed

+84
-0
lines changed

jobs/syslog_forwarder/spec

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ name: syslog_forwarder
44
templates:
55
pre-start.erb: bin/pre-start
66
syslog-release.conf.erb: config/syslog-release.conf
7+
syslog-release-vcap-filter.conf.erb: config/syslog-release-vcap-filter.conf
78
syslog-release-custom-rules.conf.erb: config/syslog-release-custom-rules.conf
89
syslog-release-forwarding-rules.conf.erb: config/syslog-release-forwarding-rules.conf
910
syslog-release-forwarding-setup.conf.erb: config/syslog-release-forwarding-setup.conf
@@ -72,6 +73,18 @@ properties:
7273
example-custom-rules.md
7374
at the top level of the release repo.
7475
default: ""
76+
syslog.filter_legacy_vcap_messages:
77+
description: >
78+
Drop messages with an app name that starts with "vcap."
79+
This is intended to prevent near-identical duplicates
80+
when using forward_files with legacy Cloud Foundry jobs,
81+
which generally use tee to send logs to syslog directly
82+
in addition to writing them to the filesystem.
83+
This should probably be set to true
84+
in any deployment of Cloud Foundry Application Runtime.
85+
This may be on by default in the future,
86+
though this would be a breaking/major version change.
87+
default: false
7588

7689
syslog.tls_enabled:
7790
description: Set this to true to enable TLS.

jobs/syslog_forwarder/templates/pre-start.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ chmod 0644 /etc/rsyslog.d/30-syslog-release-custom-rules.conf
2929
# We remove the custom rule if it is not valid in the context of the rsyslog config.
3030
rsyslogd -N1 || (echo 'Custom rule configuration invalid' && rm /etc/rsyslog.d/30-syslog-release-custom-rules.conf)
3131

32+
cp $(dirname $0)/../config/syslog-release-vcap-filter.conf /etc/rsyslog.d/32-syslog-release-vcap-filter.conf
33+
chmod 0644 /etc/rsyslog.d/32-syslog-release-vcap-filter.conf
34+
3235
cp $(dirname $0)/../config/syslog-release-forwarding-rules.conf /etc/rsyslog.d/35-syslog-release-forwarding-rules.conf
3336
chmod 0644 /etc/rsyslog.d/35-syslog-release-forwarding-rules.conf
3437

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<% unless p('syslog.migration.disabled') || !p('syslog.filter_legacy_vcap_messages') %>
2+
if ($programname startswith "vcap.") then stop
3+
<% end %>

tests/acceptance_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,31 @@ var _ = Describe("Forwarding loglines to a TCP syslog drain", func() {
202202
})
203203
})
204204

205+
var _ = Describe("Optional features to reduce CF log volume", func() {
206+
AfterEach(func() {
207+
Cleanup()
208+
})
209+
210+
Context("when vcap filtering is enabled to eliminate duplication", func() {
211+
BeforeEach(func() {
212+
Cleanup()
213+
Deploy("manifests/vcap-filtering.yml")
214+
})
215+
It("filters logs from the vcap side of the tee while forwarding other logs", func() {
216+
By("continuing to forward logs from the filesystem")
217+
fileMessage := "Old-style CF tee-based message, file side"
218+
Eventually(WriteToTestFile(fileMessage)).Should(gbytes.Say(fileMessage))
219+
220+
By("not forwarding logs written as vcap. user")
221+
loggerMessage := "Old-style CF tee-based message, logger side"
222+
SendLogMessage(loggerMessage)
223+
Consistently(func() string {
224+
return ForwardedLogs()
225+
}).ShouldNot(ContainSubstring(loggerMessage))
226+
})
227+
})
228+
})
229+
205230
var _ = Describe("When syslog is configured to run in unprivileged mode", func() {
206231
BeforeEach(func() {
207232
Cleanup()

tests/manifests/vcap-filtering.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
name: ((deployment))
3+
releases:
4+
- name: syslog
5+
version: latest
6+
stemcells:
7+
- alias: default
8+
os: ((stemcell-os))
9+
version: latest
10+
instance_groups:
11+
- name: forwarder
12+
instances: 1
13+
vm_type: default
14+
stemcell: default
15+
networks:
16+
- name: default
17+
azs:
18+
- z1
19+
jobs:
20+
- name: syslog_forwarder
21+
release: syslog
22+
properties:
23+
syslog:
24+
filter_legacy_vcap_messages: true
25+
- name: storer
26+
instances: 1
27+
vm_type: default
28+
stemcell: default
29+
networks:
30+
- name: default
31+
azs:
32+
- z1
33+
jobs:
34+
- name: syslog_storer
35+
release: syslog
36+
update:
37+
canaries: 1
38+
max_in_flight: 1
39+
canary_watch_time: 1000-60000
40+
update_watch_time: 1000-60000

0 commit comments

Comments
 (0)