Documentation
¶
Index ¶
- Constants
- Variables
- func GetVersion(versionString string) *version.Version
- func MajorMinorStringOnly(v *version.Version) (string, error)
- func MapOdigosToSemConv(odigosPrograminglang ProgrammingLanguage) string
- func SpanKindOdigosToOtel(kind SpanKind) trace.SpanKind
- func StartPprofServer(ctx context.Context, logger logr.Logger, port int) error
- type AgentHealthStatus
- type AgentsInitContainerResources
- type CollectorGatewayConfiguration
- type CollectorNodeConfiguration
- type ComponentLogLevels
- type DestinationType
- type EnvInjectionDecision
- type EnvInjectionMethod
- type K8sHealthProbesSamplingConfiguration
- type LanguageConfig
- type LibCType
- type MetricsSourceAgentJavaRuntimeMetricsConfiguration
- type MetricsSourceAgentMetricsConfiguration
- type MetricsSourceAgentRuntimeMetricConfiguration
- type MetricsSourceAgentRuntimeMetricsConfiguration
- type MetricsSourceAgentSpanMetricsConfiguration
- type MetricsSourceConfiguration
- type MetricsSourceHostMetricsConfiguration
- type MetricsSourceKubeletStatsConfiguration
- type MetricsSourceOdigosOwnMetricsConfiguration
- type MetricsSourceSpanMetricsConfiguration
- type MountMethod
- type ObservabilitySignal
- type OdigosConfiguration
- type OdigosInstrumentationDevice
- type OdigosLogLevel
- type OdigosOwnTelemetryConfiguration
- type OdigosTier
- type OidcConfiguration
- type OtelSdk
- type OtelSdkTier
- type OtelSdkType
- type OtlpExporterConfiguration
- type ProfileName
- type ProgramLanguageDetails
- type ProgrammingLanguage
- type RetryOnFailure
- type RolloutConfiguration
- type SamplingConfiguration
- type ServiceGraphOptions
- type SpanKind
- type UiMode
- type UserInstrumentationEnvs
Constants ¶
const ( EnvInjectionDecisionLoader = EnvInjectionDecision(LoaderEnvInjectionMethod) EnvInjectionDecisionPodManifest = EnvInjectionDecision(PodManifestEnvInjectionMethod) )
The decision on the actual injection method to use for a specific pod. While the configuration allows one to choose options with fallbaks, this decision is based on the runtime inspection, user overrides, and the distro support, and reflects what odigos is actually plan to use.
const LibcTypeDistroParameterName = "LIBC_TYPE"
const OdigosResourceNamespace = "instrumentation.odigos.io"
This is the resource namespace of the lister in k8s device plugin manager. from the "github.com/kubevirt/device-plugin-manager" package source: GetResourceNamespace must return namespace (vendor ID) of implemented Lister. e.g. for resources in format "color.example.com/<color>" that would be "color.example.com".
Variables ¶
var ( OtelSdkNativeCommunity = OtelSdk{SdkType: NativeOtelSdkType, SdkTier: CommunityOtelSdkTier} OtelSdkEbpfCommunity = OtelSdk{SdkType: EbpfOtelSdkType, SdkTier: CommunityOtelSdkTier} OtelSdkNativeEnterprise = OtelSdk{SdkType: NativeOtelSdkType, SdkTier: EnterpriseOtelSdkTier} OtelSdkEbpfEnterprise = OtelSdk{SdkType: EbpfOtelSdkType, SdkTier: EnterpriseOtelSdkTier} )
Functions ¶
func GetVersion ¶ added in v1.0.97
func MajorMinorStringOnly ¶ added in v1.0.174
func MapOdigosToSemConv ¶ added in v1.0.99
func MapOdigosToSemConv(odigosPrograminglang ProgrammingLanguage) string
MapOdigosToSemConv maps odigos programming language to OpenTelemetry semantic conventions It is supported only for the languages that are supported by OpenTelemetry [not for mysql, nginx, etc.]
func SpanKindOdigosToOtel ¶
Types ¶
type AgentHealthStatus ¶ added in v1.0.87
type AgentHealthStatus string
const ( // AgentHealthStatusHealthy represents the healthy status of an agent // It started the OpenTelemetry SDK with no errors, processed any configuration and is ready to receive data. AgentHealthStatusHealthy AgentHealthStatus = "Healthy" // AgentHealthStatusStarting represents that the agent is starting and there is still no health status available. // Once the agent finishes starting, it should report an either healthy or unhealthy status depending on the result. AgentHealthStatusStarting AgentHealthStatus = "Starting" // AgentHealthStatusUnsupportedRuntimeVersion represents that the agent is running on an unsupported runtime version // For example: Otel sdk supports node.js >= 14 and workload is running with node.js 12 AgentHealthStatusUnsupportedRuntimeVersion AgentHealthStatus = "UnsupportedRuntimeVersion" // AgentHealthStatusNoHeartbeat is when the server did not receive a 3 heartbeats from the agent, thus it is considered unhealthy AgentHealthStatusNoHeartbeat AgentHealthStatus = "NoHeartbeat" // AgentHealthStatusProcessTerminated is when the agent process is terminated. // The termination can be due to normal shutdown (e.g. event loop run out of work) // due to explicit termination (e.g. code calls exit(), or OS signal), or due to an error (e.g. unhandled exception) AgentHealthProcessTerminated AgentHealthStatus = "ProcessTerminated" // AgentHealthStatusAgentFailure is when the opamp agent encountered an error during runtime. AgentFailure AgentHealthStatus = "AgentFailure" )
type AgentsInitContainerResources ¶ added in v1.9.9
type AgentsInitContainerResources struct {
// RequestCPUm is the CPU request for the init container.
// it will be embedded in the init container as a resource request of the form "cpu: <value>m"
// default value is 300m
RequestCPUm int `json:"requestCPUm,omitempty" yaml:"requestCPUm,omitempty"`
// LimitCPUm is the CPU limit for the init container.
// it will be embedded in the init container as a resource limit of the form "cpu: <value>m"
// default value is 300m
LimitCPUm int `json:"limitCPUm,omitempty" yaml:"limitCPUm,omitempty"`
// RequestMemoryMiB is the memory request for the init container.
// it will be embedded in the init container as a resource request of the form "memory: <value>Mi"
// default value is 300Mi
RequestMemoryMiB int `json:"requestMemoryMiB,omitempty" yaml:"requestMemoryMiB,omitempty"`
// LimitMemoryMiB is the memory limit for the init container.
// it will be embedded in the init container as a resource limit of the form "memory: <value>Mi"
// default value is 300Mi
LimitMemoryMiB int `json:"limitMemoryMiB,omitempty" yaml:"limitMemoryMiB,omitempty"`
}
AgentsInitContainerResources defines resource limits and requests for the init container that is injected into user pods when using the k8s-init-container mount method.
type CollectorGatewayConfiguration ¶ added in v1.0.93
type CollectorGatewayConfiguration struct {
// MinReplicas is the number of replicas for the cluster gateway collector deployment.
// Also set the minReplicas for the HPA to this value.
MinReplicas int `json:"minReplicas,omitempty"`
// MaxReplicas set the maxReplicas for the HPA to this value.
MaxReplicas int `json:"maxReplicas,omitempty"`
// RequestMemoryMiB is the memory request for the cluster gateway collector deployment.
// it will be embedded in the deployment as a resource request of the form "memory: <value>Mi"
// default value is 500Mi
RequestMemoryMiB int `json:"requestMemoryMiB,omitempty"`
// LimitMemoryMiB is the memory limit for the cluster gateway collector deployment.
// it will be embedded in the deployment as a resource limit of the form "memory: <value>Mi"
// default value is 1.25 the memory request.
LimitMemoryMiB int `json:"limitMemoryMiB,omitempty"`
// RequestCPUm is the CPU request for the cluster gateway collector deployment.
// it will be embedded in the deployment as a resource request of the form "cpu: <value>m"
// default value is 500m
RequestCPUm int `json:"requestCPUm,omitempty"`
// LimitCPUm is the CPU limit for the cluster gateway collector deployment.
// it will be embedded in the deployment as a resource limit of the form "cpu: <value>m"
// default value is 1000m
LimitCPUm int `json:"limitCPUm,omitempty"`
// this parameter sets the "limit_mib" parameter in the memory limiter configuration for the collector gateway.
// it is the hard limit after which a force garbage collection will be performed.
// if not set, it will be 50Mi below the memory request.
MemoryLimiterLimitMiB int `json:"memoryLimiterLimitMiB,omitempty"`
// this parameter sets the "spike_limit_mib" parameter in the memory limiter configuration for the collector gateway.
// note that this is not the processor soft limit, but the diff in Mib between the hard limit and the soft limit.
// if not set, this will be set to 20% of the hard limit (so the soft limit will be 80% of the hard limit).
MemoryLimiterSpikeLimitMiB int `json:"memoryLimiterSpikeLimitMiB,omitempty"`
// the GOMEMLIMIT environment variable value for the collector gateway deployment.
// this is when go runtime will start garbage collection.
// if not specified, it will be set to 80% of the hard limit of the memory limiter.
GoMemLimitMib int `json:"goMemLimitMiB,omitempty"`
// ServiceGraph holds all configuration for the service graph connector.
ServiceGraph *ServiceGraphOptions `json:"serviceGraph,omitempty"`
// ClusterMetricsEnabled is a feature that allows you to enable the cluster metrics.
// https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/k8sclusterreceiver
// It is disabled by default and can be enabled by setting the enabled flag to true.
// This feature is only available when metrics destination is configured.
ClusterMetricsEnabled *bool `json:"clusterMetricsEnabled,omitempty"`
// for destinations that uses https for exporting data, this value can be used to set the value for the https proxy.
HttpsProxyAddress *string `json:"httpsProxyAddress,omitempty"`
// Node selector for the cluster gateway collector deployment.
// Use this to force the gateway to run only on nodes with specific labels.
// This is a hard requirement: the pod will be scheduled ONLY on nodes that match all labels.
// If no matching nodes exist, the pod will remain Pending.
NodeSelector *map[string]string `json:"nodeSelector,omitempty"`
// Deployment name for the cluster gateway collector deployment.
// If not set, the default is 'odigos-gateway'.
DeploymentName string `json:"deploymentName,omitempty"`
}
type CollectorNodeConfiguration ¶ added in v1.0.117
type CollectorNodeConfiguration struct {
// The port to use for exposing the collector's own metrics as a prometheus endpoint.
// This can be used to resolve conflicting ports when a collector is using the host network.
CollectorOwnMetricsPort int32 `json:"collectorOwnMetricsPort,omitempty"`
// RequestMemoryMiB is the memory request for the node collector daemonset.
// it will be embedded in the daemonset as a resource request of the form "memory: <value>Mi"
// default value is 250Mi
RequestMemoryMiB int `json:"requestMemoryMiB,omitempty"`
// LimitMemoryMiB is the memory limit for the node collector daemonset.
// it will be embedded in the daemonset as a resource limit of the form "memory: <value>Mi"
// default value is 2x the memory request.
LimitMemoryMiB int `json:"limitMemoryMiB,omitempty"`
// RequestCPUm is the CPU request for the node collector daemonset.
// it will be embedded in the daemonset as a resource request of the form "cpu: <value>m"
// default value is 250m
RequestCPUm int `json:"requestCPUm,omitempty"`
// LimitCPUm is the CPU limit for the node collector daemonset.
// it will be embedded in the daemonset as a resource limit of the form "cpu: <value>m"
// default value is 500m
LimitCPUm int `json:"limitCPUm,omitempty"`
// this parameter sets the "limit_mib" parameter in the memory limiter configuration for the node collector.
// it is the hard limit after which a force garbage collection will be performed.
// if not set, it will be 50Mi below the memory request.
MemoryLimiterLimitMiB int `json:"memoryLimiterLimitMiB,omitempty"`
// this parameter sets the "spike_limit_mib" parameter in the memory limiter configuration for the node collector.
// note that this is not the processor soft limit, but the diff in Mib between the hard limit and the soft limit.
// if not set, this will be set to 20% of the hard limit (so the soft limit will be 80% of the hard limit).
MemoryLimiterSpikeLimitMiB int `json:"memoryLimiterSpikeLimitMiB,omitempty"`
// the GOMEMLIMIT environment variable value for the node collector daemonset.
// this is when go runtime will start garbage collection.
// if not specified, it will be set to 80% of the hard limit of the memory limiter.
GoMemLimitMib int `json:"goMemLimitMiB,omitempty"`
// Deprecated - use OtlpExporterConfiguration instead.
// EnableDataCompression is a feature that allows you to enable data compression before sending data to the Gateway collector.
// It is disabled by default and can be enabled by setting the enabled flag to true.
EnableDataCompression *bool `json:"enableDataCompression,omitempty"`
// OtlpExporterConfiguration is the configuration for the OTLP exporter.
OtlpExporterConfiguration *OtlpExporterConfiguration `json:"otlpExporterConfiguration,omitempty"`
}
type ComponentLogLevels ¶ added in v1.21.0
type ComponentLogLevels struct {
Default OdigosLogLevel `json:"default,omitempty" yaml:"default,omitempty"`
Autoscaler OdigosLogLevel `json:"autoscaler,omitempty" yaml:"autoscaler,omitempty"`
Scheduler OdigosLogLevel `json:"scheduler,omitempty" yaml:"scheduler,omitempty"`
Instrumentor OdigosLogLevel `json:"instrumentor,omitempty" yaml:"instrumentor,omitempty"`
Odiglet OdigosLogLevel `json:"odiglet,omitempty" yaml:"odiglet,omitempty"`
Deviceplugin OdigosLogLevel `json:"deviceplugin,omitempty" yaml:"deviceplugin,omitempty"`
UI OdigosLogLevel `json:"ui,omitempty" yaml:"ui,omitempty"`
Collector OdigosLogLevel `json:"collector,omitempty" yaml:"collector,omitempty"`
}
+kubebuilder:object:generate=true ComponentLogLevels holds default and per-component log levels. Default is the global; per-field overrides for that component.
func (*ComponentLogLevels) DeepCopy ¶ added in v1.21.0
func (in *ComponentLogLevels) DeepCopy() *ComponentLogLevels
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentLogLevels.
func (*ComponentLogLevels) DeepCopyInto ¶ added in v1.21.0
func (in *ComponentLogLevels) DeepCopyInto(out *ComponentLogLevels)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ComponentLogLevels) Resolve ¶ added in v1.21.0
func (c *ComponentLogLevels) Resolve(component string) string
Resolve returns the effective log level for the component. Order: component-specific → Default → "info".
type DestinationType ¶
type DestinationType string
const ( AlibabaCloudDestinationType DestinationType = "alibabacloud" AppDynamicsDestinationType DestinationType = "appdynamics" AWSCloudWatchDestinationType DestinationType = "cloudwatch" AWSS3DestinationType DestinationType = "s3" AWSXRayDestinationType DestinationType = "xray" AxiomDestinationType DestinationType = "axiom" AzureBlobDestinationType DestinationType = "azureblob" AzureMonitorDestinationType DestinationType = "azuremonitor" BetterStackDestinationType DestinationType = "betterstack" BonreeDestinationType DestinationType = "bonree" CauselyDestinationType DestinationType = "causely" ChecklyDestinationType DestinationType = "checkly" ChronosphereDestinationType DestinationType = "chronosphere" ClickhouseDestinationType DestinationType = "clickhouse" CoralogixDestinationType DestinationType = "coralogix" Dash0DestinationType DestinationType = "dash0" DatadogDestinationType DestinationType = "datadog" DebugDestinationType DestinationType = "debug" DynamicDestinationType DestinationType = "dynamic" DynatraceDestinationType DestinationType = "dynatrace" ElasticAPMDestinationType DestinationType = "elasticapm" ElasticsearchDestinationType DestinationType = "elasticsearch" GCSDestinationType DestinationType = "gcs" GenericOTLPDestinationType DestinationType = "otlp" GoogleCloudDestinationType DestinationType = "googlecloud" GoogleCloudOTLPDestinationType DestinationType = "googlecloudotlp" GrafanaCloudLokiDestinationType DestinationType = "grafanacloudloki" GrafanaCloudPrometheusDestinationType DestinationType = "grafanacloudprometheus" GrafanaCloudTempoDestinationType DestinationType = "grafanacloudtempo" GreptimeDestinationType DestinationType = "greptime" GroundcoverDestinationType DestinationType = "groundcover" HoneycombDestinationType DestinationType = "honeycomb" HyperDxDestinationType DestinationType = "hyperdx" InstanaDestinationType DestinationType = "instana" JaegerDestinationType DestinationType = "jaeger" KafkaDestinationType DestinationType = "kafka" KloudMateDestinationType DestinationType = "kloudmate" Last9DestinationType DestinationType = "last9" LightstepDestinationType DestinationType = "lightstep" LogzioDestinationType DestinationType = "logzio" LokiDestinationType DestinationType = "loki" LumigoDestinationType DestinationType = "lumigo" MiddlewareDestinationType DestinationType = "middleware" MockDestinationType DestinationType = "mock" NewRelicDestinationType DestinationType = "newrelic" NopDestinationType DestinationType = "nop" ObserveDestinationType DestinationType = "observe" OneUptimeDestinationType DestinationType = "oneuptime" OpenObserveDestinationType DestinationType = "openobserve" OracleDestinationType DestinationType = "oracle" OtlpHttpDestinationType DestinationType = "otlphttp" PrometheusDestinationType DestinationType = "prometheus" QrynDestinationType DestinationType = "qryn" QrynOSSDestinationType DestinationType = "qryn-oss" QuickwitDestinationType DestinationType = "quickwit" SentryDestinationType DestinationType = "sentry" SeqDestinationType DestinationType = "seq" SignalFxDestinationType DestinationType = "signalfx" SignozDestinationType DestinationType = "signoz" SplunkDestinationType DestinationType = "splunk" SplunkOTLPDestinationType DestinationType = "splunkotlp" SumoLogicDestinationType DestinationType = "sumologic" TelemetryHubDestinationType DestinationType = "telemetryhub" TempoDestinationType DestinationType = "tempo" TingyunDestinationType DestinationType = "tingyun" TraceloopDestinationType DestinationType = "traceloop" UptraceDestinationType DestinationType = "uptrace" VictoriaMetricsCloudDestinationType DestinationType = "victoriametricscloud" )
type EnvInjectionDecision ¶ added in v1.6.0
type EnvInjectionDecision string
+kubebuilder:validation:Enum=loader;pod-manifest
type EnvInjectionMethod ¶ added in v1.0.186
type EnvInjectionMethod string
+kubebuilder:validation:Enum=loader;pod-manifest;loader-fallback-to-pod-manifest
const ( // EnvInjectionMethodLoader will try and add the LD_PRELOAD env var to the pod manifest // which will trigger the odigos loader. If LD_PRELOAD is already set, it will not be added and the pod won't be instrumented. LoaderEnvInjectionMethod EnvInjectionMethod = "loader" // EnvInjectionMethodPodManifest will add the runtime specific agent loading env vars (e.g PYTHONPATH, NODE_OPTIONS) to the pod manifest // taking into account the user defined values and appending if necessary. PodManifestEnvInjectionMethod EnvInjectionMethod = "pod-manifest" // EnvInjectionMethodLoaderFallbackToPodManifest will try and add the LD_PRELOAD env var to the pod manifest // which will trigger the odigos loader. If LD_PRELOAD is set with a user defined value, // it will fallback to adding the runtime specific agent loading env vars (e.g PYTHONPATH, NODE_OPTIONS) to the pod manifest // and taking into account the user defined values and appending if necessary. LoaderFallbackToPodManifestInjectionMethod EnvInjectionMethod = "loader-fallback-to-pod-manifest" )
type K8sHealthProbesSamplingConfiguration ¶ added in v1.18.0
type K8sHealthProbesSamplingConfiguration struct {
// If set to true, Odigos will automatically detect and sample out health probes.
// This is a global knob to enable health probes auto-detection and sampling completely for all sources in the cluster.
// Users that are uninterested in tracing health probes (or collect less of these traces) can set this to true.
Enabled *bool `json:"enabled,omitempty"`
// percentage % (0-100) of health probes to keep.
// if not set, it is defaulted to 0% -> all health probes will be sampled out.
// set to some low value (like 1%) to still keep some health-probes traces.
KeepPercentage *float64 `json:"keepPercentage,omitempty"`
}
Configuration for Odigos auto-kubelet-probes detection and sampling. Odigos can automatically pick up health probes from the k8s manifest, and treat them as "noisy endpoints" to be sampled out. Most users get little or no value from tracing health probes, and it is recommended to enable and use it. It will be used with head sampling where the agent support it. When tail sampling is enabled, the kubelet-health-probes will be sampled out by tail sampler.
type LanguageConfig ¶ added in v1.0.179
type LanguageConfig struct {
Enabled bool `json:"enabled"`
EnvVars map[string]string `json:"env,omitempty"`
}
Struct to represent configuration for each language
type MetricsSourceAgentJavaRuntimeMetricsConfiguration ¶ added in v1.15.0
type MetricsSourceAgentJavaRuntimeMetricsConfiguration struct {
// global enable/disable for all Java runtime metrics
Disabled *bool `json:"disabled,omitempty"`
// individual metric configurations
Metrics []MetricsSourceAgentRuntimeMetricConfiguration `json:"metrics,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceAgentJavaRuntimeMetricsConfiguration) DeepCopy ¶ added in v1.15.0
func (in *MetricsSourceAgentJavaRuntimeMetricsConfiguration) DeepCopy() *MetricsSourceAgentJavaRuntimeMetricsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceAgentJavaRuntimeMetricsConfiguration.
func (*MetricsSourceAgentJavaRuntimeMetricsConfiguration) DeepCopyInto ¶ added in v1.15.0
func (in *MetricsSourceAgentJavaRuntimeMetricsConfiguration) DeepCopyInto(out *MetricsSourceAgentJavaRuntimeMetricsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceAgentMetricsConfiguration ¶ added in v1.12.0
type MetricsSourceAgentMetricsConfiguration struct {
SpanMetrics *MetricsSourceAgentSpanMetricsConfiguration `json:"spanMetrics,omitempty"`
// configuration for runtime metrics from agents
RuntimeMetrics *MetricsSourceAgentRuntimeMetricsConfiguration `json:"runtimeMetrics,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceAgentMetricsConfiguration) DeepCopy ¶ added in v1.15.0
func (in *MetricsSourceAgentMetricsConfiguration) DeepCopy() *MetricsSourceAgentMetricsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceAgentMetricsConfiguration.
func (*MetricsSourceAgentMetricsConfiguration) DeepCopyInto ¶ added in v1.15.0
func (in *MetricsSourceAgentMetricsConfiguration) DeepCopyInto(out *MetricsSourceAgentMetricsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceAgentRuntimeMetricConfiguration ¶ added in v1.15.0
type MetricsSourceAgentRuntimeMetricConfiguration struct {
// name of the runtime metric (e.g., "jvm.class.loaded")
Name string `json:"name"`
// whether this specific metric is disabled
Disabled *bool `json:"disabled,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceAgentRuntimeMetricConfiguration) DeepCopy ¶ added in v1.15.0
func (in *MetricsSourceAgentRuntimeMetricConfiguration) DeepCopy() *MetricsSourceAgentRuntimeMetricConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceAgentRuntimeMetricConfiguration.
func (*MetricsSourceAgentRuntimeMetricConfiguration) DeepCopyInto ¶ added in v1.15.0
func (in *MetricsSourceAgentRuntimeMetricConfiguration) DeepCopyInto(out *MetricsSourceAgentRuntimeMetricConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceAgentRuntimeMetricsConfiguration ¶ added in v1.15.0
type MetricsSourceAgentRuntimeMetricsConfiguration struct {
// configuration for Java runtime metrics
Java *MetricsSourceAgentJavaRuntimeMetricsConfiguration `json:"java,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceAgentRuntimeMetricsConfiguration) DeepCopy ¶ added in v1.15.0
func (in *MetricsSourceAgentRuntimeMetricsConfiguration) DeepCopy() *MetricsSourceAgentRuntimeMetricsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceAgentRuntimeMetricsConfiguration.
func (*MetricsSourceAgentRuntimeMetricsConfiguration) DeepCopyInto ¶ added in v1.15.0
func (in *MetricsSourceAgentRuntimeMetricsConfiguration) DeepCopyInto(out *MetricsSourceAgentRuntimeMetricsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceAgentSpanMetricsConfiguration ¶ added in v1.12.0
type MetricsSourceAgentSpanMetricsConfiguration struct {
Enabled bool `json:"enabled"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceAgentSpanMetricsConfiguration) DeepCopy ¶ added in v1.15.0
func (in *MetricsSourceAgentSpanMetricsConfiguration) DeepCopy() *MetricsSourceAgentSpanMetricsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceAgentSpanMetricsConfiguration.
func (*MetricsSourceAgentSpanMetricsConfiguration) DeepCopyInto ¶ added in v1.15.0
func (in *MetricsSourceAgentSpanMetricsConfiguration) DeepCopyInto(out *MetricsSourceAgentSpanMetricsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceConfiguration ¶ added in v1.6.0
type MetricsSourceConfiguration struct {
// configuration for span metrics.
SpanMetrics *MetricsSourceSpanMetricsConfiguration `json:"spanMetrics,omitempty"`
// configuration for host metrics.
HostMetrics *MetricsSourceHostMetricsConfiguration `json:"hostMetrics,omitempty"`
// configuration for kubelet stats.
KubeletStats *MetricsSourceKubeletStatsConfiguration `json:"kubeletStats,omitempty"`
// configuration for odigos own metrics which are send to configured destinations.
OdigosOwnMetrics *MetricsSourceOdigosOwnMetricsConfiguration `json:"odigosOwnMetrics,omitempty"`
// configuration for agent span metrics.
AgentMetrics *MetricsSourceAgentMetricsConfiguration `json:"agentMetrics,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceConfiguration) DeepCopy ¶ added in v1.15.0
func (in *MetricsSourceConfiguration) DeepCopy() *MetricsSourceConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceConfiguration.
func (*MetricsSourceConfiguration) DeepCopyInto ¶ added in v1.15.0
func (in *MetricsSourceConfiguration) DeepCopyInto(out *MetricsSourceConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceHostMetricsConfiguration ¶ added in v1.6.0
type MetricsSourceHostMetricsConfiguration struct {
// control beahvior for when to collect host metrics.
// - true - host metrics will never be collected, even if destinations require it.
// - false / nil - host metrics will be collected if destinations require it (can be opt-in and out in destination level).
Disabled *bool `json:"disabled,omitempty"`
// time interval for scraping metrics (format: 15s, 1m etc). defaults: 10s.
Interval string `json:"interval,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceHostMetricsConfiguration) DeepCopy ¶ added in v1.6.0
func (in *MetricsSourceHostMetricsConfiguration) DeepCopy() *MetricsSourceHostMetricsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceHostMetricsConfiguration.
func (*MetricsSourceHostMetricsConfiguration) DeepCopyInto ¶ added in v1.6.0
func (in *MetricsSourceHostMetricsConfiguration) DeepCopyInto(out *MetricsSourceHostMetricsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceKubeletStatsConfiguration ¶ added in v1.6.0
type MetricsSourceKubeletStatsConfiguration struct {
// control beahvior for when to collect kubelet stats.
// - true - kubelet stats will never be collected, even if destinations require it.
// - false / nil - kubelet stats will be collected if destinations require it (can be opt-in and out in destination level).
Disabled *bool `json:"disabled,omitempty"`
// time interval for scraping metrics (format: 15s, 1m etc). defaults: 10s.
Interval string `json:"interval,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceKubeletStatsConfiguration) DeepCopy ¶ added in v1.6.0
func (in *MetricsSourceKubeletStatsConfiguration) DeepCopy() *MetricsSourceKubeletStatsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceKubeletStatsConfiguration.
func (*MetricsSourceKubeletStatsConfiguration) DeepCopyInto ¶ added in v1.6.0
func (in *MetricsSourceKubeletStatsConfiguration) DeepCopyInto(out *MetricsSourceKubeletStatsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceOdigosOwnMetricsConfiguration ¶ added in v1.12.0
type MetricsSourceOdigosOwnMetricsConfiguration struct {
// time interval for scraping odigos ownmetrics (format: 15s, 1m etc). defaults: 10s.
Interval string `json:"interval,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceOdigosOwnMetricsConfiguration) DeepCopy ¶ added in v1.15.0
func (in *MetricsSourceOdigosOwnMetricsConfiguration) DeepCopy() *MetricsSourceOdigosOwnMetricsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceOdigosOwnMetricsConfiguration.
func (*MetricsSourceOdigosOwnMetricsConfiguration) DeepCopyInto ¶ added in v1.15.0
func (in *MetricsSourceOdigosOwnMetricsConfiguration) DeepCopyInto(out *MetricsSourceOdigosOwnMetricsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricsSourceSpanMetricsConfiguration ¶ added in v1.6.0
type MetricsSourceSpanMetricsConfiguration struct {
// control beahvior for when to collect span metrics.
// - true - span metrics will never be collected, even if destinations require it.
// - false / nil - span metrics will be collected if destinations require it (can be opt-in and out in destination level).
Disabled *bool `json:"disabled,omitempty"`
// time interval for flusing metrics (format: 15s, 1m etc). defaults: 60s (one minute).
Interval string `json:"interval,omitempty"`
// used to remove metrics after time that they are not reporting.
// if an app only generates metrics once in a while, this parameter can tune
// how much gap is allowed.
// format: duration string (15s, 1m, etc).
// default is 5m (five minutes).
MetricsExpiration string `json:"metricsExpiration,omitempty"`
// additional dimensions to add to the span metrics.
// these are span attributes that you want to convert to metrics attributes during collection.
// the values of the attributes must have low cardinality.
// it can increase the number of series in the destination.
// some dimensions are already added by default, regardless of this setting.
AdditionalDimensions []string `json:"additionalDimensions,omitempty"`
// if true, histogram metrics will not be collected.
HistogramDisabled bool `json:"histogramDisabled,omitempty"`
// explicit buckets list for the histogram metrics.
// format is duration string (`1us`, `2ms`, `3s`, `4m`, `5h`, `6d` etc).
// if not set, the default buckets list will be used.
// the buckets must be in ascending order.
// example: ["100us", "1ms", "2ms", "6ms", "10ms", "100ms", "250ms"]
// Default value when unset:
// ["2ms", "4ms", "6ms", "8ms", "10ms", "50ms", "100ms", "200ms", "400ms", "800ms", "1s", "1400ms", "2s", "5s", "10s", "15s"]
// notice that more granular buckets are recommended for better precision but costs more since more metric series are produced.
ExplicitHistogramBuckets []string `json:"explicitHistogramBuckets,omitempty"`
// By default, Odigos does not include process labels - meaning
// metrics will be aggregated by container as the lowest level.
// This means that multiple processes running in the same container
// will be aggregated into the same time series.
// For more granular metrics, set this option to true.
// This will include process-specific labels on metrics,
// which will cause more unique time series to be created.
IncludedProcessInDimensions *bool `json:"includedProcessInDimensions,omitempty"`
// exclude resource attributes from being added to span metrics.
// for example - if you don't care about the process granularity,
// and prefer the metrics to be aggregated for all processes in a pod container,
// you can list all "process.*" attributes here to exclude them from being added to span metrics.
// any other resource attribute can be set, either for sanitation or to reduce dimenssions for generate metrics.
ExcludedResourceAttributes []string `json:"excludedResourceAttributes,omitempty"`
// Advanced configuration - avoid using unless you know what you are doing.
// This list controls which resource attributes are included in the metric stream identity.
// These attributes are used to determines how span metrics are grouped.
ResourceMetricsKeyAttributes []string `json:"resourceMetricsKeyAttributes,omitempty"`
}
+kubebuilder:object:generate=true
func (*MetricsSourceSpanMetricsConfiguration) DeepCopy ¶ added in v1.6.0
func (in *MetricsSourceSpanMetricsConfiguration) DeepCopy() *MetricsSourceSpanMetricsConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSourceSpanMetricsConfiguration.
func (*MetricsSourceSpanMetricsConfiguration) DeepCopyInto ¶ added in v1.6.0
func (in *MetricsSourceSpanMetricsConfiguration) DeepCopyInto(out *MetricsSourceSpanMetricsConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MountMethod ¶ added in v1.0.154
type MountMethod string
+kubebuilder:validation:Enum=k8s-virtual-device;k8s-host-path;k8s-init-container;k8s-csi-driver
const ( K8sVirtualDeviceMountMethod MountMethod = "k8s-virtual-device" K8sHostPathMountMethod MountMethod = "k8s-host-path" K8sInitContainerMountMethod MountMethod = "k8s-init-container" K8sCsiDriverMountMethod MountMethod = "k8s-csi-driver" )
type ObservabilitySignal ¶
type ObservabilitySignal string
+kubebuilder:validation:Enum=LOGS;TRACES;METRICS
const ( LogsObservabilitySignal ObservabilitySignal = "LOGS" TracesObservabilitySignal ObservabilitySignal = "TRACES" MetricsObservabilitySignal ObservabilitySignal = "METRICS" )
type OdigosConfiguration ¶ added in v1.0.93
type OdigosConfiguration struct {
ConfigVersion int `json:"configVersion" yaml:"configVersion"`
TelemetryEnabled bool `json:"telemetryEnabled,omitempty" yaml:"telemetryEnabled"`
OpenshiftEnabled bool `json:"openshiftEnabled,omitempty" yaml:"openshiftEnabled"`
IgnoredNamespaces []string `json:"ignoredNamespaces,omitempty" yaml:"ignoredNamespaces"`
IgnoredContainers []string `json:"ignoredContainers,omitempty" yaml:"ignoredContainers"`
IgnoreOdigosNamespace *bool `json:"ignoreOdigosNamespace,omitempty" yaml:"ignoreOdigosNamespace"`
Psp bool `json:"psp,omitempty" yaml:"psp"`
ImagePrefix string `json:"imagePrefix,omitempty" yaml:"imagePrefix"`
SkipWebhookIssuerCreation bool `json:"skipWebhookIssuerCreation,omitempty" yaml:"skipWebhookIssuerCreation"`
CollectorGateway *CollectorGatewayConfiguration `json:"collectorGateway,omitempty" yaml:"collectorGateway"`
CollectorNode *CollectorNodeConfiguration `json:"collectorNode,omitempty" yaml:"collectorNode"`
Profiles []ProfileName `json:"profiles,omitempty" yaml:"profiles"`
AllowConcurrentAgents *bool `json:"allowConcurrentAgents,omitempty" yaml:"allowConcurrentAgents"`
UiMode UiMode `json:"uiMode,omitempty" yaml:"uiMode"`
UiPaginationLimit int `json:"uiPaginationLimit,omitempty" yaml:"uiPaginationLimit"`
UiRemoteUrl string `json:"uiRemoteUrl,omitempty" yaml:"uiRemoteUrl"`
CentralBackendURL string `json:"centralBackendURL,omitempty" yaml:"centralBackendURL"`
ClusterName string `json:"clusterName,omitempty" yaml:"clusterName"`
MountMethod *MountMethod `json:"mountMethod,omitempty" yaml:"mountMethod"`
//nolint:lll // CustomContainerRuntimeSocketPath line is long due to struct tag requirements
CustomContainerRuntimeSocketPath string `json:"customContainerRuntimeSocketPath,omitempty" yaml:"customContainerRuntimeSocketPath"`
AgentEnvVarsInjectionMethod *EnvInjectionMethod `json:"agentEnvVarsInjectionMethod,omitempty" yaml:"agentEnvVarsInjectionMethod"`
UserInstrumentationEnvs *UserInstrumentationEnvs `json:"userInstrumentationEnvs,omitempty" yaml:"userInstrumentationEnvs"`
NodeSelector map[string]string `json:"nodeSelector,omitempty" yaml:"nodeSelector"`
KarpenterEnabled *bool `json:"karpenterEnabled,omitempty" yaml:"karpenterEnabled"`
Rollout *RolloutConfiguration `json:"rollout,omitempty" yaml:"rollout"`
RollbackDisabled *bool `json:"rollbackDisabled,omitempty" yaml:"rollbackDisabled"`
RollbackGraceTime string `json:"rollbackGraceTime,omitempty" yaml:"rollbackGraceTime"`
RollbackStabilityWindow string `json:"rollbackStabilityWindow,omitempty" yaml:"rollbackStabilityWindow"`
Oidc *OidcConfiguration `json:"oidc,omitempty" yaml:"oidc"`
OdigletHealthProbeBindPort int `json:"odigletHealthProbeBindPort,omitempty" yaml:"odigletHealthProbeBindPort"`
GoAutoOffsetsCron string `json:"goAutoOffsetsCron,omitempty" yaml:"goAutoOffsetsCron"`
GoAutoOffsetsMode string `json:"goAutoOffsetsMode,omitempty" yaml:"goAutoOffsetsMode"`
ClickhouseJsonTypeEnabledProperty *bool `json:"clickhouseJsonTypeEnabled,omitempty"`
CheckDeviceHealthBeforeInjection *bool `json:"checkDeviceHealthBeforeInjection,omitempty"`
ResourceSizePreset string `json:"resourceSizePreset,omitempty" yaml:"resourceSizePreset"`
WaspEnabled *bool `json:"waspEnabled,omitempty" yaml:"waspEnabled"`
MetricsSources *MetricsSourceConfiguration `json:"metricsSources,omitempty" yaml:"metricsSources"`
AgentsInitContainerResources *AgentsInitContainerResources `json:"agentsInitContainerResources,omitempty" yaml:"agentsInitContainerResources"`
// traceIdSuffix when set, instruct odigos to use the "timedwall" id generator
// for generating trace ids.
// the below value should be a single byte hex value (for example "A3").
// this value is injected into each trace id as the 8th byte
// to identify the source of the generated trace.
TraceIdSuffix string `json:"traceIdSuffix,omitempty" yaml:"traceIdSuffix"`
AllowedTestConnectionHosts []string `json:"allowedTestConnectionHosts,omitempty" yaml:"allowedTestConnectionHosts"`
// configuration for odigos own metrics store in the cluster.
OdigosOwnTelemetryStore *OdigosOwnTelemetryConfiguration `json:"odigosOwnTelemetryStore,omitempty" yaml:"odigosOwnTelemetryStore"`
// ImagePullSecrets to use for collectors and init container
ImagePullSecrets []string `json:"imagePullSecrets,omitempty" yaml:"imagePullSecrets"`
// global configurations for sampling.
Sampling *SamplingConfiguration `json:"sampling,omitempty" yaml:"sampling"`
// ComponentLogLevels: default = global level (e.g. from Helm); per-component overrides (e.g. from UI).
ComponentLogLevels *ComponentLogLevels `json:"componentLogLevels,omitempty" yaml:"componentLogLevels,omitempty"`
}
OdigosConfiguration defines the desired state of OdigosConfiguration
type OdigosInstrumentationDevice ¶
type OdigosInstrumentationDevice string
type OdigosLogLevel ¶ added in v1.21.0
type OdigosLogLevel string
OdigosLogLevel is the log level for components (error, warn, info, debug).
const ( LogLevelError OdigosLogLevel = "error" LogLevelWarn OdigosLogLevel = "warn" LogLevelInfo OdigosLogLevel = "info" LogLevelDebug OdigosLogLevel = "debug" )
type OdigosOwnTelemetryConfiguration ¶ added in v1.12.0
type OdigosOwnTelemetryConfiguration struct {
// if set to true, odigos will not deploy victoriametrics as own metrics store and will not send own metrics to it.
MetricsStoreDisabled *bool `json:"metricsStoreDisabled,omitempty"`
}
type OdigosTier ¶
type OdigosTier string
const ( // community is the opensource tier of odigos CommunityOdigosTier OdigosTier = "community" // cloud is the SaaS offering of odigos CloudOdigosTier OdigosTier = "cloud" // on premises comes with enterprise features and does not require // network connectivity to odigos cloud OnPremOdigosTier OdigosTier = "onprem" )
type OidcConfiguration ¶ added in v1.0.201
type OidcConfiguration struct {
// The URL of the OIDC tenant (e.g. "https://abc-123.okta.com").
TenantUrl string `json:"tenantUrl,omitempty"`
// The client ID of the OIDC application.
ClientId string `json:"clientId,omitempty"`
// The client secret of the OIDC application.
ClientSecret string `json:"clientSecret,omitempty"`
}
type OtelSdk ¶
type OtelSdk struct {
SdkType OtelSdkType `json:"sdkType"`
SdkTier OtelSdkTier `json:"sdkTier"`
}
type OtelSdkTier ¶
type OtelSdkTier string
const ( CommunityOtelSdkTier OtelSdkTier = "community" EnterpriseOtelSdkTier OtelSdkTier = "enterprise" )
type OtelSdkType ¶
type OtelSdkType string
Odigos supports two types of OpenTelemetry SDKs: native and ebpf.
const ( // The native SDK is implemented in the language of the application and // is integrated into the application code via runtime support (e.g. Java agent). NativeOtelSdkType OtelSdkType = "native" // EbpfOtelSdkType SDK can record telemetry data from the application with eBPF // code injected into the application process. EbpfOtelSdkType OtelSdkType = "ebpf" )
type OtlpExporterConfiguration ¶ added in v1.9.0
type OtlpExporterConfiguration struct {
EnableDataCompression *bool `json:"enableDataCompression,omitempty"`
Timeout string `json:"timeout,omitempty"`
RetryOnFailure *RetryOnFailure `json:"retryOnFailure,omitempty"`
}
+kubebuilder:object:generate=true
func (*OtlpExporterConfiguration) DeepCopy ¶ added in v1.9.0
func (in *OtlpExporterConfiguration) DeepCopy() *OtlpExporterConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OtlpExporterConfiguration.
func (*OtlpExporterConfiguration) DeepCopyInto ¶ added in v1.9.0
func (in *OtlpExporterConfiguration) DeepCopyInto(out *OtlpExporterConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ProfileName ¶ added in v1.0.105
type ProfileName string
type ProgramLanguageDetails ¶ added in v1.0.93
type ProgramLanguageDetails struct {
Language ProgrammingLanguage
RuntimeVersion string
}
type ProgrammingLanguage ¶
type ProgrammingLanguage string
+kubebuilder:validation:Enum=java;python;go;dotnet;javascript;php;ruby;rust;cplusplus;mysql;nginx;redis;postgres;unknown;ignored
const ( JavaProgrammingLanguage ProgrammingLanguage = "java" PythonProgrammingLanguage ProgrammingLanguage = "python" GoProgrammingLanguage ProgrammingLanguage = "go" DotNetProgrammingLanguage ProgrammingLanguage = "dotnet" JavascriptProgrammingLanguage ProgrammingLanguage = "javascript" PhpProgrammingLanguage ProgrammingLanguage = "php" RubyProgrammingLanguage ProgrammingLanguage = "ruby" RustProgrammingLanguage ProgrammingLanguage = "rust" CPlusPlusProgrammingLanguage ProgrammingLanguage = "cplusplus" CSharpProgrammingLanguage ProgrammingLanguage = "csharp" SwiftProgrammingLanguage ProgrammingLanguage = "swift" ElixirProgrammingLanguage ProgrammingLanguage = "elixir" // This is an experimental feature, It is not a language // but in order to avoid huge refactoring we are adding it here for now MySQLProgrammingLanguage ProgrammingLanguage = "mysql" NginxProgrammingLanguage ProgrammingLanguage = "nginx" RedisProgrammingLanguage ProgrammingLanguage = "redis" PostgresProgrammingLanguage ProgrammingLanguage = "postgres" // Used when the language detection is not successful for all the available inspectors UnknownProgrammingLanguage ProgrammingLanguage = "unknown" )
type RetryOnFailure ¶ added in v1.9.0
type RetryOnFailure struct {
Enabled *bool `json:"enabled,omitempty"`
InitialInterval string `json:"initialInterval,omitempty"`
MaxInterval string `json:"maxInterval,omitempty"`
MaxElapsedTime string `json:"maxElapsedTime,omitempty"`
}
+kubebuilder:object:generate=true
func (*RetryOnFailure) DeepCopy ¶ added in v1.9.0
func (in *RetryOnFailure) DeepCopy() *RetryOnFailure
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryOnFailure.
func (*RetryOnFailure) DeepCopyInto ¶ added in v1.9.0
func (in *RetryOnFailure) DeepCopyInto(out *RetryOnFailure)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RolloutConfiguration ¶ added in v1.0.197
type RolloutConfiguration struct {
// When set to true, Odigos will never trigger a rollout for workloads when instrumenting or uninstrumenting.
// It is expected that users will manually trigger a rollout to apply the changes when needed,
// but it gives them the option to control the process.
// Any new pods that are created after agent is enabled or disabled (via manual rollout or auto scaling)
// will be have agent injection regardless of this setting.
// This setting does not control manual rollouts executed from the UI or via the API.
// Any additional configuration regarding rollouts and rollbacks are ignored when this is set to true.
AutomaticRolloutDisabled *bool `json:"automaticRolloutDisabled"`
// ConcurrentRollouts is the maximum number of concurrent rollouts allowed. 0 is unlimited, disabling the limit.
MaxConcurrentRollouts int `json:"maxConcurrentRollouts"`
}
type SamplingConfiguration ¶ added in v1.18.0
type SamplingConfiguration struct {
// Set to true to enable dry run mode for sampling.
// When enabled, Odigos runs the sampling logic but does not drop any traces; metrics are still
// calculated so you can evaluate rule effectiveness before committing to changes that might lose data.
// Each span gets an attribute 'odigos.sampling.dry_run.kept' indicating whether it would be kept or dropped once dry run is off.
// With spanSamplingAttributes enabled, dry-run decisions are also visible as span attributes on each span.
DryRun *bool `json:"dryRun,omitempty"`
// Controls whether spans are enhanced with sampling attributes (e.g. category and decisions).
// These attributes add context when viewing traces and inspecting costs, so you can understand
// how sampling decisions were made for an individual span and apply changes to fine-tune rules.
// When dry run is enabled, each span includes the sampling decision (kept or dropped) as it would apply once dry run is disabled.
SpanSamplingAttributes *sampling.SpanSamplingAttributesConfiguration `json:"spanSamplingAttributes,omitempty"`
// Configuration for tail sampling.
TailSampling *sampling.TailSamplingConfiguration `json:"tailSampling,omitempty"`
// Configuration for Odigos auto-kubelet-probes detection and sampling.
K8sHealthProbesSampling *K8sHealthProbesSamplingConfiguration `json:"k8sHealthProbesSampling,omitempty"`
}
type ServiceGraphOptions ¶ added in v1.22.0
type ServiceGraphOptions struct {
// Disabled controls whether the service graph connector is active.
// Defaults to false (enabled). When disabled, the topology map in the UI will be unavailable
// and load-balancing between node collectors and the gateway is also removed.
Disabled *bool `json:"disabled,omitempty"`
// ExtraDimensions are additional attribute names to include as dimensions in the
// service graph metrics, on top of the default service.name dimension.
// Both span-level and resource-level attributes are supported.
ExtraDimensions []string `json:"extraDimensions,omitempty"`
// VirtualNodePeerAttributes is an ordered list of span-level attributes used to identify
// uninstrumented (virtual) nodes (e.g. Redis, Kafka). The connector picks the first
// attribute that has a value on the CLIENT span.
// When empty, the connector uses its built-in defaults: [peer.service, db.name, db.system].
// Only span-level attributes are supported here; resource attributes are silently ignored.
VirtualNodePeerAttributes []string `json:"virtualNodePeerAttributes,omitempty"`
}
ServiceGraphOptions holds all configuration for the OpenTelemetry service graph connector. It is serialized as a nested "serviceGraph" block inside CollectorGatewayConfiguration. CollectorsGroupSpec (CRD) still stores these as flat fields to preserve CRD backward compatibility. At the function-signature level it is also used directly in GatewayConfigOptions and collector group construction.
type SpanKind ¶
type SpanKind string
SpanKind is already defined in opentelemetry-go as int. this value can go into the CRD in which case it will be string for user convenience. +kubebuilder:validation:Enum=client;server;producer;consumer;internal
func ConvertSpanKindToString ¶
type UiMode ¶ added in v1.0.144
type UiMode string
"normal" is deprecated. Kept here in the enum for backwards compatibility with operator CRD. +kubebuilder:validation:Enum=default;readonly;normal
type UserInstrumentationEnvs ¶ added in v1.0.179
type UserInstrumentationEnvs struct {
Languages map[ProgrammingLanguage]LanguageConfig `json:"languages,omitempty"`
}