in metric.go [66:175]
func newMetrics(cfg Config) (metrics, error) {
if cfg.MeterProvider == nil {
cfg.MeterProvider = otel.GetMeterProvider()
}
meter := cfg.MeterProvider.Meter("github.com/elastic/go-docappender")
ms := metrics{}
histograms := []histogramMetric{
{
name: "elasticsearch.buffer.latency",
description: "The amount of time a document was buffered for, in seconds.",
unit: "s",
p: &ms.bufferDuration,
},
{
name: "elasticsearch.flushed.latency",
description: "The amount of time a _bulk request took, in seconds.",
unit: "s",
p: &ms.flushDuration,
},
}
for _, m := range histograms {
err := newFloat64Histogram(meter, m)
if err != nil {
return ms, err
}
}
counters := []counterMetric{
{
name: "elasticsearch.bulk_requests.count",
description: "The number of bulk requests completed.",
p: &ms.bulkRequests,
},
{
name: "elasticsearch.events.count",
description: "Number of APM Events received for indexing",
p: &ms.docsAdded,
},
{
name: "elasticsearch.events.processed",
description: "Number of APM Events flushed to Elasticsearch. Attributes are used to report separate counts for different outcomes - success, client failure, etc.",
p: &ms.docsIndexed,
},
{
name: "elasticsearch.events.retried",
description: "The number of document retries. A single document may be retried more than once.",
p: &ms.docsRetried,
},
{
name: "elasticsearch.flushed.bytes",
description: "The total number of bytes written to the request body",
unit: "by",
p: &ms.bytesTotal,
},
{
name: "elasticsearch.flushed.uncompressed.bytes",
description: "The total number of uncompressed bytes written to the request body",
unit: "by",
p: &ms.bytesUncompressedTotal,
},
{
name: "elasticsearch.indexer.created",
description: "The number of active indexer creations.",
p: &ms.activeCreated,
},
{
name: "elasticsearch.indexer.destroyed",
description: "The number of times an active indexer was destroyed.",
p: &ms.activeDestroyed,
},
{
name: "docappender.blocked.add",
description: "The number of times Add could block due to exhausted capacity in bulkItems channel",
p: &ms.blockedAdd,
},
}
for _, m := range counters {
err := newInt64Counter(meter, m)
if err != nil {
return ms, err
}
}
upDownCounters := []upDownCounterMetric{
{
name: "elasticsearch.events.queued",
description: "the number of active items waiting in the indexer's queue.",
p: &ms.docsActive,
},
{
name: "elasticsearch.bulk_requests.available",
description: "The number of bulk indexers available for making bulk index requests.",
p: &ms.availableBulkRequests,
},
{
name: "elasticsearch.bulk_requests.inflight",
description: "The number of in-flight bulk requests being made to Elasticsearch.",
p: &ms.inflightBulkrequests,
},
}
for _, m := range upDownCounters {
err := newInt64UpDownCounter(meter, m)
if err != nil {
return ms, err
}
}
return ms, nil
}