26#ifndef TELEMETRY_MYSQL_METRIC_H_INCLUDED
27#define TELEMETRY_MYSQL_METRIC_H_INCLUDED
29#include <opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h>
30#include <opentelemetry/metrics/async_instruments.h>
31#include <opentelemetry/metrics/meter.h>
32#include <opentelemetry/metrics/observer_result.h>
33#include <opentelemetry/nostd/shared_ptr.h>
34#include <opentelemetry/nostd/unique_ptr.h>
35#include <opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h>
36#include <opentelemetry/sdk/metrics/meter_context.h>
37#include <opentelemetry/sdk/metrics/meter_provider.h>
38#include <opentelemetry/sdk/metrics/push_metric_exporter.h>
39#include <opentelemetry/sdk/metrics/view/view_registry.h>
40#include <opentelemetry/sdk/resource/resource.h>
50 static void callback(opentelemetry::metrics::ObserverResult
result,
54 opentelemetry::metrics::ObservableInstrument>
66 opentelemetry::nostd::shared_ptr<opentelemetry::metrics::ObservableInstrument>
77 opentelemetry::nostd::shared_ptr<opentelemetry::metrics::Meter>
83 const char *metric_desc,
84 const char *metric_unit,
86 void *metric_cb_context);
89 const char *metric_desc,
90 const char *metric_unit,
92 void *metric_cb_context);
95 const char *metric_desc,
96 const char *metric_unit,
98 void *metric_cb_context);
101 const char *metric_desc,
102 const char *metric_unit,
104 void *metric_cb_context);
107 const char *metric_desc,
108 const char *metric_unit,
110 void *metric_cb_context);
113 const char *metric_desc,
114 const char *metric_unit,
116 void *metric_cb_context);
119 opentelemetry::nostd::shared_ptr<opentelemetry::metrics::Meter>
m_otel_meter;
139 opentelemetry::metrics::MeterProvider *
get(
size_t frequency);
141 void add(
size_t frequency,
142 std::unique_ptr<opentelemetry::metrics::MeterProvider> provider);
144 void remove_meter(opentelemetry::nostd::string_view name,
145 opentelemetry::nostd::string_view
version,
146 opentelemetry::nostd::string_view url);
153 std::unique_ptr<opentelemetry::metrics::MeterProvider>
m_provider;
156 std::unique_ptr<opentelemetry::metrics::MeterProvider> provider)
Definition: tm_mysql_metric.h:134
void add(size_t frequency, std::unique_ptr< opentelemetry::metrics::MeterProvider > provider)
Definition: tm_mysql_metric.cc:392
std::vector< entry > m_providers
Meter providers.
Definition: tm_mysql_metric.h:166
void reset()
Definition: tm_mysql_metric.cc:408
void remove_meter(opentelemetry::nostd::string_view name, opentelemetry::nostd::string_view version, opentelemetry::nostd::string_view url)
Definition: tm_mysql_metric.cc:398
~MySQLMeterProviders()=default
MySQLMeterProviders()=default
opentelemetry::metrics::MeterProvider * get(size_t frequency)
Definition: tm_mysql_metric.cc:380
Definition: tm_mysql_metric.h:74
void createDoubleObservableCounter(const char *metric_name, const char *metric_desc, const char *metric_unit, measurement_callback_t metric_cb, void *metric_cb_context)
Definition: tm_mysql_metric.cc:325
void createInt64ObservableGauge(const char *metric_name, const char *metric_desc, const char *metric_unit, measurement_callback_t metric_cb, void *metric_cb_context)
Definition: tm_mysql_metric.cc:306
void createDoubleObservableUpDownCounter(const char *metric_name, const char *metric_desc, const char *metric_unit, measurement_callback_t metric_cb, void *metric_cb_context)
Definition: tm_mysql_metric.cc:344
void createInt64ObservableCounter(const char *metric_name, const char *metric_desc, const char *metric_unit, measurement_callback_t metric_cb, void *metric_cb_context)
Definition: tm_mysql_metric.cc:270
void createInt64ObservableUpDownCounter(const char *metric_name, const char *metric_desc, const char *metric_unit, measurement_callback_t metric_cb, void *metric_cb_context)
Definition: tm_mysql_metric.cc:289
MySQLMeter(opentelemetry::nostd::shared_ptr< opentelemetry::metrics::Meter > otel_meter)
Definition: tm_mysql_metric.h:76
void createDoubleObservableGauge(const char *metric_name, const char *metric_desc, const char *metric_unit, measurement_callback_t metric_cb, void *metric_cb_context)
Definition: tm_mysql_metric.cc:361
opentelemetry::nostd::shared_ptr< opentelemetry::metrics::Meter > m_otel_meter
Definition: tm_mysql_metric.h:119
std::vector< std::unique_ptr< MySQLMetric > > m_metrics
Definition: tm_mysql_metric.h:120
Definition: tm_mysql_metric.h:48
void removeCallback()
Definition: tm_mysql_metric.cc:228
~MySQLMetric()
Definition: tm_mysql_metric.cc:199
MySQLMetric(opentelemetry::nostd::shared_ptr< opentelemetry::metrics::ObservableInstrument > otel_instrument, measurement_callback_t metric_cb, void *metric_cb_context)
Definition: tm_mysql_metric.cc:187
void observe(opentelemetry::metrics::ObserverResult result)
Definition: tm_mysql_metric.cc:239
static void callback(opentelemetry::metrics::ObserverResult result, void *state)
Definition: tm_mysql_metric.cc:179
void * m_metric_cb_context
Definition: tm_mysql_metric.h:69
opentelemetry::nostd::shared_ptr< opentelemetry::metrics::ObservableInstrument > m_otel_instrument
Definition: tm_mysql_metric.h:67
bool m_collecting
Definition: tm_mysql_metric.h:70
measurement_callback_t m_metric_cb
Definition: tm_mysql_metric.h:68
void addCallback()
Definition: tm_mysql_metric.cc:204
mysql_mutex_t m_lock
Definition: tm_mysql_metric.h:71
Define std::hash<Gtid>.
Definition: gtid.h:355
Definition: option_usage.cc:40
void(* measurement_callback_t)(void *measurement_context, measurement_delivery_callback_t delivery, void *delivery_context)
Single metric measurement callback can return multiple measurement values.
Definition: psi_metric_bits.h:97
required uint64 version
Definition: replication_group_member_actions.proto:41
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
Definition: tm_mysql_metric.h:151
std::unique_ptr< opentelemetry::metrics::MeterProvider > m_provider
Definition: tm_mysql_metric.h:153
size_t m_frequency
Definition: tm_mysql_metric.h:152
entry(size_t frequency, std::unique_ptr< opentelemetry::metrics::MeterProvider > provider)
Definition: tm_mysql_metric.h:155