Monitorowanie systemu AWS Lambda

Aby wyświetlić wielkości mierzone związane z programem AWS Lambda w interfejsie użytkownika Instana, należy zainstalować i skonfigurować agenta Instana AWS, który jest agentem hosta Instana działającym w specjalnym trybie AWS .

Aby wyświetlić śledzenie Lambda w interfejsie użytkownika Instana, należy dodać śledzenie Instana Lambda do funkcji AWS Lambda.

Monitorowanie produktu AWS Lambda wymaga zainstalowania agenta Instana AWS w środowisku AWS i zintegrowania śledzenia Instana Lambda z funkcjami produktu AWS Lambda.

Agent Instana AWS jest instalowany raz dla każdego konta i regionu AWS i monitoruje wszystkie funkcje Lambda AWS w tym koncie i regionie, a także inne usługi AWS . Więcej informacji na ten temat zawiera sekcja Monitorowanie usług Amazon Web Services (AWS) z agentem Amazon Web Services (AWS). Ten czujnik gromadzi metryki infrastruktury dla funkcji Lambda AWS . Do funkcji AWS Lambda należy również dodać moduł śledzenia Instana Lambda, aby gromadzić dane śledzenia z tej funkcji. W zależności od środowiska wykonawczego funkcji Lambda, śledzenie jest instalowane jako warstwa w funkcji Lambda AWS lub instrumentowane ręcznie.

Obsługiwane środowiska wykonawcze

Agent AWS

Agent AWS dla monitorowania Lambda gromadzi szczegóły wersji i wielkości mierzone dla wszystkich funkcji Lambda, niezależnie od środowiska wykonawczego.

AWS Śledzenie rodzime Lambda

AWS Śledzenie rodzime Lambda jest dostępne dla następujących środowisk wykonawczych:

  • Przejdź do wersji 1.x , używając opcji Go 1.8 lub nowszej
  • Java 8 (java8.al2) i Java 11 (java11)
  • Node.js 18.x, 16.x, 14.x, 12.xi 10.x
  • Python 3.9, 3.8i 3.7
  • Ruby 2.7
  • .NET 6 i nowsze

Konfigurowanie monitorowania systemu AWS Lambda

Aby monitorować funkcje Lambda AWS za pomocą Instana, wykonaj następujące kroki:

  1. Skonfiguruj agenta AWS dla monitorowania Lambda.
  2. Zainstaluj śledzenie Instana Lambda w funkcji Lambda.
  3. Opcjonalnie: skonfiguruj dodatkowe ustawienia dla śledzenia Instana Lambda.

Konfigurowanie agenta AWS do monitorowania Lambda

Aby skonfigurować agenta AWS , wykonaj następujące kroki:

  1. Skonfiguruj agenta AWS dla monitorowania AWS Lambda.
  2. Jeśli jest to wymagane, użyj konfiguracji proxy.

Więcej informacji na ten temat zawiera sekcja Konfigurowanie agenta AWS dla monitorowania Lambda.

Instalowanie znaczników Instana Lambda w funkcjach AWS Lambda

Aby przechwycić dane śledzenia (dane na poziomie żądania) i wysłać je do zaplecza Instana, należy zainstalować specyficzne dla środowiska wykonawczego znaczniki Instana Lambda w funkcjach Lambda AWS . Aby zainstalować znaczniki Instana Lambda w funkcjach AWS Lambda, należy zapoznać się z instrukcjami instalowania dla następujących środowisk wykonawczych:

Opcjonalnie: konfigurowanie dodatkowych ustawień dla znaczników Instana Lambda

Opcjonalne zmienne środowiskowe, które są zwykle obsługiwane w rodzimym śledzeniu Lambda, można skonfigurować zgodnie z opisem w poniższej tabeli:

Uwaga: Nie należy ustawiać zmiennej INSTANA_DISABLE_CA_CHECK na wartość true , chyba że użytkownik korzysta z usługi Instana w siedzibie i nie jest w stanie obsługiwać zaplecza usługi Instana przy użyciu certyfikatu ze znanym głównym ośrodkiem certyfikacji (CA). Jeśli ta zmienna zostanie włączona, lambda będzie podatna na ataki MITM (Man in the Middle) dla tego połączenia.

Zmienne środowiskowe Opis
INSTANA_TIMEOUT Ustaw limit czasu dla żądań HTTP, które zgłaszają dane do zaplecza Instana.
INSTANA_ENDPOINT_PROXY Ustaw tę zmienną na wartość http://my-proxy.tld lub http://user:password@my-proxy.tld , aby kierować raportowanie danych do zaplecza Instana za pośrednictwem proxy HTTP lub HTTPS (obsługiwane w środowisku Node.js, a nie w środowisku Python).
INSTANA_EXTRA_HTTP_HEADERS Ustaw tę zmienną na rozdzielaną średnikami listę nazw nagłówków HTTP (dla typów wyzwalaczy bramy API z integracją proxy Lambda lub systemem równoważenia obciążenia aplikacji), aby przechwytywać nagłówki HTTP.
INSTANA_SERVICE_NAME Zdefiniuj nazwę usługi niestandardowej.
INSTANA_LOG_LEVEL Ustaw poziom rejestrowania dla pakietu Instana. Możliwe wartości to debug, info, warni error (wartość domyślna: info).
INSTANA_DEBUG Ustaw tę zmienną na dowolną wartość, aby ustawić poziom rejestrowania na debug.
INSTANA_DISABLE_CA_CHECK Ustaw tę zmienną na wartość true , aby wyłączyć sprawdzanie certyfikatu serwera na liście ośrodków certyfikacji (CA) dołączonej do środowiska wykonawczego Lambda podczas nawiązywania połączenia z zapleczem Instana. (Dostępne dla warstwy @instana/aws-lambda@1.93.0/w wersji 25 i nowszych)

