The following tables describe the metrics exported by OBI in both OpenTelemetry (OTEL) and Prometheus formats, for use within Coralogix observability workflows.

## Application metrics

Changed in v0.7.0

| Family              | Name (OTEL)                       | Name (Prometheus)                      | Type          | Unit        | Description                                                                                                                                                                 |
| ------------------- | --------------------------------- | -------------------------------------- | ------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Application         | `http.client.request.duration`    | `http_client_request_duration_seconds` | Histogram     | seconds     | Time taken for outbound HTTP calls from client applications                                                                                                                 |
| Application         | `http.client.request.body.size`   | `http_client_request_body_size_bytes`  | Histogram     | bytes       | Size of HTTP request payloads sent by clients                                                                                                                               |
| Application         | `http.client.response.body.size`  | `http_client_response_body_size_bytes` | Histogram     | bytes       | Size of HTTP responses received by clients                                                                                                                                  |
| Application         | `http.server.request.duration`    | `http_server_request_duration_seconds` | Histogram     | seconds     | Time taken to process inbound HTTP requests on servers                                                                                                                      |
| Application         | `http.server.request.body.size`   | `http_server_request_body_size_bytes`  | Histogram     | bytes       | Size of incoming HTTP request bodies received by servers                                                                                                                    |
| Application         | `http.server.response.body.size`  | `http_server_response_body_size_bytes` | Histogram     | bytes       | Size of outbound HTTP response bodies sent by servers                                                                                                                       |
| Application         | `rpc.client.duration`             | `rpc_client_duration_seconds`          | Histogram     | seconds     | Duration of outbound gRPC service calls                                                                                                                                     |
| Application         | `rpc.server.duration`             | `rpc_server_duration_seconds`          | Histogram     | seconds     | Duration of inbound RPC service calls                                                                                                                                       |
| Application         | `sql.client.duration`             | `sql_client_duration_seconds`          | Histogram     | seconds     | Time taken for SQL client operations (Experimental)                                                                                                                         |
| Application         | `redis.client.duration`           | `redis_client_duration_seconds`        | Histogram     | seconds     | Time taken for Redis client operations (Experimental)                                                                                                                       |
| Application         | `messaging.publish.duration`      | `messaging_publish_duration`           | Histogram     | seconds     | Time taken for message publication (e.g., Kafka) (Experimental)                                                                                                             |
| Application         | `messaging.process.duration`      | `messaging_process_duration`           | Histogram     | seconds     | Time taken for message processing (e.g., Kafka) (Experimental)                                                                                                              |
| Application Process | `process.cpu.time`                | `process_cpu_time_seconds_total`       | Counter       | seconds     | Total CPU time consumed, broken down by state (system/user/wait)                                                                                                            |
| Application Process | `process.cpu.utilization`         | `process_cpu_utilization_ratio`        | Gauge         | ratio       | CPU time usage change over time, normalized by CPU count                                                                                                                    |
| Application Process | `process.memory.usage`            | `process_memory_usage_bytes`           | UpDownCounter | bytes       | Physical memory currently used                                                                                                                                              |
| Application Process | `process.memory.virtual`          | `process_memory_virtual_bytes`         | UpDownCounter | bytes       | Virtual memory committed                                                                                                                                                    |
| Application Process | `process.disk.io`                 | `process_disk_io_bytes_total`          | Counter       | bytes       | Total disk I/O bytes transferred                                                                                                                                            |
| Application Process | `process.network.io`              | `process_network_io_bytes_total`       | Counter       | bytes       | Total network I/O bytes transferred                                                                                                                                         |
| Network             | `obi.network.flow.bytes`          | `obi_network_flow_bytes`               | Counter       | bytes       | Bytes transmitted between source and destination network endpoints                                                                                                          |
| Network             | `obi.network.inter.zone.bytes`    | `obi_network_inter_zone_bytes`         | Counter       | bytes       | Cross-zone network bytes within Kubernetes clusters (Experimental)                                                                                                          |
| Network             | `obi.stat.tcp.failed_connections` | `obi_stat_tcp_failed_connections`      | Counter       | connections | TCP failed connection count, labeled by `network.tcp.handshake.role` (client or server) and failure reason. Added in OBI v0.9.0. The `reason` label is disabled by default. |

