1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

動的グループを使用してプロセス監視を実行する

1
Posted at

やりたいこと

httpdを例に、OCI コンピュート・インスタンスでのカスタム・メトリックを用いたプロセス監視を実装する手順について紹介します。

本手順では、
コンピュート・インスタンス上で Python スクリプトを実行し、
OCI モニタリングのAPI エンドポイントへプロセス情報を送信、
その後 OCI コンソール上でメトリックおよびアラームを設定します。

事前準備

事前準備として以下の設定が必要です。

  • コンパートメントOCID の取得
  • IAM ポリシーの付与
  • oci-sdkのインストール確認

コンパートメントOCID の取得

モニタリング対象のリソースを配置するコンパートメントのOCIDを取得します。
OCIコンソール画面左上のナビゲーションメニューから「アイデンティティとセキュリティ」→「コンパートメント」を選択します。
1.png

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

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コンソール画面左上のナビゲーションメニューより、
監視および管理」→「メトリック・エクスプローラ」を選択します。
3.png

画面遷移後、以下の項目をそれぞれ選択し、「チャートの更新」 を行います。

  • コンパートメント
  • メトリック・ネームスペース
  • メトリック名
  • 間隔
  • 統計
  • ディメンション名」
  • ディメンション値:
    4.png

メトリックが正常に送信されている場合、プロセス監視の死活監視ステータスが表示されます。

  • 正常:0
  • 異常:1

表示名はresourceDisplayNameで設定したリソース名となります。

5.png

アラームの作成

担当者へ通知を行う場合は、同画面より 「アラームの作成」 を選択します。
6.png

メトリック・エクスプローラからアラームを作成する場合、以下の項目を入力することで設定が完了します。

  • アラーム名
  • トリガー・ルール
  • 宛先
    入力後、「アラームの保存」を選択します。
    8.jpg

アラームが正常に作成されると、設定した閾値に達した際にアラートが発報され、担当者へメール通知が送信されます。
9.png

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?