LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

Facebook X Instagram
サービス・製品 | 

メトリックを強化!OCIにPrometheusで繋げる、拡がるリソース監視

システムの健全性を評価するために各種リソースの状況を定期的に確認することは、パブリック・クラウドを利用するシステムであっても、オンプレミス環境と同様に利用者側の責任において実施が必要です。

一般的なクラウドでは各リソースのヘルス、容量およびパフォーマンスをモニタリングするための「メトリック」と呼ばれるデータが標準で収集されています。しかし、自動で取得されるメトリックだけでは十分とは言えず他の監視ソフトを利用する、または監視用のスクリプトなどを独自に作成して運用するというシステムも少なくありません。

本記事では、Oracle Cloud Infrastructure(以下、OCI)において、クラウドの標準メトリックでは取得できないコンピュートVMの情報を無償のPrometheusを利用して収集し、OCIモニタリング・サービスへ連携する方法について紹介します。

Prometheusとは

Prometheusは、Go言語で開発されたオープンソースの監視およびアラートのツールキットです。監視したいホストに各種情報を取得するためのExporterを導入することで、簡易的なWebサーバを起動します。監視する側はExporterに対して定期的にポーリングを行い、定義されたメトリック情報を取得し保管、そして必要に応じてアラートを通知します。

Prometheus Exporter

Exporterは監視エージェントの位置づけとして稼働するソフトウェアです。Exporterは監視対象のサーバや機器から取得したデータを元にPrometheus形式のメトリックを生成し、HTTPエンドポイントとして公開します。

Exporterは監視する対象(ハードウェア、OS、ミドルウェアなど)ごとに個別のモジュールに分けて提供され、公式サイトではサードパーティ製を含めると200以上のExporterが公開されています。

本記事で紹介するコンピュートVMのOS監視では以下のExporterを使用します。

  • Node/system metrics exporter:Linux OSから各種情報を取得するExporter
  • Process exporter:/procよりプロセスの稼働情報を取得するExporter
  • Windows exporter:Windows OSから各種情報を取得するExporter

その他、OracleやMySQLといったデータベースに対するExporterだけでなく、ApacheやSquidなど様々なミドルウェアに関するものがあるため、システム環境に適したExporterを選択し利用できます。

それぞれのExporterの概要説明やダウンロードは以下のページを参照してください。

Exporters and integrations | Prometheus

OCI管理エージェントとの連携

OCIでは、Oracle Cloud Infrastructure Management Agentsサービス(以下、管理エージェント)と呼ばれるエージェントを使用してデータ・ソースとやり取りし、取得したデータを別のOCIサービスに連携します。管理エージェントはOracle Linuxなど一部のコンピュートVMでは標準で導入されますが、Windows Serverや他から持ち込んだイメージなど、サポートされているOSであれば手動でデプロイして使用できます。

そして管理エージェントは、Prometheus形式でメトリック・データを公開する任意のリソースから時系列パフォーマンス・メトリック・データの収集をサポートしています。そのため簡単な設定だけでExporterで取得したメトリックを識別し、OCIモニタリング・サービスへカスタム・メトリックとしてアップロードさせることができます。

OCI管理エージェントと連携する構成図

Prometheusを使用するための事前準備

OCI上で稼働する監視対象のサーバにPrometheus Exporterを導入し、各種メトリック・データを連携させるための事前準備として、OCIのポリシーや管理エージェントを構成します。

ポリシーの設定

Exporterで取得するデータを、管理エージェントからモニタリング・サービスへ、カスタム・メトリックとして連携させるために必要なIAMポリシーを作成します。

動的グループの作成

最初に、連携対象とするコンピュートVMの管理エージェントが配置されたコンパートメントに対するルールを定義した動的ポリシーを作成します。

一致ルールの定義

ALL {resource.type='managementagent', resource.compartment.id='<AGENT_COMPARTMENT_OCID>'}
動的グループの詳細画面

IAMポリシーの作成

次に、先ほど作成した動的グループを指定したIAMポリシーを作成し、管理エージェントが収集したメトリック・データをOCIモニタリング・サービスにポストすることを許可します。メトリック・ネームスペースの指定は後続の手順(管理エージェント構成ファイルの作成)で指定するネームスペース名と一致させる必要がありますが、ネームスペース名で連携を制限しない場合はwhereの条件は省略可能です。

