やりたいこと
httpdを例に、OCI コンピュート・インスタンスでのカスタム・メトリックを用いたプロセス監視を実装する手順について紹介します。
本手順では、
コンピュート・インスタンス上で Python スクリプトを実行し、
OCI モニタリングのAPI エンドポイントへプロセス情報を送信、
その後 OCI コンソール上でメトリックおよびアラームを設定します。
事前準備
事前準備として以下の設定が必要です。
- コンパートメントOCID の取得
- IAM ポリシーの付与
-
oci-sdkのインストール確認
コンパートメントOCID の取得
モニタリング対象のリソースを配置するコンパートメントのOCIDを取得します。
OCIコンソール画面左上のナビゲーションメニューから「アイデンティティとセキュリティ」→「コンパートメント」を選択します。

対象のコンパートメントを選択後、3点リーダーから「OCIDのコピー」を選択し、OCIDを控えておきます。

IAMポリシーの付与
IAMポリシーを付与する前に、以下ドキュメントの手順でプロセス監視を実行するコンピュート・インスタンスを対象とした、動的グループを作成します。
動的グループのルールは以下の通りです。
instance.compartment.id = '<compartment_ocid>'
コンピュート・インスタンスがメトリックを送信できるよう以下のIAM ポリシーを作成します。
Allow dynamic-group <group-name> to use metrics in tenancy
アラームやメトリックを操作するユーザーには、別途以下の権限を付与します。
Allow group <group_name> to manage alarms in tenancy
Allow group <group_name> to read metrics in tenancy
Allow group <group_name> to manage ons-topics in tenancy
Allow group <group_name> to use streams in tenancy
oci-sdkのインストール確認
プロセス監視を実行するサーバには OCI Python SDK(oci-sdk) が必要です。
以下のコマンドでインストールします。
sudo dnf install -y python39-oci-sdk
タデータの期限切れの最終確認: 0:51:10 前の 2026年02月11日 09時24分05秒 に実施しました。
依存関係が解決しました。
==================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
==================================================================================================================================================
インストール:
python39-oci-sdk x86_64 2.167.0-1.el9 ol9_oci_included 93 M
トランザクションの概要
==================================================================================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 93 M
インストール後のサイズ: 357 M
パッケージのダウンロード:
python39-oci-sdk-2.167.0-1.el9.x86_64.rpm 39 MB/s | 93 MB 00:02
--------------------------------------------------------------------------------------------------------------------------------------------------
合計 39 MB/s | 93 MB 00:02
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
インストール中 : python39-oci-sdk-2.167.0-1.el9.x86_64 1/1
scriptletの実行中: python39-oci-sdk-2.167.0-1.el9.x86_64 1/1
検証中 : python39-oci-sdk-2.167.0-1.el9.x86_64 1/1
インストール済み:
python39-oci-sdk-2.167.0-1.el9.x86_64
完了しました!
インストール確認として、以下のコマンドを実行します。
dnf list installed | grep python39-oci-sdk
以下のように表示されれば、oci-sdkはインストール済みです。
python39-oci-sdk.x86_64 2.167.0-1.el9 @ol9_oci_included
コンピュート・インスタンス上でのプロセス監視
スクリプトの配置
任意のディレクトリ(ここでは/home/opc)にPythonスクリプトを配置します。
ここではスクリプト名をprocess_httpd.pyとします。
以下の項目は、環境に合わせて任意の値に変更してください。
- プロセス名
- namespace
- compartment_id
- name
- resourceDisplayName
namespaceはoci_またはoracle_から始まる接頭辞の使用できません。
同様に、以下のドキュメントから、利用するリージョンのモニタリングAPI エンドポイントを確認します。
※ 本手順では 東京リージョンのエンドポイント(https://telemetry-ingestion.ap-tokyo-1.oraclecloud.com)を使用します。
import oci,datetime,psutil,datetime
from pytz import timezone
# OCI モニタリングクライアント設定
signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner()
monitoring_client = oci.monitoring.MonitoringClient(
config={},
signer=signer,
service_endpoint="https://telemetry-ingestion.ap-tokyo-1.oraclecloud.com"
)
existvalue = 0
# OS上に表示されているプロセス名に変更
for proc in psutil.process_iter():
try:
if "vmstat" in proc.exe():
existvalue = 1
except psutil.AccessDenied:
pass
dt_now = datetime.datetime.now(timezone('UTC'))
# namespaceを任意のネームスペース名、compartment_idをコンパートメントのOCIDに、nameを任意のプロセス名、resourceDisplayNameを仮想マシン名に置き換える
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_process",
compartment_id="ocid1.compartment.oc1..aaaaaaaaxxx",
name="process01",
dimensions={
'resourceDisplayName': 'ol9'},
datapoints=[
oci.monitoring.models.Datapoint(
timestamp=datetime.datetime.strftime(
dt_now,"%Y-%m-%dT%H:%M:%S.%fZ"),
value=existvalue)]
)]
)
)
print(post_metric_data_response.data)
スクリプトの配置
実行権限を付与します。
chmod 700 process_httpd.py
スクリプトを実行します。
python process_httpd.py
以下の結果が返却されれば、
正常にメトリックが API エンドポイントへ送信されています。
{
"failed_metrics": [],
"failed_metrics_count": 0
}
cronによる定期実行
cron を利用して定期的に実行する場合は、以下を設定します。
crontab -e
1分間隔で実行する例
*/1 * * * * /bin/python3 /home/opc/process_httpd.py
cron の実行ログは以下で確認できます。
sudo tail -f /var/log/cron
以下の結果が表示された場合、成功となります。
Feb 11 10:25:01 ol9 CROND[150050]: (opc) CMD (/bin/python3 /home/opc/process_httpd.py)
Feb 11 10:25:02 ol9 CROND[150048]: (opc) CMDOUT ({)
Feb 11 10:25:02 ol9 CROND[150048]: (opc) CMDOUT ( "failed_metrics": [],)
Feb 11 10:25:02 ol9 CROND[150048]: (opc) CMDOUT ( "failed_metrics_count": 0)
Feb 11 10:25:02 ol9 CROND[150048]: (opc) CMDOUT (})
Feb 11 10:25:02 ol9 CROND[150048]: (opc) CMDEND (/bin/python3 /home/opc/process_httpd.py)
OCI 側の設定(メトリックの確認とアラーム作成)
メトリックの確認
ここでは、プロセス監視のメトリックがOCI 側へ正常に送信されているかを確認します。
OCIコンソール画面左上のナビゲーションメニューより、
「監視および管理」→「メトリック・エクスプローラ」を選択します。

画面遷移後、以下の項目をそれぞれ選択し、「チャートの更新」 を行います。
メトリックが正常に送信されている場合、プロセス監視の死活監視ステータスが表示されます。
- 正常:
0 - 異常:
1
表示名はresourceDisplayNameで設定したリソース名となります。
アラームの作成
担当者へ通知を行う場合は、同画面より 「アラームの作成」 を選択します。

メトリック・エクスプローラからアラームを作成する場合、以下の項目を入力することで設定が完了します。
アラームが正常に作成されると、設定した閾値に達した際にアラートが発報され、担当者へメール通知が送信されます。

以上で、プロセス監視に関する一連の手順は完了です。


