PrometheusとGrafanaでRaspberry Piを監視

Raspberry PiにPrometheusとGrafanaをインストールして、Raspberry Pi自身を監視してみました。

# 環境

Raspberry Pi 3
Raspberry Pi OS（2020-05-27版）

# Prometheusのインストール

Raspberry Piの公式リポジトリから導入できます。
`prometheus`がPrometheus本体、`prometheus-node-exporter`はOSのメトリクス情報を取得するものです。

```console
sudo apt install prometheus prometheus-node-exporter
```

インストールが完了すると、すでにサービスとして起動した状態となります。
2020/6/27時点でインストールされたバージョンは以下の通り。最新バージョンはPrometheusが2.19.2、Node exporterが1.0.1なので少し古そうですね。

```terminal
pi@raspberrypi:~ $ prometheus --version
prometheus, version 2.7.1+ds (branch: debian/sid, revision: 2.7.1+ds-3)
  build user:       pkg-go-maintainers@lists.alioth.debian.org
  build date:       20190210-18:10:02
  go version:       go1.11.5
pi@raspberrypi:~ $ prometheus-node-exporter --version
node_exporter, version 0.17.0+ds (branch: debian/sid, revision: 0.17.0+ds-3)
  build user:       pkg-go-maintainers@lists.alioth.debian.org
  build date:       20190131-17:33:42
  go version:       go1.11.5
```

# Prometheusの動作確認

Raspberry Piから`http://localhost:9090/`、または他のPCから`http://raspberrypi.local:9090/`にアクセスすると、PrometheusのWeb画面にアクセスできます。

![raspberrypi.local_9090_graph(iPad).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/9df5d7eb-90a5-fa8d-61b9-8113693c4eba.png)

タブを`Graph`に切り替えて、メトリクスを選ぶとグラフが表示されます。

![raspberrypi.local_9090_graph(iPad) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/102fd3f8-02aa-56af-b704-5aad12665b97.png)

すごいですね。簡単ですね。
凝ったグラフを作りたいときは、Grafanaの出番です。

# Grafanaのインストール

Grafanaは公式リポジトリでは提供されていないようですが、Grafanaの公式サイトでARM向けのdebパッケージが提供されています。

```terminal
wget https://dl.grafana.com/oss/release/grafana_7.0.4_armhf.deb
sudo apt install ./grafana_7.0.4_armhf.deb
```

Grafanaはインストールしただけでは起動しないようです。

```terminal
sudo systemctl status grafana-server.service
```

# Grafanaの動作確認

Grafanaは`3000`ポートで起動しますので、`http://localhost:3000/`または`http://raspberrypi.local:3000/`でアクセスできます。

![raspberrypi.local_3000_login(iPad).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/e759a9f1-99d1-5aa1-1557-602d1945e674.png)

初期ユーザーは`admin`、パスワードも`admin`です。
ログイン後はこんな感じ。

![raspberrypi.local_3000_(iPad).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f2366e02-747b-6395-96c0-590c180ebe64.png)

# データソースの作成

GrafanaでPrometheusのデータを扱うため、データソースの設定を行います。

1. 左メニューの`Configuration`(ギアアイコン)から`Data Sources`を選択します。
![raspberrypi.local_3000_(iPad) (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/47fd0100-5ae8-6918-f8d8-55f27cf78f19.png)
2. `Add Data source`を選択します。
![raspberrypi.local_3000_(iPad) (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/e382f440-032b-0722-22f2-a9722f717064.png)
3. `Prometheus`の右の`Select`ボタンを押します。
![raspberrypi.local_3000_(iPad) (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/8b0e7c1e-ff65-e388-a326-ebcebaabef64.png)
4. URLに`http://localhost:9090`と入力し、その他はデフォルトのままで`Save & Test`ボタンを押します。
![raspberrypi.local_3000_(iPad) (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/81b58395-ef85-435d-4b21-6f1709e49e22.png)

これでデータソースの設定が完了です。
続けてダッシュボードを作成します。

# ダッシュボードの作成

ダッシュボード画面は一から作ることもできますが、すでに作成済みのダッシュボードが公式サイトで公開されています。オフィシャルなものからコミュニティのものまでたくさんあります。
https://grafana.com/grafana/dashboards

ダッシュボードにはそれぞれIDがあり、IDを登録することで、自分のGrafanaで使用することができます。

1. 左メニューの`Dashboards`(四角が4つのアイコン)から、`Manage`を選択します。
![raspberrypi.local_3000_(iPad) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/6ebd5d15-358f-9c40-2dfd-ddbca1d25aba.png)
2. 画面右端の`Import`を選択します。
![raspberrypi.local_3000_(iPad) (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/9d5e79e1-c1b5-0839-ce85-d27dc2fdfe85.png)
3.　画面中央の入力欄にID（今回は11074）を入力して、`Load`ボタンを押します。ダッシュボードにはそれぞれIDがあり、IDを登録することで、自分のGrafanaで使用することができます。
![raspberrypi.local_3000_(iPad) (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/92c6f642-767a-58fe-101c-23265b278eea.png)
4. ダッシュボードの情報が表示されます。`Prometheus Data Source`のところで、データソースを選択し、画面下の`Import`ボタンを押します。
![raspberrypi.local_3000_(iPad) (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/a18e4e20-0de8-eccd-dc5c-e4aa43ec07ee.png)

これでダッシュボードができました。すっげー。

![raspberrypi.local_3000_(iPad) (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2c8c273b-71fd-a0cc-94aa-f981f15ec089.png)

# CloudWatchの監視

GrafanaはデータソースとしてCloudWatchにも対応してます。
![raspberrypi.local_3000_(iPad) (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/657b3019-7e1f-da59-5775-f3f7e01b34b7.png)
設定画面はこんな感じ
![raspberrypi.local_3000_(iPad) (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/8c45cbec-e723-14c2-780d-0b2e466f6fe4.png)
こちらもダッシュボードを検索して追加すれば、簡単に監視ができそうです。
（いい感じの監視対象がなかったのでキャプチャはありません。。。）

EC2のダッシュボードのリンクを貼っておきます。
https://grafana.com/grafana/dashboards/11265