Rock64でPrometheusを動かしたい!

  • このエントリーをはてなブックマークに追加

Rock64が手空きなため、自宅サーバとかの監視サーバにしてみたいと思います。

サーバ管理ツールはZabbixやNagios、muninなどが有名ですが、ナウでヤングなPrometheusというものを使おうと思います。

Prometheus(プロメテウス)とは、OSSなシステム監視&アラートツールキットです。監視サーバが監視対象にMetricを見に行くPull型らしいです。

Prometheusの詳しい説明は、他の方々のブログやQiitaエントリーを参照してください。

Rock64のセットアップ

OSのセットアップは過去記事参照で。

Prometheusのインストール

prometheusというユーザを作成し、そのユーザで実行させるようにします。

なお、Rock64はRK3328というARMなチップを使っていて、命令セットはARMv8-Aです。

ARMv8はARMv7の命令セットと互換性があります

そのため、ARMv8なバイナリがない場合は、ARMv7なバイナリを使用することができます。
また、ARMv8はAArch64という実行状態をサポートするらしく、それの呼び方が(AArch64/A64/ARM64)らしいです。
なので、ARM64なバイナリがあればそれも動かすことができます。

/etcや/var/libに設定ファイルとか置く崇高な方法もあるんですが、めんどくさいので/optに配置します。

$ sudo useradd --no-create-home --shell /bin/false prometheus
$ sudo mkdir /opt/prometheus
$ sudo chown prometheus:prometheus /opt/prometheus
$ cd /opt/prometheus

次に、Prometheusのバイナリとnode_exporterのバイナリをダウンロードします。
ダウンロード先からOSが”Linux”、Archが”ARM64″なものをダウンロードし、展開します。

$ sudo wget https://github.com/prometheus/prometheus/releases/download/v2.3.2/prometheus-2.3.2.linux-arm64.tar.gz
$ sudo wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-arm64.tar.gz
$ sudo mkdir prometheus
$ sudo mkdir node_exporter
$ sudo tar -xvf prometheus-2.3.2.linux-arm64.tar.gz 
$ sudo tar -xvf node_exporter-0.16.0.linux-arm64.tar.gz 
$ sudo mv -f prometheus-2.3.2.linux-arm64/* ./prometheus
$ sudo mv -f node_exporter-0.16.0.linux-arm64/* ./node_exporter
$ sudo rm -r prometheus-2.3.2.linux-arm64
$ sudo rm -r node_exporter-0.16.0.linux-arm64
$ sudo rm prometheus-2.3.2.linux-arm64.tar.gz
$ sudo rm node_exporter-0.16.0.linux-arm64.tar.gz
$ sudo mkdir ./prometheus/data
$ sudo chown prometheus:prometheus /opt/prometheus -R

一応、これで配置が終わりました。

適当にサービスファイルを作って起動してやりましょう。

sudo nano /etc/systemd/system/prometheus.service
## 以下を書き込む
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/opt/prometheus/prometheus/prometheus --config.file=/opt/prometheus/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/prometheus/data
ExecReaload=/bin/kill -HUP $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

起動

$ sudo systemctl start prometheus.service
$ sudo systemctl enable prometheus.service
$ sudo ufw allow 9090

9090ポートにアクセスすると、Prometheusが動いていると思います。

何もパスワード制限とかされていないので、nginxとかでアクセス元制限するなりしないといけないでしょう。

監視対象の追加

初期では、Prometheus本体が監視対象ですが、他のものの監視を増やすことができます。

その一例として、node_exporterを使用しようと思います。

Rock64の監視

先程のPrometheusをインストールするときに、node_exporterをついでにダウンロードしましたが、ここで使います。
Prometheusの設定ファイルは/opt/prometheus/prometheus/prometheus.ymlに配置されています。

$ sudo nano /etc/systemd/system/prometheus-node_exporter.service
## 以下を記述
[Unit]
Description=Prometheus node exporter
After=network.target

[Service]
ExecStart=/opt/prometheus/node_exporter/node_exporter
User=prometheus
Group=prometheus

[Install]
WantedBy=multi-user.target
$ sudo systemctl start prometheus-node_exporter
$ sudo nano /opt/prometheus/prometheus/prometheus.yml
## 以下に
scrape_configs:
  # The job name is added as a label `job=` to any timeseries scraped$
  - job_name: 'prometheus'

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

    static_configs:
    - targets: ['localhost:9090']
## 追記
    - targets: ['localhost:9100']

targetsなんちゃらを追加し、Prometheusのサービスを再起動すると、追加されています。

localhost:9090/targets で監視対象のリストを見ることができます。

 

ArchLinuxで動いてるサーバを監視対象に追加

では、実際に自分が管理しているMinecraftサーバやWordpressを動かしてるArchLinuxサーバにnode_exporterを入れてみようと思います。

AURにPrometheusやnode_exporterがあるので、インストールは簡単です。

$ aurman -S prometheus-node-exporter
$ sudo systemctl start prometheus-node-exporter
$ sudo systemctl enable prometheus-node-exporter
$ sudo ufw allow 9100

node_exporterは9100ポートを使用します。

後は、Prometheusの設定ファイルに記述するだけです。
先ほどと同じようにtargetを追加するだけですが、グループごとにラベルをつけることができるので、それも含めてやってみます。

sudo nano /opt/prometheus/prometheus/prometheus.yml
## 以下に変更
    static_configs:
    - targets: ['localhost:9090','localhost:9100']
      labels:
        group: 'Tesla'
    - targets: ['xxx.xxx.xxx.xxx:9100']
      labels:
        group: 'Amane_svr'

ということで、監視対象に追加は成功しました。おわり。

 

グラフ

Prometheusだけだとこんな感じに表示されます。

Grafanaを使ったりすると、もっといい感じになるらしいですが、今日は飽きたのでこれで終わりです。

気が向いたらまた書きます。

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメント

コメントを残す