В процессе настройки отправки логов Nextcloud в Google Cloud Logging довелось поработать с Google Cloud Ops Agent. Это относительно новый агент, который отвечает и за логи и за метрики.
Nextcloud пишет структурированные логи в JSON формате так что возиться с регулярками не придется. Одна запись выглядит примерно так:
{ "reqId": "fA6aIAL7fObKyDA2YeDq", "level": 2, "time": "2022-06-21T06:55:18+00:00", "remoteAddr": "", "user": "--", "app": "news", "method": "", "url": "--", "message": "https://[skipped]/data/rss read error : Server error: `GET https://[skipped]/data/rss` resulted in a `500 Internal Server Error` response:\n<html>\r\n<head><title>500 Internal Server Error</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>500 Internal Server E (truncated...)\n", "userAgent": "--", "version": "23.0.5.1" }
Для начала нужно вытащить timestamp и severity. Timestamp буду брать из поля time
, а severity из поля level
, но для level потребуется преобразование из значения Nextcloud в значение Google LogEntry: