OpenTelemetry Metrics Format
The OpenTelemetry receiver supports ingesting agent metrics by meter-system. The OAP can load the configuration at bootstrap.
If the new configuration is not well-formed, the OAP may fail to start up. The files are located at $CLASSPATH/otel-rules.
Supported handlers:
otlp: OpenTelemetry gRPC service handler.
Notice: Set SW_OTEL_RECEIVER=default through system environment or change receiver-otel/selector=${SW_OTEL_RECEIVER:default} to activate the OpenTelemetry receiver.
The rule file should be in YAML format, defined by the scheme described in MAL.
Note: receiver-otel only supports the group, defaultMetricLevel, and metricsRules nodes of the scheme due to its push mode.
To activate the otlp handler and relevant rules of istio:
receiver-otel:
selector: ${SW_OTEL_RECEIVER:default}
default:
enabledHandlers: ${SW_OTEL_RECEIVER_ENABLED_HANDLERS:"otlp-metrics"}
enabledOtelMetricsRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:"istio-controlplane"}
The receiver adds label with key node_identifier_host_name to the collected data samples,
and its value is from net.host.name (or host.name for some OTLP versions) resource attributes defined in OpenTelemetry proto,
for identification of the metric data.
Label name conversion: Dots (.) in attribute key names are converted to underscores (_) for both
resource attributes and data point (metric-level) attributes. For example, gen_ai.token.type becomes
gen_ai_token_type in MAL rules. Metric names also undergo the same conversion (e.g.,
gen_ai.client.token.usage becomes gen_ai_client_token_usage).
Fallback label mappings: The following resource attributes are copied to alternative label names if the target does not already exist. These are fallback-only — if the target label is already present in the resource attributes, the fallback is skipped.
| Source | Target | Notes |
|---|---|---|
service.name |
job_name |
The OTel Collector Prometheus Receiver automatically converts the Prometheus job label to service.name. This fallback ensures it is available as job_name for MAL rule filtering. |
net.host.name |
node_identifier_host_name |
Legacy: used by VM/Windows MAL rules |
host.name |
node_identifier_host_name |
Legacy: used by VM/Windows MAL rules |
When job_name is set explicitly in OTEL_RESOURCE_ATTRIBUTES (e.g., by Envoy AI Gateway),
it takes precedence and the service.name fallback is skipped.
Note: The net.host.name and host.name mappings are legacy. New integrations should use
the natural dot-to-underscore conversion (e.g., host.name → host_name in MAL rules).
| Description | Configuration File | Data Source |
|---|---|---|
| Metrics of Istio Control Plane | otel-rules/istio-controlplane.yaml | Istio Control Plane -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of SkyWalking OAP server itself | otel-rules/oap.yaml | SkyWalking OAP Server(SelfObservability) -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Linux OS | otel-rules/vm.yaml | prometheus/node_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Windows OS | otel-rules/windows.yaml | prometheus-community/windows_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of K8s cluster | otel-rules/k8s/k8s-cluster.yaml | K8s kube-state-metrics -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of K8s cluster | otel-rules/k8s/k8s-node.yaml | cAdvisor & K8s kube-state-metrics -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of K8s cluster | otel-rules/k8s/k8s-service.yaml | cAdvisor & K8s kube-state-metrics -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of MYSQL | otel-rules/mysql/mysql-instance.yaml | prometheus/mysqld_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of MYSQL | otel-rules/mysql/mysql-service.yaml | prometheus/mysqld_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of PostgreSQL | otel-rules/postgresql/postgresql-instance.yaml | prometheus-community/postgres_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of PostgreSQL | otel-rules/postgresql/postgresql-service.yaml | prometheus-community/postgres_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Apache APISIX | otel-rules/apisix.yaml | apisix prometheus plugin -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of AWS Cloud EKS | otel-rules/aws-eks/eks-cluster.yaml | AWS Container Insights Receiver -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of AWS Cloud EKS | otel-rules/aws-eks/eks-service.yaml | AWS Container Insights Receiver -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of AWS Cloud EKS | otel-rules/aws-eks/eks-node.yaml | AWS Container Insights Receiver -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Elasticsearch | otel-rules/elasticsearch/elasticsearch-cluster.yaml | prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Elasticsearch | otel-rules/elasticsearch/elasticsearch-index.yaml | prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Elasticsearch | otel-rules/elasticsearch/elasticsearch-node.yaml | prometheus-community/elasticsearch_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Redis | otel-rules/redis/redis-service.yaml | oliver006/redis_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Redis | otel-rules/redis/redis-instance.yaml | oliver006/redis_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of RabbitMQ | otel-rules/rabbitmq/rabbitmq-cluster.yaml | rabbitmq-prometheus -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of RabbitMQ | otel-rules/rabbitmq/rabbitmq-node.yaml | rabbitmq-prometheus -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of MongoDB | otel-rules/mongodb/mongodb-cluster.yaml | percona/mongodb_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of MongoDB | otel-rules/mongodb/mongodb-node.yaml | percona/mongodb_exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Kafka | otel-rules/kafka/kafka-cluster.yaml | prometheus/jmx_exporter/jmx_prometheus_javaagent -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Kafka | otel-rules/kafka/kafka-broker.yaml | prometheus/jmx_exporter/jmx_prometheus_javaagent -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of ClickHouse | otel-rules/clickhouse/clickhouse-instance.yaml | ClickHouse(embedded prometheus endpoint) -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of ClickHouse | otel-rules/clickhouse/clickhouse-service.yaml | ClickHouse(embedded prometheus endpoint) -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of RocketMQ | otel-rules/rocketmq/rocketmq-cluster.yaml | rocketmq-exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of RocketMQ | otel-rules/rocketmq/rocketmq-broker.yaml | rocketmq-exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of RocketMQ | otel-rules/rocketmq/rocketmq-topic.yaml | rocketmq-exporter -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Flink | otel-rules/flink/flink-jobManager.yaml | flink jobManager -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Flink | otel-rules/flink/flink-taskManager.yaml | flink taskManager -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of Flink | otel-rules/flink/flink-job.yaml | flink jobManager & flink taskManager-> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of BanyanDB | otel-rules/banyandb/banyandb-instance.yaml | BanyanDB(embedded prometheus endpoint) -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |
| Metrics of BanyanDB | otel-rules/banyandb/banyandb-service.yaml | BanyanDB(embedded prometheus endpoint) -> OpenTelemetry Collector – OTLP exporter –> SkyWalking OAP Server |