1. 환경 요약
- Docker / Docker Compose 기반
- 구성 서비스
- TeslaMate
- PostgreSQL
- Grafana
- MQTT (Mosquitto)
- 운영 목적
- Tesla 차량 주행/충전 데이터 수집
- Grafana 대시보드 시각화
- 주기적인 무중단 업데이트
2. 문제 상황 요약
증상
- Grafana 로그인은 가능
- TeslaMate 대시보드가 비어 있거나 모든 값이 N/A로 표시
- TeslaMate 로그에서는 차량 주행/충전 데이터가 정상적으로 기록됨
원인
- Grafana가 TeslaMate 전용 이미지가 아닌 순정 Grafana 이미지로 실행됨
- Grafana PostgreSQL 데이터소스의 Host 값이 비어 있음
:5432형태로 접속 시도 → connection refused
3. docker-compose.yml 수정 (핵심)
Grafana 이미지를 TeslaMate 전용으로 변경
grafana:
image: teslamate/grafana:latest
container_name: teslamate-grafana
restart: unless-stopped
depends_on:
- postgres
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD}
TZ: Asia/Seoul
volumes:
- /srv/teslamate/grafana:/var/lib/grafana
ports:
- "3000:3000"
⚠️ 순정
grafana/grafana이미지를 사용하면 TeslaMate 대시보드와 데이터소스가 자동 생성되지 않는다.
4. Grafana PostgreSQL 데이터소스 설정 (중요)
Grafana UI → Data Sources → PostgreSQL
| 항목 | 값 |
|---|---|
| Host | postgres:5432 |
| Database | teslamate |
| User | teslamate |
| Password | PostgreSQL 비밀번호 |
| SSL mode | disable |
설정 후 Save & Test → Success 확인
Docker 내부 네트워크에서는
127.0.0.1이나 NAS IP가 아니라 서비스명(postgres) 으로 접근해야 한다.
5. TeslaMate 로그로 데이터 수집 정상 여부 확인
docker logs teslamate --tail=200
정상 예시 로그:
Driving / Started / EndedCharging / CompleteDerived efficiency factorPOST https://auth.tesla.com/... -> 200
→ 데이터는 정상 수집 중이며, Grafana 설정 문제였음을 확인
6. 자동 업데이트 스크립트 구성
스크립트 위치
/usr/local/sbin/teslamate-update.sh
주요 기능
- docker compose pull
- docker compose up -d
- 컨테이너 상태 점검
- 로그 기록
- 중복 실행 방지(lock)
(스크립트 전문은 별도 페이지/첨부로 분리 권장)
7. systemd timer로 주간 자동 업데이트 설정
서비스 유닛
[Unit]
Description=Update TeslaMate stack
After=docker.service
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/teslamate-update.sh
타이머 유닛 (일요일 03:00)
[Timer]
OnCalendar=Sun *-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
활성화:
systemctl daemon-reload
systemctl enable --now teslamate-update.timer
8. 업데이트 실행 로그 예시
[2026-01-06T10:46:34+09:00] Starting TeslaMate update...
[2026-01-06T10:46:36+09:00] OK: container running: teslamate
[2026-01-06T10:46:36+09:00] OK: container running: teslamate-grafana
[2026-01-06T10:46:36+09:00] Update completed.
로그 위치:
/var/log/teslamate/update.log
9. 정리 및 교훈
- Grafana 대시보드 N/A 문제는 대부분 데이터소스 설정 문제
- Docker 환경에서는 반드시 서비스명 기반 네트워크 접근
- TeslaMate는 전용 Grafana 이미지 사용이 필수
- 자동 업데이트는 systemd timer가 cron보다 안정적
- 로그를 남겨두면 장애 원인 추적이 매우 쉬워진다
답글 남기기