Skip to content

Commit 3ba8c21

Browse files
committed
Merge branch 'feature/SCFF-37' into develop
2 parents 631ba29 + a7ae3bd commit 3ba8c21

3 files changed

Lines changed: 53 additions & 12 deletions

File tree

main.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ var (
3131
tickerTime, errT = time.ParseDuration("60s") //Default
3232
eventsBatchSize = kingpin.Flag("log-events-batch-size", "Log Events Batch Size").OverrideDefaultFromEnvar("LOG_EVENTS_BATCH_SIZE").Int()
3333
sumoPostMinimumDelay = kingpin.Flag("sumo-post-minimum-delay", "Sumo Post Minimum Delay").OverrideDefaultFromEnvar("SUMO_POST_MINIMUM_DELAY").Duration()
34+
sumoCategory = kingpin.Flag("sumo-category", "Sumo Category").Default("").OverrideDefaultFromEnvar("SUMO_CATEGORY").String()
35+
sumoName = kingpin.Flag("sumo-name", "Sumo Name").Default("").OverrideDefaultFromEnvar("SUMO_NAME").String()
36+
sumoClient = kingpin.Flag("sumo-client", "Sumo Client").Default("").OverrideDefaultFromEnvar("SUMO_CLIENT").String()
3437
)
3538

