apcupsd_exporterをセットアップしてUPSの状態を監視する手順
この記事では、apcupsd_exporterをセットアップしてUPSの状態を監視する手順を紹介します。
はじめに
サーバー監視においてメトリクスの収集に Prometheus を、アラーティングに Alertmanager を、可視化に Grafana を使うのは、そこそこ一般的なことではないでしょうか。
また、その場合はサーバーに node_exporter をセットアップすることも一般的だと思います。
そしてサーバーが物理サーバーの場合には、さらにUPSの状態も監視したくなります。[1]
というわけで、今回はサーバーに apcupsd_exporter をセットアップしてUPSの状態を監視する手順を説明します。
概要
今回扱うシステムで情報の流れを図示すると次のようになります。
図中のUbuntu 20.04 ServerがUPSと接続されている監視対象サーバー、Ubuntu 22.04 Serverがモニタリングサーバーという立ち位置ですね。[2]
apcupsd_exporter
それでは監視対象サーバーにapcupsd_exporterをセットアップしましょう。
Goのインストール
apcupsd_exporterはGoのパッケージなので、はじめにGoの実行環境をインストールします。
公式の手順 Download and install に沿って進めましょう。アーカイブを取得して /usr/local
に展開します。(古いバージョンが存在する場合は、先に sudo rm -rf /usr/local/go
を実行して古い方を削除しておきます)
wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz
これでGoのファイル一式が /usr/local/go
に配置されました。
それからパスを通します。ホームディレクトリの ~/.profile
に下記の変更を加えてログインし直しましょう。[3]
+export PATH=$PATH:/usr/local/go/bin
次のコマンドを実行して、Goのバージョンが表示されたらGoのインストールは完了です。
go version
apcupsd_exporterのインストール
続いてapcupsd_exporterをインストールします。
次のように go install
コマンドを実行してください。
go install github.com/mdlayher/apcupsd_exporter/cmd/apcupsd_exporter@latest
これで ~/go/bin/
にバイナリ(実行ファイル)の apcupsd_exporter
がインストールされると思います。次のようにコマンドを叩いて実行してみましょう。
./go/bin/apcupsd_exporter
念のため、ここで http://192.168.0.10:9162/metrics
のような感じでブラウザから当該サーバーにアクセスし、メトリクスが取得できることを確認しておくと安心かも知れません。
サービスの登録と実行
あとは apcupsd_exporter
がサービスとして動くようにすれば良さそうですね。
まずはユーザーの作成、実行ファイルの移動、所有権の変更を行います。
sudo useradd -s /sbin/nologin apcupsd_exporter
sudo mv ~/go/bin/apcupsd_exporter /usr/local/bin/
sudo chown apcupsd_exporter:apcupsd_exporter /usr/local/bin/apcupsd_exporter
さらにサービスファイルを作ります。
sudo vim /etc/systemd/system/apcupsd_exporter.service
中身はnode_exporterの時とほとんど同じです。
[Unit]
Description=Apcupsd Exporter
[Service]
User=apcupsd_exporter
ExecStart=/usr/local/bin/apcupsd_exporter
[Install]
WantedBy=multi-user.target
最後にサービスを有効化して実行を開始します。
sudo systemctl daemon-reload
sudo systemctl enable apcupsd_exporter.service
sudo systemctl start apcupsd_exporter.service
Prometheus
モニタリングサーバー側もPrometheusでメトリクスが収集できるようにしましょう。
次のような感じでPrometheusの設定ファイルを変更し、Prometheusを再起動すればOKです。
scrape_configs:
中略
- job_name: ups
static_configs:
- targets:
- 192.168.0.10:9162
Grafana
仕上げにGrafanaにダッシュボード APC UPS を追加しましょう。
まず左端のメニュー「Dashboards」から「Import」を選びます。ID 13525
を指定して「Load」を実行し、データソースにPrometheusを指定して「Import」すれば追加は完了です。
ダッシュボードの調整
しかしながらデフォルトのままだと、APC UPSの各パネルが参照するメトリクス名が微妙に違っているため、うまく表示されないと思います。
デフォルトのままではうまく表示されない
この場合はGrafanaに管理者権限のあるユーザーでログインし、各パネルの「Edit」からメトリクス名を手直しすれば表示されるようになります。
メトリクス名の対応を下表にまとめました。
メトリクス名(デフォルト) | メトリクス名(手直し後) |
---|---|
apcups_status_numeric | apcupsd_info |
apcups_battery_charge_percent | apcupsd_battery_charge_percent |
apcups_time_on_battery_seconds | apcupsd_battery_time_on_seconds |
apcups_load_percent | apcupsd_ups_load_percent |
apcups_time_left_seconds | apcupsd_battery_time_left_seconds |
apcups_line_volts | apcupsd_line_volts |
apcups_ | apcupsd_output_volts |
apcups_nom_battery_volts | apcupsd_battery_nominal_volts |
apcups_battery_volts | apcupsd_battery_volts |
メトリクス名の手直し後、表示が次のように変わってUPSの状態を監視できるようになりました。
メトリクス名を手直しするとうまく表示される
よかったよかった。
おわりに
今回はapcupsd_exporterをセットアップしてUPSの状態を監視する手順を紹介しました。どなたかのお役に立てば幸いです。
Discussion