Skip to content

Commit c5f4421

Browse files
authored
Merge pull request #68 from SumoLogic/SUMO-229789
Update Azure Function
2 parents 5c11622 + 6ec838c commit c5f4421

File tree

13 files changed

+178
-133
lines changed

13 files changed

+178
-133
lines changed

BlockBlobReader/target/consumer_build/BlobTaskConsumer/sumoclient.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,10 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
125125
var self = this;
126126
let curOptions = Object.assign({},this.options);
127127

128-
//this.context.log("Flush buffer for metaKey:"+metaKey);
128+
this.context.debug("Flush buffer for metaKey:"+metaKey);
129129

130130
function httpSend(messageArray,data) {
131131
return new Promise( (resolve,reject) => {
132-
//self.context.log("Inside HTTP Send");
133132
var req = https.request(curOptions, function (res) {
134133
var body = '';
135134
res.setEncoding('utf8');
@@ -155,7 +154,7 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
155154
});
156155
req.write(data);
157156
req.end();
158-
});
157+
});
159158
}
160159

161160
if (targetBuffer) {
@@ -176,10 +175,10 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
176175

177176
return zlib.gzip(msgArray.join('\n'),function(e,compressed_data){
178177
if (!e) {
179-
self.context.log("gzip successful");
178+
self.context.debug("gzip successful");
180179
return sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,compressed_data])
181180
.then(()=> {
182-
self.context.log("Succesfully sent " + self.messagesSent + " messages to Sumo");
181+
self.context.debug("Successfully sent to Sumo after "+self.MaxAttempts);
183182
self.success_callback(self.context);}
184183
)
185184
.catch((err) => {
@@ -194,7 +193,7 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
194193
self.context.log("Failed to gzip: " + JSON.stringify(e) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
195194
self.failure_callback(msgArray,self.context);
196195
}
197-
});
196+
});
198197
} else {
199198
//self.context.log('Send raw data to Sumo');
200199
return sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,msgArray.join('\n')])
@@ -253,7 +252,7 @@ function FlushFailureHandler (messageArray,ctx) {
253252
};
254253

255254
/**
256-
* Default built-in callback function to handle successful sents. It simply logs a success message
255+
* Default built-in callback function to handle successful sent. It simply logs a success message
257256
* @param ctx is a context variable that supports a log method
258257
* @constructor
259258
*/

BlockBlobReader/target/consumer_build/BlobTaskConsumer/sumometricclient.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
/**
33
* Created by duc on 6/30/17. This is a client for metric
44
*/
5-
var https = require('https');
6-
var zlib= require('zlib');
7-
var url = require('url');
5+
var https = require('node:https');
6+
var zlib = require('node:zlib');
7+
var url = require('node:url');
88