ポリシー・ステートメント

allow dynamic-group <DYNAMIC_GROUP_NAME> to use metrics in compartment <COMPARTMENT_NAME> where target.metrics.namespace = '<ネームスペース名>'
ポリシーの詳細画面

管理エージェントの有効化

Oracle Linux

Oracle Linuxの管理エージェントは、Oracle Cloudエージェントのプラグインとして構成されています。OCIコンソールを使用してインスタンスの詳細画面にある「Oracle Cloudエージェント」タブから、「管理エージェント」が有効化されていることを確認します。初期構築時のデフォルトは無効ですが、トグルボタンを有効に切り替えることで数分後にステータスが「実行中」に変わります。

作業リクエスト画面。「管理エージェント」が有効化されていることを確認。

Windows Server

Windows Serverなど、管理エージェントが導入されていないOSでは、事前に管理エージェントをインストールし稼働させる必要があります。

Windows Serverの管理エージェントは大まかに次のステップで導入します。

  1. OCIコンソールより管理エージェント・ソフトウェアのダウンロード
  2. OCIコンソールよりインストール・キーの作成
  3. レスポンス・ファイルの構成
  4. JDK8(1.8u281以上)のインストール
  5. 管理エージェントのインストール

管理エージェントのソフトウェアやインストールのキーは、ナビゲーション・メニューから、「監視および管理」>「管理エージェント」>「ダウンロードとキー」を選択し、表示された画面からダウンロードします。

ダウンロードとキー画面

本記事では管理エージェントの導入手順の詳細は割愛しますが、公式マニュアルなどを参照して導入を行ってください。

Oracle Cloud Infrastructureドキュメント - 管理エージェントのインストール

Windows Serverに管理エージェントを導入すると、Windowsサービスに「Oracle Management Agent」が追加されます。

Oracle Management Agentが追加されていることを確認

Prometheus Exporterの準備

導入するExporterのモジュールをPrometheusのサイトよりダウンロードします。

本記事では執筆時点の最新バージョンを使用します。

Exporter バージョン バージョン ファイル名
node_exporter 1.8.2 node_exporter-1.8.2.linux-amd64.tar.gz
process-exporter 0.8.5 process-exporter-0.8.5.linux-amd64.tar.gz
windows_exporter 0.30.1 windows_exporter-0.30.1-amd64.msi

Oracle Linux 8をPrometheusと連携させる

ここからは、Oracle Linux 8に各種Exporterを導入し、管理エージェントと連携させる手順を説明します。

導入設定

項目 設定値 備考
Prometheus稼働ユーザ opc 専用のOSユーザを作成してもよい
Node exporter導入ディレクトリ /etc/prometheus/nodeExporter
Process exporter導入ディレクトリ /etc/prometheus/processExporter

収集メトリック

Exporter 収集対象 メトリック名
Node exporter ファイルシステムの容量 node_filesystem_size_bytes
ファイルシステムの空き容量 node_filesystem_avail_bytes
Systemd(rsyslog.service)のステータス node_systemd_unit_state
Process exporter プロセス(rsyslogd)の稼働数 namedprocess_namegroup_num_procs

Prometheus Exporterの導入

導入ディレクトリの作成

Linux環境へExporterを導入する方法は、tar.gz形式のファイルを解凍するだけです。監視対象のサーバに初めてExporterを導入する場合、Exporterを展開する任意のディレクトリを作成します。本手順では、/etc/prometheusを使用します。

$ id
uid=1000(opc) gid=1000(opc) groups=1000(opc),4(adm),190(systemd-journal)
 
$ sudo mkdir /etc/prometheus
$ sudo chown opc:opc /etc/prometheus
$ ls -ld /etc/prometheus
drwxr-xr-x. 2 opc opc 6 Feb  1 13:21 /etc/prometheus

Node exporterのインストール

ファイルシステムやSystemdサービスのメトリックを取得するためにNode exporterを導入します。本手順では導入するモジュールをwgetコマンドで/tmpにダウンロードしますが、事前にダウンロードしたファイルをサーバにアップロードしても問題ありません。

$ PNE_DL_URL=https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
 
