Create and Put a value into Custom Meter¶
Overview¶
Create a custom meter
Put a sample value into the specified custom meter
"OpenStack Telemetry API" doesn't provide the equivalent of the "Create and Put a value into Custom Meter" API
警告
警告
警告
注釈
Classification¶
Create
API Operation Object¶
custom meter
Synchronous / Asynchronous¶
Synchronous
Request¶
HTTP Request Method¶
POST
HTTP Request Path¶
{api_endpoint}/v2/meters/<custom_meter_name>
HTTP Request Header¶
Content-Type: application/json
Accept: application/json
X-Auth-Token: <token_id>
HTTP Request Body¶
Format¶
[
  {
    "project_id": "<project_id>",
    "namespace": "<namespace>",
    "resource_id": "<resource_id>",
    "counter_name": "<counter_name>",
    "counter_type": "<counter_type>",
    "counter_unit": "<counter_unit>",
    "resource_metadata": {
      "display_name": "<display_name>"
    },
    "timestamp": "<timestamp>",
    "counter_volume": "<counter_volume>",
    "recorded_at": "<recorded_at>",
  },
  <<repeat (less than 100 times)>>
]
Request Parameter¶
name  | 
style  | 
format  | 
description  | 
required/optional  | 
default value  | 
action for invalid parameter  | 
response code for invalid parameter  | 
|---|---|---|---|---|---|---|---|
custom_meter_name  | 
Path  | 
String (Up to 255 alpha-numerical one byte characters and some symbols: ['-', '_', '.'])  | 
authentication token  | 
required  | 
-  | 
Terminate  | 
400  | 
token_id  | 
Header  | 
authentication token string  | 
authentication token  | 
required  | 
-  | 
Terminate  | 
401  | 
project_id  | 
Body  | 
String (UUID)  | 
The unique ID of the project(tenant) which the resource and the custom meter are belonging to  | 
optional  | 
the tenant when acquiring the <token_id>  | 
Terminate  | 
401  | 
namespace  | 
Body  | 
String (Up to 32 alpha-numerical one byte characters and some symbols: ['-', '_', '.'])  | 
The namespace of the service  | 
optional  | 
-  | 
Terminate  | 
400  | 
resource_id  | 
Body  | 
String (Up to 64 alpha-numerical one byte characters and some symbols: ['-', '_', '.']) such as "<namespace>_<UUID>"  | 
The unique ID of the metering resource to associate with the custom meter  | 
required  | 
-  | 
Terminate  | 
400  | 
counter_name  | 
Body  | 
String (Must be the same value with "custom_meter_name". Up to 255 alpha-numerical one byte characters and some symbols: ['-', '_', '.'])  | 
The name of the custom meter  | 
required  | 
-  | 
Terminate  | 
400  | 
counter_type  | 
Body  | 
String ( MeterType )  | 
The type of measurement associated with the custom meter  | 
optional  | 
delta  | 
Terminate  | 
400  | 
counter_unit  | 
Body  | 
String (Up to 32 alpha-numerical one byte characters and some symbols: ['-', '_', '.'])  | 
The unit of measurement associated with the custom meter  | 
optional  | 
""  | 
Terminate  | 
400  | 
display_name  | 
Body  | 
String (Up to 255 alpha-numerical one byte characters and some symbols: ['-', '_', '.'])  | 
The friendly display name of the custom meter  | 
optional  | 
the same value with "counter_name"  | 
Terminate  | 
400  | 
timestamp  | 
Body  | 
Datetime (ISO8601)  | 
arbitrary timestamp  | 
optional  | 
the present time when the API request has been accepted  | 
Terminate  | 
400  | 
counter_volume  | 
Body  | 
Float (integer portion: up to 12 digits, fractional portion: up to 4 digits. String will convert to Float.)  | 
The sample value registered with the custom meter. If this parameter is specified in the request, the "counter_volume" value will be put into the custom meter as a sample value.  | 
optional  | 
-  | 
Terminate  | 
400  | 
recorded_at  | 
Body  | 
Datetime (ISO8601)  | 
The datetime when the sample value (counter_volume) was measured and recorded  | 
optional  | 
the present time when the API request has been accepted  | 
Terminate  | 
400  | 
Response¶
Response Header¶
Format¶
HTTP/1.1 <response_code> <status>       (ex. 200 OK)
Content-Type: application/json; charset=utf-8
<response_code>: see "Response Code" section
<status>: message based on the response code
注釈
Not including auto-insert fields such as "Transfer-Encoding", "Date" and others.
Response Code¶
response code  | 
status  | 
condition  | 
message  | 
|---|---|---|---|
200  | 
ok  | 
normal end  | 
|
400  | 
bad request  | 
Invalid counter_type. valid meter types: ['cumulative', 'delta', 'gauge']  | 
Invalid counter_type.  | 
Invalid recorded_at. recorded_at must be the datetime format (ISO8601).  | 
Invalid recorded_at.  | 
||
Invalid counter_volume. counter_volume must be float (The max integer portion: 12 digits, The max fractional portion: 4 digits)  | 
Invalid counter_volume.  | 
||
Invalid display_name. display_name must be alpha-numerical one byte characters and some symbols: ['-', '_', '.']  | 
Invalid display_name.  | 
||
string size of the requested counter_unit is over than 32.  | 
counter_unit string size is over than 32.  | 
||
requested counter_name is different from {custom_meter_name} specified in the url path  | 
different from meter_name in counter_name.  | 
||
counter_name was not specified  | 
counter_name can't be blank.  | 
||
resource_id was not specified  | 
resource_id can't be blank.  | 
||
the just-created custom meter can't accept sample values(counter_volume). Please retry after 1min.  | 
Custom meters failed to send samples.  | 
||
Only 1 custom meters is cannot update in 24 hours in the basic plan. Please upgrade to the advanced plan and you can update 30 custom meters in 24 hours.  | 
Only 1 custom meters is cannot update in 24 hours in the current plan.  | 
||
Can't put sample values(counter_volume) to the custom meter over 1500 times a day.  | 
Custom meter is over than the update limit.  | 
||
Too many custom meters has been created in the tenant.  | 
Custom meter is over than the creation limit.  | 
||
More than 100 requests are included in the requested JSON array.  | 
Request size is over than 100.  | 
||
401  | 
unauthorized  | 
authentication failure  | 
The request you have made requires authentication.  | 
invalid project id  | 
Not authorized to access project.  | 
||
500  | 
internal server error  | 
internal server error  | 
The request processing has failed due to some unknown error, exception or failure  | 
Response Body¶
Format¶
[
  {
    "project_id": "<project_id>",
    "namespace": "<namespace>",
    "resource_id": "<resource_id>",
    "counter_name": "<counter_name>",
    "counter_type": "<counter_type>",
    "counter_unit": "<counter_unit>",
    "resource_metadata": {
      "display_name": "<display_name>"
    },
    "timestamp": "<timestamp>",
    "counter_volume": "<counter_volume>",
    "source": "",
    "recorded_at": "<recorded_at>",
    "message_id": ""
  },
  <<repeat>>
]
Response Parameter¶
item  | 
format  | 
description  | 
|
|---|---|---|---|
project_id  | 
String  | 
The unique ID of the project(tenant) which the resource and the custom meter are belonging to  | 
|
namespace  | 
String  | 
The namespace of the service  | 
|
resource_id  | 
String  | 
The unique ID of the metering resource associated with the custom meter  | 
|
counter_name  | 
String  | 
The name of the custom meter  | 
|
counter_type  | 
String ( MeterType )  | 
The type of measurement associated with the custom meter  | 
|
counter_unit  | 
String  | 
The unit of measurement associated with the custom meter  | 
|
display_name  | 
String  | 
The friendly display name of the custom meter  | 
|
timestamp  | 
datetime  | 
The timestamp when the "Create and Put a value into Custom Meter" API has been requested  | 
|
counter_volume  | 
String  | 
The sample value registered the custom meter  | 
|
recorded_at  | 
datetime  | 
The datetime of the sample value (counter_volume) recorded  | 
|
source  | 
-  | 
Non-use  | 
|
message_id  | 
-  | 
Non-use  | 
Sample Request and Response¶
Sample API Request¶
Request URL¶
GET /v2/meters/vm1_load_average
Request Header¶
Content-Type: application/json
Accept: application/json
X-Auth-Token: 61389973e52b49c394ba3b89179b290b
Request Body¶
[
  {
    "resource_id": "nova_bd9431c1-8d69-4ad3-803a-8d4a6b89fd36",
    "counter_name": "vm1_load_average",
    "counter_unit": "count",
    "counter_type": "gauge",
    "counter_volume": "1.01",
    "resource_metadata": {
      "display_name": "Load-Average"
    },
    "recorded_at": "2016-08-01T18:03:00+09:00"
  }
]
Sample API Response¶
Response Header¶
HTTP/1.1 200 OK
Response Body¶
[
  {
    "project_id": "26574d10673044dbb03ffc8facc7ab7a",
    "namespace": "nova",
    "resource_id": "nova_bd9431c1-8d69-4ad3-803a-8d4a6b89fd36",
    "counter_name": "vm1_load_average",
    "counter_type": "gauge",
    "counter_unit": "count",
    "resource_metadata": {
      "display_name": "Load-Average"
    },
    "timestamp": "2016-08-01T11:07:17Z",
    "counter_volume": "1.01",
    "source": "",
    "recorded_at": "2016-08-01T18:03:00+09:00",
    "message_id": ""
  }
]
Sample Error Response¶
HTTP Request¶
GET /v2/meters/vm1_load_average
User-Agent: curl/7.19.7
Content-Type: application/json
Accept: application/json
X-Auth-Token: 61389973e52b49c394ba3b89179b290b
[
  {
    "resource_id": "nova_bd9431c1-8d69-4ad3-803a-8d4a6b89fd36",
    "counter_name": "vm2_load_average",
    "counter_unit": "count",
    "counter_type": "gauge",
    "counter_volume": "2.51",
    "resource_metadata": {
      "display_name": "Load-Average"
    },
    "recorded_at": "2016-08-01T18:05:00+09:00"
  }
]
HTTP Response¶
HTTP/1.1 400 Bad Request
Date: Mon, 01 Aug 2016 12:26:36 GMT
Server: Apache
Cache-Control: no-cache
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Status: 400 Bad Request
Connection: close
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
{"error":{"code":400,"message":"different from meter_name in counter_name.","title":"Bad Request"}}