使用树莓派进行温度和湿度测量,再通过Prometheus进行图形化展示

首先

我使用树莓派进行温度和湿度测量,并使用Munin将其图形化。但由于想要使用现代的工具来查看图表,所以我迁移到了Prometheus。

环境

    • Raspbian 9.1 (stretch)

 

    温度・湿度の計測はUSBRHを使用

设定方法

安装Prometheus

Debian系列可以使用apt-get命令轻松安装Prometheus和Node exporter,从而实现自动获取度量指标并可见化成图表。

$ sudo apt-get install prometheus
$ systemctl status prometheus
$ systemctl status prometheus-node-exporter

另外,由于存储库中的Prometheus版本过旧(1.x),如果想要使用新版本(2.x),也可以从Debian sid(不稳定版)的页面上下载软件包。

$ wget http://ftp.jp.debian.org/debian/pool/main/p/prometheus/prometheus_2.2.1+ds-2_armhf.deb
$ sudo dpkg -i prometheus_2.2.1+ds-2_armhf.deb

取得状况可以通过访问http://IP地址:9090或使用curl进行确认。

$ curl localhost:9100/metrics

顺便提一下,Prometheus的配置文件位于 /etc/prometheus/prometheus.yml。

我自己制作了Node exporter。

为了将通过USBRH测得的温度和湿度数据导入到Prometheus中,
我们需要自己制作一个Node exporter的Textfile collector。

node-exporter的选项在/etc/default/prometheus-node-exporter中被设置如下。
Textfile收集器的目录通过-collector.textfile.directory选项设置为/var/lib/prometheus/node-exporter。

ARGS="-collector.diskstats.ignored-devices=^(ram|loop|fd)\d+$ \
      -collector.filesystem.ignored-mount-points=^/(sys|proc|dev|run)($|/) \
      -collector.textfile.directory=/var/lib/prometheus/node-exporter"

查看目录的权限时,所有者是prometheus,模式为755,但为了让其他用户也能够写入,更改模式为777更方便。

$ ls -l /var/lib/prometheus
drwxr-xr-x 262 prometheus prometheus 4.0K  yy月 dd hh:mm metrics/
drwxr-xr-x   2 prometheus prometheus 4.0K  yy月 dd hh:mm node-exporter/
$ sudo chmod 777 /var/lib/prometheus/node-exporter

構築一个自定义的Textfile collector,使用适用于Prometheus的库。
有Go、Java、Python、Ruby等语言可用,而我选择了Python。

$ pip install prometheus_client

根据公式页面等参考,我自己制作了如下所示的内容。

#!/usr/bin/env python

from prometheus_client import CollectorRegistry, Gauge, write_to_textfile
import subprocess

bin = '/usr/local/bin'
lib = '/var/lib/prometheus/node-exporter'

registry = CollectorRegistry()

g = Gauge('usbrh', 'USBRH', ['kind'], registry=registry)
usbrh = subprocess.check_output(bin + '/usbrh').split()

g.labels('temperature').set(usbrh[0])
g.labels('humidity').set(usbrh[1])

write_to_textfile(lib + '/usbrh.prom', registry)

我們試著去確認一下動作。

$ ./usbrh.py
$ cat /var/lib/prometheus/node-exporter/usbrh.prom
# HELP usbrh USBRH
# TYPE usbrh gauge
usbrh{kind="humidity"} 46.42
usbrh{kind="temperature"} 26.07
$ curl localhost:9100/metrics

如果没有问题的话,可以将脚本设置在cron等中以定期获取。

使用Prometheus检查温度和湿度

过一段时间,我们会在 Prometheus 上能够通过图形来查看温度和湿度。
借助 Grafana,我们可以使图形更易于阅读,并且能够轻松自定义。

请参考

普罗米修斯

节点导出器

美国库珀河国家风景保护区

广告
将在 10 秒后关闭
bannerAds