1-
21var https = require ( 'https' ) ;
32var zlib = require ( 'zlib' ) ;
43
@@ -7,16 +6,17 @@ exports.handler = function(event, context) {
76 // Remember to change the hostname and path to match your collection API and specific HTTP-source endpoint
87 // See more at: https://service.sumologic.com/help/Default.htm#Collector_Management_API.htm
98 ///////////////////////////////////////////////////////////////////////////////////////////////////////////
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+ } ;
1414 var zippedInput = new Buffer ( event . awslogs . data , 'base64' ) ;
1515
1616 zlib . gunzip ( zippedInput , function ( e , buffer ) {
1717 if ( e ) { context . fail ( e ) ; }
1818
19- awslogsData = JSON . parse ( buffer . toString ( 'ascii' ) ) ;
19+ var awslogsData = JSON . parse ( buffer . toString ( 'ascii' ) ) ;
2020
2121 console . log ( awslogsData ) ;
2222
@@ -25,31 +25,48 @@ exports.handler = function(event, context) {
2525 context . succeed ( "Success" ) ;
2626 }
2727
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+ } ;
3940
40- stream = awslogsData . logStream ;
41- group = awslogsData . logGroup ;
42-
43- curRequestID = null ;
4441 var re = new RegExp ( / R e q u e s t I d : ( \S + ) / ) ;
4542 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 ;
4666 val . logStream = stream ;
4767 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 ) ) ;
5269 } ) ;
53- req . end ( ) ;
70+
5471 } ) ;
5572} ;
0 commit comments