Журналирование выполнения функции на Go
Сервис Cloud Functions автоматически захватывает потоки стандартного вывода приложения на Go и отправляет их в централизованную систему журналирования, доступную в Yandex Cloud. Помимо журналов выполнения приложения записываются системные записи о событиях выполнения запроса.
Для записи дополнительных сообщений используются стандартные языковые конструкции:
fmt.Print
/Println
— выводит сообщение в стандартный поток выводаstdout
.print
/println
— выводит сообщение в стандартный поток ошибокstderr
.time.Now
+time.Since
— возвращает продолжительность выполнения действия.
Примечание
Многострочные сообщения должны быть разделены символом \r
(carriage return), но не \n
(line feed). При использовании последнего каждая строка отправляется отдельным сообщением и отображается в журнале отдельно.
Более подробно со спецификацией форматирования строк можно ознакомиться в соответствующем разделе документацииprint
и println
можно почитать здесьtime
и его возможностях здесь
Системные сообщения
В рамках обработки каждого вызова в журнал также записываются системные сообщения 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
– время, потраченное на инициализацию среды выполнения и загрузку кода функции.