Package v1alpha1 is the v1alpha1 version of the API.
Resource Types
- Action
- CollectorsGroup
- Destination
- InstrumentationConfig
- InstrumentationInstance
- InstrumentationRule
- Processor
- Sampling
- Source
Action
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | Action |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | ActionSpec | No description provided. |
status | ActionStatus | No description provided. |
CollectorsGroup
CollectorsGroup is the Schema for the collectors API
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | CollectorsGroup |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | CollectorsGroupSpec | No description provided. |
status | CollectorsGroupStatus | No description provided. |
Destination
Destination is the Schema for the destinations API
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | Destination |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | DestinationSpec | No description provided. |
status | DestinationStatus | No description provided. |
InstrumentationConfig
InstrumentationConfig is the Schema for the instrumentationconfig API
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | InstrumentationConfig |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | InstrumentationConfigSpec | No description provided. |
status | InstrumentationConfigStatus | No description provided. |
InstrumentationInstance
InstrumentationInstance is the Schema for the InstrumentationInstances API
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | InstrumentationInstance |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | InstrumentationInstanceSpec | No description provided. |
status | InstrumentationInstanceStatus | No description provided. |
InstrumentationRule
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | InstrumentationRule |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | InstrumentationRuleSpec | No description provided. |
status | InstrumentationRuleStatus | No description provided. |
Processor
Processor is the Schema for an Opentelemetry Collector Processor that is added to Odigos pipeline
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | Processor |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | ProcessorSpec | No description provided. |
status | ProcessorStatus | No description provided. |
Sampling
Sampling is the Schema for the sampling rules API.
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | Sampling |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | SamplingSpec | No description provided. |
status | SamplingStatus | No description provided. |
Source
Source configures an application for auto-instrumentation.
| Field | Type | Description |
|---|---|---|
apiVersion | string | odigos.io/v1alpha1 |
kind | string | Source |
metadata | meta/v1.ObjectMeta | No description provided.
Refer to the Kubernetes API documentation for the fields of the metadata field. |
spec | SourceSpec | No description provided. |
status | SourceStatus | No description provided. |
ActionSpec
Appears in:
| Field | Type | Description |
|---|---|---|
actionName | string | Allows you to attach a meaningful name to the action for convenience. Odigos does not use or assume any meaning from this field. |
notes | string | A free-form text field that allows you to attach notes regarding the action for convenience. For example: why it was added. Odigos does not use or assume any meaning from this field. |
disabled | bool | A boolean field allowing to temporarily disable the action, but keep it around for future use |
signals | []common.ObservabilitySignal | Which signals should this action operate on. |
addClusterInfo | actions/v1alpha1.AddClusterInfoConfig | AddClusterInfo is the config for the AddClusterInfo Action. |
deleteAttribute | actions/v1alpha1.DeleteAttributeConfig | DeleteAttribute is the config for the DeleteAttribute Action. |
renameAttribute | actions/v1alpha1.RenameAttributeConfig | RenameAttribute is the config for the RenameAttribute Action. |
piiMasking | actions/v1alpha1.PiiMaskingConfig | PiiMasking is the config for the PiiMasking Action. |
k8sAttributes | actions/v1alpha1.K8sAttributesConfig | K8sAttributes is the config for the K8sAttributes Action. |
samplers | actions/v1alpha1.SamplersConfig | Samplers is the config for the Samplers Action. |
urlTemplatization | actions.URLTemplatizationConfig | URLTemplatization is the config for the URLTemplatization Action. |
spanRenamer | actions.SpanRenamerConfig | SpanRenamer is the config for the SpanRenamer Action. |
ActionStatus
Appears in:
| Field | Type | Description |
|---|---|---|
conditions | []meta/v1.Condition | Represents the observations of a action’s current state. Known .status.conditions.type are: “Available”, “Progressing” |
AgentEnabledReason
(Alias of string)
Appears in:
AgentLogsConfig
Appears in:
all “logs” related configuration for an agent running on any process in a specific container. The presence of this struct (as opposed to nil) means that logs collection is enabled for this container.
AgentMetricsConfig
Appears in:
all “metrics” related configuration for an agent running on any process in a specific container. The presence of this struct (as opposed to nil) means that metrics collection is enabled for this container.
| Field | Type | Description |
|---|---|---|
spanMetrics | AgentSpanMetricsConfig | if not nil, it means agent should report span metrics, calculated directly in the agent. this is most accurate as it includes any sampled spans, and is not affected if spans are dropped anywhere in the pipeline. |
runtimeMetrics | common.MetricsSourceAgentRuntimeMetricsConfiguration | if not nil, it means agent should report runtime metrics, such as JVM metrics for Java applications. these metrics provide insights into the runtime environment performance. |
AgentSpanMetricsConfig
Appears in:
| Field | Type | Description |
|---|---|---|
dimensions | []string | additional dimensions to add for the span metrics.
for example, if you add |
intervalMs | int | time interval in miliseconds for flushing the span metrics. defaults: 60000 (60 seconds, 1 minute) |
histogramBucketsMs | []int | explicit buckets list for the histogram metrics in ms |
AgentTracesConfig
Appears in:
all “traces” related configuration for an agent running on any process in a specific container. The presence of this struct (as opposed to nil) means that trace collection is enabled for this container.
| Field | Type | Description |
|---|---|---|
idGenerator | IdGeneratorConfig | id generator configuration for the traces. if not specified, the default random id generator will be used. |
urlTemplatization | UrlTemplatizationConfig | A list of URL templatization configurations to be applied to the traces. |
headersCollection | HeadersCollectionConfig | Configuration for headers collection. If not specified, no headers will be collected. |
headSampling | HeadSamplingConfig | HeadSamplingConfig is a set sampling rules. This config currently only applies to root spans. In the Future we might add another level of configuration base on the parent span (ParentBased Sampling) |
spanRenamer | SpanRenamerConfig | Configuration for span renamer. |
AgentsTelemetrySettings
Appears in:
Attribute
Appears in:
Attribute is a key-value pair that describes a component or instrumentation
| Field | Type | Description |
|---|---|---|
key | string | No description provided. |
value | string | No description provided. |
AttributeCondition
Appears in:
’Operand’ represents the attributes and values that an operator acts upon in an expression
| Field | Type | Description |
|---|---|---|
key | string | attribute key (e.g. “url.path”) |
val | string | currently only string values are supported. |
operator | Operator | The operator to use to compare the attribute value. |
AttributesAndSamplerRule
Appears in:
AttributesAndSamplerRule is a set of AttributeCondition that are ANDed together. If all attribute conditions evaluate to true, the AND sampler evaluates to true, and the fraction is used to determine the sampling decision. If any of the attribute compare samplers evaluate to false, the fraction is not used and the rule is skipped. An “empty” AttributesAndSamplerRule with no attribute conditions is considered to always evaluate to true. and the fraction is used to determine the sampling decision. This entity is refered to a rule in Odigos terminology for head-sampling.
| Field | Type | Description |
|---|---|---|
attributeConditions | []AttributeCondition | No description provided. |
fraction | float64 | The fraction of spans to sample, in the range [0, 1]. If the fraction is 0, no spans are sampled. If the fraction is 1, all spans are sampled. |
CollectorsGroupMetricsCollectionSettings
Appears in:
| Field | Type | Description |
|---|---|---|
spanMetrics | common.MetricsSourceSpanMetricsConfiguration | if not nil for node collector, it means span to metrics is enabled, and the node collector should set it up in the pipeline. span to metrics is the ability to calculate metrics like http requests/errors/duration etc from the individual spans recorded for relevant operation. |
hostMetrics | common.MetricsSourceHostMetricsConfiguration | if not nil for node collector, it means host metrics is enabled, and the opentelemetry collector “hostmetrics” receiver should be included in the pipeline. host metrics are metrics that are collected from the host node, such as cpu, memory, disk, network, etc. |
kubeletStats | common.MetricsSourceKubeletStatsConfiguration | if not nil for node collector, it means kubelet stats is enabled, and the opentelemetry collector “kubeletstats” receiver should be included in the pipeline. kubelet stats are metrics that are collected from the kubelet point of view, such as cpu, memory, disk, network, per pod, node and more. |
serviceGraph | ServiceGraphSettings | if not nil for cluster collector, it means service graph is enabled, and metrics for the “connectivity” between services should be calculated to be exported to metrics destinations. |
odigosOwnMetrics | OdigosOwnMetricsSettings | if not nil for node collector, it means that some metric destinations are intresseted in collecting metrics about: odigos, the collected data, and the pipeline itself. this allows for users to monitor and operate odigos within their existing system, create dashboards, alerting, and more. |
agentsTelemetry | AgentsTelemetrySettings | this part controls the metrics which are received from agents in the otlp receiver. it is generally enabled when we want to record metrics, and listed here for completeness. any “otlp receiver” specific settings can go here |
CollectorsGroupResourcesSettings
Appears in:
The raw values to control the collectors group resources and behavior. any defaulting, validations and calculations should be done in the controllers that create this CR. Values will be used as is without any further processing.
| Field | Type | Description |
|---|---|---|
minReplicas | int | Minumum + Maximum number of replicas for the collector - these relevant only for gateway. |
maxReplicas | int | No description provided. |
memoryRequestMiB | int | MemoryRequestMiB is the memory resource request to be used on the pod template.
it will be embedded in the as a resource request of the form |
memoryLimitMiB | int | This option sets the limit on the memory usage of the collector. since the memory limiter mechanism is heuristic, and operates on fixed intervals, while it cannot fully prevent OOMs, it can help in reducing the chances of OOMs in edge cases. the settings should prevent the collector from exceeding the memory request, so one can set this to the same value as the memory request or higher to allow for some buffer for bursts. |
cpuRequestMillicores | int | CPU resource request to be used on the pod template.
it will be embedded in the as a resource request of the form |
cpuLimitMillicores | int | CPU resource limit to be used on the pod template.
it will be embedded in the as a resource limit of the form |
memoryLimiterLimitMiB | int | this parameter sets the “limit_mib” parameter in the memory limiter configuration for the collector. it is the hard limit after which a force garbage collection will be performed. this value will end up comparing against the go runtime reported heap Alloc value. According to the memory limiter docs: |
memoryLimiterSpikeLimitMiB | int | this parameter sets the “spike_limit_mib” parameter in the memory limiter configuration for the collector memory limiter. note that this is not the processor soft limit itself, but the diff in Mib between the hard limit and the soft limit. according to the memory limiter docs, it is recommended to set this to 20% of the hard limit. changing this value allows trade-offs between memory usage and resiliency to bursts. |
gomemlimitMiB | int | the GOMEMLIMIT environment variable value for the collector pod. this is when go runtime will start garbage collection. it is recommended to be set to 80% of the hard limit of the memory limiter. |
CollectorsGroupRole
(Alias of string)
Appears in:
CollectorsGroupSpec
Appears in:
CollectorsGroupSpec defines the desired state of Collector
| Field | Type | Description |
|---|---|---|
role | CollectorsGroupRole | No description provided. |
collectorOwnMetricsPort | int32 | 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. |
k8sNodeLogsDirectory | string | Additional directory to mount in the node collector pod for logs. This is used to allow the collector to read logs from the host node if /var/log is symlinked to another directory. |
resourcesSettings | CollectorsGroupResourcesSettings | Resources [memory/cpu] settings for the collectors group. these settings are used to protect the collectors instances from:
|
serviceGraphDisabled | bool | ServiceGraphEnabled is a feature that allows you to visualize the service graph of your application. It is enabled by default and can be disabled by setting the enabled flag to false. |
enableDataCompression | bool | 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. |
otlpExporterConfiguration | common.OtlpExporterConfiguration | OtlpExporterConfiguration is the configuration for the OTLP exporter from node collector to cluster gateway collector. |
clusterMetricsEnabled | bool | ClusterMetricsEnabled is a feature that allows you to enable the cluster metrics. It is disabled by default and can be enabled by setting the enabled flag to true. |
httpsProxyAddress | string | for destinations that uses https for exporting data, this value can be used to set the address for an https proxy. when unset or empty, no proxy will be used. |
metrics | CollectorsGroupMetricsCollectionSettings | configuration for metrics handling in this collectors group if metric collection is disabled, this will be nil the content is populated only if relevant to this collectors group it’s being calculated based on active destinations and their settings, and global settings provided in the odigos configuration or instrumentation rules. it allows for the collector group reconciler to be simplified, and for visibility into the aggregated settings being used to derive configurations deployments and rollouts. |
nodeSelector | map[string]string | Node selector for the collectors group 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. |
deploymentName | string | Deployment name for the collectors group deployment. Only relevant for cluster gateway collector. |
CollectorsGroupStatus
Appears in:
CollectorsGroupStatus defines the observed state of Collector
| Field | Type | Description |
|---|---|---|
ready | bool | No description provided. |
receiverSignals | []common.ObservabilitySignal | Receiver Signals are the signals (trace, metrics, logs) that the collector has setup an otlp receiver for, thus it can accept data from an upstream component. this is used to determine if a workload should export each signal or not. this list is calculated based on the odigos destinations that were configured |
conditions | []meta/v1.Condition | Represents the observations of a collectorsroup’s current state. Known .status.conditions.type are: “Available”, “Progressing” |
ContainerAgentConfig
Appears in:
ContainerAgentConfig is a configuration for a specific container in a workload.
| Field | Type | Description |
|---|---|---|
containerName | string | The name of the container to which this configuration applies. |
agentEnabled | bool | boolean flag to indicate if the agent should be enabled for this container. |
agentEnabledReason | AgentEnabledReason | An enum reason for the agent injection decision. |
agentEnabledMessage | string | free text message to provide more information about the instrumentation decision. can be left empty if reason is self-explanatory. |
podManifestInjectionOptional | bool | set to true if the agent used in this container can be injected without pod manifest changes. |
otelDistroName | string | The name of the otel distribution to use for this container. if the name is empty, this container should not be instrumented. |
distroParams | map[string]string | Additional parameters to the distro that controls how it’s being applied. Keys are parameter names (like “libc”) and values are the value to use for that parameter (glibc / musl) |
envInjectionMethod | common.EnvInjectionDecision | What method to use for injecting the agent environment variables (just those covered by the loader (PYTHONPATH, JAVA_TOOLS_OPTIONS, NODE_OPTIONS)) Can be either “loader” or “pod-manifest”. The injection should still check the actual values in the container manifest before injecting. Nil means that this container should not have env injection (agent should not be injected, or distro does not specify “loader” injection envs). |
traces | AgentTracesConfig | Each enabled signal must be set with a non-nil value (even if the config content is empty). nil means that the signal is disabled and should not be instrumented/collected by the agent. |
metrics | AgentMetricsConfig | No description provided. |
logs | AgentLogsConfig | No description provided. |
ContainerCollectorConfig
Appears in:
ContainerCollectorConfig is a configuration for a specific container in a workload.
| Field | Type | Description |
|---|---|---|
containerName | string | The name of the container to which this configuration applies. |
samplingCollectorConfig | SamplingCollectorConfig | The sampling configuration that relevant for the collector (tailsampling). |
urlTemplatization | UrlTemplatizationConfig | No description provided. |
ContainerOverride
Appears in:
| Field | Type | Description |
|---|---|---|
containerName | string | The name of the container to override. |
runtimeInfo | RuntimeDetailsByContainer | RuntimeInfo to use for agent enabling. If set for a container, the automatic detection will not be used for this container, and the distro to use will be calculated based on this value. |
otelDistroName | string | select one specific otel distro to use for this container. the selected distro must match the programming language and any constraints of the distro. if the programmin language is incorrect, the runtime info can be overridden to match |
CostReductionRule
Appears in:
| Field | Type | Description |
|---|---|---|
sourceScopes | []SourcesScope | limit this rule to specific sources (by name, namespace, language, etc.) an empty list will match any source. if multiple items are set, the operation match if any one matches this relates to the “ResourceAttributes” part of a span. |
operation | TailSamplingOperationMatcher | limit this rule to specific operations. for example: specific endpoint or kafka topic. this field is optional, and if not set, the rule will be applied to all operations. |
percentageAtMost | float64 | sampling percentage for cost reduction. this field is required. the final sampling percentage for traces that match this rule will be the highest possible, but at most this value. |
notes | string | optional free-form text field that allows you to attach notes for future context and maintenance. users can write why this rule was added, observations, document considerations, etc. |
DestinationMetricsSettings
Appears in:
| Field | Type | Description |
|---|---|---|
spanMetricsEnabled | bool | following settings enables/disables specific metric sources true - collect and send this metric source false - do not collect and send this metric source nil - use the default setting (from destination manifest, or cluster global setting) |
hostMetricsEnabled | bool | No description provided. |
kubeletStatsEnabled | bool | No description provided. |
serviceGraphEnabled | bool | No description provided. |
odigosOwnMetricsEnabled | bool | No description provided. |
agentsTelemetryEnabled | bool | No description provided. |
DestinationSpec
Appears in:
DestinationSpec defines the desired state of Destination
| Field | Type | Description |
|---|---|---|
type | common.DestinationType | No description provided. |
destinationName | string | No description provided. |
data | map[string]string | No description provided. |
secretRef | core/v1.LocalObjectReference | No description provided. |
signals | []common.ObservabilitySignal | No description provided. |
disabled | bool | No description provided. |
metricsSettings | DestinationMetricsSettings | MetricsSettings defines the metrics settings for this destination. ignored if destination does not support metrics or metrics are not enabled in signals |
sourceSelector | SourceSelector | SourceSelector defines which sources can send data to this destination. If not specified, defaults to “all”. |
DestinationStatus
Appears in:
DestinationStatus defines the observed state of Destination
| Field | Type | Description |
|---|---|---|
conditions | []meta/v1.Condition | Represents the observations of a destination’s current state. |
EnvVar
Appears in:
| Field | Type | Description |
|---|---|---|
name | string | No description provided. |
value | string | No description provided. |
HeadSamplingConfig
Appears in:
HeadSamplingConfig is a set of attribute rules. The first attribute rule that evaluates to true is used to determine the sampling decision based on its fraction.
If none of the rules evaluate to true, the fallback fraction is used to determine the sampling decision.
| Field | Type | Description |
|---|---|---|
attributesAndSamplerRules | []AttributesAndSamplerRule | No description provided. |
fallbackFraction | float64 | Used as a fallback if all rules evaluate to false, it may be empty - in this case the default value will be 1 - all spans are sampled. it should be a float value in the range [0, 1] - the fraction of spans to sample. a value of 0 means no spans are sampled if none of the rules evaluate to true. |
HeadSamplingHttpClientOperationMatcher
Appears in:
match http client operations for noisy operations matching (only attributes available at span start time) can be used to filter out outgoing http requests for other agents calling home or exporting data.
| Field | Type | Description |
|---|---|---|
serverAddress | string | match server address exactly (e.g. collector.my.vendor.com) |
urlPath | string | match url path exactly (e.g. /api/v1/metrics) |
method | string | match method exactly, can be empty to match any method |
HeadSamplingHttpServerOperationMatcher
Appears in:
match http server operations for noisy operations matching (only attributes available at span start time)
| Field | Type | Description |
|---|---|---|
route | string | match route exactly |
routePrefix | string | match preffix of route |
method | string | match method exactly, can be empty to match any method |
HeadSamplingOperationMatcher
Appears in:
can match a specific operation for head sampling. head sampling has access only to the attributes available at span start time, and sampling decisions can only be based on the root span of the trace.
| Field | Type | Description |
|---|---|---|
httpServer | HeadSamplingHttpServerOperationMatcher | match http server operation (trace that starts with an http endpoint) |
httpClient | HeadSamplingHttpClientOperationMatcher | match http client operation (trace that starts with an http client operation) common for agents that are internally calling home over http, and exporting data. |
HeadersCollectionConfig
Appears in:
HeadersCollectionConfig represents configuration for HTTP headers collection.
| Field | Type | Description |
|---|---|---|
httpHeaderKeys | []string | Limit HTTP headers collection to specific header keys. if unset, no HTTP headers will be collected. HTTP headers cannot be collected as wildcard, to avoid leaking sensitive information. |
HighlyRelevantOperation
Appears in:
define operations (spans) with high observability value. if found anywhere in the trace, the entire trace will be kept regaradless of any cost reduction rules.
| Field | Type | Description |
|---|---|---|
sourceScopes | []SourcesScope | limit the operation to specific sources. an empty list will match any source. if multiple items are set, the operation match if any one matches this relates to the “ResourceAttributes” part of a span. |
error | bool | if “Error” is set to true, only spans with SpanStatus set to “Error” are considered |
durationAtLeastMs | int | if Duration is set, only operations with duration in milli seconds larger then this value are considered |
operation | TailSamplingOperationMatcher | optionally, limit this rule to specific operations. for example: specific endpoint or kafka topic. this field is optional, and if not set, the rule will be applied to all operations. |
percentageAtLeast | float64 | traces that contains this operation will be sampled by at least this percentage. if unset, 100% of such the traces will be sampled. |
notes | string | optional free-form text field that allows you to attach notes for future context and maintenance. users can write why this rule was added, observations, document considerations, etc. |
HttpServerOperationMatcher
Appears in:
match only http server spans for a specific endpoint. user can specify route and method to match, and limit a sampling instruction to only this operation.
| Field | Type | Description |
|---|---|---|
route | string | a specific exact match http route |
routePrefix | string | any route that starts with a specific prefix |
method | string | optionally limit to specific http method |
IdGeneratorConfig
Appears in:
id generator configuration for the traces
| Field | Type | Description |
|---|---|---|
random | IdGeneratorRandomConfig | No description provided. |
timedWall | IdGeneratorTimedWallConfig | No description provided. |
IdGeneratorRandomConfig
Appears in:
random id generator is the default, and most common. it creates span ids and trace ids using random bytes. It has no configuration.
IdGeneratorTimedWallConfig
Appears in:
trace id includes timestamp, source id byte, and random number bytes. this id generator can be leveraged by databases to do efficient indexing.
| Field | Type | Description |
|---|---|---|
sourceId | byte | sourceId is a number between 0-255 (8 bits) written into the 8th byte of the trace id. if timedWall is specified, the sourceId is required. |
InstrumentationConfigSpec
Appears in:
Config for the OpenTelemeetry SDKs that should be applied to a workload. The workload is identified by the owner reference
| Field | Type | Description |
|---|---|---|
serviceName | string | the service.name property is used to populate the |
agentInjectionEnabled | bool | determines if odigos should inject agents to pods of this workload. |
podManifestInjectionOptional | bool | true if all containers with agent injection enabled in this source can be enabled without pod manifest changes. if false, at least one container requires pod manifest changes to enable agent injection. |
containers | []ContainerAgentConfig | configuration for each instrumented container in the workload |
workloadCollectorConfig | []ContainerCollectorConfig | No description provided. |
containersOverrides | []ContainerOverride | will always list all containers of this workload by name, and override data in case it is configured on the source. this peoperty can be used to know all container names in the workload, even if other controllers did not yet run. |
containerOverridesHash | string | An hash of the containers overrides, used to determine if the overrides have changed for event filtering. this is updated only when the overrides are changed, and not when some other change in the source occurs. |
agentsMetaHash | string | this hash is used to determine the deployment of the agents. e.g. when the distro for container changes, or it’s compatibility version, or something else that requires rollout, the hash change will indicate that. if the hash is empty, it means that no agent should be enabled in any pod container. |
agentsMetaHashChangedTime | meta/v1.Time | The last time at which the agents meta hash value was changed. Pods created before this time may not be in alignment with the AgentsMetaHash. e.g. can lack the odigos label, or have a different value. |
sdkConfigs | []SdkConfig | Configuration for the OpenTelemetry SDKs that this workload should use. The SDKs are identified by the programming language they are written in. TODO: consider adding more granular control over the SDKs, such as community/enterprise, native/ebpf. |
InstrumentationConfigStatus
Appears in:
| Field | Type | Description |
|---|---|---|
runtimeDetailsByContainer | []RuntimeDetailsByContainer | Capture Runtime Details for the workloads that this CR applies to. |
conditions | []meta/v1.Condition | Represents the observations of a InstrumentationConfig’s current state. |
workloadRolloutHash | string | This hash is recorded only after the rollout took place. it allows us to determine if the workload needs to be rollout based on previous rollout and the current config. if this field is different than the spec.AgentsDeploymentHash it means rollout is needed or not yet updated. |
rollbackOccurred | bool | Check if rollback happened to an application |
instrumentationTime | meta/v1.Time | This time recorded only after the rollout took place. This allows us to determine whether a crashing application should be rolled back or not |
podsManifestInjectionStatus | PodsManifestInjectionStatus | Represents the status of odigos MANIFEST injection to existing pods template. |
InstrumentationInstanceSpec
Appears in:
| Field | Type | Description |
|---|---|---|
containerName | string | stores the name of the container in the pod where the SDK is running. The pod details can be found as the owner reference on the CR. |
InstrumentationInstanceStatus
Appears in:
InstrumentationInstanceStatus defines the observed state of InstrumentationInstance If the instrumentation is not active, this CR should be deleted
| Field | Type | Description |
|---|---|---|
identifyingAttributes | []Attribute | Attributes that identify the SDK and are reported as resource attributes in the generated telemetry. One can identify if an arbitrary telemetry is generated by this SDK by checking those resource attributes. |
nonIdentifyingAttributes | []Attribute | Attributes that are not reported as resource attributes but useful to describe characteristics of the SDK. |
healthy | bool | Healthy true means that the odigos agent has started the SDK, and there are no errors. User can expect telemetry to be generated. Healthy false means that the agent has stopped and telemetry data is not expected to be generated. Healthy nil means that the agent did not report any health status yet (prefer to always report health status). |
message | string | message is a human readable message indicating details about the SDK general health. can be omitted if healthy is true |
reason | string | reason contains a programmatic identifier indicating the reason for the component status. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. |
lastStatusTime | meta/v1.Time | No description provided. |
components | []InstrumentationLibraryStatus | No description provided. |
InstrumentationLibraryConfig
Appears in:
| Field | Type | Description |
|---|---|---|
libraryId | InstrumentationLibraryId | No description provided. |
traceConfig | InstrumentationLibraryConfigTraces | No description provided. |
payloadCollection | instrumentationrules.PayloadCollection | No description provided. |
codeAttributes | instrumentationrules.CodeAttributes | code attributes configuration for a specific library. if not set, the default code attributes configuration for the workload will be used. if set, but internal fields are empty, those fields will be used from the default configuration. |
headersCollection | instrumentationrules.HttpHeadersCollection | No description provided. |
InstrumentationLibraryConfigTraces
Appears in:
| Field | Type | Description |
|---|---|---|
enabled | bool | Whether the instrumentation library is enabled to record traces. When false, it is expected that the instrumentation library does not produce any spans regardless of any other configuration. When true, the instrumentation library should produce spans according to the other configuration options. If not specified, the default value for this signal should be used (whether to enable libraries by default or not). |
InstrumentationLibraryId
Appears in:
| Field | Type | Description |
|---|---|---|
libraryName | string | The name of the instrumentation library
|
spanKind | common.SpanKind | SpanKind is only supported by Golang and will be ignored for any other SDK language. In Go, SpanKind is used because the same instrumentation library can be utilized for different span kinds (e.g., client/server). |
InstrumentationLibraryStatus
Appears in:
InstrumentationLibraryStatus defines the observed state of an InstrumentationLibrary. if a library is not active/disable, it should not be included in the status
| Field | Type | Description |
|---|---|---|
name | string | for example (“net/http”, “@opentelemetry/instrumentation-redis”) |
type | InstrumentationLibraryType | No description provided. |
identifyingAttributes | []Attribute | Attributes that identify the component. The combination of (Name, Type, IdentifyingAttributes) must be unique. |
nonIdentifyingAttributes | []Attribute | Attributes that do not necessarily identify the component but help describe its characteristics. |
healthy | bool | No description provided. |
message | string | message is a human readable message indicating details about the component health. can be omitted if healthy is true |
reason | string | reason contains a programmatic identifier indicating the reason for the SDK status. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. |
lastStatusTime | meta/v1.Time | No description provided. |
InstrumentationLibraryType
(Alias of string)
Appears in:
InstrumentationRuleSpec
Appears in:
| Field | Type | Description |
|---|---|---|
ruleName | string | Allows you to attach a meaningful name to the rule for convenience. Odigos does not use or assume any meaning from this field. |
notes | string | A free-form text field that allows you to attach notes regarding the rule for convenience. For example: why it was added. Odigos does not use or assume any meaning from this field. |
disabled | bool | A boolean field allowing to temporarily disable the rule, but keep it around for future use |
workloads | []github.com/odigos-io/odigos/api/k8sconsts.PodWorkload | An array of workload objects (name, namespace, kind) to which the rule should be applied. If not specified, the rule will be applied to all workloads. empty array will render the rule inactive. |
instrumentationLibraries | []github.com/odigos-io/odigos/api/odigos/v1alpha1.InstrumentationLibraryGlobalId | For fine grained control, the user can specify the instrumentation library to use. One can specify same rule for multiple languages and libraries at the same time. If nil, all instrumentation libraries will be used. If empty, no instrumentation libraries will be used. |
payloadCollection | instrumentationrules.PayloadCollection | Allows to configure payload collection aspects for different types of payloads. |
otelSdks | instrumentationrules.OtelSdks | Deprecated: use OtelDistros instead. |
otelDistros | instrumentationrules.OtelDistros | Set the otel distros to use instead of the defaults. |
codeAttributes | instrumentationrules.CodeAttributes | Configure which code attributes should be recorded as span attributes. |
headersCollection | instrumentationrules.HttpHeadersCollection | Allows to configure the collection of http headers for different types of payloads. |
traceConfig | instrumentationrules.TraceConfig | Configure the tracing configuration for the library. |
customInstrumentations | instrumentationrules.CustomInstrumentations | Add custom instrumentation probes |
headSamplingFallbackFraction | instrumentationrules.HeadSamplingFallbackFraction | Configure general fraction of traces to record if none of the rules evaluate to true. this can help in reducing very noisy and heavy traffic services. note that traces will be dropped regardless of thier attributes/errors/importance. @deprecated: use odigos config to set this value instead. |
InstrumentationRuleStatus
Appears in:
| Field | Type | Description |
|---|---|---|
conditions | []meta/v1.Condition | Represents the observations of a instrumentationrule’s current state. Known .status.conditions.type are: “Available”, “Progressing” |
KafkaOperationMatcher
Appears in:
match a kafka consumer or producer operation for a specific topic.
| Field | Type | Description |
|---|---|---|
kafkaTopic | string | the topic name to match. if left empty, all topics are matched. |
NoisyOperation
Appears in:
endpoints (or other operations) which are considered “noise”, and provide no or very little observability value. these traces should not be collected at all, or dropped aggresevly. motivation is data sentization and performance improvment (even if cost is not a factor)
examples:
- health-checks (readiness and liveness probes)
- metrics scrape endpoints (promethues /metrics endpoint)
- other agents calling home (outgoing http requests to collector.my.vendor.com)
| Field | Type | Description |
|---|---|---|
sourceScopes | []SourcesScope | limit this rule to specific sources (by name, namespace, language, etc.) for example: if “other agent” rule for noisty operation is relevant only in java, limit this rule by setting source scope to java and prevent other languages from being affected if the list is empty - all sources are matched. |
operation | HeadSamplingOperationMatcher | limit this rule to specific operations. for example: specific http server endpoint (GET “/healthz” as an example). this field is optional, and if not set, the rule will be applied to all operations. |
percentageAtMost | float64 | sampling percentage for noisy operations. if unset, 0% of such the traces will be collected. this percentage has “at most” semantics - the final sampling percentage for traces that match this rule will be the highest possible, but at most this value. |
notes | string | optional free-form text field that allows you to attach notes for future context and maintenance. users can write why this rule was added, observations, document considerations, etc. |
OdigosOwnMetricsSettings
Appears in:
configuration for collecting and exporting odigos own metrics. e.g. metrics about odigos components, and not about the user’s application.
| Field | Type | Description |
|---|---|---|
sendToMetricsDestinations | bool | if true, odigos will send all the metrics it collects about itself to the metrics pipeline, which will make them available to the metrics destinations. users can troubleshoot odigos itself by monitoring these metrics in their existing systems, and create their own dashboards, alerting, and more. |
sendToOdigosMetricsStore | bool | if true, odigos will send all the metrics it collects about itself to the odigos metrics store, which is available to odigos UI. it can help in presenting a consistent view of odigos itself, without relying on user system and integrations. |
interval | string | time interval for flusing metrics (format: 15s, 1m etc). defaults: 10s |
Operator
(Alias of string)
Appears in:
OtherAgent
Appears in:
| Field | Type | Description |
|---|---|---|
name | string | No description provided. |
PodsManifestInjectionStatus
Appears in:
represents the status of odigos MANIFEST injection to existing pods template. each pod can be in one of 3 states: injected and up-to-date, injected and out-of-date, or not injected. actual agent in pod container can be injected or not regardless of the pod manifest injection status. status only shows if pods exists from each category and not count, to avoid frequent (noisy/expensive) updates in steady state
| Field | Type | Description |
|---|---|---|
hasInjectedUpToDatePods | bool | if the source has any pods which are using the latest agent deployment setup. |
hasInjectedOutOfDatePods | bool | if the source has any pods which are using an outdated agent deployment setup. |
hasUninjectedPods | bool | if the source has any pods which do not have the odigos agent injected. |
ProcessingState
(Alias of string)
Appears in:
ProcessorSpec
Appears in:
ProcessorSpec defines the an OpenTelemetry Collector processor in odigos telemetry pipeline
| Field | Type | Description |
|---|---|---|
type | string | type of the processor (batch, attributes, etc). this field is only the type, not it’s instance name in the collector configuration yaml |
processorName | string | this name is solely for the user convenience, to attach a meaningful name to the processor. odigos must not assume any semantics from this name. odigos cannot assume this name is unique, not empty, exclude spaces or dots, limited in length, etc. |
notes | string | user can attach notes to the processor, to document its purpose, usage, etc. |
disabled | bool | disable is a flag to enable or disable the processor. if the processor is disabled, it will not be included in the collector configuration yaml. this allows the user to keep the processor configuration in the CR, but disable it temporarily. |
signals | []common.ObservabilitySignal | signals can be used to control which observability signals are processed by the processor. |
collectorRoles | []CollectorsGroupRole | control which collector roles in odigos pipeline this processor is attached to. |
orderHint | int | control the order of processors. a processor with lower order hint value will be placed before other processors with higher value. if 2 processors have the same value, the order is arbitrary. if the value is missing (or 0) the processor can be placed anywhere in the pipeline |
processorConfig | k8s.io/apimachinery/pkg/runtime.RawExtension | this it the configuration of the opentelemetry collector processor component with the type specified in ‘type’. |
ProcessorStatus
Appears in:
ProcessorStatus defines the observed state of the processor
RuntimeDetailsByContainer
Appears in:
| Field | Type | Description |
|---|---|---|
containerName | string | No description provided. |
language | common.ProgrammingLanguage | No description provided. |
runtimeVersion | string | No description provided. |
envVars | []EnvVar | No description provided. |
otherAgent | OtherAgent | No description provided. |
libCType | common.LibCType | No description provided. |
secureExecutionMode | bool | Indicates whether the target process is running is secure-execution mode. nil means we were unable to determine the secure-execution mode. |
criErrorMessage | string | CriErrorMessage is set if the value in EnvFromContainerRuntime was not computed correctly and cannot be used safely. Sometimes, even if CRI check failed, it is possible to tell that relevant env vars are not coming from container runtime. Thus, this field is set only when there is:
|
envFromContainerRuntime | []EnvVar | Holds the environment variables retrieved from the container runtime. |
runtimeUpdateState | ProcessingState | A temporary variable used during migration to track whether the new runtime detection process has been executed. If empty, it indicates the process has not yet been run. This field may be removed later. |
SamplingCollectorConfig
Appears in:
| Field | Type | Description |
|---|---|---|
noisyOperations | []WorkloadNoisyOperation | No description provided. |
highlyRelevantOperations | []WorkloadHighlyRelevantOperation | No description provided. |
costReductionRules | []WorkloadCostReductionRule | No description provided. |
SamplingSpec
Appears in:
define sampling rules. the rules can be defined as one or multiple objects in kubernetes, and are all joined together to form the global sampling rules. odigos users can group rules based on whatever criteria that makes sense for them, for example - by team, by client, by usecase, admin-policy, etc.
| Field | Type | Description |
|---|---|---|
name | string | give these sampling rules a name for display, easier identification and reference. |
notes | string | a free-form text field that allows you to attach notes regardinag the rule for convenience. Odigos does not use or assume any meaning from this field. |
disabled | bool | if set to true, the sampling rules will be disabled, they will not be taken into account for any sampling decisions. useful if you want to temporarily disable the rules but re-enable them later, |
noisyOperations | []NoisyOperation | No description provided. |
highlyRelevantOperations | []HighlyRelevantOperation | No description provided. |
costReductionRules | []CostReductionRule | No description provided. |
SamplingStatus
Appears in:
SamplingStatus defines the observed state of Sampling.
| Field | Type | Description |
|---|---|---|
conditions | []meta/v1.Condition | Represents the observations of a Sampling’s current state. Known .status.conditions.type are: “Available”, “Progressing” |
SdkConfig
Appears in:
| Field | Type | Description |
|---|---|---|
language | common.ProgrammingLanguage | The language of the SDK being configured |
instrumentationLibraryConfigs | []InstrumentationLibraryConfig | configurations for the instrumentation libraries the the SDK should use |
headSamplerConfig | HeadSamplingConfig | HeadSamplingConfig is a set sampling rules. This config currently only applies to root spans. In the Future we might add another level of configuration base on the parent span (ParentBased Sampling) |
payloadCollection | instrumentationrules.PayloadCollection | No description provided. |
codeAttributes | instrumentationrules.CodeAttributes | default configuration for collecting code attributes, in case the instrumentation library does not provide a configuration. |
headersCollection | instrumentationrules.HttpHeadersCollection | default configuration for collecting http headers, in case the instrumentation library does not provide a configuration. |
traceConfig | instrumentationrules.TraceConfig | default configuration for library tracing. |
customInstrumentations | instrumentationrules.CustomInstrumentations | list of the custom instrumentation probes the SDK should use. |
runtimeMetrics | common.MetricsSourceAgentRuntimeMetricsConfiguration | configuration for runtime metrics that the SDK should generate. these are language-specific metrics like JVM metrics for Java, CLR metrics for .NET, etc. |
ServiceGraphSettings
Appears in:
SourceSelector
Appears in:
| Field | Type | Description |
|---|---|---|
namespaces | []string | If a namespace is specified, all workloads (sources) within that namespace are allowed to send data. Example: namespaces: [“default”, “production”] This means the destination will receive data from all sources in “default” and “production” namespaces. |
dataStreams | []string | Workloads (sources) are assigned to Datastreams via labels (odigos.io/data-stream: true), allowing a more flexible selection mechanism. Example: dataStreams: [“backend”, “monitoring”] This means the destination will receive data only from sources labeled with “backend” or “monitoring”. |
SourceSpec
Appears in:
| Field | Type | Description |
|---|---|---|
workload | k8sconsts.PodWorkload | Workload represents the workload or namespace to be instrumented. This field is required upon creation and cannot be modified. |
disableInstrumentation | bool | DisableInstrumentation excludes this workload from auto-instrumentation. |
otelServiceName | string | OtelServiceName determines the “service.name” resource attribute which will be reported by the instrumentations of this source. If not set, the workload name will be used. It is not valid for namespace sources. |
containerOverrides | []ContainerOverride | Specify specific override values for containers in a workload source. Not valid for namespace sources. Can be used to set the runtime info in case the automatic detection fails or produce wrong results. Containers are identified by their names. All containers not listed will retain their default behavior. |
matchWorkloadNameAsRegex | bool | MatchWorkloadNameAsRegex indicates that the workload name should be matched using regex. When true, spec.workload.name is treated as a regular expression pattern. This allows matching multiple workloads with a single Source CRD. Not valid for namespace sources. |
SourceStatus
Appears in:
| Field | Type | Description |
|---|---|---|
conditions | []meta/v1.Condition | Represents the observations of a source’s current state. Known .status.conditions.type are: “Available”, “Progressing” |
SourcesScope
Appears in:
define conditions to match specific sources (containers) managed by odigos. a source container matches, if ALL non empty fields match (AND semantics)
common patterns:
- Specific kubernetes workload by name (WorkloadNamespace + WorkloadKind + WorkloadName) - all containers (usually there is only one with agent injection)
- Specific container in a kubernetes workload (WorkloadNamespace + WorkloadKind + WorkloadName + ContainerName) - only this container
- All services in a kubernetes namespace (WorkloadNamespace) - all containers in all sources in the namespace
- All services implemented in a specific programming language (WorkloadLanguage) - all container which are running odigos agent for this language
| Field | Type | Description |
|---|---|---|
workloadName | string | No description provided. |
workloadKind | k8sconsts.WorkloadKind | No description provided. |
workloadNamespace | string | No description provided. |
containerName | string | No description provided. |
workloadLanguage | common.ProgrammingLanguage | No description provided. |
SpanRenamerConfig
Appears in:
| Field | Type | Description |
|---|---|---|
scopeRules | []SpanRenamerScopeRules | list of scope rules to be applied to the span name. all options are always tried, regardless of whether the previous options have matched or not. |
SpanRenamerScopeRules
Appears in:
| Field | Type | Description |
|---|---|---|
scopeName | string | the name of the opentelemetry intrumentation scope which the renamed spans are written in. |
regexReplacements | []actions.SpanRenamerRegexReplacement | list of regex replacements to be applied to the span name. all options are always tried, regardless of whether the previous options have matched or not. |
TailSamplingOperationMatcher
Appears in:
match operations for tail sampling with the full context of the span. this is used by sampling rules to limit it only to specific operations. if the rule matches a sapn, the behavior is determined by the rule itself.
| Field | Type | Description |
|---|---|---|
httpServer | HttpServerOperationMatcher | match http server operations in a generic way. |
kafkaConsumer | KafkaOperationMatcher | match kafka consumer operations (consume spans) |
kafkaProducer | KafkaOperationMatcher | match kafka producer operations (produce spans) |
UrlTemplatizationConfig
Appears in:
| Field | Type | Description |
|---|---|---|
templatizationRules | []string | Rule is the template rule to be applied to URLs |
WorkloadCostReductionRule
Appears in:
cost reduction rule configuration used by the instrumentation config. it is similar to the CostReductionRule struct, but includes a rule id and excludes irrelevant fields the original struct cannot be used as the id property is internal and should not appear in user-facing API.
| Field | Type | Description |
|---|---|---|
id | string | No description provided. |
operation | TailSamplingOperationMatcher | No description provided. |
percentageAtMost | float64 | No description provided. |
WorkloadHighlyRelevantOperation
Appears in:
highly relevant operation configuration used by the instrumentation config. it is similar to the HighlyRelevantOperation struct, but includes a rule id and excludes irrelevant fields the original struct cannot be used as the id property is internal and should not appear in user-facing API.
| Field | Type | Description |
|---|---|---|
id | string | No description provided. |
error | bool | No description provided. |
durationAtLeastMs | int | No description provided. |
operation | TailSamplingOperationMatcher | No description provided. |
percentageAtLeast | float64 | No description provided. |
WorkloadNoisyOperation
Appears in:
noisy operation configuration used by the instrumentation config. it is similar to the NoisyOperation struct, but includes a rule id and excludes irrelevant fields the original struct cannot be used as the id property is internal and should not appear in user-facing API.
| Field | Type | Description |
|---|---|---|
id | string | No description provided. |
operation | HeadSamplingOperationMatcher | No description provided. |
percentageAtMost | float64 | No description provided. |