99
var sumoclient = require('./sumoclient');
1010
var bucket = require('./messagebucket');
@@ -119,7 +119,7 @@ SumoMetricClient.prototype.flushBucketToSumo = function(metaKey) {
119119
var self = this;
120120
let curOptions = Object.assign({},this.options);
121121

122-
this.context.log("Flush METRIC buffer for metaKey:"+metaKey);
122+
this.context.debug("Flush METRIC buffer for metaKey:"+metaKey);
123123

124124
function httpSend(messageArray,data) {
125125

@@ -170,11 +170,12 @@ SumoMetricClient.prototype.flushBucketToSumo = function(metaKey) {
170170
if (curOptions.compress_data) {
171171
curOptions.headers['Content-Encoding'] = 'gzip';
172172

173-
zlib.gzip(msgArray.join('\n'),function(e,compressed_data){
173+
return zlib.gzip(msgArray.join('\n'),function(e,compressed_data){
174174
if (!e) {
175+
self.context.debug("gzip successful");
175176
sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,compressed_data])
176177
.then(()=> {
177-
//self.context.log("Succesfully sent to Sumo after "+self.MaxAttempts);
178+
self.context.debug("Successfully sent to Sumo after "+self.MaxAttempts);
178179
self.success_callback(self.context);}
179180
)
180181
.catch((err) => {
@@ -184,20 +185,21 @@ SumoMetricClient.prototype.flushBucketToSumo = function(metaKey) {
184185
self.failure_callback(msgArray,self.context);
185186
});
186187
} else {
188+
self.messagesFailed += msgArray.length;
187189
self.messagesAttempted += msgArray.length;
188190
self.context.log("Failed to gzip: " + JSON.stringify(e) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
189191
self.failure_callback(msgArray,self.context);
190192
}
191193
});
192194
} else {
193195
//self.context.log('Send raw data to Sumo');
194-
sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,msgArray.join('\n')])
196+
return sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,msgArray.join('\n')])
195197
.then(()=> { self.success_callback(self.context);})
196-
.catch((err) => {
197-
self.messagesFailed += msgArray.length;
198-
self.messagesAttempted += msgArray.length;
199-
self.context.log("Failed to send after retries: " + self.MaxAttempts + " " + JSON.stringify(err) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
200-
self.failure_callback(msgArray,self.context);
198+
.catch((err) => {
199+
self.messagesFailed += msgArray.length;
200+
self.messagesAttempted += msgArray.length;
201+
self.context.log("Failed to send after retries: " + self.MaxAttempts + " " + JSON.stringify(err) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
202+
self.failure_callback(msgArray,self.context);
201203
});
202204
}
203205
}
@@ -215,7 +217,7 @@ function FlushFailureHandler (messageArray,ctx) {
215217
};
216218

217219
/**
218-
* Default built-in callback function to handle successful sents. It simply logs a success message
220+
* Default built-in callback function to handle successful sent. It simply logs a success message
219221
* @param ctx is a context variable that supports a log method
220222
* @constructor
221223
*/
@@ -227,5 +229,4 @@ module.exports = {
227229
SumoMetricClient:SumoMetricClient,
228230
FlushFailureHandler:FlushFailureHandler,
229231
DefaultSuccessHandler:DefaultSuccessHandler
230-
}
231-
232+
}

BlockBlobReader/target/dlqprocessor_build/DLQTaskConsumer/sumoclient.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,10 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
125125
var self = this;
126126
let curOptions = Object.assign({},this.options);
127127

128-
//this.context.log("Flush buffer for metaKey:"+metaKey);
128+
this.context.debug("Flush buffer for metaKey:"+metaKey);
129129

130130
function httpSend(messageArray,data) {
131131
return new Promise( (resolve,reject) => {
132-
//self.context.log("Inside HTTP Send");
133132
var req = https.request(curOptions, function (res) {
134133
var body = '';
135134
res.setEncoding('utf8');
@@ -155,7 +154,7 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
155154
});
156155
req.write(data);
157156
req.end();
158-
});
157+
});
159158
}
160159

161160
if (targetBuffer) {
@@ -176,10 +175,10 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
176175

177176
return zlib.gzip(msgArray.join('\n'),function(e,compressed_data){
178177
if (!e) {
179-
self.context.log("gzip successful");
178+
self.context.debug("gzip successful");
180179
return sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,compressed_data])
181180
.then(()=> {
182-
self.context.log("Succesfully sent " + self.messagesSent + " messages to Sumo");
181+
self.context.debug("Successfully sent to Sumo after "+self.MaxAttempts);
183182
self.success_callback(self.context);}
184183
)
185184
.catch((err) => {
@@ -194,7 +193,7 @@ SumoClient.prototype.flushBucketToSumo = function(metaKey) {
194193
self.context.log("Failed to gzip: " + JSON.stringify(e) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
195194
self.failure_callback(msgArray,self.context);
196195
}
197-
});
196+
});
198197
} else {
199198
//self.context.log('Send raw data to Sumo');
200199
return sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,msgArray.join('\n')])
@@ -253,7 +252,7 @@ function FlushFailureHandler (messageArray,ctx) {
253252
};
254253

255254
/**
256-
* Default built-in callback function to handle successful sents. It simply logs a success message
255+
* Default built-in callback function to handle successful sent. It simply logs a success message
257256
* @param ctx is a context variable that supports a log method
258257
* @constructor
259258
*/

BlockBlobReader/target/dlqprocessor_build/DLQTaskConsumer/sumometricclient.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
/**
33
* Created by duc on 6/30/17. This is a client for metric
44
*/
5-
var https = require('https');
6-
var zlib= require('zlib');
7-
var url = require('url');
5+
var https = require('node:https');
6+
var zlib = require('node:zlib');
7+
var url = require('node:url');
88

