7 个版本 (破坏性更新)

0.7.0 2022年10月10日
0.6.0 2022年5月24日
0.5.0 2022年1月15日
0.4.0 2022年1月11日
0.1.0 2022年1月2日

#514 in 硬件支持

GPL-3.0+

42KB
571

Strudel

build status docs.rs crates.io

将 DHT22 温湿传感器读数导出为 Prometheus 指标。

功能

Strudel 从 DHT22 传感器 读取温度和湿度信息,并将值作为 Prometheus 指标导出。它最好在 Raspberry PI (3 或 4) 上运行。

以下指标将被导出

  • strudel_temperature_degrees - 传感器测量的摄氏度。
  • strudel_relative_humidity - 相对湿度(从 0 到 100),由传感器测量。
  • strudel_last_read_timestamp - 传感器上次正确读取的 UNIX 时间戳。
  • strudel_collections_total - 尝试读取传感器的总次数。
  • strudel_errors_total - 尝试读取传感器时类型错误的总数。
  • strudel_read_timing_seconds - 读取传感器所需的时间,以秒为单位。

构建

strudel 是一个 Rust 程序,必须使用 Rust 工具链 从源代码构建。由于它打算在 Raspberry PI 上运行,您可能还需要交叉编译它。如果您使用的是 Ubuntu GNU/Linux,您需要安装以下软件包。

apt-get install gcc-arm-linux-gnueabihf musl-tools

这将允许您为 ARMv7 平台构建,并构建完全静态的二进制文件(分别)。

接下来,确保您有一个 ARMv7 的 Rust 工具链,假设您正在使用 rustup 工具。

rustup target add armv7-unknown-linux-musleabihf

接下来,您需要为 ARMv7 构建 strudel

cargo build --release --target armv7-unknown-linux-musleabihf

安装

GPIO 引脚

为了读取 DHT22 传感器,它必须连接到 Raspberry PI 上的一个通用 I/O 引脚 (GPIO)(duh)。包含的 Systemd 单元文件假设您已选择 GPIO 引脚 17 作为传感器的数据线。如果不是这种情况,您将需要修改单元文件。有关可用引脚的列表,请参阅 Raspberry PI 文档

运行

为了读写设备 /dev/gpiomemstrudel 必须以 root 权限运行。您可以使用提供的单元文件将 strudel 作为 Systemd 服务运行,该单元文件假定您已将生成的 strudel 二进制文件复制到 /usr/local/bin/strudel

sudo cp target/armv7-unknown-linux-musleabihf/release/strudel /usr/local/bin/strudel
sudo cp ext/strudel.service /etc/systemd/system/strudel.service
sudo systemctl daemon-reload
sudo systemctl enable strudel.service
sudo systemctl start strudel.serivce

Prometheus

Prometheus 度量标准在 /metrics 的端口 9781 上公开。一旦 strudel 运行,请通过您的 Prometheus 服务器配置对其的抓取。如下例所示,将运行 strudel 的主机添加到 Prometheus 的 scrape_configs 节目标中。

注意:DHT22 传感器每两秒只能读取一次,默认情况下,传感器每 30s 在后台(不是 响应 Prometheus 抓取)读取一次。因此,比 30s 更频繁的 Prometheus 抓取没有任何好处,除非同时调整 strudel 的刷新间隔。

# Sample config for Prometheus.

global:
  scrape_interval:     1m
  evaluation_interval: 1m
  external_labels:
      monitor: 'my_prom'

scrape_configs:
  - job_name: strudel
    static_configs:
      - targets: ['example:9781']

参考资料

用于创建 Strudel 的某些有用的文档、文章等。

许可协议

Strudel 根据 GPL,版本 3 的条款提供。

贡献

除非您明确说明,否则您有意提交以包含在您的工作中的任何贡献都应按照上述方式许可,而不附加任何额外条款或条件。

依赖项

~12–23MB
~311K SLoC