Wyświetlanie konfiguracji funkcji Lambda, pomiarów, wersji i wyzwalaczy

Wszystkie informacje na temat funkcji Lambda można przeglądać na Instana.

Aby wyświetlić atrybuty HTTP, wyzwalacze, wielkości mierzone i szczegóły wersji dla funkcji Lambda, wykonaj następujące kroki:

  1. Na pasku bocznym interfejsu użytkownika Instana wybierz opcję Infrastruktura.
  2. Kliknij określoną monitorowaną funkcję Lambda.

Można wyświetlić panel kontrolny hosta ze wszystkimi zgromadzonymi wielkościami mierzonymi i wersjami Lambda. Więcej informacji na ten temat zawiera sekcja Konfiguracje Lambda, pomiary, wersje i wyzwalacze.

Włączanie alertów dla zimnego startu lub limitów czasu

Istnieje możliwość skonfigurowania opcji Inteligentne alerty dla nadmiernej liczby zimnych startów lub przekroczeń limitu czasu dla funkcji Lambda. Aby skonfigurować alert inteligentny, przejdź do dokumentacji Perspektywa aplikacji , która zawiera funkcje Lambda, dla których ma zostać włączony alert, i dodaj alert inteligentny:

  1. W panelu nawigacyjnym interfejsu użytkownika Instana kliknij opcję Aplikacje.
  2. Wybierz aplikację.
  3. Kliknij opcję Dodaj alert inteligentny.
  4. Kliknij opcję Przełącz do trybu zaawansowanego.
  5. W polu Wybierz usługi/punkty końcowe w sekcji Zasięg dodaj jeden z następujących filtrów:
    • Cloud Function As A Service > Cold Start is true
    • Cloud Function As A Service > Suspected Timeout is true
  6. W polu Wybrany konspekt w sekcji Wyzwalacz wybierz opcję Przepustowość.
  7. W sekcji próg wybierz wartość progu , która pasuje do danego przypadku użycia. Należy użyć wartości 1, aby uwzględnić każde wystąpienie lub wyższą wartość w celu naruszenia reguły dla określonej liczby zimnych startów lub przekroczeń limitu czasu.
  8. Użyj ustawień Próg czasu , aby dostroić zachowanie alertów.

Warstwa

Korzystanie z rozszerzenia Lambda

Warstwa NodeJS w wersji 71 i nowszych zawiera rozszerzenie Lambda.

To rozszerzenie może poprawić wydajność monitorowanych funkcji Lambda poprzez oddzielenie procesu wysyłania danych do zaplecza Instana od innych procesów funkcji Lambda. Aby skorzystać z tych ulepszeń wydajności, zaktualizuj warstwę Instana do wersji, która zawiera rozszerzenie.

Wewnętrznie rozszerzenie współpracuje z biblioteką języka w celu buforowania i proxy wszystkich żądań do zaplecza Instana. Podczas normalnego działania rozszerzenie nie przedłuża czasu życia funkcji Lambda. Czas życia jest przedłużany tylko w następujących instancjach:

  • Żądanie zamknięcia systemu w celu zapewnienia, że wszystkie dane, które są przechowywane w buforze do zaplecza, zostaną wyczyszczone.
  • Sytuacja, w której działanie funkcji Lambda kończy się niepowodzeniem i kończy wysyłanie zakresów. Poczekaj 3 sekundy, aby sprawdzić, czy główny zakres został wysłany przed następnym wywołaniem.

Aby wyłączyć użycie rozszerzenia, należy ustawić zmienną INSTANA_DISABLE_LAMBDA_EXTENSION na wartość TRUE w środowisku funkcji.

Uwagi dotyczące wydajności i środowiska wykonawczego monitorowania Lambda

Wielkość artefaktu

Dodanie monitorowania Instana Lambda zwiększa rozmiar wdrożonej funkcji Lambda. Dodatkowa wielkość zależy od warstwy lub biblioteki specyficznej dla języka. Aby uzyskać wielkość konkretnej wersji warstwy Instana Lambda, użyj następujących komend powłoki:

   aws lambda get-layer-version --layer-name <layer_arn> --version-number <target_version> | jq .Content.Location | xargs -L 1 curl --output layer.zip
unzip -l layer.zip

Wpływ na wydajność

Podczas monitorowania funkcji Lambda z Instana, wpływ na wydajność jest przede wszystkim napędzany przez czas, który jest przyjmowany dla funkcji Lambda do komunikacji z zapleczem Instana. Po zakończeniu każdego wykonania biblioteka udostępniana przez Instana wykonuje wywołanie blokujące do rozszerzenia Instana AWS Lambda lub do jednostki najemcy Instana w celu zgłoszenia wyniku wykonania.

W przypadku funkcji, które korzystają z rozszerzenia Lambda, proces ten odbywa się w tle i umożliwia monitorowanej funkcji zwrócenie odpowiedzi, gdy tylko monitorowany kod jest gotowy.

W przypadku funkcji, które nie korzystają z rozszerzenia Lambda, ten proces umożliwia raportowanie wyników wykonania tylko wtedy, gdy dane są wysyłane do jednostki najemcy.