# Stackdriver

The `stackdriver`

adapter enables Istio to deliver log, metric and traces to the
Stackdriver backend.

This adapter supports the metric template, the logentry template, and the tracespan template.

## Params

Configuration format for the `stackdriver`

adapter.

## Params.LogInfo

Describes how to represent an Istio Log in Stackdriver.

## Params.LogInfo.HttpRequestMapping

Maps from template variable names to the various fields of Stackdriver’s HTTP request struct. See https://godoc.org/cloud.google.com/go/logging#HTTPRequest

## Params.LogInfo.SinkInfo

Contains information about sink to export Stackdriver logs to.
See https://godoc.org/cloud.google.com/go/logging/logadmin#Sink.
Ex: If you want to export it to a GCS bucket, id would be a unique idetifier you want for the sink,
destination would be the storage be name of GCS Storage bucket and filter would be user defined condition for
filtering logs. See below for a sample config:
id: ‘info-errors-to-gcs’
destination: ‘storage.googleapis.com/

## Params.MetricInfo

Describes how to represent an Istio metric in Stackdriver. See https://github.com/googleapis/googleapis/blob/master/google/api/metric.proto

## Params.MetricInfo.BucketsDefinition

Describes buckets for DISTRIBUTION valued metrics. TODO: look into using google.api.distribution.proto instead - we would pull it in but it has a ton of dependencies it doesn’t actually use.

## Params.MetricInfo.BucketsDefinition.Explicit

Specifies a set of buckets with arbitrary widths.

There are `size(bounds) + 1`

(= `N`

) buckets. Bucket `i`

has the following
boundaries:

- Upper bound (
`0 <= i < N-1`

):`bounds[i]`

- Lower bound (
`1 <= i < N`

):`bounds[i - 1]`

The `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.

## Params.MetricInfo.BucketsDefinition.Exponential

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. The two additional
buckets are the underflow and overflow buckets.

Bucket `i`

has the following boundaries:

- Upper bound (0 <= i < N-1):
`scale * (growth_factor ^ i)`

- Lower bound (1 <= i < N):
`scale * (growth_factor ^ (i - 1))`

## Params.MetricInfo.BucketsDefinition.Linear

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. The two additional
buckets are the underflow and overflow buckets.

Bucket `i`

has the following boundaries:

- Upper bound (
`0 <= i < N-1`

):`offset + (width * i)`

- Lower bound (
`1 <= i < N`

):`offset + (width * (i - 1))`

## Params.Trace

Details of Stackdriver Trace configuration for tracespan template.

## google.api.MetricDescriptor.MetricKind

The kind of measurement. It describes how the data is reported.

Name | Description |
---|---|

`METRIC_KIND_UNSPECIFIED` | Do not use this default value. |

`GAUGE` | An instantaneous measurement of a value. |

`DELTA` | The change in a value during a time interval. |

`CUMULATIVE` | A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points. |

## google.api.MetricDescriptor.ValueType

The value type of a metric.

Name | Description |
---|---|

`VALUE_TYPE_UNSPECIFIED` | Do not use this default value. |

`BOOL` | The value is a boolean.
This value type can be used only if the metric kind is |

`INT64` | The value is a signed 64-bit integer. |

`DOUBLE` | The value is a double precision floating point number. |

`STRING` | The value is a text string.
This value type can be used only if the metric kind is |

`DISTRIBUTION` | The value is a |

`MONEY` | The value is money. |