はじめに
Storageの監視は、システムの安定性やデータの安全性を確保する為に非常に重要な項目となりますが、NetApp Storageにおいては、健常性とPerformanceを一元的に監視および管理できるツールとして以下のものを利用する事ができます。
- Active IQ Unified Manager
- Cloud Insights
- Harvest
Storage容量が不足している場合は、アプリケーションのパフォーマンスが低下する可能性があるので、監視することでStorage容量の増加の必要性を知ることができますし、物理的な損傷やデータの破損などの問題についても事前に検知し、予防的な対策を講じることができます。
本記事ではDocker Compose経由のNetApp Harvestに関して導入から収集データの確認までについて記載致します。
(VMwareへOVA展開するNAboxについては本記事では記載してません)
何をしたい?できる?
- Dockerを利用したNetApp Harvestの導入を行う
- 収集されたデータをGUIで確認する
- グループ分けしたONTAPの電気使用量を確認してみる
NetApp Harvestについて
NetAppが提供するNetApp Storageからパフォーマンスデータを収集する無償ツールで、収集したデータをPrometheusやInfluxDBといったDatabaseに送付後、Grafanaを利用する事で可視化することができます。
Harvest単体には監視や可視化機能は無く、Database/Grafanaに転送する為のデータ収集を行います。
その為、監視の為にデータ収集(Harvest)、Database、可視化(Grafana)の役割を持つコンポーネントをそれぞれ導入する必要があります。
デフォルト構成(収集する情報)で、10Clusterを監視する場合は推奨構成は以下の通りです。
- CPU:2コア
- メモリ:1GB
- ディスク:500MB(主にログファイルとして使用)
記事における環境情報
本記事では、以下の環境で実施した内容となります。
- 監視先としてのONTAPを複数登録(DC-01, 02の2つのグループに分けている)
- Linux上にDockerを入れて、各役割(データ収集、Database、可視化)をコンテナとして展開
- Linuxにはuser01というユーザを追加して、操作はuser01で実行
OSやモジュールは以下の構成としています。
- Rocky Linux : 9.1
- Docker : 23.0.2
- Docker Compose : 2.17.2
- Netnet Harvest : 23.02
設定手順
この手順例では、新規で構築したLinux上にDockerの導入を含めて実施しています。
1. Dockerの導入
コンテナを利用してHarvestを構築する為、Rocky LinuxへDockerの導入から実施します。
まずは、リポジトリの追加と確認を実施します。
> sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
repo の追加: https://download.docker.com/linux/centos/docker-ce.repo
> dnf repolistdnf repolist
repo id repo の名前
appstream Rocky Linux 9 - AppStream
baseos Rocky Linux 9 - BaseOS
docker-ce-stable Docker CE Stable - x86_64
extras Rocky Linux 9 - Extras
dockerの導入とVersionを確認します。
> sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
メタデータの期限切れの最終確認: 0:00:17 時間前の 2023年04月17日 07時21分09秒 に実施しました。
依存関係が解決しました。
=====================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
=====================================================================================================================================
インストール:
containerd.io x86_64 1.6.20-3.1.el9 docker-ce-stable 33 M
置き換え runc.x86_64 4:1.1.4-1.el9_1
docker-ce x86_64 3:23.0.2-1.el9 docker-ce-stable 23 M
docker-ce-cli x86_64 1:23.0.2-1.el9 docker-ce-stable 7.1 M
docker-compose-plugin x86_64 2.17.2-1.el9 docker-ce-stable 11 M
依存関係のインストール:
docker-ce-rootless-extras x86_64 23.0.2-1.el9 docker-ce-stable 3.8 M
弱い依存関係のインストール:
docker-buildx-plugin x86_64 0.10.4-1.el9 docker-ce-stable 12 M
docker-scan-plugin x86_64 0.23.0-3.el9 docker-ce-stable 3.8 M
トランザクションの概要
=====================================================================================================================================
インストール 7 パッケージ
ダウンロードサイズの合計: 93 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(中略)
インストール済み:
containerd.io-1.6.20-3.1.el9.x86_64 docker-buildx-plugin-0.10.4-1.el9.x86_64 docker-ce-3:23.0.2-1.el9.x86_64
docker-ce-cli-1:23.0.2-1.el9.x86_64 docker-ce-rootless-extras-23.0.2-1.el9.x86_64 docker-compose-plugin-2.17.2-1.el9.x86_64
docker-scan-plugin-0.23.0-3.el9.x86_64
完了しました! Rocky Linux 9 - Extras
> docker -vdocker -v
Docker version 23.0.2, build 569dd73
Dockerサービスの自動起動の有効化とDockerの起動を行います。
> sudo systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
> sudo systemctl start docker
作成したuser01でDockerを実行できるようにdockerグループに追加して確認します。
> sudo usermod -aG docker user01
> newgrp docker
> id $USER
uid=1000(user01) gid=1000(user01) groups=1000(user01),10(wheel),977(docker)
2. Docker Composeの導入
複数コンテナをまとめて効率的に操作できるツールであるDocker Composeの導入を行います。
> curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
権限設定を実施し、場所をコマンド検索パスの通っているディレクトリに移動します。
そしてdocker-composeコマンドでVersionを確認し、パスが通っている事を確認します。
> sudo chmod +x docker-compose-linux-x86_64
> sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
> docker-compose version
Docker Compose version v2.17.2
3. NetApp Harvestの導入と設定ファイルの作成
最新のNetApp Harvest(現時点ではv23.02.0)をダウンロードします。
> wget https://github.com/NetApp/harvest/releases/download/v23.02.0/harvest-23.02.0-1_linux_amd64.tar.gz
github.com (github.com) をDNSに問いあわせています... 20.205.243.166
github.com (github.com)|20.205.243.166|:443 に接続しています... 接続しました。
(中略)
2023-04-17 07:31:42 (11.0 MB/s) - `harvest-23.02.0-1_linux_amd64.tar.gz' へ保存完了 [74170698/74170698]
ダウンロードしたファイルを展開し、移動します。
> tar -xvf harvest-23.02.0-1_linux_amd64.tar.gz
harvest-23.02.0-1_linux_amd64/
harvest-23.02.0-1_linux_amd64/docker/
(中略)
harvest-23.02.0-1_linux_amd64/bin/harvest
harvest-23.02.0-1_linux_amd64/bin/rest
> cd harvest-23.02.0-1_linux_amd64
> ls
LICENSE README.md bin cmd docker go.mod grafana harvest.yml prom-stack.tmpl
Makefile autosupport cert conf docs go.sum harvest.cue pkg service
監視対象のONTAPを登録する為、harvest.ymlファイルを作成します。
Pollers:以下の部分にONTAP Clusterの情報を記載します。
この例ではONTAP Clusterの3つ分のCluster管理LIFそれぞれ登録しつつ、2つのグループ(DC-01とDC-02)に分けている例です。
アカウントのXXXXXXX部分は登録対象に合わせて記載が必要となります。
なお、ONTAP Version 9.12未満のClusterでは、ZAPIコレクター使用が推奨されています。
> cat harvest.yml
Exporters:
prometheus1:
exporter: Prometheus
addr: 0.0.0.0
port_range: 2000-2030
Defaults:
collectors:
- Zapi
- ZapiPerf
use_insecure_tls: true
exporters:
- prometheus1
Pollers:
cluster-01:
datacenter: DC-01
addr: 192.168.123.123
auth_style: basic_auth
username: admin
password: XXXXXXX
cluster-02:
datacenter: DC-02
addr: 192.168.123.46
auth_style: basic_auth
username: test01
password: XXXXXXX
cluster-03:
datacenter: DC-02
addr: 192.168.123.47
auth_style: basic_auth
username: test03
password: XXXXXXX
4. Docker composeファイル生成とコンテナの一括作成・起動
作成したharvest.ymlからDocker compose用ファイルを生成します。
> pwd
/home/user01/harvest-23.02.0-1_linux_amd64
> bin/harvest generate docker full --port --output harvest-compose.yml
Wrote file_sd targets to docker/prometheus/harvest_targets.yml
Start containers with:
docker-compose -f prom-stack.yml -f harvest-compose.yml up -d --remove-orphans
コンテナの起動を実施します。
(起動後、docker psコマンドで確認しています)
> docker-compose -f prom-stack.yml -f harvest-compose.yml up -d --remove-orphans
[+] Running 0/0
? Network harvest-23020-1_linux_amd64_backend Creating 0.1s
(中略)
? Container prometheus Started 2.5s
? Container poller-cluster-02 Started 2.8s
? Container poller-cluster-03 Started 2.6s
? Container poller-cluster-01 Started 2.5s
? Container grafana Started 5.1s
#コンテナの確認
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e4c40607daa grafana/grafana:8.3.4 "/run.sh" 2 hours ago Up 2 hours 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp grafana
b24ce75958bd prom/prometheus:v2.33.1 "/bin/prometheus --c…" 2 hours ago Up 2 hours 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
7724ce783a1b cr.netapp.io/harvest:latest "bin/poller --poller…" 2 hours ago Up 2 hours poller-cluster-01
aa2b75d44dd5 cr.netapp.io/harvest:latest "bin/poller --poller…" 2 hours ago Up 2 hours poller-cluster-03
a70e82860b04 cr.netapp.io/harvest:latest "bin/poller --poller…" 2 hours ago Up 2 hours poller-cluster-02
5. Grafanaへのアクセス
http://LinuxのIPアドレス:3000 でGrafanaへのアクセスする事ができます。
アカウントの初期設定は以下の通りです。
初回Login時に新規Passwordの入力を求められるので、変更を実施します。
username: admin
password: admin
表示された画面から[Harvest-main-cDOT]をクリックし、確認するダッシュボードを選択します。
この例では[ONTAP: Power]を選択し、電気の利用量を確認します。
画面上方の[Datacenter]や[Cluster]を操作する事で、個々の機器やグループ単位の電気の利用量を確認する事ができます。