3639
var (
@@ -78,7 +81,7 @@ func main() {
7881

7982
logging.Info.Println("Creating queue")
8083
queue := eventQueue.NewQueue(make([]*events.Event, 100))
81-
loggingClientSumo := sumoCFFirehose.NewSumoLogicAppender(*sumoEndpoint, 1000, &queue, *eventsBatchSize, *sumoPostMinimumDelay)
84+
loggingClientSumo := sumoCFFirehose.NewSumoLogicAppender(*sumoEndpoint, 1000, &queue, *eventsBatchSize, *sumoPostMinimumDelay, *sumoCategory, *sumoName, *sumoClient)
8285
go loggingClientSumo.Start() //multi
8386

8487
logging.Info.Println("Creating Events")

sumoCFFirehose/sumoLogicAppender.go

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bytes"
55
"compress/gzip"
66
"errors"
7-
"fmt"
87
"net/http"
98
"runtime"
109
"time"
@@ -22,6 +21,9 @@ type SumoLogicAppender struct {
2221
eventsBatchSize int
2322
sumoPostMinimumDelay time.Duration
2423
timerBetweenPost time.Time
24+
sumoCategory string
25+
sumoName string
26+
sumoClient string
2527
}
2628

2729
type SumoBuffer struct {
@@ -30,14 +32,17 @@ type SumoBuffer struct {
3032
timerIdlebuffer time.Time
3133
}
3234

33-
func NewSumoLogicAppender(urlValue string, connectionTimeoutValue int, nozzleQueue *eventQueue.Queue, eventsBatchSize int, sumoPostMinimumDelay time.Duration) *SumoLogicAppender {
35+
func NewSumoLogicAppender(urlValue string, connectionTimeoutValue int, nozzleQueue *eventQueue.Queue, eventsBatchSize int, sumoPostMinimumDelay time.Duration, sumoCategory string, sumoName string, sumoClient string) *SumoLogicAppender {
3436
return &SumoLogicAppender{
3537
url: urlValue,
3638
connectionTimeout: connectionTimeoutValue,
3739
httpClient: http.Client{Timeout: time.Duration(connectionTimeoutValue * int(time.Millisecond))},
3840
nozzleQueue: nozzleQueue,
3941
eventsBatchSize: eventsBatchSize,
4042
sumoPostMinimumDelay: sumoPostMinimumDelay,
43+
sumoCategory: sumoCategory,
44+
sumoName: sumoName,
45+
sumoClient: sumoClient,
4146
}
4247
}
4348

@@ -115,7 +120,6 @@ func (s *SumoLogicAppender) AppendLogs(buffer *SumoBuffer) {
115120
}
116121

117122
func (s *SumoLogicAppender) SendToSumo(logStringToSend string) {
118-
119123
var buf bytes.Buffer
120124
g := gzip.NewWriter(&buf)
121125
g.Write([]byte(logStringToSend))
@@ -131,8 +135,19 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string) {
131135
logging.Error.Printf("http.NewRequest() error: %v\n", err)
132136
return
133137
}
138+
134139
request.Header.Add("Content-Encoding", "gzip")
135-
//request.SetBasicAuth("admin", "admin")
140+
141+
if s.sumoName != "" {
142+
request.Header.Add("X-Sumo-Name", s.sumoName)
143+
}
144+
if s.sumoClient != "" {
145+
request.Header.Add("X-Sumo-Client", s.sumoClient)
146+
}
147+
if s.sumoCategory != "" {
148+
request.Header.Add("X-Sumo-Category", s.sumoCategory)
149+
}
150+
136151
response, err := s.httpClient.Do(request)
137152

138153
if (err != nil) || (response.StatusCode != 200 && response.StatusCode != 302 && response.StatusCode < 500) {
@@ -148,17 +163,25 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string) {
148163
logging.Error.Printf("http.NewRequest() error: %v\n", err)
149164
}
150165
request.Header.Add("Content-Encoding", "gzip")
166+
167+
if s.sumoName != "" {
168+
request.Header.Add("X-Sumo-Name", s.sumoName)
169+
}
170+
if s.sumoClient != "" {
171+
request.Header.Add("X-Sumo-Client", s.sumoClient)
172+
}
173+
if s.sumoCategory != "" {
174+
request.Header.Add("X-Sumo-Category", s.sumoCategory)
175+
}
151176
response, errRetry = s.httpClient.Do(request)
152177
if errRetry != nil {
153178
logging.Error.Printf("http.Do() error: %v\n", errRetry)
154179
logging.Info.Println("Waiting for 300 ms to retry after error")
155-
fmt.Println(attempt)
156180
time.Sleep(300 * time.Millisecond)
157181
return attempt < 5, errRetry
158182
} else if response.StatusCode != 200 && response.StatusCode != 302 && response.StatusCode < 500 {
159183
logging.Info.Println("Endpoint dropped the post send again")
160184
logging.Info.Println("Waiting for 300 ms to retry after a retry ...")
161-
fmt.Println(attempt)
162185
statusCode = response.StatusCode
163186
time.Sleep(300 * time.Millisecond)
164187
return attempt < 5, errRetry

tile.yml

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ properties:
2626

2727

2828
packages:
29-
- name: my-application
29+
- name: sumo-logic-nozzle
3030
type: app
3131
manifest:
3232
# any options that you would normally specify in a cf manifest.yml, including</i>
@@ -40,17 +40,32 @@ packages:
4040

4141
forms:
4242
- name: sumo-logic-config
43-
label: Sumo Destination
44-
description: Sumo target configuration
43+
label: Sumo Logic Settings
44+
description: Sumo Logic Settings details
4545
properties:
4646
- name: sumo-endpoint
4747
type: string
4848
label: Sumo Logic Endpoint
4949
description: Sumo Logic Endpoint to send logs to
50+
- name: sumo-category
51+
type: string
52+
label: Sumo Logic Category
53+
description: Sumo Logic Category metadata
54+
optional: true
55+
- name: sumo-name
56+
type: string
57+
label: Sumo Logic Name
58+
description: Sumo Logic Name metadata
59+
optional: true
60+
- name: sumo-client
61+
type: string
62+
label: Sumo Logic Client
63+
description: Sumo Logic Client metadata
64+
optional: true
5065

5166
- name: cf-config
5267
label: Cloud Foundry Settings
53-
description: Cloud Foundry connection details
68+
description: Cloud Foundry Settings details
5469
properties:
5570
- name: cloudfoundry-user
5671
type: string
@@ -71,6 +86,6 @@ forms:
7186
optional: true
7287
- name: sumo-post-minimum-delay
7388
type: string
74-
label: sumo-post-minimum-delay
89+
label: Sumo Logic Post Minimum Delay
7590
description: delay between post to Sumo Logic
7691
optional: true

0 commit comments

Comments
 (0)