OpenTelemetry é uma coleção de ferramentas, APIs e SDKs. Pode ser usada para instrumentar, gerar, coletar e exportar dados de telemetria (métricas, logs e rastreamentos) para análise. O OpenTelemetry faz parte da Cloud Native Computing Foundation. Para obter mais informações, consulte OpenTelemetry
Para obter informações sobre a especificação completa do OpenTelemetry 0.7.0, consulte a versão v0.7.0
Um registro do Kinesis pode conter uma ou mais estruturas de dados ExportMetricsServiceRequest
do OpenTelemetry. Cada estrutura de dados começa com um cabeçalho com UnsignedVarInt32
indicando o tamanho do registro em bytes. Cada ExportMetricsServiceRequest
pode conter dados de várias métricas ao mesmo tempo.
Veja a seguir uma representação de string da mensagem da estrutura de dados ExportMetricsServiceRequest
do OpenTelemetry. O OpenTelemetry serializa o uso do protocolo binário do Google Protocol Buffers, e não é legível por humanos.
resource_metrics {
resource {
attributes {
key: "cloud.provider"
value {
string_value: "aws"
}
}
attributes {
key: "cloud.account.id"
value {
string_value: "2345678901"
}
}
attributes {
key: "cloud.region"
value {
string_value: "us-east-1"
}
}
attributes {
key: "aws.exporter.arn"
value {
string_value: "arn:aws:cloudwatch:us-east-1:123456789012:metric-stream/MyMetricStream"
}
}
}
instrumentation_library_metrics {
metrics {
name: "amazonaws.com/AWS/DynamoDB/ConsumedReadCapacityUnits"
unit: "1"
double_summary {
data_points {
labels {
key: "Namespace"
value: "AWS/DynamoDB"
}
labels {
key: "MetricName"
value: "ConsumedReadCapacityUnits"
}
labels {
key: "TableName"
value: "MyTable"
}
start_time_unix_nano: 1604948400000000000
time_unix_nano: 1604948460000000000
count: 1
sum: 1.0
quantile_values {
quantile: 0.0
value: 1.0
}
quantile_values {
quantile: 0.95
value: 1.0
}
quantile_values {
quantile: 0.99
value: 1.0
}
quantile_values {
quantile: 1.0
value: 1.0
}
}
data_points {
labels {
key: "Namespace"
value: "AWS/DynamoDB"
}
labels {
key: "MetricName"
value: "ConsumedReadCapacityUnits"
}
labels {
key: "TableName"
value: "MyTable"
}
start_time_unix_nano: 1604948460000000000
time_unix_nano: 1604948520000000000
count: 2
sum: 5.0
quantile_values {
quantile: 0.0
value: 2.0
}
quantile_values {
quantile: 1.0
value: 3.0
}
}
}
}
}
}
Objeto de nível superior para serializar dados de métrica do OpenTelemetry
ExportMetricsServiceRequest
é o wrapper de nível mais alto para serializar uma carga útil do exportador do OpenTelemetry. Contém um ou mais ResourceMetrics
.
message ExportMetricsServiceRequest {
// An array of ResourceMetrics.
// For data coming from a single resource this array will typically contain one
// element. Intermediary nodes (such as OpenTelemetry Collector) that receive
// data from multiple origins typically batch the data before forwarding further and
// in that case this array will contain multiple elements.
repeated opentelemetry.proto.metrics.v1.ResourceMetrics resource_metrics = 1;
}
ResourceMetrics
é o objeto de nível superior para representar objetos MetricData.
// A collection of InstrumentationLibraryMetrics from a Resource.
message ResourceMetrics {
// The resource for the metrics in this message.
// If this field is not set then no resource info is known.
opentelemetry.proto.resource.v1.Resource resource = 1;
// A list of metrics that originate from a resource.
repeated InstrumentationLibraryMetrics instrumentation_library_metrics = 2;
}
O objeto Resource
Resource
é um objeto de par de valor que contém algumas informações sobre o recurso que gerou as métricas. Para métricas criadas pela AWS, a estrutura de dados contém o nome do recurso da Amazon (ARN) do recurso relacionado à métrica, como uma instância do EC2 ou um bucket do S3.
O objeto Resource
contém um atributo chamado attributes
, que armazena uma lista de pares de chave-valor.
cloud.account.id
contém o ID da contacloud.region
contém a Regiãoaws.exporter.arn
contém o ARN do fluxo de métricascloud.provider
é sempreaws
.
// Resource information.
message Resource {
// Set of labels that describe the resource.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 1;
// dropped_attributes_count is the number of dropped attributes. If the value is 0,
// no attributes were dropped.
uint32 dropped_attributes_count = 2;
}
O objeto InstrumentationLibraryMetrics
O campo instrumentation_library não será preenchido. Preencheremos apenas o campo de métricas que estamos exportando.
// A collection of Metrics produced by an InstrumentationLibrary.
message InstrumentationLibraryMetrics {
// The instrumentation library information for the metrics in this message.
// If this field is not set then no library info is known.
opentelemetry.proto.common.v1.InstrumentationLibrary instrumentation_library = 1;
// A list of metrics that originate from an instrumentation library.
repeated Metric metrics = 2;
}
O objeto Metric
O objeto de métrica contém um campo de dados DoubleSummary
que contém uma lista de DoubleSummaryDataPoint
.
message Metric {
// name of the metric, including its DNS name prefix. It must be unique.
string name = 1;
// description of the metric, which can be used in documentation.
string description = 2;
// unit in which the metric value is reported. Follows the format
// described by http://unitsofmeasure.org/ucum.html.
string unit = 3;
oneof data {
IntGauge int_gauge = 4;
DoubleGauge double_gauge = 5;
IntSum int_sum = 6;
DoubleSum double_sum = 7;
IntHistogram int_histogram = 8;
DoubleHistogram double_histogram = 9;
DoubleSummary double_summary = 11;
}
}
message DoubleSummary {
repeated DoubleSummaryDataPoint data_points = 1;
}
O objeto MetricDescriptor
O objeto MetricDescriptor contém metadados. Para obter mais informações, consulte o metrics.proto
Para fluxos de métricas, o MetricDescriptor tem o seguinte conteúdo:
O
name
seráamazonaws.com/
metric_namespace
/metric_name
description
ficará em branco.unit
será preenchido mapeando a unidade do dado métrico para a variante que distingue maiúsculas e minúsculas do código unificado para unidades de medida. Para obter mais informações, consulte Conversões com o formato OpenTelemetry 0.7.0 no CloudWatch e Código unificado para unidades de medida. O
type
seráSUMMARY
.
O objeto DoubleSummaryDataPoint
O objeto DoubleSummaryDataPoint contém o valor de um único ponto de dados em uma série temporal em uma métrica DoubleSummary.
// DoubleSummaryDataPoint is a single data point in a timeseries that describes the
// time-varying values of a Summary metric.
message DoubleSummaryDataPoint {
// The set of labels that uniquely identify this timeseries.
repeated opentelemetry.proto.common.v1.StringKeyValue labels = 1;
// start_time_unix_nano is the last time when the aggregation value was reset
// to "zero". For some metric types this is ignored, see data types for more
// details.
//
// The aggregation value is over the time interval (start_time_unix_nano,
// time_unix_nano].
//
// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January
// 1970.
//
// Value of 0 indicates that the timestamp is unspecified. In that case the
// timestamp may be decided by the backend.
fixed64 start_time_unix_nano = 2;
// time_unix_nano is the moment when this aggregation value was reported.
//
// Value is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January
// 1970.
fixed64 time_unix_nano = 3;
// count is the number of values in the population. Must be non-negative.
fixed64 count = 4;
// sum of the values in the population. If count is zero then this field
// must be zero.
double sum = 5;
// Represents the value at a given quantile of a distribution.
//
// To record Min and Max values following conventions are used:
// - The 1.0 quantile is equivalent to the maximum value observed.
// - The 0.0 quantile is equivalent to the minimum value observed.
message ValueAtQuantile {
// The quantile of a distribution. Must be in the interval
// [0.0, 1.0].
double quantile = 1;
// The value at the given quantile of a distribution.
double value = 2;
}
// (Optional) list of values at different quantiles of the distribution calculated
// from the current snapshot. The quantiles must be strictly increasing.
repeated ValueAtQuantile quantile_values = 6;
}
Para ter mais informações, consulte Conversões com o formato OpenTelemetry 0.7.0 no CloudWatch.