はじめに
OCI Monitoringでは、ComputeインスタンスのCPU使用率やネットワークなど、OCIリソースの標準メトリックを確認できます。
一方、OS上のディスク使用率など、標準メトリックでは取得できない情報を監視したい場合もあります。
このような場合は、OCI Monitoringのカスタム・メトリックを利用することで、OSやアプリケーションから取得した任意の数値をメトリックとして送信できます。
送信したメトリックは、Metric Explorerでの確認やAlarmによる監視に利用できます。
本記事では、LinuxのComputeインスタンスからBoot Volumeおよび追加Block Volumeのディスク使用率を取得し、OCI Monitoringで監視する方法を紹介します。
OCI Monitoringのカスタム・メトリックとは
カスタム・メトリックとは、OCIリソースの標準メトリックには含まれない独自の情報を、ユーザーがMonitoringに送信して監視する機能です。
例えば、今回のディスク使用率のほか、OS上の特定プロセスの稼働状態を「稼働中=1、停止=0」のような数値として送信することもできます。
注意事項
カスタム・メトリックを発行するには、対象リソースからMonitoringサービスへメトリックを送信するための権限設定が必要です。
本記事では、Computeインスタンスからメトリックを発行するため、動的グループとIAMポリシーを設定します。
また、カスタム・メトリックのネームスペースには、OCIで予約されているoci_やoracle_の接頭辞を使用しないようにします。
前提条件
本検証を実施するにあたり、事前に以下の環境および設定を準備しています。
- コンパートメント作成済み
- VCNおよびSubnet作成済み
- Oracle LinuxのComputeインスタンス作成済み
- ComputeインスタンスへSSH接続できること
- Block Volumeを作成し、Computeインスタンスにアタッチ・マウント済み
設定方法
1. 動的グループの作成
ComputeインスタンスからMonitoringへメトリックを送信するため、対象インスタンスを動的グループに所属させます。
OCIコンソールから、「アイデンティティとセキュリティ 」→「 ドメイン」 を開き、使用中のドメインをクリックします。


- instance.compartment.id = ‘<compartment_ocid>’
- <compartment_ocid>には、対象Computeインスタンスが存在するコンパートメントを指定します。
IAMポリシーの設定
作成した動的グループに、Monitoringへメトリックを送信する権限を付与します。

- Allow dynamic-group <group-name> to use metrics in tenancy
- <group-name>には作成した動的グループ名を指定します。
Python環境の準備
ComputeインスタンスへSSH接続し、Python環境を準備します。
以下のコマンドを実行します。
|
1 2 |
sudo dnf install -y python3-pip pip3 install oci psutil |
- ociはOCI Python SDK、psutilはディスク使用率の取得に使用します。
- Instance Principalを使用するため、PythonスクリプトにユーザーのAPIキーなどを記載する必要はありません。
ディスク使用率の確認
まず、Linux上でファイルシステムのマウント状況を確認します。
以下のコマンドを実行します。
|
1 |
df -h |

