Kuidas rakendada AWS Lambda logi koondamist

Saatke Lambda-funktsioonide logid logide liitmise teenusele, näiteks Logz.io

Lambda funktsiooni täitmise ajal hõivab Lambda kõik, mida kirjutate stdout-i (näiteks kasutades console.log-i Node.js-is) ja saadetakse taustal asünkroonselt CloudWatchi logidesse. Ja teeb seda ilma, et teie funktsiooni täitmise ajale lisanduks üldkulusid.

Kõigi Lambda funktsioonide logid leiate CloudWatchi logidest. Iga funktsiooni jaoks on ainulaadne logigrupp. Iga logirühm koosneb siis paljudest logivoogudest, üks funktsiooni iga samaaegselt täidetava eksemplari kohta.

Logiid CloudWatchi logidesse saate ise saata toimingu PutLogEvents kaudu. Või võite saata need oma eelistatud logide liitmise teenusesse, näiteks Splunk või Elasticsearch.

Kuid pidage meeles, et funktsiooni kutsumise ajal tuleb kõike teha. Kui teete kutsumise ajal täiendavaid võrgukõnesid, maksate selle täiendava täitmisaja eest. Samuti peaksid kasutajad ootama kauem, kuni API reageerib.

Need täiendavad võrgukõned võivad lisada ainult 10–20 ms kutsumise kohta. Kuid teil on mikroteenuseid ja ühe kasutaja toiming võib hõlmata mitut API-kõnet. Need 10–20 ms API-kõne kohta võivad ühendada ja lisada teie kasutajaga seotud latentsusaega üle 100 ms, mis on Amazoni andmetel piisav, et vähendada müüki 1%.

Ärge siis tehke seda!

Selle asemel töötlege CloudWatchi logide logisid pärast seda.

CloudWatchi logide konsoolis saate valida logigrupi ja voogesitada andmeid otse Amazoni hostitud Elasticsearchi teenusesse.

See on väga kasulik, kui kasutate juba hostitud Elasticsearchi teenust. Kui aga hindate endiselt oma võimalusi, siis lugege seda postitust enne AWS-i hostitud Elasticsearchi kasuks otsustamist.

Samuti saate logisid voogesitada Lambda-funktsiooni. CloudWatchi logide edastamiseks teistele logide liitmise teenustele on olemas isegi mitu Lambda-funktsiooni joonist.

Ilmselt on see midagi, mida paljud AWS-i kliendid on palunud.

CloudWatchi logide saatmiseks sumologicusse, Splunkisse ja Logglysse leiate kastid ruutudest.

Nende jooniste abil saate kirjutada funktsiooni Lambda, mis edastab CloudWatchi logid teie eelistatud logide liitmise teenusele. Kuid siin on veel mõned asjad, mida tuleks meeles pidada.

Kui loote uue funktsiooni Lambda, loob see CloudWatchi logides uue logirühma. Soovite vältida logigruppide logimisfunktsiooni tellimise käsitsiprotsessi.

Selle asemel lubage CloudTrail ja seadistage siis CloudWatchi sündmustes sündmusmuster, et kutsuda logigrupi loomisel esile mõni teine ​​Lambda funktsioon.

Seda ühekordset seadistamist saate teha CloudWatchi konsoolis.

Sobige CloudWatchi logides üles CreateLogGroup API-kõne ja käivitage funktsioon subscribe-log-group Lambda. See funktsioon tellib uue logirühma logi saatmise funktsiooni jaoks.

Kui töötate mitme AWS-kontoga, peaksite vältima seadistamise käsitsi muutmist. Serverita raamistiku abil saate selle abonendi-logigrupi funktsiooni sündmuse allika seadistada serverless.yml.

Veel üks asi, mida tuleks meeles pidada, on see, et peate vältima laevalogide funktsiooni logigrupi endale tellimist. See loob lõpmatu kutsumissilmuse ja see on valus õppetund, mida soovite vältida.

Üks asi veel.

Kui Lambda loob teie funktsiooni jaoks uue logirühma, on vaikimisi seatud säilituspoliitika väärtuseks kunagi aeguda. See on liiga suur osakaal, kuna andmesalvestuskulud võivad aja jooksul suureneda. Samuti pole tarvis, kui saadate palke juba mujale!

Vaikimisi hoitakse teie Lambda funktsioonide logisid CloudWatchi logides igavesti

Saame ülaltoodud tehnikat rakendada ja lisada veel ühe Lambda funktsiooni, et uuendada säilituspoliitikat millegi mõistlikuma jaoks.

Siin on Lambda funktsioon logi säilitamise eeskirjade automaatseks värskendamiseks 30 päevale.

Kui teil on juba palju olemasolevaid logirühmi, kaaluge nende kõigi värskendamiseks ühekordsete skriptide kirjutamist. Seda saate teha, korrates uuesti kõiki logirühmi, kasutades API-kõne DescribeLogGroups.

Kui teil on huvi neid tehnikaid ise rakendada, olen koostanud teile lihtsa demoprojekti. Kui järgite README juhiseid ja funktsioone juurutate, toimetatakse kõik teie Lambda funktsioonide logid Logz.io.