Closed8

neuron-monitorで任意のメトリクスのみcloud watchに送る

KAZYPinkSaurusKAZYPinkSaurus

neuron-monitorにはConfigファイルを渡すオプションが有る。

-c, --config-file (string): Allows specifying a valid path to a neuron-monitor JSON configuration file

Configファイルを渡さないとすべてのメトリクスを5秒おきに出力するようだ。

Example:

neuron-monitor -c monitor.conf
Not specifying any configuration file will enable collecting all the metric groups with a period of 5 seconds for all currently running Neuron applications.
KAZYPinkSaurusKAZYPinkSaurus

コンフィグファイルの例

{
  "period": "1s", # 更新間隔を1秒にしている
  "neuron_runtimes": [
    {
      "tag_filter": ".*",
      "metrics": [
        {
          "type": "neuroncore_counters"
        },
        {
          "type": "memory_used"
        },
        {
          "type": "neuron_runtime_vcpu_usage"
        },
        {
          "type": "execution_stats"
        }
      ]
    }
  ],
  "system_metrics": [
    {
      "type": "vcpu_usage"
    },
    {
      "type": "memory_info"
    },
    {
       "period": "2s", # neuron_hw_countersというメトリクスの更新を2秒間隔にする
       "type": "neuron_hw_counters"
    }
  ]
}
  • periodを変えるとデータの出力頻度が変わる
  • その他は出力のフィールドと関連している、省くと出力も減る。
  • tag_filterとNEURON_PROCESS_TAG環境変数を用いて監視したいアプリケーションを制御できる。例えばtag_filter=my-appとした場合はNEURON_PROCESS_TAG=my-appとして設定したアプリケーションのメトリクスが取得できる。
KAZYPinkSaurusKAZYPinkSaurus

コンフィグファイルを小さくしてみて,出力が変わるか見てみる。
neuron_runtimes以下のみを出力したい気持ち。
monitor.conf

{
  "period": "5s",
  "neuron_runtimes": [
    {
      "tag_filter": ".*",
      "metrics": [
        {
          "type": "neuroncore_counters"
        }
      ]
    }
  ]
}

実行

$ neuron-monitor -c neuron/monitor.conf 

結果

{
    "neuron_runtime_data": [],
    "system_data": null,
    "instance_info": {
        "instance_name": "",
        "instance_id": "i-0e8a1944fe612e80a",
        "instance_type": "inf1.xlarge",
        "instance_availability_zone": "ap-northeast-1a",
        "instance_availability_zone_id": "apne1-az4",
        "instance_region": "ap-northeast-1",
        "ami_id": "ami-09faa8f301ae9469c",
        "subnet_id": "subnet-0038b56223c05bd7a",
        "error": ""
    },
    "neuron_hardware_info": {
        "neuron_device_count": 1,
        "neuroncore_per_device_count": 4,
        "error": ""
    }
}

減った。
neuron_runtime_dataは狙ったものだが、system_data,instance_info,neuron_hardware_infoがついてきた。

KAZYPinkSaurusKAZYPinkSaurus

上記の設定でnueronコアに負荷をかけてみる。

{
    "neuron_runtime_data": [
        {
            "pid": 63927,
            "neuron_runtime_tag": "12",
            "error": "",
            "report": {
                "neuroncore_counters": {
                    "period": 5.003128203,
                    "neuroncores_in_use": {
                        "0": {
                            "neuroncore_utilization": 0
                        },
                        "1": {
                            "neuroncore_utilization": 0
                        },
                        "2": {
                            "neuroncore_utilization": 18.374446063228827
                        },
                        "3": {
                            "neuroncore_utilization": 13.071579061386283
                        }
                    },
                    "error": ""
                }
            }
        },
        {
            "pid": 63928,
            "neuron_runtime_tag": "13",
            "error": "",
            "report": {
                "neuroncore_counters": {
                    "period": 5.003138332,
                    "neuroncores_in_use": {
                        "0": {
                            "neuroncore_utilization": 9.289751261393205
                        },
                        "1": {
                            "neuroncore_utilization": 6.645980211989048
                        },
                        "2": {
                            "neuroncore_utilization": 0
                        },
                        "3": {
                            "neuroncore_utilization": 0
                        }
                    },
                    "error": ""
                }
            }
        }
    ],
    "system_data": null,
    "instance_info": {
        "instance_name": "KAZY-dev",
        "instance_id": "i-0e8a1944fe612e80a",
        "instance_type": "inf1.xlarge",
        "instance_availability_zone": "ap-northeast-1a",
        "instance_availability_zone_id": "apne1-az4",
        "instance_region": "ap-northeast-1",
        "ami_id": "ami-09faa8f301ae9469c",
        "subnet_id": "subnet-0038b56223c05bd7a",
        "error": ""
    },
    "neuron_hardware_info": {
        "neuron_device_count": 1,
        "neuroncore_per_device_count": 4,
        "error": ""
    }
}

