fix(obs): wire Prometheus metrics and Loki job label for Grafana dashboards
Some checks failed
CI / Unit & Component Tests (pull_request) Successful in 3m3s
CI / OCR Service Tests (pull_request) Successful in 20s
CI / Backend Unit Tests (pull_request) Failing after 29s
CI / fail2ban Regex (pull_request) Successful in 40s
CI / Compose Bucket Idempotency (pull_request) Successful in 57s
Some checks failed
CI / Unit & Component Tests (pull_request) Successful in 3m3s
CI / OCR Service Tests (pull_request) Successful in 20s
CI / Backend Unit Tests (pull_request) Failing after 29s
CI / fail2ban Regex (pull_request) Successful in 40s
CI / Compose Bucket Idempotency (pull_request) Successful in 57s
Three root causes confirmed via live server investigation (issue #604): 1. ManagementWebSecurityAutoConfiguration applied HTTP Basic auth to the management port (8081), causing Prometheus to receive 401 HTML responses instead of metrics. Excluded the auto-config — the Docker network (archiv-net) provides the security boundary for this internal port. 2. promtail-config.yml had no `job` relabel rule. Grafana's Loki dashboards query {job="$app"} which matched nothing; logs were in Loki under compose_service but invisible to every dashboard panel. 3. prometheus.yml had a stale comment claiming the spring-boot target would be DOWN until micrometer-registry-prometheus was added — it has been present in pom.xml for some time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package org.raddatz.familienarchiv;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
// Excluded: management port (8081) is network-isolated inside archiv-net; no app-level auth needed.
|
||||
@SpringBootApplication(exclude = {ManagementWebSecurityAutoConfiguration.class})
|
||||
public class FamilienarchivApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -15,8 +15,6 @@ scrape_configs:
|
||||
metrics_path: /actuator/prometheus
|
||||
static_configs:
|
||||
# Uses the Docker service name (not container_name) for reliable DNS resolution.
|
||||
# Target will show as DOWN until backend instrumentation issue adds
|
||||
# micrometer-registry-prometheus and exposes the endpoint — this is expected.
|
||||
- targets: ['backend:8081']
|
||||
|
||||
- job_name: ocr-service
|
||||
|
||||
@@ -28,3 +28,5 @@ scrape_configs:
|
||||
target_label: 'compose_project'
|
||||
- source_labels: ['__meta_docker_container_log_stream']
|
||||
target_label: 'logstream'
|
||||
- source_labels: ['__meta_docker_container_label_com_docker_compose_service']
|
||||
target_label: 'job'
|
||||
|
||||
Reference in New Issue
Block a user