$ cd /tmp
$ wget ${PNE_DL_URL}
<中略>
HTTP request sent, awaiting response... 200 OK
Length: 10676343 (10M) [application/octet-stream]
Saving to: 'node_exporter-1.8.2.linux-amd64.tar.gz'
node_exporter-1.8.2.linu 100%[=======================>]  10.18M  --.-KB/s    in 0.05s
2025-02-01 13:23:07 (210 MB/s) - 'node_exporter-1.8.2.linux-amd64.tar.gz' saved [10676343/10676343]

Node exporterを展開します。

$ PNE_DIR=/etc/prometheus/nodeExporter
$ mkdir ${PNE_DIR}
$ ls -l /etc/prometheus
drwxrwxr-x. 2 opc opc 6 Feb 1 13:24 nodeExporter
 
$ tar xvfz node_exporter-* -C ${PNE_DIR} --strip-components 1
node_exporter-1.8.2.linux-amd64/NOTICE
node_exporter-1.8.2.linux-amd64/node_exporter
node_exporter-1.8.2.linux-amd64/LICENSE
 
$ rm -f /tmp/node_exporter-*.tar.gz

Process exporterのインストール

次に、プロセスの状態を取得するためのProcess exporterを導入します。作業の流れはNode exporterと同様の手順となりますが、ダウンロードするURLのパスが変わることに注意してください。

$ PPE_DL_URL=https://github.com/ncabatoff/process-exporter/releases/download/v0.8.5/process-exporter-0.8.5.linux-amd64.tar.gz
 
$ cd /tmp
$ wget ${PPE_DL_URL}
<中略>
HTTP request sent, awaiting response... 200 OK
Length: 4475835 (4.3M) [application/octet-stream]
Saving to: 'process-exporter-0.8.5.linux-amd64.tar.gz'
process-exporter-0.8.5.linux-am 100%[===================>]   4.27M  25.0MB/s    in 0.2s
2025-02-01 13:25:05 (25.0 MB/s) - 'process-exporter-0.8.5.linux-amd64.tar.gz' saved [4475835/4475835]

Process exporterを展開します。

$ PPE_DIR=/etc/prometheus/processExporter
$ mkdir ${PPE_DIR}
$ ls -l /etc/prometheus
drwxrwxr-x. 2 opc opc 56 Feb  1 13:24 nodeExporter
drwxrwxr-x. 2 opc opc  6 Feb  1 13:26 processExporter
 
$ tar xvfz process-exporter-* -C ${PPE_DIR} --strip-components 1
process-exporter-0.8.5.linux-amd64/LICENSE
process-exporter-0.8.5.linux-amd64/README.md
process-exporter-0.8.5.linux-amd64/process-exporter
 
$ rm -f /tmp/process-exporter-*.tar.gz

Exporter稼働確認

Node exporterを起動し、正常に動作することを確認します。

$ /etc/prometheus/nodeExporter/node_exporter
<中略>
ts=2025-02-01T04:27:15.652Z caller=tls_config.go:313 level=info msg="Listening on" address=[::]:9100
ts=2025-02-01T04:27:15.652Z caller=tls_config.go:316 level=info msg="TLS is disabled." http2=false address=[::]:9100

デフォルトではNode exporterはhttp/9100で要求を受け付けます。別のターミナルを開き、curlコマンドでメトリック情報を取得できることを確認します。

$ curl http://localhost:9100/metrics
<中略>
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

続けて、Process exporterが正常に動作することを確認します。Node exporterを稼働させたターミナルで一旦コマンドを終了(Ctrl+c)し、代わりにProcess exporterを起動します。

<Ctrl+c>
 
$ /etc/prometheus/processExporter/process-exporter
2025/02/01 13:28:15 Reading metrics from /proc for procnames: []
level=info ts=2025-02-01T04:28:15.822Z caller=tls_config.go:313 msg="Listening on" address=[::]:9256
level=info ts=2025-02-01T04:28:15.822Z caller=tls_config.go:316 msg="TLS is disabled." http2=false address=[::]:9256

デフォルトではProcess exporterはhttp/9256で要求を受け付けます。別ターミナルより、curlコマンドでメトリック情報を取得できることを確認します。

$ curl http://localhost:9256/metrics
<中略>
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

Exporterサービスの自動起動設定

