diff --git a/otel_collector/otel_collector.container b/otel_collector/otel_collector.container new file mode 100644 index 0000000..353aa60 --- /dev/null +++ b/otel_collector/otel_collector.container @@ -0,0 +1,11 @@ +[Install] +WantedBy=default.target + +[Container] +Image=ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.128.0 +Exec=--config=/etc/otelcol-config.yml +Volume=./otelcol-config.yml:/etc/otelcol-config.yml +Network=monitoring.network +HostName=otel_collector +PublishPort=4317:4317 +PublishPort=54525:54525 diff --git a/otel_collector/otelcol-config.yml b/otel_collector/otelcol-config.yml new file mode 100644 index 0000000..94f018c --- /dev/null +++ b/otel_collector/otelcol-config.yml @@ -0,0 +1,52 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + tcplog: + listen_address: "0.0.0.0:54525" + + hostmetrics: + scrapers: + cpu: + metrics: + system.cpu.utilization: + enabled: true + load: + memory: + metrics: + system.memory.utilization: + enabled: true + +processors: + memory_limiter: + check_interval: 1s + limit_mib: 2000 + spike_limit_mib: 500 + batch: + send_batch_size: 1000 + timeout: 0s + send_batch_max_size: 1000 + +exporters: + debug: + otlphttp/prometheus: + endpoint: "http://prometheus:9090/api/v1/otlp" + tls: + insecure: true + otlphttp/loki: + endpoint: "http://loki:3100/otlp" + tls: + insecure: true + +service: + pipelines: + metrics: + # receivers: [hostmetrics, docker_stats, httpcheck/frontend-proxy, otlp, redis, spanmetrics] + receivers: [otlp, hostmetrics] + processors: [memory_limiter, batch] + exporters: [otlphttp/prometheus, debug] + logs: + receivers: [otlp] + processors: [memory_limiter, batch] + exporters: [otlphttp/loki, debug] diff --git a/prometheus/prometheus-config.yml b/prometheus/prometheus-config.yml new file mode 100644 index 0000000..a2eef9e --- /dev/null +++ b/prometheus/prometheus-config.yml @@ -0,0 +1,20 @@ +# scrape_configs: +# # The job name is added as a label `job=` to any timeseries scraped from this config. +# - job_name: "otel_collector" +# static_configs: +# - targets: ["otel_collector:6327"] + +storage: + tsdb: + out_of_order_time_window: 30m + +otlp: + # Recommended attributes to be promoted to labels. + promote_resource_attributes: + - service.instance.id + - service.name + - service.namespace + - service.version + - container.name + - deployment.environment + - deployment.environment.name diff --git a/prometheus/prometheus-data.volume b/prometheus/prometheus-data.volume new file mode 100644 index 0000000..e69de29 diff --git a/prometheus/prometheus.container b/prometheus/prometheus.container new file mode 100644 index 0000000..a3d5afa --- /dev/null +++ b/prometheus/prometheus.container @@ -0,0 +1,11 @@ +[Install] +WantedBy=default.target + +[Container] +Image=quay.io/prometheus/prometheus:latest +PublishPort=9090:9090 +Volume=prometheus-data.volume:/prometheus +Volume=./prometheus-config.yml:/etc/prometheus/prometheus.yml:ro +Network=monitoring.network +HostName=prometheus +Exec=--config.file=/etc/prometheus/prometheus.yml --web.enable-otlp-receiver