本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
OCI Monitoringサービスを使用すると、メトリックおよびアラーム機能を使用してクラウド・リソースを監視できます。例えば、OCI上のComputeインスタンス、データベース、および他のリソースのステータスを監視できます。
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
秘密鍵と公開鍵のファイルを安全な場所に保存します。
「追加」ボタンをクリックした後、「構成ファイルのプレビュー」画面が以下のように表示されます。
1-2. OCI構成ファイルの作成
クライアントからOCIに接続する時、認証は必要で、認証用の情報を構成ファイルとして作成します。
「コピー」をクリックして、テキストを構成ファイルに保存します。
ファイル名と保存場所
Windowsの場合:C:\Users\<your_user_name>\.oci\config
Linuxの場合:/home/<your_user_name>/.oci/config
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)"ボタンをクリックします。
"Metric namespace"、"Metric name"、"Dimension name"と"Dimension value"を指定し、"チャートの更新(Update Chart)"ボタンをクリックします。
まとめ
これは、一般的な考え方を示す例です。要は、OCIカスタム・メトリックを利用すれば、ディスク使用率だけではなく、他のリソース・データの監視も可能です。
以上です。
関連記事
オラクル・クラウドの個人ブログ一覧
OCI モニタリングでComputeインスタンスの死活を監視
公式ドキュメント
Publishing Custom Metrics
SDK and CLI Configuration File