| /* |
| * Copyright 2020 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| // The protobuf messages for lab host to export metadata and reosurce metrics. |
| syntax = "proto3"; |
| |
| package dual_home_lab.monitoring_agent.resource_monitoring; |
| |
| import "google/protobuf/timestamp.proto"; |
| |
| option java_package = "com.google.dualhomelab.monitoringagent.resourcemonitoring"; |
| option java_multiple_files = true; |
| option java_generic_services = true; |
| |
| // A tag-value pair message represents the metric value. |
| // For example: |
| // To represent device disk used percentage. |
| // metric { |
| // tag: "/data" |
| // value: 20.5 |
| // } |
| message Metric { |
| // A string tag associates to the value. |
| string tag = 1; |
| // A float value represents the resource value. |
| float value = 2; |
| } |
| |
| // A message that describes the resource and its metrics. |
| // For example: |
| // To represent disk space usage values at certain moment. |
| // resource { |
| // resource_name: "disk_space" |
| // resource_instance: "/data" |
| // timestamp { |
| // seconds: 1589342214 |
| // } |
| // metric: { |
| // tag: "avail" |
| // value: 20.5 |
| // } |
| // metric: { |
| // tag: "used" |
| // value: 18.7 |
| // } |
| // metric: { |
| // tag: "reserved for root" |
| // value: 16.2 |
| // } |
| // } |
| message Resource { |
| // A string resource name. ex. "cpu", "memory", "disk_space". |
| string resource_name = 1; |
| // A string reperesent the sub resource name. |
| string resource_instance = 2; |
| // The Metric describe the host or device resource usages. |
| repeated Metric metric = 3; |
| // The collecting timestamp. |
| google.protobuf.Timestamp timestamp = 4; |
| } |
| |
| // A name-value message to represent the metadata attribute. |
| // For example: |
| // To represent the run target. |
| // attribute { |
| // name: "run_target" |
| // value: "atom-userdebug" |
| // } |
| // To reperent the pools. |
| // attribute { |
| // name: "pool" |
| // value: "asit" |
| // } |
| // attribute { |
| // name: "pool" |
| // value: "apct" |
| // } |
| message Attribute { |
| string name = 1; |
| string value = 2; |
| } |
| |
| // A message that describes the device state and resource usages. |
| // For example: |
| // To represent a monitored host |
| // host { |
| // identifier: { |
| // key: "lab_name" |
| // value: "us-mtv43" |
| // } |
| // identifier: { |
| // key: "host_name" |
| // value: "foo.bar.com" |
| // } |
| // identifier: { |
| // key: "test_harness" |
| // value: "tradefed" |
| // } |
| // attribute: {... check the attribute example above ...} |
| // resource: {... check the resource example abobe ...} |
| // } |
| // To represent a monitored device |
| // device { |
| // identifier: { |
| // key: "device_serial" |
| // value: "VVEG-GIDSAN" |
| // } |
| // attribute: {... check the attribute example above ...} |
| // resource: {... check the resource example abobe ...} |
| // } |
| message MonitoredEntity { |
| // The string map that helps identify the monitored entity |
| map<string, string> identifier = 1; |
| // The attribute messages that describe the device metadata. |
| repeated Attribute attribute = 2; |
| // The resource messages that describe the device state and resource metrics. |
| repeated Resource resource = 3; |
| } |
| |
| // A message that describe the state and resource usages for a lab host and its |
| // connected devices. |
| message LabResource { |
| MonitoredEntity host = 1; |
| repeated MonitoredEntity device = 2; |
| } |
| |
| // The request message to query the LabResource. |
| message LabResourceRequest {} |
| |
| // The service which is intend to export device metrics and metadata to the host |
| // monitoring agent. The host monitoring agent is responsible for |
| // collecting host/device metrics and exporting the metrics to user defined |
| // cloud PubSub topics. |
| service LabResourceService { |
| // Queries lab resource message. |
| rpc GetLabResource(LabResourceRequest) returns (LabResource) { |
| // The http equivalent is curl http://ADDRESS/v1/lab_resource_message |
| // (Assuming your service is hosted at the given 'ADDRESS') |
| } |
| } |