Здравствуйте. Я пытаюсь настроить сбор логов Docker-контейнеров с помощью стека Loki/Grafana/Promtail на сервере Ubuntu 24.04 и столкнулся с двумя неустранимыми проблемами. Сервисы развернуты через
Docker Compose v5.x
Буду благодарен за любую помощь в диагностике.
Конфигурация сервера:
- ОС: Ubuntu 24.04 LTS
- Nginx: 1.24.0 (Ubuntu)
- Docker: Engine 29.1.3 (API 1.52)
- Стек: Loki/Grafana/Promtail
Проблема 1: Ошибка Nginx "invalid URL prefix"
При попытке настроить Nginx для проксирования на
127.0.0.1 или даже просто
127.0.0.1:3000 в файлах
/etc/nginx/sites-available/ я постоянно получаю ошибку синтаксиса
invalid URL prefix на строке
proxy_pass.
Пример синтаксиса, который выдает ошибку (строка 19):
location / {
proxy_pass 127.0.0.1;
# ... заголовки
}
Вывод команды
nginx -t:
2025/12/13 18:49:24 [emerg] 2666660#2666660: invalid URL prefix in /etc/nginx/sites-enabled/admin-control-center:19
nginx: configuration file /etc/nginx/nginx.conf test failed
Файл
/etc/nginx/nginx.conf (основной) выглядит стандартно, проблема именно в конфигурации сайта.
Проблема 2: Ошибка совместимости Docker API в Promtail
Я обновил Docker Engine с очень старой версии до 29.1.3 (API 1.52), перезапустил службу Docker (
systemctl restart docker), но агент Promtail (версии 2.9.0) продолжает выдавать ошибку при попытке подключиться к сокету
/var/run/docker.sock:
Логи Promtail:
level=error ts=2025-12-13T17:33:43.277546384Z caller=refresh.go:99 component=docker_discovery discovery=docker config=docker-containers/unix:///var/run/docker.sock:80 msg="Unable to refresh target groups" err="error while listing containers: Error response from daemon: client version 1.42 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
Команда
docker version показывает, что API 1.52 используется. Перезапуск Docker не помог.
Вопросы к сообществу:
- Почему Nginx 1.24.0 на Ubuntu 24.04 не принимает стандартный синтаксис
proxy_pass http://...? Есть ли какие-то системные настройки, которые это блокируют, или я упускаю элементарную синтаксическую ошибку?
- Почему Promtail "видит" старую версию API 1.42, если Docker Engine обновлен до 1.52 и служба была перезапущена? Как принудительно обновить сокет Docker или заставить Promtail использовать актуальную версию API?