使用 Prometheus 监控 Tesla Solar 和 Powerwall

789

首先使用 Prometheus 在 Raspberry Pi 上部署 Tesla Powerwall Exporter,并让 Prometheus 将指标远程写入 Grafana Cloud。

image.png

Tesla Powerwall Exporter 安装

Tesla Powerwall Exporter 可以通过以下方式安装:克隆 Git 存储库github.com/dmyerscough… 并运行node命令或运行预构建的 Docker 映像。在本指南中,我将介绍使用 Docker 映像来运行 Tesla Powerwall Exporter。

下载 Tesla Powerwall Exporter 后,运行以下 docker 命令。

pi@raspberrypi:~ $ docker pull damianmyerscough/tesla-powerwall-exporter:0.0.1
0.0.1: Pulling from damianmyerscough/tesla-powerwall-exporter
d4bf0b27c669: Pull complete 
d65b27641f7b: Pull complete 
5f3cb788c4e3: Pull complete 
b9ab8ace8d81: Pull complete 
0f72e21a724d: Pull complete 
4329af468ae5: Pull complete 
4f4fb700ef54: Pull complete 
Digest: sha256:0ef7b07ab36bb296e5bc06fa34c60110027974f9f6983064eca0d5222b90226a
Status: Downloaded newer image for damianmyerscough/tesla-powerwall-exporter:0.0.1
docker.io/damianmyerscough/tesla-powerwall-exporter:0.0.1

一旦 docker 命令完成下载,我们将需要使用以下四个环境变量运行容器。

  • TESLA_ADDR:你的 Tesla Powerwall 的 IP 地址
  • TESLA_EMAIL:你的电子邮件地址
  • TESLA_PASSWORD:你的 Tesla Powerwall 的密码,你可以在 Powerwall 上找到它,是最后五个字符。
  • SCRAPE_INTERVAL:指定我们应该多久刮一次 Tesla Powerwall 以获取指标,默认情况下,Tesla 每隔五分钟刮一次,最好把频率设更高些,比如 30 秒。
pi@raspberrypi:~ $ docker run -d -p 9961:9961 \
-e TESLA_ADDR="192.168.1.3" \
-e TESLA_EMAIL="damian@example.com" \
-e TESLA_PASSWORD="MyTeslaPassword" \
-e SCRAPE_INTERVAL=30 damianmyerscough/tesla-powerwall-exporter:0.0.1
4df8be62edb9c493c4b08c064f297bf93f2b97c6fa393eb409f812506b63048c

容器启动后,你可以验证导出器正在运行,它正在成功地从 Tesla Powerwall 抓取指标。验证这一点的命令如下所示。

pi@raspberrypi:~ $ docker ps
CONTAINER ID   IMAGE                                             COMMAND                  CREATED         STATUS         PORTS                                                 NAMES
4df8be62edb9   damianmyerscough/tesla-powerwall-exporter:0.0.1   "docker-entrypoint.s…"   5 seconds ago   Up 3 seconds   8080/tcp, 0.0.0.0:9961->9961/tcp, :::9962->9962/tcp   dazzling_jackson

验证 Tesla Powerwall Exporter 是否正在抓取指标

pi@raspberrypi:~ $ docker logs 4df8be62edb9

> tesla@1.0.0 start
> node server.mjs

(node:19) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
{"level":"info","message":"Scraping powerwall","timestamp":"2022-04-06T05:25:28.864Z"}
{"level":"info","message":"Listening on 0.0.0.0:9961","timestamp":"2022-04-06T05:25:28.881Z"}
{"level":"info","message":"Finished scraping powerwall","timestamp":"2022-04-06T05:25:29.034Z"}

Prometheus 配置

下一步是配置 Prometheus 以抓取 Tesla Powerwall Exporter 并将这些指标写入 Grafana Cloud。由于我们使用 Docker 来运行我们的导出器,我们将使用 Docker 来运行 Prometheus。我们要使用的 Prometheus 配置如下所示,将文件保存为 prometheus.yml

# Sample config for Prometheus.

global:
  scrape_interval:     30s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 30s # Evaluate rules every 15 seconds. The default is every 1 minute.

remote_write:
- url: https://prometheus-prod-10-prod-us-central-0.grafana.net/api/prom/push
  basic_auth:
    username: <PROMETHEUS USERNAME>
    password: <API TOKEN>
    
scrape_configs:
  - job_name: tesla_powerwall
    scrape_interval: 15s
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:9961']

prometheus.yml 中的用户名和密码字段可以从 Grafana Cloud 门户获得。将你的用户名和密码插入prometheus.yml 文件后,你可以通过运行以下命令来启动 Prometheus 进程。

pi@raspberrypi:~ $ docker run -p 9090:9090 \
-v $( pwd )/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus

Prometheus 启动后,指标将开始写入 Grafana Cloud 中的 Prometheus 实例。

Grafana 云监控

最后,我们可以使用 Grafana Cloud 导入预先构建的 Tesla Powerwall 仪表板。仪表板将让我们深入了解我们的太阳能和 Powerwall 系统的性能。

image.png

像上面这样,我们现在正在监控和绘制我们的 Tesla Powerwall 和太阳能系统,并对我们的系统有更深入的了解。Tesla 应用程序仅显示五分钟的快照,而我们的导出器可以提供更精细的结果。