Systemdを使用し、サーバを再起動した場合にも導入した各Exporterが自動で起動するように設定します。なお、テストで必要なメトリック情報だけを取得する設定も同時に行います。本手順では以下の情報を取得対象とします。

Exporter 取得対象 指定パラメータ
Node exporter filesystemコレクタ
systemdコレクタ
--collector
Process exporter rsyslogdプロセス -procnames

※ Exporterによって引数指定時の「-」の指定方法に違いがあります。使用する際にはExporterのヘルプなどを確認してください。

Node exporterの自動起動設定

記述例を参考にして、Systemdのユニットファイルを作成します。

$ sudo vi /etc/systemd/system/node_exporter.service

node_exporter.service記述例

[Unit]
Description=Prometheus Node exporter
 
[Service]
Type=simple
User=opc
ExecStart=/etc/prometheus/nodeExporter/node_exporter --collector.disable-defaults ¥
--collector.filesystem ¥
--collector.systemd --collector.systemd.unit-include "rsyslog.service"
Restart=always
 
[Install]
WantedBy=multi-user.target

作成したサービスを有効化し、起動させます。

$ sudo systemctl daemon-reload
$ sudo systemctl enable node_exporter.service
Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service -> /etc/systemd/system/node_exporter.service.
 
$ sudo systemctl start node_exporter.service
$ systemctl status node_exporter.service
* node_exporter.service - Prometheus Node exporter
   Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2025-02-01 13:31:15 JST; 5s ago
 Main PID: 9375 (node_exporter)
    Tasks: 4 (limit: 48354)
   Memory: 4.9M
   CGroup: /system.slice/node_exporter.service
           `-9375 /etc/prometheus/nodeExporter/node_exporter --collector.disable-defaults --collector.filesystem --collector.systemd --collector.systemd.unit-include rsyslog.service
<中略>

Process exporterの自動起動設定

記述例を参考にして、Systemdのユニットファイルを作成します。

$ sudo vi /etc/systemd/system/process_exporter.service

process_exporter.service記述例

[Unit]
Description=Prometheus Process exporter
 
[Service]
Type=simple
User=opc
ExecStart=/etc/prometheus/processExporter/process-exporter -procnames rsyslogd
Restart=always
 
[Install]
WantedBy=multi-user.target

作成したサービスを有効化し、起動させます。

$ sudo systemctl daemon-reload
$ sudo systemctl enable process_exporter.service
Created symlink /etc/systemd/system/multi-user.target.wants/process_exporter.service -> /etc/systemd/system/process_exporter.service.
 
$ sudo systemctl start process_exporter.service
$ systemctl status process_exporter.service
* process_exporter.service - Prometheus Process exporter
   Loaded: loaded (/etc/systemd/system/process_exporter.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2025-02-01 13:32:43 JST; 5s ago
 Main PID: 9470 (process-exporte)
    Tasks: 4 (limit: 48354)
   Memory: 8.3M
   CGroup: /system.slice/process_exporter.service
           `-9470 /etc/prometheus/processExporter/process-exporter -procnames rsyslogd

管理エージェント構成ファイルの作成

管理エージェントがPrometheusのメトリックをスクレイプできるように、検出ディレクトリに構成ファイルを作成します。ファイル名は管理しやすい任意の名称で問題ありませんが、拡張子は「.properties」にする必要があります。

Oracle Linux環境の検出ディレクトリを示します。

  • /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/discovery/PrometheusEmitter

構成ファイルで指定する、代表的なプロパティを示します。

プロパティ名 必須/オプション 説明
url 必須 Prometheus Exporterがメトリックを公開するURL
compartmentId 必須 スキャンされたメトリックをアップロードするコンパートメントのOCID
namespace 必須 スキャンされたメトリックをアップロードするOCIモニタリング・ネームスペース
metricDimensions オプション アップロードされたすべてのデータ・ポイントのディメンションとして使用される固定値として表される、他のユーザ指定のプロパティの名前
allowMetrics オプション 必要なスクレイプされたメトリックの完全なセット。必要に応じて、このプロパティを使用してアップロードするメトリックのセットを制限する
resourceGroup オプション OCIモニタリングのリソース・グループ
scheduleMins オプション スクレイピング間隔(分)。指定しない場合デフォルト値は5分(最小値は1分)