実行すると、ファイルシステムごとの容量、使用量、使用率、マウントポイントなどを確認できます。
今回の環境では、例えば以下のように表示されます。
- / → Boot Volumeに対応するファイルシステム
- /mnt/blockvolume1 → 追加したBlock Volumeに対応するファイルシステム
「Use%」が各ファイルシステムのディスク使用率です。
Pythonスクリプトの作成
Computeインスタンス上でPythonスクリプトを作成し、ディスク使用率の取得とカスタム・メトリックの送信を行います。
viを使用してPythonスクリプトを作成します。
|
1 |
vi /home/opc/custom_metric.py |
iキーを押して編集モードに切り替え、以下のコードを貼り付けます。
- <compartment_ocid>にはメトリックを格納するコンパートメントのOCIDを指定します。
- <instance_name>には対象のComputeインスタンス名を指定します。
- service_endpointはインスタンスのリージョンに合わせて設定します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
import oci import psutil import datetime # 基本設定 compartment_id = "<compartment_ocid>" instance_name = "<instance_name>" namespace = "custom_metrics" metric_name = "disk_usage" # Instance Principalを使用して認証 signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner() # Monitoring Clientを作成 monitoring_client = oci.monitoring.MonitoringClient( config={}, signer=signer, service_endpoint="https://telemetry-ingestion.ap-tokyo-1.oraclecloud.com" ) # UTC時刻を取得 timestamp = datetime.datetime.now(datetime.timezone.utc) # 監視対象のファイルシステム mount_points = ["/", "/mnt/blockvolume1"] # メトリックデータを作成 metric_data = [] for mount_point in mount_points: usage = psutil.disk_usage(mount_point).percent metric_data.append( oci.monitoring.models.MetricDataDetails( namespace=namespace, compartment_id=compartment_id, name=metric_name, dimensions={ "resourceDisplayName": instance_name, "mountPoint": mount_point }, datapoints=[ oci.monitoring.models.Datapoint( timestamp=timestamp.strftime("%Y-%m-%dT%H:%M:%S.%fZ"), value=usage ) ] ) ) # カスタム・メトリックを送信 response = monitoring_client.post_metric_data( post_metric_data_details=oci.monitoring.models.PostMetricDataDetails( metric_data=metric_data ) ) print(response.data) |
編集が完了したら、Escキーを押してから以下を入力して保存します。
|
1 |
:wq |

これで、/home/opc/custom_metric.pyとしてPythonスクリプトが保存されます。
このスクリプトでは、psutil.disk_usage()を使用して以下の2つのファイルシステムの使用率を取得します。
- / → Boot Volumeに対応するファイルシステム
- /mnt/blockvolume1 → Block Volumeに対応するファイルシステム
mountPointディメンションにより、それぞれのファイルシステムを区別して確認できます。
取得した使用率は、custom_metrics Namespaceのdisk_usageメトリックとしてOCI Monitoringへ送信します。
カスタム・メトリックの送信
作成したPythonスクリプトを実行し、成功を検証します。
|
1 |
python3 custom_metric.py |
本記事では実行しませんが、ディスク使用率を継続的に監視するためには、Linuxのcronを使用して定期的にスクリプトを実行します。
例えば、1分ごとに実行する場合は以下を設定します。
|
1 2 |
crontab -e */1 * * * * /usr/bin/python3 /home/opc/custom_metric.py > /dev/null 2>&1 |
Metric Explorerの確認
「オブザーバビリティおよび管理」→「メトリック・エクスプローラ」を開き、「問合せの追加」をクリックします。

以下の項目を設定すると、送信したカスタム・メトリックをグラフで確認できます。

- コンパートメント:コンピュート・インスタンスの存在するコンパートメント
- メトリック・ネームスペース:custom_metrics
- メトリック名:disk_usage
- 間隔:任意の間隔
- 統計:任意の統計
- ディメンション名:resourceDisplayName
- ディメンション値:インスタンス名
※ さらに、mountPointディメンションを指定することで、監視対象のファイルシステムを絞り込めます。
Alarmとの連携
カスタム・メトリックは、OCI MonitoringのAlarmにも利用できます。
例えば、ディスク使用率が80%を超えた場合にアラームを発生させるよう、しきい値を設定します。
Block Volumeを監視したい場合は、ディメンションで以下を指定します。

まとめ
今回は、LinuxのOCI Computeインスタンスを対象に、Boot Volumeおよび追加Block Volumeのディスク使用率をカスタム・メトリックとしてOCI Monitoringで監視する方法を紹介しました。
Pythonのpsutilでファイルシステムごとの使用率を取得し、OCI Python SDKとInstance Principalを利用してMonitoringへ送信しました。
また、mountPointディメンションを設定することで、複数のファイルシステムを同じメトリックで区別して監視できます。
本記事が、カスタム・メトリックとAlarmを活用したディスク使用率の監視設定や、OCIの運用監視を検討する際の参考になれば幸いです。








