Журналирование выполнения функции на Node.js
Сервис Cloud Functions автоматически захватывает потоки стандартного вывода приложения на Node.js и отправляет их в централизованную систему журналирования, доступную в Yandex Cloud. Помимо журналов выполнения приложения записываются системные записи о событиях выполнения запроса.
Для записи дополнительных сообщений используются стандартные языковые конструкции:
console.log
— выводит сообщение в стандартный поток выводаstdout
.console.error
— выводит сообщение в стандартный поток ошибокstderr
.console.time
/console.timeLog
— выводит продолжительность выполнения действия.
Примечание
Многострочные сообщения должны быть разделены символом \r
(carriage return), но не \n
(line feed). При использовании последнего каждая строка отправляется отдельным сообщением и отображается в журнале отдельно.
Более подробно со спецификацией Console API можно ознакомиться в стандарте WHATWG Console
Системные сообщения
В рамках обработки каждого вызова в журнал также записываются системные сообщения START
, END
и REPORT
:
START RequestID: <идентификатор_запроса> Version: <идентификатор_версии_функции>
END RequestID: <идентификатор_запроса>
REPORT RequestID: <идентификатор_запроса>
Duration: 236.606 ms
Billed Duration: 300 ms
Memory Size: 128 MB
Max Memory Used: 22 MB
Queuing Duration: 0.027 ms
Function Init Duration: 225.298 ms
Все строки содержат идентификатор запроса (RequestID
), который генерируется автоматически в момент вызова функции.
Строка REPORT
— это отчет о выполнении функции. Она содержит дополнительную информацию о потребленных ресурсах:
Duration
– время, затраченное на вызов функции. Включает в себя параметрыQueuing Duration
иFunction Init Duration
.Billed Duration
– время, за которое взимается плата в соответствии с правилами тарификации.Memory Size
– объем памяти, указанный при создании версии, МБ.Max Memory Used
– объем использованной памяти на момент начала выполнения запроса.Queuing Duration
– время, которое запрос на выполнение провел во внутренней очереди. Если время растет, это может значить, что не хватает экземпляров функции. Максимальное количество экземпляров определяется квотами.Function Init Duration
– время, потраченное на инициализацию среды выполнения и загрузку кода функции.