Created
August 14, 2019 17:03
-
-
Save ppshein/ed3294e5a447e3e9ff3e63128217dafb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var AWS = require("aws-sdk"); | |
var lambda = new AWS.Lambda({ | |
region: 'ap-southeast-1' | |
}); | |
function mongodbMonitorResult() { | |
return new Promise(function(resolve, reject) { | |
lambda.invoke({ | |
FunctionName: process.env.MongoMonitorLambdaARN, | |
Payload: null | |
}, function(error, data) { | |
if (error) { | |
reject(error); | |
} | |
if(data.Payload) { | |
resolve(data.Payload); | |
} | |
}); | |
}); | |
} | |
function transformMongodbObject(members) { | |
let membersObject = JSON.parse(members); | |
let cwMetrics = []; | |
membersObject.map(member => { | |
if (member.health !== 1) { | |
let deadCluster = "Following MongoDB cluster " + member.name + "(" + member.stateStr + ") is not working anymore."; | |
cwMetrics.push(deadCluster); | |
} | |
}); | |
return cwMetrics; | |
} | |
function sendSNSEmail(eventText) { | |
if (eventText.length > 0) { | |
let message = ""; | |
eventText.map((text) => { | |
message = message + text + "\n"; | |
}); | |
let params = { | |
Message: message, | |
Subject: 'MongoDB Replica Status from Lambda', | |
TopicArn: process.env.TopicARN | |
}; | |
let publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise(); | |
return publishTextPromise.then((data) => { | |
return data.MessageId; | |
}).catch((err) => { | |
return err.stack; | |
}); | |
} else { | |
return 0; | |
} | |
} | |
exports.handler = function(event, context, callback) { | |
mongodbMonitorResult().then(transformMongodbObject).then(sendSNSEmail).then((result) => { | |
callback(null, 'success => ' + result); | |
}).catch((err) => { | |
callback(Error(err)); | |
}) | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment