Files
Keybard-Vagabond-Demo/manifests/infrastructure/openobserve-collector/gateway-collector.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