その他のプロパティは公式マニュアルを参照してください。

Oracle Cloud Infrastructureドキュメント:構成ファイルの作成|Prometheusノード・エクスポータを使用してメトリックを収集するための管理エージェントの構成

Node exporterの設定

コンピュートVMと同じコンパートメントにメトリックをアップロードする場合、構成ファイルに指定するコンパートメントIDをコマンドで確認できます。別のコンパートメントを使用する場合はOCIコンソールなどで事前にOCIDを確認してください。

$ METAD=$(curl -H 'Authorization: Bearer Oracle' http://169.254.169.254/opc/v2/instance)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3194    0  3194    0     0   779k      0 --:--:-- --:--:-- --:--:-- 1039k
 
$ OCID=$(echo ${METAD} | jq -r '.compartmentId')
$ echo ${OCID}
ocid1.compartment.oc1..aaaaaaaxxxx・・・

記述例を参考にして、構成ファイルを作成します。ファイル名は取得するメトリックを識別しやすい名称にします。また、連携するメトリックとして「ファイルシステム使用量、空き容量」および「Systemdサービスのステータス」のみを指定します。

$ CONF_DIR=/var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/discovery/PrometheusEmitter
$ sudo vi ${CONF_DIR}/filesystem.properties

filesystem.properties記述例

url=http://localhost:9100/metrics
compartmentId=ocid1.compartment.oc1..aaaaaaaxxxx...
namespace=node_exporter
nodeName=LINSVR01
metricDimensions=nodeName
allowMetrics=node_filesystem_size_bytes,node_filesystem_avail_bytes,node_systemd_unit_state
scheduleMins=5

管理エージェントが正常に構成ファイルを検出すると、以下のディレクトリにjsonファイルが作成されます。検出には数分かかるため、作成されるまで何度か確認します。

$ sudo ls /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/config/sources
OCI.Agent.PrometheusEmitter.1.filesystem.json

jsonファイルが作成されない場合、何らかの設定が間違っている可能性があります。管理エージェントのログを参照して原因を確認してみてください。

$ sudo ls -l /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/log
total 1612
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent      75 Feb 1 19:48 agent.pid
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent  394114 Feb 1 20:03 mgmt_agent.log
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent   26265 Feb 1 20:03 mgmt_agent_awr.log
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent 1035695 Feb 1 20:04 mgmt_agent_client.log
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent       0 Feb 1 16:47 mgmt_agent_errors.log
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent     721 Feb 1 19:48 mgmt_agent_logan.log
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent   25921 Feb 1 20:03 mgmt_agent_work.log
-rwxr-x---. 1 oracle-cloud-agent oracle-cloud-agent    3220 Feb 1 19:48 startup.info

Process exporterの設定

記述例を参考にして、構成ファイルを作成します。ファイル名は同様に取得するメトリックを識別できる名称にします。また、連携するメトリックとして「プロセスの稼働数」のみを指定します。

$ sudo vi ${CONF_DIR}/process.properties

process.properties記述例

url=http://localhost:9256/metrics
compartmentId=ocid1.compartment.oc1..aaaaaaaae...
namespace=process_exporter
nodeName=LINSVR01
metricDimensions=nodeName
allowMetrics=namedprocess_namegroup_num_procs
scheduleMins=5

jsonファイルが追加で作成されたことを確認します。

$ sudo ls -1 /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/config/sources
OCI.Agent.PrometheusEmitter.1.filesystem.json
OCI.Agent.PrometheusEmitter.2.process.json

以上で、Oracle LinuxからPrometheus Exporterでメトリック・データを連携させる設定は完了です。正しく構成されていればOCIモニタリング・サービスに選択したメトリックが表示できるようになります。

Windows Server 2022をPrometheusと連携させる

ここからは、Windows Server 2022にWindows exporterを導入し、管理エージェントと連携させる手順を説明します。

導入設定

項目 設定値 備考
Windows exporter導入ディレクトリ C:¥Program Files¥windows_exporter デフォルト設定

収集メトリック

Exporter 収集対象 メトリック名
Windows exporter 論理ドライブ容量 windows_logical_disk_size_bytes
論理ドライブ空き容量 windows_logical_disk_free_bytes
Windowsサービスの稼働ステータス windows_service_state

Windows exporterの導入

Windows exporterのインストール

コマンドプロンプトを管理者権限で起動し、サーバにアップロードしたWindowsインストーラを実行します。また、導入と同時にテストで必要なメトリック情報だけを取得する設定も行います。本手順では以下の情報を取得対象としています。

Exporter 取得対象 指定パラメータ
Windows exporter logical_diskコレクタ
serviceコレクタ
ENABLE_COLLECTORS

実行コマンドの末尾にある「/qn」を省略することで、GUIでのセットアップ ウィザードを起動させることもできます。

C:¥> msiexec /i windows_exporter-0.30.1-amd64.msi ENABLED_COLLECTORS=logical_disk,service /qn

Windows exporterの導入が完了すると、Windowsサービスが作成されます。デフォルトで自動起動が有効となるため、Oracle Linuxとは違い追加での設定は必要ありません。

Windows exporterが導入されていることを確認

自サーバの管理エージェントと連携する場合はlocalhostで接続するため必須ではありませんが、別のサーバからメトリックを収集する場合はExporterインストール時のコマンドに「ADDLOCAL=FirewallException」を付けることで、Windows Defender Firewallのインバウンド・ルールに、Windows exporterで必要なポートを許可するルールを自動設定できます。

Windows Defender Firewallのインバウンド・ルール

Exporter稼働確認

デフォルトではWindows exporterはhttp/9182で要求を受け付けます。EdgeなどのWebブラウザを起動し、メトリック情報を取得できることを確認します。

  • URL:http://localhost:9182/metrics
Webブラウザでメトリック情報を取得できることを確認

管理エージェント構成ファイルの作成

管理エージェントがPrometheusのメトリックをスクレイプできるように、検出ディレクトリに構成ファイルを作成します。ファイル名は管理しやすい任意の名称で問題ありませんが、拡張子は「.properties」にする必要があります。

なお、構成ファイルで指定する代表的なプロパティは、Oracle Linuxの説明を参照してください。

Windows exporterの設定

記述例を参考にして、検出ディレクトリに構成ファイルを作成します。ファイル名はExporter名に合わせ「windows.properties」とします。

  • 検出ディレクトリ:C:¥Oracle¥mgmt_agent¥agent_inst¥discovery¥PrometheusEmitter

windows.properties記述例

url=http://localhost:9182/metrics
compartmentId=ocid1.compartment.oc1..aaaaaaaae...
namespace=windows_exporter
nodeName=WINSVR01
metricDimensions=nodeName
allowMetrics=windows_logical_disk_size_bytes,windows_logical_disk_free_bytes,windows_service_state
scheduleMins=5

管理エージェントが正常に構成ファイルを検出すると、以下のディレクトリにjsonファイルが作成されます。検出には数分かかるため、作成されるまでエクスプローラなどで何度か確認します。

  • ディレクトリ:C:¥Oracle¥mgmt_agent¥agent_inst¥config¥sources
jsonファイルが作成されたことを確認

以上で、Windows ServerからPrometheus Exporterでメトリック・データを連携させる設定は完了です。正しく構成されていればOCIモニタリング・サービスに選択したメトリックが表示できるようになります。

OCIコンソールから設定結果を確認する

最後にOCIコンソールを使用して、登録したデータ・ソースの設定や連携したメトリックを確認します。

管理エージェントの確認

管理エージェントと連携したPrometheusの設定は、OCIコンソールから確認ができます。

ナビゲーション・メニューから、「監視および管理」>「管理エージェント」>「エージェント」を選択し、表示された画面の左ペインにある「Agents with DataSource」をクリックします。

Agents with DataSource画面

一覧からエージェントの詳細画面を開き、「Manage DataSources」ボタンをクリックすると、作成した構成ファイルの名前でデータ・ソースが登録されていることを確認できます。

作成した構成ファイルの名前でデータ・ソースが登録されていることを確認

データ・ソースの右側にある三点リーダーから「Edit」を選択することで、各種設定を参照および修正できます。

DataSources画面

ディメンションや選択したメトリックなどの情報を追加・修正できますが、OCIコンソールからデータ・ソースの設定を変更した場合jsonファイルのみが反映されるため、検出ディレクトリに作成した構成ファイルとの整合性が取れなくなる点には注意してください。

Edit DataSource画面

モニタリング・サービスで連携したメトリックを確認

OCIモニタリング・サービスから、Prometheus Exporterで連携したメトリック・データを確認します。

ナビゲーション・メニューから、「監視および管理」>「モニタリング」>「メトリック・エクスプローラ」を選択し、画面下部の「問合せ」領域にある「Compartment」を管理エージェントから転送したメトリックに設定すると、「Metric namespace」に今回設定した各種Exporterのネームスペースが表示されます。

メトリック・エクスプローラ画面の下部。

ここからは、今回設定したExporterのメトリック・データが取得できていることを確認します。なお、すべての例で省略していますが、通常のシステムでは複数サーバが存在することと思いますので、実際の現場ではMetric dimensionsの「nodeName」で確認対象のサーバを識別してください。

Node exporter:ファイルシステム容量・空き容量

node_exporterで連携した「node_filesystem_size_bytes」「node_filesystem_avail_bytes」メトリックを複数のQueryを使用して選択します。さらにデフォルトではすべてのファイルシステムが対象となるため、Metric dimensionsで「/」だけを指定します。

  • mountpoint:/
メトリック・エクスプローラ画面。Node exporterのファイルシステム容量、空き容量を確認。

Node exporter:Systemdサービスのステータス

node_exporterで連携した「node_systemd_unit_state」メトリックを選択します。本手順では「rsyslog.service」のみ連携しているため省略も可能ですが、複数サービスの情報を取得した場合には、Metric dimensionsで対象のサービスだけを指定します。

  • name:rsyslog.service
  • state:active
メトリック・エクスプローラ画面。Node exporterのSystemdサービスのステータスを確認。

このようにSystemdサービスに登録されたミドルウェアの場合は、Node exporterだけでステータスの監視が可能となります。

Process exporter:プロセスのステータス

process_exporterで連携した「namedprocess_namegroup_num_procs」メトリックを選択します。本手順では「rsyslogd」のみ連携しているため省略も可能ですが、複数プロセスのステータスを取得した場合には、Metric dimensionsで対象のプロセスだけを指定します。

  • groupname:rsyslogd
メトリック・エクスプローラ画面。Process exporterのプロセスステータスを確認。

Windows exporter:論理ドライブの容量・空き容量

windows_exporterで連携した「windows_logical_disk_size_bytes」「windows_logical_disk_free_bytes」メトリックを複数のQueryを使用して選択します。さらにデフォルトではすべてのボリュームが対象となるため、Metric dimensionsで「Cドライブ」だけを指定します。

  • volume:C:
メトリック・エクスプローラ画面。Windows exporterの論理ドライブの容量、空き容量を確認。

Windows exporter:Windowsサービスのステータス

windows_exporterで連携した「windows_service_state」メトリックを選択します。本手順では例としてWindowsタイム・サービスのステータスを指定します。

  • name:W32Time
  • state:running
メトリック・エクスプローラ画面。Windows exporterのWindowsサービスステータスを確認

おわりに

OCIでは、コンピュートVMの管理エージェントとPrometheusを連携させることで、標準メトリックでは取得できないリソース情報を追加で収集できます。本記事では説明を省略しましたが、Prometheusで取得したメトリックも標準のものと変わりはないため、OCIアラームと通知サービスを組み合わせれば、特定の条件をトリガーにアラートとしてメール通知することも可能となります。OCIの標準メトリックだけでは物足りず、あきらめていた監視項目があれば、まずPrometheusで実現できないか検討してみてはいかがでしょうか。

ラックではOCIだけではなく、AWS、Azure、Google Cloudも取り扱っています。企業のシステム環境、課題に合わせ、適切なソリューション・サービスを提案いたしますので、マルチクラウドやハイブリッドクラウドも含めたシステム構成に関するお悩みがありましたら、ぜひラックまでお問い合わせください。

この記事は役に立ちましたか?

はい いいえ

関連記事

LAC WATCH

関連記事をご紹介します

  • Oracle Cloud Infrastructure(OCI)とは?OCIのポイントを押さえよう

  • クラウドネットワークセキュリティの新機軸、OCI Zero Trust Packet Routing

  • リソース停止忘れを解消!OCIリソース・スケジューラを使ったリソース管理

page top