<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.seb4u.library</groupId>
        <artifactId>library-platform-parent</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <artifactId>common-observability</artifactId>
    <packaging>jar</packaging>
    <name>Library Platform :: Common :: Observability</name>
    <description>
        Reines Abhaengigkeits-Buendel (kein eigener Code, keine Auto-Configuration-Klassen
        noetig): Prometheus-Metrik-Export und Distributed-Tracing-Bruecke fuer Zipkin. Spring
        Boot erkennt diese Bibliotheken automatisch am Klassenpfad ("Classpath-getriebene
        Auto-Configuration") - im Unterschied zu common-web/common-security, die eigene
        @AutoConfiguration-Klassen mitbringen, weil sie eigenes Verhalten (Filter, Handler)
        hinzufuegen. Jeder Service, der Metriken/Traces liefern soll, haengt dieses Modul ein;
        die eigentliche Aktivierung (welche Actuator-Endpunkte, welche Sampling-Rate) passiert
        zentral im Config Server (siehe config-repo/application.yml und
        documentation/docs/05-devops/observability.md).
    </description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-tracing-bridge-brave</artifactId>
        </dependency>
        <dependency>
            <groupId>io.zipkin.reporter2</groupId>
            <artifactId>zipkin-reporter-brave</artifactId>
        </dependency>
        <!--
            Strukturiertes JSON-Logging fuer Loki/Promtail (siehe
            documentation/docs/05-devops/observability.md) - bringt den LogstashEncoder mit, den
            src/main/resources/logback-spring.xml in diesem Modul referenziert. Liegt bewusst
            HIER statt in jedem Service einzeln: "Classpath-getriebene Auto-Configuration" ist
            genau das Prinzip dieses Moduls (siehe Beschreibung oben), Logback-Konfiguration
            passt genauso dazu wie die bereits vorhandenen Actuator-/Micrometer-Abhaengigkeiten.
        -->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>${logstash-logback-encoder.version}</version>
        </dependency>
    </dependencies>
</project>
