OCIカスタム・メトリックでディスク使用率を監視

OCI General

初めに

OCI Monitoringサービスを使用すると、メトリックおよびアラーム機能を使用してクラウド・リソースを監視できます。例えば、OCI上のComputeインスタンス、データベース、および他のリソースのステータスを監視できます。
OCI Monitoring Graph

OCI/On-P上のサーバーのディスク使用率(パーセンテージ)を監視したい時があります。この場合、既存のメトリックが存在しないので、カスタム・メトリック機能を使用すればOKです。

それを実現するためには、ディスク使用率を収集し、OCIに送信するスクリプトを用意する必要があります。スクリプト実施後、OCIコンソールから他のメトリックと同じようにディスク使用率を監視できます。

このブログでは、カスタム・メトリック機能を使用してディスク使用率の監視方法について簡単に紹介します。 サンプルのPythonスクリプトが含まれています。 もちろん、他の言語でもOKです。

※、OCI-CLIを利用しメトリック・データをOCIへポストできますが、ディスク使用率の取得はCLIの範囲外です。

環境
クライアント OS: Windows 10 (On-P)
利用言語:Python 3.9.6

1. 事前準備

1-1. APIキーの追加

OCIコンソールにログインし、APIキーを追加します (追加済の場合、このステップを飛ばします)。

MENU → Identity & Security → Identity → Users → User Details → API Keys → Add API Key
秘密鍵と公開鍵のファイルを安全な場所に保存します。
Add API Key
「追加」ボタンをクリックした後、「構成ファイルのプレビュー」画面に進んでください。

1-2. OCI構成ファイルの作成

Config File Preview
クライアントからOCIに接続する時、認証は必要で、認証用の情報を構成ファイルとして作成します。
「コピー」をクリックして、テキストを構成ファイルに保存します。

ファイル名と保存場所
Windowsの場合:C:\Users\your_username\.oci\config
Linuxの場合:/home/your_username/.oci/config
Check config file

1-3. Pythonスクリプトの準備

まだPythonがインストールされない場合は、こちらから最新バージョンをダウンロードし、インストールしてください。

以下のサンプル・スクリプトを提供します。
目的:ディスク使用率を取得し、カスタム・メトリックとして公開します。
"compartment_ocid" 文字列をコンパートメントのOCIDに置き換えます。
"service_endpoint" 文字列をエンドポイントに置き換えます。
モニタリングAPIエンドポイントについては、こちらを確認してください。

# This is a sample python script that post a custom metric(disk_usage) to oci monitoring.
# Run this script on the client that you want to monitor. 
# Command: python post_disk_usage.py

import oci,psutil,datetime
from pytz import timezone

# using default configuration file (~/.oci/config)
from oci.config import from_file
config = from_file()

# initialize service client with default config file
monitoring_client = oci.monitoring.MonitoringClient(config,service_endpoint="https://telemetry-ingestion.ap-tokyo-1.oraclecloud.com")

# get disk usage with psutil
disk = psutil.disk_usage('/')
disk_usage=disk.percent
print(disk_usage)

times_stamp = datetime.datetime.now(timezone('UTC'))

# post custom metric to oci monitoring
# replace "compartment_ocid“ string with your compartmet ocid
post_metric_data_response = monitoring_client.post_metric_data(
    post_metric_data_details=oci.monitoring.models.PostMetricDataDetails(
        metric_data=[
            oci.monitoring.models.MetricDataDetails(
                namespace="custom_metrics",
                compartment_id="your_compartment_ocid",
                name="disk_usage",
                dimensions={'server_id': 'srv01'},
                datapoints=[
                    oci.monitoring.models.Datapoint(
                        timestamp=datetime.datetime.strftime(
                            times_stamp,"%Y-%m-%dT%H:%M:%S.%fZ"),
                        value=disk_usage)]
                )]
    )
)

# Get the data from response
print(post_metric_data_response.data)

サンプル・スクリプトを実行する前に、ociとpsutilをインストールしてください。

コマンド:
pip install -U oci
pip install -U psutil

2. カスタム・メトリックの公開

2-1. Pythonスクリプトの実行

コマンド: python post_disk_usage.py
出力結果:
ディスク使用率 - パーセント
レスポンス・データ - JSONフォーマット

c:\Python>python post_disk_usage.py
34.6
{
"failed_metrics": [],
"failed_metrics_count": 0
}

実行はスケジューリング・タスクとして設定できますが、ここでは省略します。
(例えば、Linix OSの場合、crontabを利用し、Windows OSの場合、Task Schedulerを利用する。)
テストのために、1回/分間で実行します。

2-2. OCIでディスク使用率の監視

MENU → Observability & Management → Monitoring → Metrics Explorer

"問い合わせの編集(Edit Queries)"ボタンをクリックします。
OCI Metrics Explorer

"Metric namespace"、"Metric name"、"Dimension name"と"Dimension value"を指定し、"チャートの更新(Update Chart)"ボタンをクリックします。
OCI Metrics Explorer Query

グラフの形式でデータを表示:
OCI Metrics Explorer (Graph)

テーブルの形式でデータを表示:
OCI Metrics Explorer (Table)

まとめ
これは、一般的な考え方を示す例です。要は、OCIカスタム・メトリックを利用すれば、ディスク使用率だけではなく、他のリソース・データの監視も可能です。

以上

公式ドキュメント
APIを使用したカスタム・メトリックの公開:日本語 英語
SDKおよびCLIの構成ファイル:日本語 英語

タイトルとURLをコピーしました