У меня есть требование отправлять журналы из группы журналов наблюдения за облаком в экземпляр Application Insights по мере того, как он регистрируется в группе журналов.Я пытаюсь сделать это, добавив группу журналов наблюдения за облаком в качестве триггера для моей лямбды, и внутри своей лямбды я использую библиотеку аналитики приложения, чтобы отправить событие в экземпляр AI.
Когда тайм-аут выполнения по умолчанию для моей лямбды составляет 3 секунды, я не могу видеть никаких журналов внутри моего экземпляра AI. Моя лямбда успешно выполняется и завершается через 2-3 секунды.Когда я увеличиваю тайм-аут до 20 секунд, я вижу, как логи заполняются в AI, и моя лямбда выполняется в течение 15-17 секунд.
Насколько я понимаю, клиент телеметрии AI отправляет данные в пакетном режиме и временно сохраняет их вдиск до его отправки.Поскольку ресурсы для лямбды выводятся из эксплуатации после ее выполнения, я могу потерять эти события, поскольку они еще не были вытеснены.
Как я могу гарантировать, что клиент телеметрии AI не будет пакетировать эти события и отправлять их, как только он их получит?
Ниже приведен мой лямбда-код
exports.handler = (event, context, callback) => {
var zlib = require("zlib");
var appInsights = require("applicationinsights");
appInsights.setup("<My Subscription Key>").setUseDiskRetryCaching(false);;
var client = appInsights.defaultClient;
// TODO implement
var payload = new Buffer.from(event.awslogs.data, 'base64');
zlib.gunzip(payload, function(err, dezipped) {
if (!err) {
client.trackEvent({ name: dezipped.toString() });
}
});
client.flush();
};
Какой-либо другой подход или лучшая практика, которой я должен следовать для достижения своей цели?