in source/networkFirewallAutomation/lib/common/send-metrics.ts [32:79]
static async sendMetrics(data: NetworkFirewallMetrics) {
const ssmParameterForUUID = process.env.SSM_PARAM_FOR_UUID ? process.env.SSM_PARAM_FOR_UUID : "network-firewall-solution-uuid"
const stackId = process.env.STACK_ID ? process.env.STACK_ID.slice(process.env.STACK_ID.length - 36) : ""
const sendAnonymousMetrics = process.env.SEND_ANONYMOUS_METRICS ? process.env.SEND_ANONYMOUS_METRICS : "No"
let uuid = ""
const ssmUUIDKey = `${ssmParameterForUUID}-${stackId}`
try {
if (sendAnonymousMetrics.toUpperCase() === "YES") {
let ssmInstance = new SSM();
let ssmGetParamResponse;
try {
ssmGetParamResponse = await ssmInstance.getParameter({
Name: ssmUUIDKey,
}).promise();
uuid = ssmGetParamResponse.Parameter?.Value ? ssmGetParamResponse.Parameter?.Value : uuidv4();
} catch (error) {
if (error["code"] = "ParameterNotFound") {
uuid = uuidv4();
await ssmInstance.putParameter({
Name: ssmUUIDKey,
Value: uuid,
Type: "String"
}).promise();
}
}
Logger.log(LOG_LEVEL.DEBUG, "uuid: ", uuid)
const metricsUrl: string = process.env.METRICS_URL ? process.env.METRICS_URL : ""
const solutionId: string | undefined = process.env.SOLUTION_ID
const timestamp = (new Date()).toISOString()
data.logDestinationType = process.env.LOG_DESTINATION_TYPE
data.logType = process.env.LOG_TYPE
const metrics_data = {
'Solution': solutionId,
'TimeStamp': timestamp,
'UUID': uuid,
'Data': data
}
Logger.log(LOG_LEVEL.DEBUG, "metrics data: ", metrics_data)
const response = await axios.post(metricsUrl, metrics_data, {
headers: {
'Content-Type': 'application/json',
'Content-Length': JSON.stringify(data).length
}
})
Logger.log(LOG_LEVEL.DEBUG, 'Response: ', response)
}
} catch (error) { }
}