1
-
2
1
var https = require ( 'https' ) ;
3
2
var zlib = require ( 'zlib' ) ;
4
3
@@ -7,16 +6,17 @@ exports.handler = function(event, context) {
7
6
// Remember to change the hostname and path to match your collection API and specific HTTP-source endpoint
8
7
// See more at: https://service.sumologic.com/help/Default.htm#Collector_Management_API.htm
9
8
///////////////////////////////////////////////////////////////////////////////////////////////////////////
10
- var options = { 'hostname' : 'collectors.sumologic.com' ,
11
- 'path' : 'https://collectors.sumologic.com/receiver/v1/http/<XXX>' ,
12
- 'method' : 'POST'
13
- } ;
9
+ var options = {
10
+ 'hostname' : 'collectors.sumologic.com' ,
11
+ 'path' : 'https://collectors.sumologic.com/receiver/v1/http/<XXX>' ,
12
+ 'method' : 'POST'
13
+ } ;
14
14
var zippedInput = new Buffer ( event . awslogs . data , 'base64' ) ;
15
15
16
16
zlib . gunzip ( zippedInput , function ( e , buffer ) {
17
17
if ( e ) { context . fail ( e ) ; }
18
18
19
- awslogsData = JSON . parse ( buffer . toString ( 'ascii' ) ) ;
19
+ var awslogsData = JSON . parse ( buffer . toString ( 'ascii' ) ) ;
20
20
21
21
console . log ( awslogsData ) ;
22
22
@@ -25,31 +25,48 @@ exports.handler = function(event, context) {
25
25
context . succeed ( "Success" ) ;
26
26
}
27
27
28
- var req = https . request ( options , function ( res ) {
29
- var body = '' ;
30
- console . log ( 'Status:' , res . statusCode ) ;
31
- res . setEncoding ( 'utf8' ) ;
32
- res . on ( 'data' , function ( chunk ) { body += chunk ; } ) ;
33
- res . on ( 'end' , function ( ) {
34
- console . log ( 'Successfully processed HTTPS response' ) ;
35
- context . succeed ( ) ; } ) ;
36
- } ) ;
37
-
38
- req . on ( 'error' , context . fail ) ;
28
+ var requestsSent = 0 ;
29
+ var requestsFailed = 0 ;
30
+ var finalizeContext = function ( ) {
31
+ var tot = requestsSent + requestsFailed ;
32
+ if ( tot == awslogsData . logEvents . length ) {
33
+ if ( requestsFailed > 0 ) {
34
+ context . fail ( requestsFailed + " / " + tot + " events failed" ) ;
35
+ } else {
36
+ context . succeed ( requestsSent + " requests sent" ) ;
37
+ }
38
+ }
39
+ } ;
39
40
40
- stream = awslogsData . logStream ;
41
- group = awslogsData . logGroup ;
42
-
43
- curRequestID = null ;
44
41
var re = new RegExp ( / R e q u e s t I d : ( \S + ) / ) ;
45
42
awslogsData . logEvents . forEach ( function ( val , idx , arr ) {
43
+ var req = https . request ( options , function ( res ) {
44
+ var body = '' ;
45
+ console . log ( 'Status:' , res . statusCode ) ;
46
+ res . setEncoding ( 'utf8' ) ;
47
+ res . on ( 'data' , function ( chunk ) { body += chunk ; } ) ;
48
+ res . on ( 'end' , function ( ) {
49
+ console . log ( 'Successfully processed HTTPS response' ) ;
50
+ requestsSent ++ ;
51
+ finalizeContext ( ) ;
52
+ } ) ;
53
+ } ) ;
54
+
55
+ req . on ( 'error' , function ( e ) {
56
+ console . log ( e . message )
57
+ requestsFailed ++ ;
58
+ finalizeContext ( ) ;
59
+ } ) ;
60
+
61
+ var stream = awslogsData . logStream ;
62
+ var group = awslogsData . logGroup ;
63
+ var rs = re . exec ( val . message ) ;
64
+
65
+ val . requestID = ( rs !== null ) ? rs [ 1 ] : null ;
46
66
val . logStream = stream ;
47
67
val . logGroup = group ;
48
- var rs = re . exec ( val . message ) ;
49
- if ( rs !== null ) { curRequestID = rs [ 1 ] ; }
50
- val . requestID = curRequestID ;
51
- req . write ( JSON . stringify ( val ) + '\n' ) ;
68
+ req . end ( JSON . stringify ( val ) ) ;
52
69
} ) ;
53
- req . end ( ) ;
70
+
54
71
} ) ;
55
72
} ;
0 commit comments