# feature-application-observability ![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) Gathers application data The Application Observability feature enables the collection of application telemetry data. ## Before enabling Before you enable this feature, you must enable one or more receivers where data will be sent from the application. ## Testing This chart contains unit tests to verify the generated configuration. The hidden value `deployAsConfigMap` will render the generated configuration into a ConfigMap object. While this ConfigMap is not used during regular operation, you can use it to show the outcome of a given values file. The unit tests use this ConfigMap to create an object with the configuration that can be asserted against. To run the tests, use `helm test`. Be sure perform actual integration testing in a live environment in the main [k8s-monitoring](../..) chart. ## Maintainers | Name | Email | Url | | ---- | ------ | --- | | petewall | | | ## Source Code * ## Values ### Connectors: Grafana Cloud Host Info | Key | Type | Default | Description | |-----|------|---------|-------------| | connectors.grafanaCloudMetrics.enabled | bool | `true` | Generate host info metrics from telemetry data. These metrics are required for using Application Observability in Grafana Cloud. Note: Enabling this may incur additional costs. See [Application Observability Pricing](https://grafana.com/docs/grafana-cloud/monitor-applications/application-observability/pricing/) | ### Connectors: Span Logs | Key | Type | Default | Description | |-----|------|---------|-------------| | connectors.spanLogs.enabled | bool | `false` | Use a span logs connector which creates logs from spans. | | connectors.spanLogs.labels | list | `[]` | A list of keys that will be logged as labels. | | connectors.spanLogs.process | bool | `false` | Log one line for every process. | | connectors.spanLogs.processAttributes | list | `[]` | Additional process attributes to log. | | connectors.spanLogs.roots | bool | `false` | Log one line for every root span of a trace. | | connectors.spanLogs.spanAttributes | list | `[]` | Additional span attributes to log. | | connectors.spanLogs.spans | bool | `false` | Create a log line for each span. This can lead to a large number of logs. | ### Connectors: Span Metrics | Key | Type | Default | Description | |-----|------|---------|-------------| | connectors.spanMetrics.dimensions | list | `[]` | Define dimensions to be added. Some are set internally by default: [service.name, span.name, span.kind, status.code] Example: - name: "http.status_code" - name: "http.method" default: "GET" | | connectors.spanMetrics.dimensionsCacheSize | int | `1000` | How many dimensions to cache | | connectors.spanMetrics.enabled | bool | `false` | Use a span metrics connector which creates metrics from spans. | | connectors.spanMetrics.events.enabled | bool | `false` | Capture events metrics, which track span events. | | connectors.spanMetrics.exemplars.enabled | bool | `false` | Attach exemplars to histograms. | | connectors.spanMetrics.exemplars.maxPerDataPoint | number | `nil` | Limits the number of exemplars that can be added to a unique dimension set. | | connectors.spanMetrics.histogram.enabled | bool | `true` | Capture histogram metrics, derived from spans’ durations. | | connectors.spanMetrics.histogram.explicit.buckets | list | `["2ms","4ms","6ms","8ms","10ms","50ms","100ms","200ms","400ms","800ms","1s","1400ms","2s","5s","10s","15s"]` | The histogram buckets to use. | | connectors.spanMetrics.histogram.exponential.maxSize | int | `160` | Maximum number of buckets per positive or negative number range. | | connectors.spanMetrics.histogram.type | string | `"explicit"` | Type of histograms to create. Must be either "explicit" or "exponential". | | connectors.spanMetrics.histogram.unit | string | `"ms"` | The histogram unit. | | connectors.spanMetrics.namespace | string | `"traces.span.metrics"` | The Metric namespace. | ### General settings | Key | Type | Default | Description | |-----|------|---------|-------------| | fullnameOverride | string | `""` | Full name override | | nameOverride | string | `""` | Name override | ### Processors: Batch | Key | Type | Default | Description | |-----|------|---------|-------------| | processors.batch.maxSize | int | `0` | The upper limit of the amount of data contained in a single batch. When set to 0, batches can be any size. | | processors.batch.size | int | `8192` | What batch size to use | | processors.batch.timeout | string | `"2s"` | How long before sending (Processors) | ### Processors: Interval | Key | Type | Default | Description | |-----|------|---------|-------------| | processors.interval.enabled | bool | `false` | Utilize an interval processor to aggregate metrics and periodically forward the latest values to the next component in the pipeline. | | processors.interval.interval | string | `"60s"` | The interval at which to emit aggregated metrics. | | processors.interval.passthrough.gauge | bool | `false` | Determines whether gauge metrics should be passed through as they are or aggregated. | | processors.interval.passthrough.summary | bool | `false` | Determines whether summary metrics should be passed through as they are or aggregated. | ### Processors: K8s Attributes | Key | Type | Default | Description | |-----|------|---------|-------------| | processors.k8sattributes.annotations | list | `[]` | Kubernetes annotations to extract and add to the attributes of the received telemetry data. | | processors.k8sattributes.labels | list | `[]` | Kubernetes labels to extract and add to the attributes of the received telemetry data. | | processors.k8sattributes.metadata | list | `["k8s.namespace.name","k8s.pod.name","k8s.deployment.name","k8s.statefulset.name","k8s.daemonset.name","k8s.cronjob.name","k8s.job.name","k8s.node.name","k8s.pod.uid","k8s.pod.start_time"]` | Kubernetes metadata to extract and add to the attributes of the received telemetry data. | ### Processors: Memory Limiter | Key | Type | Default | Description | |-----|------|---------|-------------| | processors.memoryLimiter.checkInterval | string | `"1s"` | How often to check memory usage. | | processors.memoryLimiter.enabled | bool | `false` | Use a memory limiter. | | processors.memoryLimiter.limit | string | `"0MiB"` | Maximum amount of memory targeted to be allocated by the process heap. | ### Processors: Resource Detection | Key | Type | Default | Description | |-----|------|---------|-------------| | processors.resourceDetection.env.enabled | bool | `true` | Enable getting resource attributes from the OTEL_RESOURCE_ATTRIBUTES environment variable. | | processors.resourceDetection.kubernetesNode.authType | string | `"serviceAccount"` | The authentication method. This should not be changed. | | processors.resourceDetection.kubernetesNode.enabled | bool | `false` | Enable getting resource attributes about the Kubernetes node from the API server. | | processors.resourceDetection.kubernetesNode.nodeFromEnvVar | string | `"K8S_NODE_NAME"` | The name of an environment variable from which to retrieve the node name. | | processors.resourceDetection.override | bool | `true` | Configures whether existing resource attributes should be overridden or preserved. | | processors.resourceDetection.system.enabled | bool | `true` | Enable getting resource attributes from the host machine. | | processors.resourceDetection.system.hostnameSources | list | `["os"]` | The priority list of sources from which the hostname will be determined. Options: ["dns", "os", "cname", "lookup"]. | | processors.resourceDetection.system.resourceAttributes | object | `{}` | The list of resource attributes to add for system resource detection. See the [Alloy documentation](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.processor.resourcedetection/#system--resource_attributes) for a list of available attributes. | ### Receivers: Jaeger | Key | Type | Default | Description | |-----|------|---------|-------------| | receivers.jaeger.grpc | object | `{"enabled":false,"port":14250}` | Configuration for the Jaeger receiver using the gRPC protocol. | | receivers.jaeger.includeDebugMetrics | bool | `false` | Whether to include high-cardinality debug metrics. | | receivers.jaeger.thriftBinary | object | `{"enabled":false,"port":6832}` | Configuration for the Jaeger receiver using the Thrift binary protocol. | | receivers.jaeger.thriftCompact | object | `{"enabled":false,"port":6831}` | Configuration for the Jaeger receiver using the Thrift compact protocol. | | receivers.jaeger.thriftHttp | object | `{"enabled":false,"port":14268}` | Configuration for the Jaeger receiver using the Thrift HTTP protocol. | ### Receivers: OTLP | Key | Type | Default | Description | |-----|------|---------|-------------| | receivers.otlp.grpc.enabled | bool | `false` | Accept application data over OTLP gRPC. | | receivers.otlp.grpc.maxConcurrentStreams | int | `0` | Limit the number of concurrent streaming gRPC calls. 0 means no limit. | | receivers.otlp.grpc.maxReceivedMessageSize | string | `"4MiB"` | Maximum size of messages the gRPC server will accept. | | receivers.otlp.grpc.port | int | `4317` | The port to listen on for OTLP gRPC requests. | | receivers.otlp.grpc.readBufferSize | string | `"512KiB"` | Size of the read buffer the gRPC server will use for reading from clients. | | receivers.otlp.grpc.writeBufferSize | string | `"32KiB"` | Size of the write buffer the gRPC server will use for writing to clients. | | receivers.otlp.http.enabled | bool | `false` | Accept application data over OTLP HTTP. | | receivers.otlp.http.maxRequestBodySize | string | `"20MiB"` | Maximum request body size the server will allow. | | receivers.otlp.http.port | int | `4318` | The port to listen on for OTLP HTTP requests. | | receivers.otlp.includeDebugMetrics | bool | `false` | Whether to include high-cardinality debug metrics. | ### Receivers: Zipkin | Key | Type | Default | Description | |-----|------|---------|-------------| | receivers.zipkin | object | `{"enabled":false,"includeDebugMetrics":false,"port":9411}` | The Zipkin receiver configuration. | | receivers.zipkin.includeDebugMetrics | bool | `false` | Whether to include high-cardinality debug metrics. | ### Other Values | Key | Type | Default | Description | |-----|------|---------|-------------| | logs.enabled | bool | `true` | | | logs.filters | object | `{"log_record":[]}` | Apply a filter to logs received via receivers. ([docs](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.processor.filter/)) | | logs.transforms | object | `{"labels":["cluster","namespace","job","pod"],"log":[],"resource":[]}` | Apply a transformation to logs received via the OTLP or OTLP HTTP receivers. ([docs](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.processor.transform/)) | | logs.transforms.labels | list | `["cluster","namespace","job","pod"]` | The list of labels to set in the log stream. | | logs.transforms.log | list | `[]` | Log transformation rules. | | logs.transforms.resource | list | `[]` | Resource transformation rules. | | metrics.enabled | bool | `true` | | | metrics.filters | object | `{"datapoint":[],"metric":[]}` | Apply a filter to metrics received via the OTLP or OTLP HTTP receivers. ([docs](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.processor.filter/)) | | metrics.transforms | object | `{"datapoint":[],"metric":[],"resource":[]}` | Apply a transformation to metrics received via the OTLP or OTLP HTTP receivers. ([docs](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.processor.transform/)) | | traces.enabled | bool | `true` | | | traces.filters | object | `{"span":[],"spanevent":[]}` | Apply a filter to traces received via the OTLP or OTLP HTTP receivers. ([docs](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.processor.filter/)) | | traces.transforms | object | `{"resource":[],"span":[],"spanevent":[]}` | Apply a transformation to traces received via the OTLP or OTLP HTTP receivers. ([docs](https://grafana.com/docs/alloy/latest/reference/components/otelcol/otelcol.processor.transform/)) |