树莓派教程:使用监控系统 Prometheus 监控 Raspberry Pi 集群

监视远程服务器非常重要,它用于确保您没有耗尽计算资源、内存或磁盘空间。在Raspberry Pi 群集中,您的资源特别有限,这一点更为重要。一个没有空间的 SD 卡可以击倒你树莓派的网络或阻止服务工作。

幸运的是,有一个能与与 Prometheus 一起使用时间序列数据库,这有一个本地可执行文件,名为:Node Exporter。 它收集有用的系统信息,并使其可用于您的时间序列数据库。

如果您想了解普 Prometheus,请参阅我的综合指南:《Monitor your applications with Prometheus

准备

  • 在你的计算机上安装 Docker
  • 一个或多个 Raspberry Pi 或者 ARMv6/v7 开发板

这些步骤在 Raspbian Jessie Lite 上进行了测试,但我预期任何基于 Linux 的发行版都可以正常工作。

您也可以将本文中的技术,应用于监控云或家庭实验室服务器 - 只需选择 “64位” 下载,而不是 ARM。

搭建 NodeExporter

GitHub上 的 NodeExporter 项目有 64 位机器和 ARM 的二进制版本,这意味着我们只需要获取二进制文件,解包并启动它。

如果您使用的是 Raspberry Pi Zero,B 或 B+ 使用 “ARMv6”,其它的其他任何使用 “ARMv7”:

$ curl -SL https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.14.0.linux-armv7.tar.gz > node_exporter.tar.gz && \
sudo tar -xvf node_exporter.tar.gz -C /usr/local/bin/ --strip-components=1  

现在启动它:

$ node_exporter &

最简单的方法是使用 crontab -e@reboot /usr/local/bin/node_exporter 添加到您的 CRON 文件中。

使用 sudo systemctl enable cron 允许 cron。

如果你想以更有弹性的方式启动服务,那么你可以建立一个 systemd 单元文件

一旦运行,您将能够浏览到的 Raspberry Pi 上的 IP 地址的 端口 9100。请记下此 URL,因为我们需要更新我们的 Prometheus 配置,并告诉它稍后再进行度量(metrics)。

浏览可用的指标:

$ curl localhost:9100/metrics | less

您可以在 NodeExporter 主页上找到有关可用指标的更多信息:NodeExporter

一旦你在你所有的树莓派上重复了这个任务,并记下他们的 IP 地址,就可以继续下一步。

配置采集配置结点

Prometheus 使用拉(pull)模型采集配置(scrape)指标,这意味着无论您运行 Prometheus 的哪个地方,您的树莓派都需要在网络上访问。

运行 Prometheus 最简单的方法是通过 Docker:

解压默认的配置文件

$ docker create --name prom_empty prom/prometheus
$ docker cp prom_empty:/etc/prometheus/prometheus.yml ./prometheus.yml

编辑采集配置

使用一个编辑器打开 ./prometheus.yml 文件

应该看到如下的内容块:

scrape_configs:  
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9090']

然后为每个 Raspberry Pi 添加如下的内容:

scrape_configs:  
  - job_name: 'RPi1'
    static_configs:
      - targets: ['192.168.0.17:9100']
  - job_name: 'RPi2'
    static_configs:
      - targets: ['192.168.0.18:9100']

使用你的配置构建一个 Prometheus 镜像

Dockerfile 文件:

FROM prom/prometheus  
COPY ./prometheus.yml /etc/prometheus/prometheus.yml  

构建:

$ docker build -t prometheus/rpi-monitor .

运行 Prometheus

你现在可以运行 Prometheus。 如果您需要调整配置,请确保在第二次移除和运行容器之间构建映像。

$ docker run -p 9090:9090 --name prometheus-rpi -d prometheus/rpi-monitor

如果您已经将 Prometheus 作为 OpenFaaS 堆栈的一部分运行,请将端口绑定更改为 9091,而不是使用 -p 9091:9090

当你想停止容器类型时:docker rm -f prometheus-rpi

探索度量

检查 Target

如果一切正常,您将在 “Status -> Targets” 菜单下看到主机。

Target

探索度量

现在,您可以通过转到 http://localhost:9090,在启动 Prometheus 的主机上打开 UI,然后选择可用的许多指标之一。

一个度量指标可以是从磁盘读入的字节数。通常在一个空闲的系统上,这将是 0 字节左右。

输入以下表达式:

rate(node_disk_bytes_read[1m])  

现在转过 Raspberry Pi,输入:

$ find /; find /; find /

它将开始读取文件系统中的每个文件和目录,并为我们的图形生成一些噪音:

Spike

您可以使用 -/+ 图标来更改时间窗口。

检出网络流量

通过输入以下内容,您可以获得有趣的网络流量读数:

$ git clone https://github.com/alexellis/faas /tmp/faas

它将从互联网上拉下几十兆字节数据。

使用查询:

rate (node_network_receive_bytes{device="eth0"}[2m] )  

在图的开始处(上下文),我们看到 Kubernetes(一个容器调度器)和 Prometheus 空闲时使用的基线流量。 然后,我们在单个主机上启动了 git clone 操作,发现流量相对较高:

流量示例

检查磁盘空间

您可以使用 PromQL 获得根分区上千兆字节估计的值,如下所示:

node_filesystem_free{mountpoint="/"}/1024/1024/1024  

那么警告呢?

警报可以由 Prometheus 和 AlertManager 项目生成。这意味着您不必主动检查图表,并且可以向 Slack,HipChat 或支持 webhook 的类似服务发送消息。相关内容:Read up on AlertManager

OpenFaaS 使用 AlertManager 在遇到高负载的函数自动扩展。你可以在在 openfaas.com 了解更多信息

整合

现在,您可以监视所有的树莓派 - 无论它们是您的群集的哪一部分,还是只是在家中或办公室中为其他目的服务。

原文链接:https://blog.alexellis.io/prometheus-nodeexporter-rpi/

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.