Status | |
---|---|
Stability | beta |
Supported pipeline types | metrics |
Distributions | core, contrib |
Receives metric data in Prometheus format. See the Design for additional information on this receiver.
Note: This component is currently work in progress. It has several limitations and please don't use it if the following limitations is a concern:
- Collector cannot auto-scale the scraping yet when multiple replicas of the collector is run.
- When running multiple replicas of the collector with the same config, it will scrape the targets multiple times.
- Users need to configure each replica with different scraping configuration if they want to manually shard the scraping.
- The Prometheus receiver is a stateful component.
The Prometheus receiver is meant to minimally be a drop-in replacement for Prometheus. However, there are advanced features of Prometheus that we don't support and thus explicitly will return an error for if the receiver's configuration YAML/code contains any of the following
- alert_config.alertmanagers
- alert_config.relabel_configs
- remote_read
- remote_write
- rule_files
This receiver is a drop-in replacement for getting Prometheus to scrape your
services. It supports the full set of Prometheus configuration in scrape_config
,
including service discovery. Just like you would write in a YAML configuration
file before starting Prometheus, such as with:
Note: Since the collector configuration supports env variable substitution
$
characters in your prometheus configuration are interpreted as environment
variables. If you want to use $ characters in your prometheus configuration,
you must escape them using $$
.
prometheus --config.file=prom.yaml
You can copy and paste that same configuration under:
receivers:
prometheus:
config:
For example:
receivers:
prometheus:
config:
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 5s
static_configs:
- targets: ['0.0.0.0:8888']
- job_name: k8s
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
regex: "true"
action: keep
metric_relabel_configs:
- source_labels: [__name__]
regex: "(request_duration_seconds.*|response_duration_seconds.*)"
action: keep
Additional to this static job definitions this receiver allows to query a list of jobs from the OpenTelemetryOperators TargetAllocator or a compatible endpoint.
receivers:
prometheus:
target_allocator:
endpoint: http://my-targetallocator-service
interval: 30s
collector_id: collector-1