Get in touch: info@example.com

TeslaMate + Grafana 대시보드 오류 해결 및 자동 업데이트 구성 기록

1. 환경 요약

  • Docker / Docker Compose 기반
  • 구성 서비스
    • TeslaMate
    • PostgreSQL
    • Grafana
    • MQTT (Mosquitto)
  • 운영 목적
    • Tesla 차량 주행/충전 데이터 수집
    • Grafana 대시보드 시각화
    • 주기적인 무중단 업데이트

2. 문제 상황 요약

증상

  • Grafana 로그인은 가능
  • TeslaMate 대시보드가 비어 있거나 모든 값이 N/A로 표시
  • TeslaMate 로그에서는 차량 주행/충전 데이터가 정상적으로 기록됨

원인

  1. Grafana가 TeslaMate 전용 이미지가 아닌 순정 Grafana 이미지로 실행됨
  2. 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

항목
Hostpostgres:5432
Databaseteslamate
Userteslamate
PasswordPostgreSQL 비밀번호
SSL modedisable

설정 후 Save & Test → Success 확인

Docker 내부 네트워크에서는 127.0.0.1이나 NAS IP가 아니라 서비스명(postgres) 으로 접근해야 한다.


5. TeslaMate 로그로 데이터 수집 정상 여부 확인

docker logs teslamate --tail=200

정상 예시 로그:

  • Driving / Started / Ended
  • Charging / Complete
  • Derived efficiency factor
  • POST 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보다 안정적
  • 로그를 남겨두면 장애 원인 추적이 매우 쉬워진다

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다