lambda-monitor
Version:
Lambda log monitoring and streaming to external services.
29 lines (27 loc) • 1.03 kB
JavaScript
import datadogDistributionMetric from '../singleton/datadog-distribution-metric.js';
export default (context, logs) => {
logs.forEach((log) => {
Object.entries({
// todo: not perfect since in theory the function could finish
timeout: log.timeout * 1000 <= log.initDuration + log.duration ? 1 : undefined,
init_duration: log.initDuration,
execution_duration: log.duration,
memory_percentage: (log.maxMemory * 100) / log.memory,
execution_duration_percentage: (log.duration * 100) / (log.timeout * 1000),
code_size: log.codeSize
})
.filter(([key, value]) => ![null, undefined, NaN, Infinity].includes(value))
.forEach(([key, value]) => {
datadogDistributionMetric.enqueue(
`aws.lambda_monitor.lambda.${key.toLowerCase()}`,
{ [Date.parse(log.timestamp)]: value },
{
tags: [
`logGroupName:${log.logGroupName}`,
`account:${log.owner}`
]
}
);
});
});
};