プロセスごとに指標が出た

KAZYPinkSaurusKAZYPinkSaurus

NEURON_PROCESS_TAGを使ってみる。

NEURON_PROCESS_TAG=my-appを入れてみる。

{
    "neuron_runtime_data": [
        {
            "pid": 98159,
            "neuron_runtime_tag": "my-app",
            "error": "",
            "report": {
                "neuroncore_counters": {
                    "period": 5.000179663,
                    "neuroncores_in_use": {
                        "0": {
                            "neuroncore_utilization": 0
                        },
                        "1": {
                            "neuroncore_utilization": 0
                        },
                        "2": {
                            "neuroncore_utilization": 44.80514995018704
                        },
                        "3": {
                            "neuroncore_utilization": 33.2581982545349
                        }
                    },
                    "error": ""
                }
            }
        },
        {
            "pid": 100738,
            "neuron_runtime_tag": "my-app",
            "error": "",
            "report": {
                "neuroncore_counters": {
                    "period": 5.000182501,
                    "neuroncores_in_use": {
                        "0": {
                            "neuroncore_utilization": 28.86060808880067
                        },
                        "1": {
                            "neuroncore_utilization": 18.71186166635199
                        },
                        "2": {
                            "neuroncore_utilization": 0
                        },
                        "3": {
                            "neuroncore_utilization": 0
                        }
                    },
                    "error": ""
                }
            }
        }
    ],
    "system_data": null,
    "instance_info": {
        "instance_name": "KAZY-dev",
        "instance_id": "i-0e8a1944fe612e80a",
        "instance_type": "inf1.xlarge",
        "instance_availability_zone": "ap-northeast-1a",
        "instance_availability_zone_id": "apne1-az4",
        "instance_region": "ap-northeast-1",
        "ami_id": "ami-09faa8f301ae9469c",
        "subnet_id": "subnet-0038b56223c05bd7a",
        "error": ""
    },
    "neuron_hardware_info": {
        "neuron_device_count": 1,
        "neuroncore_per_device_count": 4,
        "error": ""
    }
}

neuron_runtime_tag: my-appという項目が増えただけだった。

KAZYPinkSaurusKAZYPinkSaurus

NEURON_PROCESS_TAG=my-app

configを以下のようにしてみる。

{
  "neuron_runtimes": [
    {
      "tag_filter": "his-app",  # my-appでは引っかからない
      "metrics": [
        {
          "type": "neuroncore_counters"
        }
      ]
    }
  ]
}

neuron_runtime_dataにneuron coreに関するデータが無くなった。

{
    "neuron_runtime_data": [], # 空になった。
    "system_data": null,
    "instance_info": {
        "instance_name": "KAZY-dev",
        "instance_id": "i-0e8a1944fe612e80a",
        "instance_type": "inf1.xlarge",
        "instance_availability_zone": "ap-northeast-1a",
        "instance_availability_zone_id": "apne1-az4",
        "instance_region": "ap-northeast-1",
        "ami_id": "ami-09faa8f301ae9469c",
        "subnet_id": "subnet-0038b56223c05bd7a",
        "error": ""
    },
    "neuron_hardware_info": {
        "neuron_device_count": 1,
        "neuroncore_per_device_count": 4,
        "error": ""
    }
}
KAZYPinkSaurusKAZYPinkSaurus

neuron-monitorのconfigで情報を減らして、neuron-monitor-cloudwatch.pyを実行したらカスタムメトリクスが減るか確かめる。

まずはconfigなし(すべてのメトリクス)。

全メトリクスがカスタムメトリクスとして送られる。

次にneuron corenの使用率だけを取得したい気持ちをconfigに込める。
https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-monitor-user-guide.html#neuroncore-counters

{
  "neuron_runtimes": [
    {
      "tag_filter": ".*",
      "metrics": [
        {
          "type": "neuroncore_counters" # neuron coreの情報
        }
      ]
    }
  ]
}

NeuronCoreUtilizationNC0,NeuronCoreUtilizationNC1以外が消えた。


このスクラップは2023/01/07にクローズされました