OBI also supports exporting **Span metrics** and **Service Graph metrics**, which can be toggled via feature configuration options.

From OBI v0.9.0, database error response bodies are no longer included on SQL spans by default. If you previously relied on `sql.client.duration` spans carrying database error responses, enable that capture explicitly. See [What's changed](https://coralogix.com/docs/opentelemetry/instrumentation-options/ebpf-auto-instrumentation/overview/#obi-v090) in the overview.

From OBI v0.7.0+, DNS calls are excluded from span metrics and service-graph metrics by default. SQL operations (MySQL, PostgreSQL, MariaDB) are now reported as `SERVER` spans, so any aggregations or filters that key on span kind for SQL traffic should be updated accordingly. See [What's changed](https://coralogix.com/docs/opentelemetry/instrumentation-options/ebpf-auto-instrumentation/overview/#obi-v070) in the overview for details.

## Attribute selection for OBI metrics

Metrics and attributes follow **OTEL dot.notation** but are converted to **Prometheus underscore_notation** in Prometheus outputs.

You can customize which attributes are exposed or hidden by using the `attributes->select` section in the configuration.

### Common attributes table

| Metrics                          | Attribute Name                                                                           | Default                            |
| -------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------- |
| Application (all)                | `http.request.method`                                                                    | shown                              |
| Application (all)                | `http.response.status_code`                                                              | shown                              |
| Application (all)                | `http.route`                                                                             | shown if routes config exists      |
| Application (all)                | `k8s.daemonset.name`                                                                     | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.deployment.name`                                                                    | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.namespace.name`                                                                     | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.node.name`                                                                          | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.owner.name`                                                                         | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.pod.name`                                                                           | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.container.name`                                                                     | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.pod.start_time`                                                                     | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.pod.uid`                                                                            | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.replicaset.name`                                                                    | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.statefulset.name`                                                                   | shown if Kubernetes metadata is on |
| Application (all)                | `k8s.cluster.name`                                                                       | shown if Kubernetes metadata is on |
| Application (all)                | `service.name`                                                                           | shown                              |
| Application (all)                | `service.namespace`                                                                      | shown                              |
| Application (all)                | `target.instance`                                                                        | shown                              |
| Application (all)                | `url.path`                                                                               | hidden                             |
| Application (client)             | `server.address`                                                                         | hidden                             |
| Application (client)             | `server.port`                                                                            | hidden                             |
| Application (process)            | various process-specific attributes (e.g., `process.command`, `process.executable.path`) | shown if process metrics enabled   |
| Application RPC                  | various RPC attributes (`rpc.method`, `rpc.grpc.status_code`)                            | shown                              |
| Application (server)             | `client.address`                                                                         | hidden                             |
| Network                          | network-specific attributes (e.g., `src.address`, `dst.address`, `iface`)                | mostly hidden or conditional       |
| Network (TCP failed connections) | `network.tcp.handshake.role` — values `client` or `server`                               | shown                              |

Note: The `obi.network.inter.zone.bytes` metric shares the same attribute set as `obi.network.flow.bytes` but all are hidden by default except `k8s.cluster.name`, `src.zone`, and `dst.zone`.

## Internal OBI metrics

OBI provides several internal Prometheus-format metrics to help monitor its own health and activity:

| Name                                  | Type       | Description                                                      |
| ------------------------------------- | ---------- | ---------------------------------------------------------------- |
| `obi_ebpf_tracer_flushes`             | Histogram  | Size of trace groups flushed from eBPF to pipeline               |
| `obi_otel_metric_exports_total`       | Counter    | Total metric batches sent to remote OTEL collector               |
| `obi_otel_metric_export_errors_total` | CounterVec | Count of OTEL metric export errors by type                       |
| `obi_otel_trace_exports_total`        | Counter    | Total trace batches sent to remote OTEL collector                |
| `obi_otel_trace_export_errors_total`  | CounterVec | Count of OTEL trace export errors by type                        |
| `obi_prometheus_http_requests_total`  | CounterVec | Prometheus scrape endpoint request count by port and path        |
| `obi_instrumented_processes`          | GaugeVec   | Number of processes instrumented by Obi, labeled by process name |
| `obi_internal_build_info`             | GaugeVec   | Obi version information including build timestamp and commit ID  |
