Pisz i przeglądaj dzienniki

Rejestrowanie jest ważnym narzędziem do debugowania i monitorowania kodu. Funkcje Chmura daje możliwość korzystania z jej SDK rejestratora, niestandardowe Google Cloud Rejestrowanie, lub console standardowego obiektu do opracowania w internecie.

Zapisywanie dzienników

Podczas gdy chmura Funkcje rejestratora SDK jest zalecany w większości sytuacji, można wybrać jedną z pozostałych opcji dla tych powodów:

  • Masz już bazę kodu i wolą nie byłaby z console.log .
  • Znasz Cloud Logging (dawniej StackDriver logging) i wolisz używać go do rejestrowania niestandardowego.

Korzystanie z pakietu SDK rejestratora Cloud Functions

Funkcje Chmura logger SDK zapewnia standardowy interfejs, który ma podobną API console.log oświadczeń i podpór innych poziomów dziennika. Można użyć tej SDK do zdarzeń z dziennika ustrukturyzowanych danych , umożliwiając łatwiejszą analizę i monitorowanie.

Pakiet SDK rejestratora obsługuje wpisy dziennika w ramach importu symboli wieloznacznych. Na przykład:

  const functions = require("firebase-functions");

  functions.logger.log("Hello from info. Here's an object:", someObj);

Alternatywnie możesz użyć pojedynczych eksportów. Ten przykład ilustruje uporządkowane dane dołączone do dziennika jako ostatni argument:

const { warn } = require("firebase-functions/lib/logger");


// Attach structured data to the log as the last argument.
warn("This is a 'WARNING' severity message with some metadata.", {
  key1: 'val1',
  key2: 'val2'
});
  • logger.log() polecenia mają poziom dziennika INFO.
  • logger.info() polecenia mają poziom dziennika INFO.
  • logger.warn() polecenia mają poziom dziennika błędów.
  • logger.error() polecenia mają poziom dziennika błędów.
  • Komunikaty systemowe wewnętrzne mają poziom dziennika debugowania.

Z logger.write() , można pisać wpisy Log dodatek poziom nasilenia CRITICAL , ALERT i EMERGENCY . Zobacz LogSeverity .

Niestandardowe dzienniki Cloud Logging

Chmura Funkcje logi z SDK rejestratora są wspierane przez cloud rejestrowania . Można użyć biblioteki rejestrowania Chmura node.js do wydarzeń z ustrukturyzowanych danych logowania, umożliwiając łatwiejszą analizę i monitorowanie.

const { Logging } = require('@google-cloud/logging');

// ...

// Instantiate the logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');

// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: 'CustomMetrics',
      region: 'us-central1'
    }
  }
};

// ...

// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
  event: 'my-event',
  value: 'foo-bar-baz',

  // Optional 'message' property will show up in the Firebase
  // console and other human-readable logging surfaces
  message: 'my-event: foo-bar-baz'
};

// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);

Korzystanie console.log

Emitować linię dziennika ze swojej funkcji, można użyć standardowych JavaScript wywołuje rejestrowania takich jak console.log i console.error :

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • console.log() polecenia mają poziom dziennika INFO.
  • console.info() polecenia mają poziom dziennika INFO.
  • console.warn() polecenia mają poziom dziennika błędów.
  • console.error() polecenia mają poziom dziennika błędów.
  • Komunikaty systemowe wewnętrzne mają poziom dziennika debugowania.

Z console.log , można zauważyć problemów w czytelności dzienników podczas migracji z node.js 8 starcie do node.js 10 lub 12. Aby obejść ten problem tymczasowo, należy dodać następujące biblioteki do funkcji:

require("firebase-functions/lib/logger/compat");

Zalecana długoterminowe rozwiązanie do migracji do node.js 10 lub 12 jest kodem byłaby użyć SDK rejestratora .

Przeglądanie dzienników

Dzienniki dla funkcji chmurze są widoczne zarówno w konsoli Firebase, chmura rejestrowania UI, lub poprzez firebase narzędzia wiersza polecenia.

Korzystanie z interfejsu wiersza polecenia Firebase

Aby wyświetlić dzienniki z firebase narzędzie, za pomocą functions:log polecenie:

firebase functions:log

Aby wyświetlić logi dla określonej funkcji, podaj nazwę funkcji jako argument:

firebase functions:log --only <FUNCTION_NAME>

Pełen zakres opcji dziennika oglądania, wyświetlenia pomocy dla functions:log :

firebase help functions:log

Korzystanie z konsoli Firebase

Możesz wyświetlić dzienniki dla funkcji Chmura z konsoli Firebase.

Korzystanie z interfejsu użytkownika Cloud Logging

Możesz wyświetlić dzienniki dla funkcji Chmura w rejestrowania interfejsu Cloud.

Analizowanie logów

Cloud Logging oferuje potężny zestaw narzędzi do analizy logów, których można używać do monitorowania funkcji Cloud Functions. Narzędzia te są szczególnie silne w połączeniu z niestandardowym logowania .

Metryki oparte na logach

Rejestrowanie w interfejsie Cloud korzystać z zaawansowanych filtrów, aby zawęzić pole zakres dziennika do funkcji, którą chcesz przeanalizować, a następnie kliknij przycisk Prześlij filtr do filtrowania dzienników. Na przykład możesz analizować tylko logi z jednej funkcji:

resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"

Jeśli rejestrujesz zdarzenia za pomocą niestandardowych ładunków JSON, możesz filtrować za pomocą podanych kluczy i wartości:

resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"

Kiedy już filtrowane dzienniki można analizować je za pomocą kłody oparte metryki . Kliknij metrykę przycisk, aby otworzyć edytor metryczny i wybierz typ metryczne Utwórz:

  • Licznik metryki: policzyć liczbę wpisów dziennika pasujących do filtra. Na przykład możesz policzyć, ile razy wystąpiło określone zdarzenie.
  • Metryki dystrybucyjne: gromadzić dane liczbowe z wpisami dziennika pasujących do filtra. Na przykład możesz śledzić opóźnienia niektórych operacji w swoich funkcjach.

W przypadku dzienników tekstowych, takich jak te, które wynikają z console.log() w swoich funkcji, można wyodrębnić wartości i etykiety z textPayload polu przy użyciu wyrażeń regularnych. Dla niestandardowych dzienników z danymi strukturyzowanych można bezpośrednio uzyskać dostęp do danych w jsonPayload dziedzinie.

Wykresy i alerty

Po utworzeniu metryk opartych na dziennikach w celu monitorowania funkcji możesz tworzyć wykresy i alerty na podstawie tych metryk. Na przykład możesz utworzyć wykres, aby zwizualizować opóźnienie w czasie, lub utworzyć alert informujący o tym, że dany błąd występuje zbyt często.

Zobacz Tworzenie wykresów i alerty celu uzyskania szczegółowych informacji na temat sposobu korzystania z dzienników opartych dane w wykresach i alarmowania polityk.