使用 Prometheus 和 Go 抓取 Govee 数据

问题描述 投票:0回答:2

我的最终目标是能够通过蓝牙连接到 Govee Smart Plug+ 并获取使用数据,以便我可以填充 Google 表格。

我相信应该可以做到,因为我发现这个 Github 存储库听起来与我需要做的类似。 -> https://github.com/jdoupe/govee-exporter/

我是 Prometheus 和 Go 的新手,因为这是我在尝试使用上述存储库时第一次听说它们,所以请坦白我的天真。 :)

这是我到目前为止所做的。

  1. 将 Github 存储库下载到我的 MAC(将其放在我计算机上的 User 文件夹下)
  2. 通过终端在 govee-exporter 文件夹中安装 Go 库
  3. 通过他们的网站下载并安装 Prometheus -> https://prometheus.io/ (不确定我是否需要这样做,因为我看到一些 Prometheus 包是通过存储库中的 main.go 文件导入的)
  4. 启动 Prometheus 并可以成功访问 localhost:9090/graph

在终端内,我导航到 govee-exporter 文件夹并输入

go build .
,然后收到以下错误

main.go:15:2: no required module provides package github.com/jdoupe/govee-exporter/internal/collector; to add it:
    go get github.com/jdoupe/govee-exporter/internal/collector
main.go:16:2: no required module provides package github.com/jdoupe/govee-exporter/internal/config; to add it:
    go get github.com/jdoupe/govee-exporter/internal/config
main.go:17:2: no required module provides package github.com/jdoupe/govee-exporter/internal/updater; to add it:
    go get github.com/jdoupe/govee-exporter/internal/updater

然后我运行

go get github.com/jdoupe/govee-exporter/internal/collector
但又收到另一个错误

go: github.com/jdoupe/[email protected] (matching github.com/jdoupe/govee-exporter/internal/collector@upgrade) requires github.com/jdoupe/[email protected]: parsing go.mod:
    module declares its path as: github.com/xperimental/flowercare-exporter
            but was required as: github.com/jdoupe/govee-exporter

对于 main.go 文件尝试导入的其他两个文件夹也是如此。所以我转到 go.mod 文件并将

github.com/xperimental/flowercare-exporter
替换为
github.com/jdoupe/govee-exporter
然后我运行
go build .
,它似乎已构建,然后我运行
go run main.go
并收到以下消息

# github.com/jdoupe/govee-exporter/internal/updater
internal/updater/updater.go:15:2: "github.com/jdoupe/govee-exporter/pkg/govee" imported as miflora and not used
internal/updater/updater.go:24:8: undefined: govee
internal/updater/updater.go:77:47: undefined: govee
internal/updater/updater.go:83:10: undefined: govee
internal/updater/updater.go:87:10: undefined: govee
internal/updater/updater.go:191:15: undefined: govee
# github.com/jdoupe/govee-exporter/internal/collector
internal/collector/collector.go:9:2: "github.com/jdoupe/govee-exporter/pkg/govee" imported as miflora and not used
internal/collector/collector.go:63:41: undefined: govee
internal/collector/collector.go:113:68: undefined: govee

在 config.go 文件中,我注意到 ListenAddr 与我的 Prometheus 指标来源不同,因此我将其调整为与我的 9090 相匹配。

从这里到哪里可以连接到我的 Govee 插头? 我已经获得了他们的 MAC 地址和设备类型,但我不知道在哪里输入这些信息。

macos go github terminal prometheus
2个回答
1
投票

govee-exporter
非常老(4 年)并且无法构建(如您所见)。

要构建它,您可以:

  1. go.mod
    修改为
    module github.com/jdoupe/govee-exporter
    ;和
  2. pkg/govee/goovee.go
    修改为
    package govee

您应该能够以

go run .

的方式运行它

您需要先让

govee-exporter
正常工作,然后才能将其配置为由 Prometheus“抓取”(读取指标)。

govee-exporter
:9294
上发布(Prometheus)指标(默认情况下)。当
govee-exporter
运行时,尝试通过以下方式读取指标:

curl http://localhost:9294/metrics

返回结果后继续。

Prometheus 需要一个 configuration 来定义要“抓取”的目标(从中读取其指标)。按照惯例,目标之一是 Prometheus 服务器本身。您需要添加

govee-exporter
作为第二个目标。

这是一个例子

prometheus.yml

prometheus.yml

global: nil

scrape_configs:
  # Prometheus
  - job_name: "prometheus-server"
    static_configs:
      - targets:
          - "localhost:9090"

  # Govee Exporter
  - job_name: "govee-exporter"
    static_configs:
      - targets:
          - "localhost:9242"

然后使用此配置运行 Prometheus:

prometheus \
--config.file=prometheus.yml

一切顺利,您应该会看到

govee-exporter
添加为
targets

您应该能够使用 Prometheus 的

graph
选项卡查询 govee-exporter 导出的指标。


0
投票

无论如何,我已经使用@DazWilkin 提供的粗略修复更新了 govee-exporter 存储库(谢谢!)。

是的,这个项目很老了,由于时间不够而被放弃,我再也没有抽出时间来处理它。 除了编译之外,我还没有对它进行太多测试。 我确信它需要大量的爱(可能还有一些基本说明,或有关如何查找 BLE 设备的 MAC 地址的链接)。

任何拉取请求都是非常受欢迎的,或者随意分支你的心的内容(就像我在这个项目中所做的那样 https://github.com/xperimental/flowercare-exporter

© www.soinside.com 2019 - 2024. All rights reserved.