Логи
Часто в качестве единой системы логов используют стек ELK: Elasticsearch + Logstash + Kibana, где Elasticsearch является хранилищем логов. Либо аналогичный стек на базе OpenSearch. Такой сценарий полностью поддерживается Time благодаря нативной поддержке формата JSON в своих логах — это позволяет при желании записывать логи напрямую в Elasticsearch / OpenSearch, не тратя ресурсы на преобразование и форматирование логов.
Также Time поддерживает сбор логов в формате Sage.
Сбор логов
Приложение Time пишет логи в формате JSON. Это позволяет собирать их практически любым сборщиком логов, например:
Для настройки сбора логов обратитесь к документации соответствующего инструмента.
Приложение Time поставляется в Docker-образе, запускается в контейнере/поде и пишет логи в stdout. Далее логи могут быть собраны с помощью инструментов, описанных выше.
Пример записи лога Time в JSON-формате
{
"timestamp": "2023-04-25 12:46:46.720 Z",
"level": "info",
"msg": "Notification sent",
"caller": "app/notification_push.go:123",
"@timestamp": "2023-04-25T12:46:46.720856629Z",
"env": "prod",
"system": "time-backend",
"inst": "time-app-d84cd47d-4hxpx",
"logSource": "notifications",
"ackId": "cne7jci865dtxg4n6",
"type": "clear",
"userId": "tn1pme54it67bxht4e36s4",
"postId": "",
"channelId": "8p7ep6s4c3rpp25pxp03nub97y",
"deviceId": "GF6NtcIUQduYOlFFpO9ZQ9_QGrVDnXFwrH",
"badge": 0,
"status": "Successful"
}
В случае запуска Time в SingleNode-варианте (все компоненты на одном хосте) с помощью Docker Compose логи также пишутся в stdout, и имеется возможность смотреть их с помощью команды:
docker compose logs time-server
Логи docker-контейнеров можно собирать аналогичными способами, как описано выше.