<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="monitoring_v3.html">Cloud Monitoring API</a> . <a href="monitoring_v3.projects.html">projects</a> . <a href="monitoring_v3.projects.collectdTimeSeries.html">collectdTimeSeries</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Stackdriver Monitoring Agent only: Creates a new time series.This method is only for use by the Stackdriver Monitoring Agent. Use projects.timeSeries.create instead.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(name, body=None, x__xgafv=None)</code>
  <pre>Stackdriver Monitoring Agent only: Creates a new time series.This method is only for use by the Stackdriver Monitoring Agent. Use projects.timeSeries.create instead.

Args:
  name: string, The project in which to create the time series. The format is: projects/[PROJECT_ID_OR_NUMBER]  (required)
  body: object, The request body.
    The object takes the form of:

{ # The CreateCollectdTimeSeries request.
    &quot;resource&quot;: { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource&#x27;s schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: { &quot;type&quot;: &quot;gce_instance&quot;, &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;, &quot;zone&quot;: &quot;us-central1-a&quot; }} # The monitored resource associated with the time series.
      &quot;type&quot;: &quot;A String&quot;, # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types and Logging resource types.
      &quot;labels&quot;: { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels &quot;project_id&quot;, &quot;instance_id&quot;, and &quot;zone&quot;.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;collectdVersion&quot;: &quot;A String&quot;, # The version of collectd that collected the data. Example: &quot;5.3.0-192.el6&quot;.
    &quot;collectdPayloads&quot;: [ # The collectd payloads representing the time series data. You must not include more than a single point for each time series, so no two payloads can have the same values for all of the fields plugin, plugin_instance, type, and type_instance.
      { # A collection of data points sent from a collectd-based plugin. See the collectd documentation for more information.
        &quot;type&quot;: &quot;A String&quot;, # The measurement type. Example: &quot;memory&quot;.
        &quot;typeInstance&quot;: &quot;A String&quot;, # The measurement type instance. Example: &quot;used&quot;.
        &quot;values&quot;: [ # The measured values during this time interval. Each value must have a different data_source_name.
          { # A single data point from a collectd-based plugin.
            &quot;value&quot;: { # A single strongly-typed value. # The measurement value.
              &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
              &quot;boolValue&quot;: True or False, # A Boolean value: true or false.
              &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
              &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
              &quot;distributionValue&quot;: { # Distribution contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets.The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths.Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the mean and sum_of_squared_deviation fields meaningless. # A distribution value.
                &quot;exemplars&quot;: [ # Must be in increasing order of value field.
                  { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                    &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                    &quot;attachments&quot;: [ # Contextual information about the example value. Examples are:Trace: type.googleapis.com/google.monitoring.v3.SpanContextLiteral string: type.googleapis.com/google.protobuf.StringValueLabels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabelsThere may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                      },
                    ],
                    &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                  },
                ],
                &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass.If count is zero then this field must be zero.
                &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If count is zero then this field must be zero.
                &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in bucket_counts if a histogram is provided.
                &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the count is zero. This field is presently ignored by the Cloud Monitoring API v3.
                  &quot;min&quot;: 3.14, # The minimum of the population values.
                  &quot;max&quot;: 3.14, # The maximum of the population values.
                },
                &quot;bucketCounts&quot;: [ # Required in the Cloud Monitoring API v3. The values for each bucket specified in bucket_options. The sum of the values in bucketCounts must equal the value in the count field of the Distribution object. The order of the bucket counts follows the numbering schemes described for the three bucket types. The underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; and the overflow bucket has number N-1. The size of bucket_counts must not be greater than N. If the size is less than N, then the remaining buckets are assigned values of zero.
                  &quot;A String&quot;,
                ],
                &quot;bucketOptions&quot;: { # BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Required in the Cloud Monitoring API v3. Defines the histogram bucket boundaries.
                  &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                    &quot;scale&quot;: 3.14, # Must be greater than 0.
                    &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                  },
                  &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 &lt;= i &lt; N-1): boundsi Lower bound (1 &lt;= i &lt; N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                    &quot;bounds&quot;: [ # The values must be monotonically increasing.
                      3.14,
                    ],
                  },
                  &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                    &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                    &quot;width&quot;: 3.14, # Must be greater than 0.
                    &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                  },
                },
              },
            },
            &quot;dataSourceName&quot;: &quot;A String&quot;, # The data source for the collectd value. For example, there are two data sources for network measurements: &quot;rx&quot; and &quot;tx&quot;.
            &quot;dataSourceType&quot;: &quot;A String&quot;, # The type of measurement.
          },
        ],
        &quot;plugin&quot;: &quot;A String&quot;, # The name of the plugin. Example: &quot;disk&quot;.
        &quot;startTime&quot;: &quot;A String&quot;, # The start time of the interval.
        &quot;endTime&quot;: &quot;A String&quot;, # The end time of the interval.
        &quot;metadata&quot;: { # The measurement metadata. Example: &quot;process_id&quot; -&gt; 12345
          &quot;a_key&quot;: { # A single strongly-typed value.
            &quot;stringValue&quot;: &quot;A String&quot;, # A variable-length string value.
            &quot;boolValue&quot;: True or False, # A Boolean value: true or false.
            &quot;int64Value&quot;: &quot;A String&quot;, # A 64-bit integer. Its range is approximately ±9.2x1018.
            &quot;doubleValue&quot;: 3.14, # A 64-bit double-precision floating-point number. Its magnitude is approximately ±10±300 and it has 16 significant digits of precision.
            &quot;distributionValue&quot;: { # Distribution contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets.The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths.Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the mean and sum_of_squared_deviation fields meaningless. # A distribution value.
              &quot;exemplars&quot;: [ # Must be in increasing order of value field.
                { # Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.
                  &quot;value&quot;: 3.14, # Value of the exemplar point. This value determines to which bucket the exemplar belongs.
                  &quot;attachments&quot;: [ # Contextual information about the example value. Examples are:Trace: type.googleapis.com/google.monitoring.v3.SpanContextLiteral string: type.googleapis.com/google.protobuf.StringValueLabels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabelsThere may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.
                    {
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                    },
                  ],
                  &quot;timestamp&quot;: &quot;A String&quot;, # The observation (sampling) time of the above value.
                },
              ],
              &quot;sumOfSquaredDeviation&quot;: 3.14, # The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, &quot;The Art of Computer Programming&quot;, Vol. 2, page 232, 3rd edition describes Welford&#x27;s method for accumulating this sum in one pass.If count is zero then this field must be zero.
              &quot;mean&quot;: 3.14, # The arithmetic mean of the values in the population. If count is zero then this field must be zero.
              &quot;count&quot;: &quot;A String&quot;, # The number of values in the population. Must be non-negative. This value must equal the sum of the values in bucket_counts if a histogram is provided.
              &quot;range&quot;: { # The range of the population values. # If specified, contains the range of the population values. The field must not be present if the count is zero. This field is presently ignored by the Cloud Monitoring API v3.
                &quot;min&quot;: 3.14, # The minimum of the population values.
                &quot;max&quot;: 3.14, # The maximum of the population values.
              },
              &quot;bucketCounts&quot;: [ # Required in the Cloud Monitoring API v3. The values for each bucket specified in bucket_options. The sum of the values in bucketCounts must equal the value in the count field of the Distribution object. The order of the bucket counts follows the numbering schemes described for the three bucket types. The underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; and the overflow bucket has number N-1. The size of bucket_counts must not be greater than N. If the size is less than N, then the remaining buckets are assigned values of zero.
                &quot;A String&quot;,
              ],
              &quot;bucketOptions&quot;: { # BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite. # Required in the Cloud Monitoring API v3. Defines the histogram bucket boundaries.
                &quot;exponentialBuckets&quot;: { # Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i). Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                  &quot;scale&quot;: 3.14, # Must be greater than 0.
                  &quot;growthFactor&quot;: 3.14, # Must be greater than 1.
                  &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                },
                &quot;explicitBuckets&quot;: { # Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 &lt;= i &lt; N-1): boundsi Lower bound (1 &lt;= i &lt; N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                  &quot;bounds&quot;: [ # The values must be monotonically increasing.
                    3.14,
                  ],
                },
                &quot;linearBuckets&quot;: { # Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 &lt;= i &lt; N-1): offset + (width * i). Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
                  &quot;numFiniteBuckets&quot;: 42, # Must be greater than 0.
                  &quot;width&quot;: 3.14, # Must be greater than 0.
                  &quot;offset&quot;: 3.14, # Lower bound of the first bucket.
                },
              },
            },
          },
        },
        &quot;pluginInstance&quot;: &quot;A String&quot;, # The instance name of the plugin Example: &quot;hdcl&quot;.
      },
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The CreateCollectdTimeSeries response.
    &quot;payloadErrors&quot;: [ # Records the error status for points that were not written due to an error in the request.Failed requests for which nothing is written will return an error response instead. Requests where data points were rejected by the backend will set summary instead.
      { # Describes the error status for payloads that were not written.
        &quot;index&quot;: 42, # The zero-based index in CreateCollectdTimeSeriesRequest.collectd_payloads.
        &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # Records the error status for the payload. If this field is present, the partial errors for nested values won&#x27;t be populated.
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        },
        &quot;valueErrors&quot;: [ # Records the error status for values that were not written due to an error.Failed payloads for which nothing is written will not include partial value errors.
          { # Describes the error status for values that were not written.
            &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # Records the error status for the value.
              &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
              &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
              &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            },
            &quot;index&quot;: 42, # The zero-based index in CollectdPayload.values within the parent CreateCollectdTimeSeriesRequest.collectd_payloads.
          },
        ],
      },
    ],
    &quot;summary&quot;: { # Summary of the result of a failed request to write data to a time series. # Aggregate statistics from writing the payloads. This field is omitted if all points were successfully written, so that the response is empty. This is for backwards compatibility with clients that log errors on any non-empty response.
      &quot;successPointCount&quot;: 42, # The number of points that were successfully written.
      &quot;errors&quot;: [ # The number of points that failed to be written. Order is not guaranteed.
        { # Detailed information about an error category.
          &quot;status&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The status of the requested write operation.
            &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
            &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          },
          &quot;pointCount&quot;: 42, # The number of points that couldn&#x27;t be written because of status.
        },
      ],
      &quot;totalPointCount&quot;: 42, # The number of points in the request.
    },
  }</pre>
</div>

</body></html>