315 lines
8.8 KiB
YAML
315 lines
8.8 KiB
YAML
apiVersion: opentelemetry.io/v1beta1
|
|
kind: OpenTelemetryCollector
|
|
metadata:
|
|
name: openobserve-collector-gateway
|
|
namespace: openobserve-collector
|
|
spec:
|
|
config:
|
|
connectors:
|
|
servicegraph:
|
|
dimensions:
|
|
- http.method
|
|
latency_histogram_buckets:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
- 5
|
|
store:
|
|
max_items: 10
|
|
ttl: 1s
|
|
spanmetrics:
|
|
aggregation_temporality: AGGREGATION_TEMPORALITY_CUMULATIVE
|
|
dimensions:
|
|
- default: GET
|
|
name: http.method
|
|
- name: http.status_code
|
|
dimensions_cache_size: 1000
|
|
exemplars:
|
|
enabled: true
|
|
histogram:
|
|
explicit:
|
|
buckets:
|
|
- 100us
|
|
- 1ms
|
|
- 2ms
|
|
- 6ms
|
|
- 10ms
|
|
- 100ms
|
|
- 250ms
|
|
- 500ms
|
|
- 1000ms
|
|
- 1400ms
|
|
- 2000ms
|
|
- 5s
|
|
- 10s
|
|
- 30s
|
|
- 60s
|
|
- 120s
|
|
- 300s
|
|
- 600s
|
|
metrics_flush_interval: 15s
|
|
exporters:
|
|
otlphttp/openobserve:
|
|
endpoint: http://openobserve-openobserve-standalone.openobserve.svc.cluster.local:5080/api/default/
|
|
headers:
|
|
Authorization: ${OPENOBSERVE_AUTH}
|
|
stream-name: default
|
|
# HTTP client configuration to match OpenObserve HTTP/1.1
|
|
compression: gzip
|
|
max_idle_conns: 50
|
|
max_idle_conns_per_host: 5
|
|
idle_conn_timeout: 120s
|
|
read_buffer_size: 8192
|
|
write_buffer_size: 8192
|
|
otlphttp/openobserve_k8s_events:
|
|
endpoint: http://openobserve-openobserve-standalone.openobserve.svc.cluster.local:5080/api/default/
|
|
headers:
|
|
Authorization: ${OPENOBSERVE_AUTH}
|
|
stream-name: k8s_events
|
|
# HTTP client configuration to match OpenObserve HTTP/1.1
|
|
compression: gzip
|
|
max_idle_conns: 50
|
|
max_idle_conns_per_host: 5
|
|
idle_conn_timeout: 120s
|
|
read_buffer_size: 8192
|
|
write_buffer_size: 8192
|
|
processors:
|
|
batch:
|
|
send_batch_size: 5000
|
|
timeout: 30s
|
|
send_batch_max_size: 6000
|
|
metadata_keys:
|
|
- k8s.namespace.name
|
|
- k8s.pod.name
|
|
k8sattributes:
|
|
auth_type: serviceAccount
|
|
extract:
|
|
labels:
|
|
- from: pod
|
|
key: app.kubernetes.io/name
|
|
tag_name: service.name
|
|
- from: pod
|
|
key: k8s-app
|
|
tag_name: service.name
|
|
- from: pod
|
|
key: app.kubernetes.io/instance
|
|
tag_name: k8s.app.instance
|
|
- from: pod
|
|
key: app.kubernetes.io/version
|
|
tag_name: service.version
|
|
- from: pod
|
|
key: app.kubernetes.io/component
|
|
tag_name: k8s.app.component
|
|
metadata:
|
|
- k8s.namespace.name
|
|
- k8s.pod.name
|
|
- k8s.node.name
|
|
- k8s.deployment.name
|
|
passthrough: false
|
|
pod_association:
|
|
- sources:
|
|
- from: resource_attribute
|
|
name: k8s.pod.uid
|
|
- sources:
|
|
- from: resource_attribute
|
|
name: k8s.pod.name
|
|
- from: resource_attribute
|
|
name: k8s.namespace.name
|
|
- from: resource_attribute
|
|
name: k8s.node.name
|
|
- sources:
|
|
- from: resource_attribute
|
|
name: k8s.pod.ip
|
|
- sources:
|
|
- from: resource_attribute
|
|
name: k8s.pod.name
|
|
- from: resource_attribute
|
|
name: k8s.namespace.name
|
|
- sources:
|
|
- from: connection
|
|
resourcedetection:
|
|
detectors:
|
|
- env
|
|
override: true
|
|
timeout: 2s
|
|
metricstransform:
|
|
transforms:
|
|
- include: k8s.node.allocatable_cpu
|
|
match_type: strict
|
|
action: update
|
|
new_name: machine_cpu_cores
|
|
- include: k8s.node.allocatable_memory
|
|
match_type: strict
|
|
action: update
|
|
new_name: machine_memory_bytes
|
|
- include: k8s.node.condition_ready
|
|
match_type: strict
|
|
action: update
|
|
new_name: k8s_node_condition_ready
|
|
- include: k8s.node.condition_memory_pressure
|
|
match_type: strict
|
|
action: update
|
|
new_name: k8s_node_condition_memory_pressure
|
|
- include: k8s.node.condition_disk_pressure
|
|
match_type: strict
|
|
action: update
|
|
new_name: k8s_node_condition_disk_pressure
|
|
- include: k8s.node.condition_pid_pressure
|
|
match_type: strict
|
|
action: update
|
|
new_name: k8s_node_condition_pid_pressure
|
|
receivers:
|
|
k8s_cluster:
|
|
allocatable_types_to_report:
|
|
- cpu
|
|
- memory
|
|
- storage
|
|
collection_interval: 60s
|
|
metrics:
|
|
k8s.container.cpu_limit:
|
|
enabled: false
|
|
k8s.container.cpu_request:
|
|
enabled: false
|
|
k8s.container.memory_limit:
|
|
enabled: false
|
|
k8s.container.memory_request:
|
|
enabled: false
|
|
node_conditions_to_report:
|
|
- Ready
|
|
- MemoryPressure
|
|
- DiskPressure
|
|
- PIDPressure
|
|
k8s_events:
|
|
auth_type: serviceAccount
|
|
k8sobjects:
|
|
auth_type: serviceAccount
|
|
objects:
|
|
- field_selector: status.phase=Running
|
|
interval: 15m
|
|
mode: pull
|
|
name: pods
|
|
- group: events.k8s.io
|
|
mode: watch
|
|
name: events
|
|
otlp:
|
|
protocols:
|
|
grpc: {}
|
|
http: {}
|
|
otlp/logs:
|
|
protocols:
|
|
http:
|
|
endpoint: 0.0.0.0:4418
|
|
prometheus:
|
|
config:
|
|
global:
|
|
scrape_interval: 30s
|
|
evaluation_interval: 30s
|
|
external_labels: {}
|
|
scrape_configs:
|
|
- job_name: 'nginx-ingress'
|
|
static_configs:
|
|
- targets: ['<NODE_1_EXTERNAL_IP>:10254', '<NODE_2_EXTERNAL_IP>:10254', '<NODE_3_EXTERNAL_IP>:10254']
|
|
metrics_path: /metrics
|
|
scrape_interval: 30s
|
|
metric_relabel_configs:
|
|
- source_labels: [__name__]
|
|
regex: 'nginx_ingress_controller_.*'
|
|
action: keep
|
|
target_allocator:
|
|
endpoint: http://openobserve-collector-gateway-targetallocator:80
|
|
interval: 30s
|
|
collector_id: "${POD_NAME}"
|
|
service:
|
|
telemetry:
|
|
metrics:
|
|
address: 0.0.0.0:8888
|
|
pipelines:
|
|
logs/fluentbit-forward:
|
|
exporters:
|
|
- otlphttp/openobserve
|
|
processors:
|
|
- batch
|
|
receivers:
|
|
- otlp/logs
|
|
logs/k8s_events:
|
|
exporters:
|
|
- otlphttp/openobserve_k8s_events
|
|
processors:
|
|
- batch
|
|
- k8sattributes
|
|
- resourcedetection
|
|
receivers:
|
|
- k8s_events
|
|
metrics:
|
|
exporters:
|
|
- otlphttp/openobserve
|
|
processors:
|
|
- batch
|
|
- k8sattributes
|
|
- resourcedetection
|
|
- metricstransform
|
|
receivers:
|
|
- k8s_cluster
|
|
- spanmetrics
|
|
- servicegraph
|
|
- prometheus # Re-enabled for ServiceMonitor scraping
|
|
traces:
|
|
exporters:
|
|
- otlphttp/openobserve
|
|
- spanmetrics
|
|
- servicegraph
|
|
processors:
|
|
- batch
|
|
- k8sattributes
|
|
- resourcedetection
|
|
receivers:
|
|
- otlp
|
|
daemonSetUpdateStrategy: {}
|
|
deploymentUpdateStrategy: {}
|
|
env:
|
|
- name: K8S_NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
- name: K8S_NODE_IP
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: status.hostIP
|
|
- name: POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
- name: OPENOBSERVE_AUTH
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: openobserve-collector-credentials
|
|
key: authorization
|
|
image: ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.127.0
|
|
ingress:
|
|
route: {}
|
|
managementState: managed
|
|
mode: statefulset
|
|
observability:
|
|
metrics:
|
|
enableMetrics: true
|
|
podDisruptionBudget:
|
|
maxUnavailable: 1
|
|
replicas: 1
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 512Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 1Gi
|
|
serviceAccount: openobserve-collector
|
|
targetAllocator:
|
|
enabled: true
|
|
serviceAccount: openobserve-collector
|
|
prometheusCR:
|
|
enabled: true
|
|
serviceMonitorSelector: {}
|
|
podMonitorSelector: {}
|
|
scrapeConfigSelector: {}
|
|
upgradeStrategy: automatic |