OCIの運用監視サービス「Stack Monitoring」でプロセス監視の機能が追加されたようなので、早速設定してみました。
ドキュメントはこちらです。
前提条件
- Stack Monitoringに監視対象のホストが登録されていること
- ホストがStack MonitoringのEnterprise Editionで監視されていること
- OCI CLIがインストール、構成された端末から設定すること
1.プロセスセットの作成
プロセス監視の登録はOCI CLIコマンドから実行する必要があるようなので、OCI CLIコマンド実行時に受け渡すJSONファイルを作成します。
プロセスセット作成時に必要なJSONファイルのフォーマットは以下です。
{
"compartmentId": "<Stack Monitoringで監視対象のホストを登録したコンパートメントのOCID>",
"displayName": "<プロセスの表示名(任意)>",
"specification": {
"items": [
{
"processCommand": "<プロセスのコマンド>",
}
]
}
}
今回は試しにJavaのプロセスを監視するため、以下のように定義しました。
{
"compartmentId": "ocid1.compartment.oc1..xxxxxxx",
"displayName": "java processes",
"specification": {
"items": [
{
"processCommand": "java",
}
]
}
}
JSONファイルを用意したら、OCI CLIコマンドでプロセスセットを作成します。
$oci stack-monitoring process-set create --compartment-id < Stack Monitoringで監視対象のホストを登録したコンパートメントのOCID> --from-json file://<JSONファイルのパス>
例)
$oci stack-monitoring process-set create --compartment-id ocid1.compartment.oc1..aaaaaaaaxxxxxxx --from-json file://java.json
プロセスセットが作成したら、以下のような実行結果が返されるので、 プロセスセットのOCIDをメモします。
{
"data": {
"compartment-id": "ocid1.compartment.oc1..aaaaaaaaxxxxxxx",
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/xxxxxx",
"CreatedOn": "2024-02-01T06:52:29.277Z"
}
},
"display-name": "java processes",
"freeform-tags": {},
"id": "ocid1.stackmonitoringprocessset.oc1.iad.amaaaaaatgpiiviaqisiwro73x734bq5putyx2o5d4brqfahxa3toz7b76ja",
"lifecycle-state": "ACTIVE",
"revision": "1",
"specification": {
"items": [
{
"label": null,
"process-command": "java",
"process-line-regex-pattern": null,
"process-user": null
}
]
},
"system-tags": {},
"time-created": "2024-02-01T06:52:29+00:00",
"time-updated": "2024-02-01T06:52:29+00:00"
},
"etag": "0a2756eaa7c5bc4894ef7b34c9c9490a90666a6f12db033869b45c4f3d67644e"
}
この場合、プロセスセットのOCIDは"id": "ocid1.stackmonitoringprocessset.oc1.iad.amaaaaaatgpiiviaqisiwro73x734bq5putyx2o5d4brqfahxa3toz7b76ja"
の部分になります。
2.プロセスセットとホストの紐付け
プロセスセットを作成したら、次はStack Monitoringに登録されているホストに紐付けます。
紐付けもOCI CLIコマンドで設定するので、OCI CLIコマンドで受け渡すJSONファイルを作成します。
プロセスセットとホストを紐付ける際に必要なJSONファイルのフォーマットは以下です。
{
"discoveryType": "ADD",
"discoveryClient": "APPMGMT",
"compartmentId": "< Stack Monitoringで監視対象のホストを登録したコンパートメントのOCID >",
"discoveryDetails": {
"agentId": "<監視対象のホストを監視している管理エージェントのOCID>",
"resourceType": "CUSTOM_RESOURCE",
"resourceName": "<手順1で定義したプロセスの表示名>",
"properties": {
"propertiesMap": {
"host_ocid": "<Stack Monitoringに登録したホストのOCID>",
"process_set_id": "手順1でメモしたプロセスセットのOCID"
}
},
"license": "ENTERPRISE_EDITION"
},
"freeformTags": {},
"definedTags": {}
}
Stack Monitoringに登録したホストのOCID、監視対象のホストを監視している管理エージェントのOCIDはそれぞれStack Monitoringのホストの監視画面 -> 構成 -> 汎用OCIプロパティから確認できます。
例)
{
"discoveryType": "ADD",
"discoveryClient": "APPMGMT",
"compartmentId": "ocid1.compartment.oc1..aaaaaaaaxxxxxx",
"discoveryDetails": {
"agentId": "ocid1.managementagent.oc1.iad.xxxxxx",
"resourceType": "CUSTOM_RESOURCE",
"resourceName": "java processes",
"properties": {
"propertiesMap": {
"host_ocid": "ocid1.stackmonitoringresource.oc1.iad.amaaaaaatgpiiviaxotfnhbdaqogztnjt4kejxzqzjvnibs4ftteox2lj7pq",
"process_set_id": "ocid1.stackmonitoringprocessset.oc1.iad.amaaaaaatgpiiviaqisiwro73x734bq5putyx2o5d4brqfahxa3toz7b76ja"
}
},
"license": "ENTERPRISE_EDITION"
},
"freeformTags": {},
"definedTags": {}
}
JSONファイルを作成したら、OCI CLIコマンドでプロセスセットとホストを紐付けます。
$ oci stack-monitoring discovery-job create --compartment-id <Stack Monitoringで監視対象のホストを登録したコンパートメントのOCID> --from-json file://<手順2で作成したJSONファイルのパス>
例)
$oci stack-monitoring discovery-job create --compartment-id ocid1.compartment.oc1..aaaaaaaaxxxxxx --from-json file://host.json
プロセスセットとホストの紐付けに成功すると、以下のようなレスポンスが返ってきます。
{
"data": {
"compartment-id": "ocid1.compartment.oc1..aaaaaaaaxxxxxx",
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "default/xxxxxx",
"CreatedOn": "2024-02-01T06:58:53.201Z"
}
},
"discovery-client": "APPMGMT",
"discovery-details": {
"agent-id": "ocid1.managementagent.oc1.iad.amaaaaaaxxxxx",
"credentials": null,
"license": "ENTERPRISE_EDITION",
"properties": {
"properties-map": {
"host_ocid": "ocid1.stackmonitoringresource.oc1.iad.amaaaaaatgpiiviaxotfnhbdaqogztnjt4kejxzqzjvnibs4ftteox2lj7pq",
"process_set_id": "ocid1.stackmonitoringprocessset.oc1.iad.amaaaaaatgpiiviaqisiwro73x734bq5putyx2o5d4brqfahxa3toz7b76ja"
}
},
"resource-name": "java processes",
"resource-type": "CUSTOM_RESOURCE",
"tags": {
"properties-map": {}
}
},
"discovery-type": "ADD",
"freeform-tags": {},
"id": "ocid1.stackmonitoringdiscoveryjob.oc1.iad.amaaaaaatgpiiviaj4irjm55vyeh6cbcdxq27my5igjm5ksqfgpgpgih4jeq",
"lifecycle-state": "CREATING",
"status": "CREATED",
"status-message": null,
"system-tags": {},
"tenant-id": "ocid1.tenancy.oc1..aaaaaaaaxxxxxq",
"time-updated": "2024-02-01T06:58:56+00:00",
"user-id": "ocid1.user.oc1..aaaaaaaaxxxx"
}
}
実際にStack Monitoringのホストの監視画面の「関連リソース」のタブを見ると、紐付けたプロセスセットが表示されています。
追加したプロセスをさらにクリックすると、そのプロセスによって消費されているリソースなどのメトリックが表示されました。
プロセスセットの登録方法は、色々あるようなので、ぜひドキュメントの方もご参照ください。