ノート:

Oracle Cloud Infrastructureカスタム・メトリックを使用したディスク使用率の監視

イントロダクション

Oracle Observability and Managementプラットフォーム・サービスにより、マルチクラウド・アプリケーションとインフラストラクチャ環境の監視、分析および管理が可能になります。メトリックを使用してリソースおよびアラームをモニターし、これらのメトリックがアラームで指定されたトリガーを満たしたときに通知を行います。メトリックは、モニタリング・サービスに、ディメンションおよびメタデータとともにRAWデータ・ポイントまたはタイムスタンプ/値ペアとして発行されます。

メトリックは様々なソースから取得されます:

  1. Oracle Cloud Infrastructure (OCI)リソースによって自動的にポストされたリソース・メトリック。たとえば、CpuUtilizationです。
  2. モニタリングAPIを使用して公開されたカスタム・メトリック。

目標

OCIカスタム・メトリックを使用してディスク使用率を監視します。

前提条件

タスク1: Pythonファイルの作成

  1. ディスク使用率メトリックを収集する必要があるコンピュート・インスタンスにdisk_usage.pyを作成します。

    ノート: オペレーティング・システムに基づく任意のテキスト・エディタを使用します。

  2. 次のサンプル・スクリプトをdisk_usage.pyにコピーします。

    # This is a sample python script to post disk utilization custom metric to oci monitoring.
    # Command: python disk_usage.py
       
    import oci,psutil,datetime
    from pytz import timezone
       
    # initialize service client with OCI python SDK
    signer = oci.auth.signers.InstancePrincipalsSecurityTokenSigner()
    monitoring_client = oci.monitoring.MonitoringClient(config={}, signer=signer, service_endpoint="https://telemetry-ingestion.ap-mumbai-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“ with your compartmet ocid and srv01 with your compute instance
    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={'resourceDisplayName': '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)
    

    ノート: カスタム・メトリックをさらに抽出するには、psutilコマンドを参照してください。

  3. 次のコマンドを使用して、スクリプトに実行権限を追加します。

    chmod +x disk_usage.py
    
  4. リージョンに従ってテレメトリ収集エンドポイントを更新します。

    ノート: エンドポイントは操作によって異なります。メトリックの投稿には、遠隔監視エンドポイントを使用します。

  5. 要件に従ってネームスペースを更新します。

    ノート: メトリック・ネームスペースの場合は、予約済接頭辞(oci_またはoracle_)を使用しないでください。

  6. compartment ocidをコンパートメントocidで更新し、srv01をコンピュート・インスタンスで更新します。

  7. 必要に応じて、同じコンピュート・インスタンスに対して収集するメトリックをスクリプトに追加します。次に、GBのディスク空き領域を収集する例を示します。

    # get metric details using psutil
    disk_free=round(disk.free/1024/1024/1024,2)
    print(disk_free)
       
    # Add more metric to post if required
    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_free",
                      dimensions={'resourceDisplayName': 'srv01'},
                      datapoints=[
                         oci.monitoring.models.Datapoint(
                               timestamp=datetime.datetime.strftime(
                                  times_stamp,"%Y-%m-%dT%H:%M:%S.%fZ"),
                               value=disk_free)]
                      )]
          )
       )
    

タスク2: カスタム・メトリック・データのポスト

  1. CLIからスクリプトを手動で実行して、成功を検証します。

    python disk_usage.py
    
    Output:
    27.1
    {
    "failed_metrics": [],
    "failed_metrics_count": 0
    }
    
  2. OCIモニタリング・サービスにデータを頻繁に送信するには、cronジョブまたはスケジューリング・タスクを使用してスクリプトをスケジュールします。

    • Windows以外のコンピュート・インスタンスでcrontab -eを使用して、crontabにスクリプトの詳細を追加します。

      ノート: カスタム・メトリックは1秒ごとに頻繁にポストでき、最小集約間隔は1分です。ベスト・プラクティスは、1分以上の間隔ごとにカスタム・メトリックをポストすることです。

      # Cron job example with every 1 min execution.  
      */1 * * * * /usr/bin/python3 /home/opc/disk_usage.py
      
    • sudo cat /var/log/cron | grep diskを使用して、cronログの出力を確認します。

タスク3: OCIメトリック・エクスプローラを使用したディスク使用率メトリックの表示

  1. ナビゲーション・メニューを開き、「監視および管理」をクリックします。

  2. 「モニタリング」で、「メトリック・エクスプローラ」をクリックします。

  3. 表示するカスタム・メトリックを含むコンパートメントを選択し、メトリック・ネームスペースの名前をクリックします。たとえば、custom_metricsです。

  4. 「リソース」で、「メトリック」をクリックします。 「メトリック名」「間隔」ディメンション名およびディメンション値を選択します。

    メトリック・エクスプローラ

  5. 「チャートの更新」をクリックして、メトリック・エクスプローラでカスタム・メトリックを表示します。

承認

著者 - Dipesh Kumar Rathod (インフラストラクチャ、マスター・プリンシパル・クラウド・アーキテクト)

その他の学習リソース

docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。