99
var sumoclient = require('./sumoclient');
1010
var bucket = require('./messagebucket');
@@ -119,7 +119,7 @@ SumoMetricClient.prototype.flushBucketToSumo = function(metaKey) {
119119
var self = this;
120120
let curOptions = Object.assign({},this.options);
121121

122-
this.context.log("Flush METRIC buffer for metaKey:"+metaKey);
122+
this.context.debug("Flush METRIC buffer for metaKey:"+metaKey);
123123

124124
function httpSend(messageArray,data) {
125125

@@ -170,11 +170,12 @@ SumoMetricClient.prototype.flushBucketToSumo = function(metaKey) {
170170
if (curOptions.compress_data) {
171171
curOptions.headers['Content-Encoding'] = 'gzip';
172172

173-
zlib.gzip(msgArray.join('\n'),function(e,compressed_data){
173+
return zlib.gzip(msgArray.join('\n'),function(e,compressed_data){
174174
if (!e) {
175+
self.context.debug("gzip successful");
175176
sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,compressed_data])
176177
.then(()=> {
177-
//self.context.log("Succesfully sent to Sumo after "+self.MaxAttempts);
178+
self.context.debug("Successfully sent to Sumo after "+self.MaxAttempts);
178179
self.success_callback(self.context);}
179180
)
180181
.catch((err) => {
@@ -184,20 +185,21 @@ SumoMetricClient.prototype.flushBucketToSumo = function(metaKey) {
184185
self.failure_callback(msgArray,self.context);
185186
});
186187
} else {
188+
self.messagesFailed += msgArray.length;
187189
self.messagesAttempted += msgArray.length;
188190
self.context.log("Failed to gzip: " + JSON.stringify(e) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
189191
self.failure_callback(msgArray,self.context);
190192
}
191193
});
192194
} else {
193195
//self.context.log('Send raw data to Sumo');
194-
sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,msgArray.join('\n')])
196+
return sumoutils.p_retryMax(httpSend,self.MaxAttempts,self.RetryInterval,[msgArray,msgArray.join('\n')])
195197
.then(()=> { self.success_callback(self.context);})
196-
.catch((err) => {
197-
self.messagesFailed += msgArray.length;
198-
self.messagesAttempted += msgArray.length;
199-
self.context.log("Failed to send after retries: " + self.MaxAttempts + " " + JSON.stringify(err) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
200-
self.failure_callback(msgArray,self.context);
198+
.catch((err) => {
199+
self.messagesFailed += msgArray.length;
200+
self.messagesAttempted += msgArray.length;
201+
self.context.log("Failed to send after retries: " + self.MaxAttempts + " " + JSON.stringify(err) + ' messagesAttempted: ' + self.messagesAttempted + ' messagesReceived: ' + self.messagesReceived);
202+
self.failure_callback(msgArray,self.context);
201203
});
202204
}
203205
}
@@ -215,7 +217,7 @@ function FlushFailureHandler (messageArray,ctx) {
215217
};
216218

217219
/**
218-
* Default built-in callback function to handle successful sents. It simply logs a success message
220+
* Default built-in callback function to handle successful sent. It simply logs a success message
219221
* @param ctx is a context variable that supports a log method
220222
* @constructor
221223
*/
@@ -227,5 +229,4 @@ module.exports = {
227229
SumoMetricClient:SumoMetricClient,
228230
FlushFailureHandler:FlushFailureHandler,
229231
DefaultSuccessHandler:DefaultSuccessHandler
230-
}
231-
232+
}

EventHubs/src/azuredeploy_metrics.json

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"contentVersion": "1.0.0.0",
44
"parameters": {
55
"sites_SumoMetricsFunctionApp_name": {
6-
"defaultValue": "[concat('SumoMetricsFunctionApp', uniqueString(resourceGroup().id))]",
6+
"defaultValue": "[concat('SumoMetricsFuncApp', uniqueString(resourceGroup().id))]",
77
"type": "String"
88
},
99
"namespaces_SumoMetNamespace_name": {
@@ -54,6 +54,10 @@
5454
"defaultValue": "[concat('SumoMetricsAppInsights', uniqueString(resourceGroup().id))]",
5555
"type": "String"
5656
},
57+
"logAnalyticsWorkspaceName": {
58+
"defaultValue": "[concat('SumoMetricsWorkspace', uniqueString(resourceGroup().id))]",
59+
"type": "String"
60+
},
5761
"location": {
5862
"type": "string",
5963
"defaultValue": "[resourceGroup().location]",
@@ -193,11 +197,13 @@
193197
"minTlsVersion": "1.2",
194198
"scmMinTlsVersion": "1.2",
195199
"appSettings": [
196-
{ "name": "FUNCTIONS_EXTENSION_VERSION", "value": "~1" },
200+
{ "name": "FUNCTIONS_EXTENSION_VERSION", "value": "~4" },
201+
{ "name": "FUNCTIONS_WORKER_RUNTIME", "value": "node"},
202+
{ "name": "WEBSITE_NODE_DEFAULT_VERSION", "value": "~18"},
197203
{ "name": "Project", "value": "EventHubs/target/metrics_build/" },
198-
{ "name": "AzureWebJobsStorage", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccounts_sumometapplogs_name'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_sumometapplogs_name')),'2022-09-01').keys[0].value)]" },
199-
{ "name": "APPINSIGHTS_INSTRUMENTATIONKEY", "value": "[reference(resourceId('microsoft.insights/components/', parameters('appInsightsName')), '2020-02-02').InstrumentationKey]" },
200-
{ "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value" : "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccounts_sumometapplogs_name'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_sumometapplogs_name')),'2022-09-01').keys[0].value)]"},
204+
{ "name": "AzureWebJobsStorage", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccounts_sumometapplogs_name'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_sumometapplogs_name')),'2022-09-01').keys[0].value,';EndpointSuffix=', parameters('storageEndpointSuffix'))]" },
205+
{ "name": "APPLICATIONINSIGHTS_CONNECTION_STRING", "value": "[reference(concat('microsoft.insights/components/', parameters('appInsightsName')), '2015-05-01').ConnectionString]" },
206+
{ "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value" : "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccounts_sumometapplogs_name'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_sumometapplogs_name')),'2022-09-01').keys[0].value,';EndpointSuffix=', parameters('storageEndpointSuffix'))]"},
201207
{ "name": "WEBSITE_CONTENTSHARE", "value": "[toLower(parameters('sites_SumoMetricsFunctionApp_name'))]" },
202208
{ "name": "FUNCTION_APP_EDIT_MODE", "value": "readwrite"},
203209
{ "name": "SumoLabsMetricEndpoint", "value": "[parameters('SumoEndpointURL')]" },
@@ -272,16 +278,37 @@
272278
"[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('namespaces_SumoMetNamespace_name'), parameters('eventhubs_insights_metrics_pt1m_name'))]"
273279
]
274280
},
281+
{
282+
"type": "microsoft.operationalinsights/workspaces",
283+
"apiVersion": "2022-10-01",
284+
"name": "[parameters('logAnalyticsWorkspaceName')]",
285+
"location": "[parameters('location')]",
286+
"properties": {
287+
"sku": {
288+
"name": "pergb2018"
289+
},
290+
"retentionInDays": 30,
291+
"features": {
292+
"enableLogAccessUsingOnlyResourcePermissions": true
293+
},
294+
"workspaceCapping": {
295+
"dailyQuotaGb": -1
296+
},
297+
"publicNetworkAccessForIngestion": "Enabled",
298+
"publicNetworkAccessForQuery": "Enabled"
299+
}
300+
},
275301
{
276302
"name": "[parameters('appInsightsName')]",
277303
"type": "Microsoft.Insights/components",
278304
"apiVersion": "2020-02-02",
279305
"location": "[parameters('location')]",
280306
"kind": "web",
281307
"properties": {
282-
"Application_Type": "web",
283-
"applicationId": "[parameters('appInsightsName')]"
284-
}
308+
"Application_Type": "web",
309+
"applicationId": "[parameters('appInsightsName')]",
310+
"WorkspaceResourceId": "[resourceId('microsoft.operationalinsights/workspaces', parameters('logAnalyticsWorkspaceName'))]"
311+
}
285312
}
286313
]
287314
}

0 commit comments

Comments
 (0)