Closed8
neuron-monitorで任意のメトリクスのみcloud watchに送る
こちらを見ていく
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.
コンフィグファイルの例
{
"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として設定したアプリケーションのメトリクスが取得できる。
コンフィグファイルを小さくしてみて,出力が変わるか見てみる。
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がついてきた。
上記の設定で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": ""
}
}
プロセスごとに指標が出た
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という項目が増えただけだった。
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": ""
}
}
neuron-monitorのconfigで情報を減らして、neuron-monitor-cloudwatch.pyを実行したらカスタムメトリクスが減るか確かめる。
まずはconfigなし(すべてのメトリクス)。
全メトリクスがカスタムメトリクスとして送られる。
次にneuron corenの使用率だけを取得したい気持ちをconfigに込める。
{
"neuron_runtimes": [
{
"tag_filter": ".*",
"metrics": [
{
"type": "neuroncore_counters" # neuron coreの情報
}
]
}
]
}
NeuronCoreUtilizationNC0,NeuronCoreUtilizationNC1以外が消えた。
このスクラップは2023/01/07にクローズされました