Configure the Prometheus receiver to collect Seldon Core metrics

Configure the Splunk Distribution of the OpenTelemetry Collector to send Seldon metrics to Splunk Observability Cloud.

You can monitor the performance of Seldon Core models by configuring the Splunk Distribution of the OpenTelemetry Collector to send Seldon Core metrics to Splunk Observability Cloud.

This solution uses the Prometheus receiver to collect metrics from Seldon, which exposes the API endpoint http://<pod-ip>:8000/prometheus to publish Prometheus-compatible metrics.

To use this data integration, you must have Seldon Core deployed on your Kubernetes cluster.
  1. Install the Collector for Kubernetes using Helm.
  2. To manually activate the Prometheus receiver for Seldon Core, make the following changes to your Collector values.yaml configuration file.
    1. Add prometheus/seldon to the receivers section. For example:
      YAML
      agent:
        config:
          receivers:
            # Add this dedicated receiver for Seldon
            prometheus/seldon:
              config:
                scrape_configs:
                - job_name: seldon-core
                  kubernetes_sd_configs:
                  - namespaces:
                      names:
                      - default           # Add namespaces where Seldon is deployed
                      - seldon-system     # Controller metrics
                      # - production      # Add other namespaces as needed
                    role: pod
                  relabel_configs:
                  # Only scrape pods with seldon-app label
                  - action: keep
                    regex: (.+)
                    source_labels:
                    - __meta_kubernetes_pod_label_seldon_app
                  # Set scrape target to pod IP + port 8000
                  - replacement: $1:8000
                    source_labels:
                    - __meta_kubernetes_pod_ip
                    target_label: __address__
                  scrape_interval: 30s
    2. Add prometheus/seldon to the metrics pipeline of the service section. For example:
      YAML
      service:   
        pipelines:   
          metrics:   
            receivers: [prometheus/seldon]
  3. To receive histogram metrics as native histograms in Splunk Observability Cloud, make the following changes to your Collector values.yaml file.
    Note:
    The send_otlp_histograms: true setting is required to use histogram functions in Splunk Observability Cloud and enables histograms to be received as a single metric. If this setting is not enabled, histogram metrics are received as multiple metrics separated by their function type. For example, the seldon_api_executor_server_requests_seconds histogram metric would be received as the following metrics:
    • seldon_api_executor_server_requests_seconds_bucket
    • seldon_api_executor_server_requests_seconds_count

    • seldon_api_executor_server_requests_seconds_sum

    For more information on histogram metrics, see Histogram metrics in Splunk Observability Cloud.

    1. Add send_otlp_histograms: true to the otlphttp/splunk exporter section. For example:
      YAML
      exporters:
        otlp:
          endpoint: https://ingest.<realm>.signalfx.com
          headers:
            X-SF-Token: ${SPLUNK_ACCESS_TOKEN}
        otlphttp/splunk:
          metrics_endpoint: https://ingest.<realm>.signalfx.com/v2/datapoint/otlp
          headers:
            X-SF-Token: ${SPLUNK_ACCESS_TOKEN}
          # Enable native histogram support
          send_otlp_histograms: true
    2. Add the otlphttp/splunk exporter to the metrics pipeline of the service section. For example:
      YAML
      service:
        pipelines:
          metrics:
            receivers: [receiver_creator, prometheus/seldon]
            exporters: [otlphttp/splunk]
  4. Restart the Splunk Distribution of the OpenTelemetry Collector.

Configuration settings

To view the configuration options for the Prometheus receiver, see Settings.

Metrics

The following metrics are available for Seldon Core.

These metrics are considered custom metrics in Splunk Observability Cloud.

Metric name Type Description
seldon_api_executor_server_requests_seconds histogram

End-to-end request latency in seconds from client to response.

Can be used to calculate request rate, P95 latency, average latency, and error rate.

seldon_api_executor_server_requests_seconds_summary summary Pre-calculated percentiles (P50, P75, P90, P98, P99, Max) in seconds. Available quantitles: 0.5, 0.75, 0.9, 0.98, 0.99, 1.0.

Summary metrics are less flexible than histograms, but provide pre-calculated percentiles. Use histograms for custom percentiles.
seldon_api_executor_client_requests_seconds histogram

Model inference latency in seconds from the executor to the model container.

Can be used to calculate model inference rate, model P95 latency, executor overhead, and model health.

Attributes

The following resource attributes are available for Seldon Core metrics.

Attribute name Description
seldon-app Model identifier (e.g., "iris", "sentiment", "mnist"). Used for per-model filtering.
deployment_name SeldonDeployment name (e.g., "iris-model")
predictor_name Predictor variant (e.g., "default")
predictor_version Predictor version (usually empty)
model_name Model component name (e.g., "classifier")
model_image Docker image (e.g., "seldonio/mock_classifier")
model_version Model version (e.g., "1.17.1")
seldon-deployment-id Unique deployment ID
seldon-app-svc-classifier Service classifier label
seldon.io/model Model annotation
code HTTP status code (e.g., "200", "400", "500"). Used for error filtering.
method HTTP method (e.g., "post", "get")
service API endpoint (e.g., "predictions", "/predict")
server.address Server IP address
server.port Server port number
url.scheme URL scheme (e.g., "http", "https")
k8s.cluster.name Cluster name (e.g., "bits-kops-cluster")
k8s.namespace.name Cluster name (e.g., "bits-kops-cluster")
k8s.pod.name Full pod name with hash
k8s.pod.uid Pod unique identifier
k8s.node.name Kubernetes node name
k8s.deployment.name Deployment name
k8s.deployment.uid Deployment unique ID
k8s.replicaset.name ReplicaSet name
k8s.replicaset.uid ReplicaSet name
k8s.workload.name Workload name
k8s.workload.kind Workload type (e.g., "Deployment")
k8s.container.name Container name (e.g., "seldon-container-engine")
pod-template-hash Pod template hash
pod.creation_timestamp Pod creation timestamp
app.kubernetes.io/managed-by Management tool (e.g., "seldon-core")
host_name Host name
host_kernel_name Kernel name (e.g., "Linux")
host_kernel_release Kernel version
host_physical_cpus Number of physical CPUs
host_logical_cpus Number of logical CPUs
host_cpu_cores Number of CPU cores
host_cpu_model CPU model name
host_processor_name Processor name
host_machine Machine architecture
host_os_name OS name (e.g., "Ubuntu")
host_linux_version Linux distribution version
host_mem_total Linux distribution version
os.type OS type (e.g., "linux")
sf_service Splunk service name
sf_tags Splunk tags
service.instance.id Service instance identifier
fluentd Fluentd label
version Version tag
quantile Percentile value for summary metrics (e.g., "0.5", "0.75", "0.9", "0.95", "0.99", "1.0"). Only present in *_summary metrics.