diff --git a/airports-flight-service/pom.xml b/airports-flight-service/pom.xml
index 55bfa6326a2f4ff678796eb3c01a6687b5ed0d19..5b7050342df20a78eea22a89901dcc05ca79ac47 100644
--- a/airports-flight-service/pom.xml
+++ b/airports-flight-service/pom.xml
@@ -38,6 +38,10 @@
             <groupId>io.springfox</groupId>
             <artifactId>springfox-boot-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
diff --git a/airports-flight-service/src/main/java/cz/muni/fi/pa165/SwaggerConfig.java b/airports-flight-service/src/main/java/cz/muni/fi/pa165/SwaggerConfig.java
index 62e64199658802c17cd6c954e52e87a9370b247e..d0aa68b54ee1d9cfd6c78bc4738062da621a082c 100644
--- a/airports-flight-service/src/main/java/cz/muni/fi/pa165/SwaggerConfig.java
+++ b/airports-flight-service/src/main/java/cz/muni/fi/pa165/SwaggerConfig.java
@@ -1,17 +1,70 @@
 package cz.muni.fi.pa165;
 
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.util.ReflectionUtils;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
 @Configuration
 @EnableSwagger2
 public class SwaggerConfig {
 
+    @Bean // This bean is required when you want swagger and actuator to work together
+    public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
+        return new BeanPostProcessor() {
+
+            @Override
+            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
+                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
+                }
+                return bean;
+            }
+
+            private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(
+                    List<T> mappings) {
+                List<T> copy = mappings.stream().filter(mapping -> mapping.getPatternParser() == null)
+                        .collect(Collectors.toList());
+                mappings.clear();
+                mappings.addAll(copy);
+            }
+
+            @SuppressWarnings("unchecked")
+            private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
+                try {
+                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+                    field.setAccessible(true);
+                    return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
+                } catch (IllegalArgumentException | IllegalAccessException e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+        };
+    }
+
+    @Bean
+    public Docket api() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .select()
+                .apis(RequestHandlerSelectors.any())
+                .paths(PathSelectors.regex("/manage.*"))
+                .build();
+    }
+
     @Bean
     public Docket facadesV1Api() {
         return createDocket()
@@ -27,4 +80,5 @@ public class SwaggerConfig {
     private Docket createDocket() {
         return new Docket(DocumentationType.SWAGGER_2);
     }
+
 }
diff --git a/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/health/CustomHealthIndicator.java b/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/health/CustomHealthIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..cab6cb55ebc8bf3f0c50d33f8a9122e5db856410
--- /dev/null
+++ b/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/health/CustomHealthIndicator.java
@@ -0,0 +1,23 @@
+package cz.muni.fi.pa165.observations.health;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.actuate.health.Health;
+import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomHealthIndicator implements HealthIndicator {
+
+    @Autowired
+    private HealthProvider healthProvider;
+
+    @Override
+    public Health health() {
+        boolean systemHealth = healthProvider.getSystemHealth();
+        if (systemHealth) {
+            return Health.up().build();
+        } else {
+            return Health.down().withDetail("error", "injected failure").build();
+        }
+    }
+}
\ No newline at end of file
diff --git a/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/health/HealthProvider.java b/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/health/HealthProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..31959583ea4a042aebeefe52d8b20f0cc73a8fee
--- /dev/null
+++ b/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/health/HealthProvider.java
@@ -0,0 +1,15 @@
+package cz.muni.fi.pa165.observations.health;
+
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Component
+public class HealthProvider {
+
+    private AtomicInteger counter = new AtomicInteger(0);
+
+    public boolean getSystemHealth() {
+        return counter.getAndIncrement() % 2 == 0;
+    }
+}
diff --git a/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/info/CustomInfoContributor.java b/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/info/CustomInfoContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..903740f24a508116796932f5f45301ac141fcde3
--- /dev/null
+++ b/airports-flight-service/src/main/java/cz/muni/fi/pa165/observations/info/CustomInfoContributor.java
@@ -0,0 +1,14 @@
+package cz.muni.fi.pa165.observations.info;
+
+import org.springframework.boot.actuate.info.Info.Builder;
+import org.springframework.boot.actuate.info.InfoContributor;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomInfoContributor implements InfoContributor {
+
+    @Override
+    public void contribute(Builder builder) {
+        builder.withDetail("course", "PA165");
+    }
+}
diff --git a/airports-flight-service/src/main/resources/application.properties b/airports-flight-service/src/main/resources/application.properties
index ad9731a882a7ac6c967df017036f71fd14911df9..debf240735b6a373aa52a6a8cd6560de43c59865 100644
--- a/airports-flight-service/src/main/resources/application.properties
+++ b/airports-flight-service/src/main/resources/application.properties
@@ -27,25 +27,14 @@ application-version=1.0
 logging.level.org.springframework.web=DEBUG
 logging.level.io.springfox=DEBUG
 
-management.endpoints.web.exposure.include=info,health,metrics,loggers
+management.endpoints.web.exposure.include=info,health,metrics,loggers,prometheus
 management.endpoint.health.show-details=always
 management.endpoint.health.probes.enabled=true
-
-
-#spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
-#spring.jpa.hibernate.ddl-auto=update
-#spring.jpa.generate-ddl=true
-#spring.jpa.show-sql=true
-#spring.datasource.driver-class-name=org.postgresql.Driver
-#spring.datasource.url=jdbc:postgresql://localhost:5432/airport-manager
-#spring.datasource.username=postgres
-#spring.datasource.password=root
-#spring.jpa.properties.hibernate.hbm2ddl.create_namespaces=true
-#jakarta.peristence.create-database-schemas=true
-#
-#springdoc.swagger-ui.path=/swagger-ui.html
-#application-description=API Description
-#application-version=1.0
-#
-#logging.level.org.springframework.web=DEBUG
-#logging.level.io.springfox=DEBUG
\ No newline at end of file
+management.endpoint.info.enabled=true
+management.endpoint.env.enabled=true
+management.context-path=/manage
+management.endpoints.web.base-path=/manage
+
+info.app.encoding=UTF-8
+info.app.java.source=17
+info.app.java.target=17
\ No newline at end of file
diff --git a/airports-hr-service/pom.xml b/airports-hr-service/pom.xml
index 95b55a572e3bb2fbf72d355304efd3f681e24df2..183cd6760476fe85dfe974614ac13501fbefbb7f 100644
--- a/airports-hr-service/pom.xml
+++ b/airports-hr-service/pom.xml
@@ -45,6 +45,10 @@
             <groupId>io.springfox</groupId>
             <artifactId>springfox-boot-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.postgresql</groupId>
             <artifactId>postgresql</artifactId>
diff --git a/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/SwaggerConfig.java b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/SwaggerConfig.java
index 2cdfc4b376fcb0759e6272520f95e63739562478..08c6e6dc010b9a3942e114557400fe2dc6fbcbd4 100644
--- a/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/SwaggerConfig.java
+++ b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/SwaggerConfig.java
@@ -1,17 +1,70 @@
 package cz.muni.fi.pa165.hr;
 
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.util.ReflectionUtils;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
 @Configuration
 @EnableSwagger2
 public class SwaggerConfig {
 
+    @Bean // This bean is required when you want swagger and actuator to work together
+    public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
+        return new BeanPostProcessor() {
+
+            @Override
+            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
+                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
+                }
+                return bean;
+            }
+
+            private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(
+                    List<T> mappings) {
+                List<T> copy = mappings.stream().filter(mapping -> mapping.getPatternParser() == null)
+                        .collect(Collectors.toList());
+                mappings.clear();
+                mappings.addAll(copy);
+            }
+
+            @SuppressWarnings("unchecked")
+            private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
+                try {
+                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+                    field.setAccessible(true);
+                    return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
+                } catch (IllegalArgumentException | IllegalAccessException e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+        };
+    }
+
+    @Bean
+    public Docket api() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .select()
+                .apis(RequestHandlerSelectors.any())
+                .paths(PathSelectors.regex("/manage.*"))
+                .build();
+    }
+
     @Bean
     public Docket facadesV1Api() {
         return createDocket()
@@ -26,4 +79,5 @@ public class SwaggerConfig {
     private Docket createDocket() {
         return new Docket(DocumentationType.SWAGGER_2);
     }
+
 }
\ No newline at end of file
diff --git a/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/health/CustomHealthIndicator.java b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/health/CustomHealthIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d86997f753d7513c919ed8c144a4507a1aa6342
--- /dev/null
+++ b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/health/CustomHealthIndicator.java
@@ -0,0 +1,23 @@
+package cz.muni.fi.pa165.hr.observations.health;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.actuate.health.Health;
+import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomHealthIndicator implements HealthIndicator {
+
+    @Autowired
+    private HealthProvider healthProvider;
+
+    @Override
+    public Health health() {
+        boolean systemHealth = healthProvider.getSystemHealth();
+        if (systemHealth) {
+            return Health.up().build();
+        } else {
+            return Health.down().withDetail("error", "injected failure").build();
+        }
+    }
+}
diff --git a/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/health/HealthProvider.java b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/health/HealthProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c756864d410e0eaac9e1067ca70869cd8cecca09
--- /dev/null
+++ b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/health/HealthProvider.java
@@ -0,0 +1,15 @@
+package cz.muni.fi.pa165.hr.observations.health;
+
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Component
+public class HealthProvider {
+
+    private AtomicInteger counter = new AtomicInteger(0);
+
+    public boolean getSystemHealth() {
+        return counter.getAndIncrement() % 2 == 0;
+    }
+}
diff --git a/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/info/CustomInfoContributor.java b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/info/CustomInfoContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a8bbdb94ad0d0687b46c76bca3f593c40cfd7c6
--- /dev/null
+++ b/airports-hr-service/src/main/java/cz/muni/fi/pa165/hr/observations/info/CustomInfoContributor.java
@@ -0,0 +1,14 @@
+package cz.muni.fi.pa165.hr.observations.info;
+
+import org.springframework.boot.actuate.info.Info.Builder;
+import org.springframework.boot.actuate.info.InfoContributor;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomInfoContributor implements InfoContributor {
+
+    @Override
+    public void contribute(Builder builder) {
+        builder.withDetail("course", "PA165");
+    }
+}
diff --git a/airports-hr-service/src/main/resources/application.properties b/airports-hr-service/src/main/resources/application.properties
index 22ceb1220ca23da8297b84bb5bac30e424e6a2af..c0ba2135525c49153c3149b5091a899a518c0492 100644
--- a/airports-hr-service/src/main/resources/application.properties
+++ b/airports-hr-service/src/main/resources/application.properties
@@ -16,4 +16,14 @@ application-version=1.0
 logging.level.org.springframework.web=DEBUG
 logging.level.io.springfox=DEBUG
 
-management.endpoints.web.exposure.include=info,health,metrics,loggers
\ No newline at end of file
+management.endpoints.web.exposure.include=info,health,metrics,loggers,prometheus
+management.endpoint.health.show-details=always
+management.endpoint.health.probes.enabled=true
+management.endpoint.info.enabled=true
+management.endpoint.env.enabled=true
+management.context-path=/manage
+management.endpoints.web.base-path=/manage
+
+info.app.encoding=UTF-8
+info.app.java.source=17
+info.app.java.target=17
\ No newline at end of file
diff --git a/airports-planes-service/src/main/java/cz/muni/fi/pa165/planes/SwaggerConfig.java b/airports-planes-service/src/main/java/cz/muni/fi/pa165/planes/SwaggerConfig.java
index 9dd495ee46b029639a40116099da6b826e26a424..99e094a3fa9ee94d9e64b6bf119b406bff6f2b5d 100644
--- a/airports-planes-service/src/main/java/cz/muni/fi/pa165/planes/SwaggerConfig.java
+++ b/airports-planes-service/src/main/java/cz/muni/fi/pa165/planes/SwaggerConfig.java
@@ -23,30 +23,6 @@ import java.util.stream.Collectors;
 @EnableSwagger2
 public class SwaggerConfig {
 
-    @Bean
-    public Docket facadesV1Api() {
-        return createDocket()
-                .groupName("Planes")
-                .select()
-                .apis(RequestHandlerSelectors.basePackage(
-                        PlaneController.class.getPackageName()))
-                .paths(PathSelectors.any())
-                .build();
-    }
-
-    @Bean
-    public Docket api() {
-        return new Docket(DocumentationType.SWAGGER_2)
-                .select()
-                .apis(RequestHandlerSelectors.any())
-                .paths(PathSelectors.regex("/manage.*"))
-                .build();
-    }
-
-    private Docket createDocket() {
-        return new Docket(DocumentationType.SWAGGER_2);
-    }
-
     @Bean // This bean is required when you want swagger and actuator to work together
     public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
         return new BeanPostProcessor() {
@@ -79,4 +55,28 @@ public class SwaggerConfig {
             }
         };
     }
+
+    @Bean
+    public Docket facadesV1Api() {
+        return createDocket()
+                .groupName("Planes")
+                .select()
+                .apis(RequestHandlerSelectors.basePackage(
+                        PlaneController.class.getPackageName()))
+                .paths(PathSelectors.any())
+                .build();
+    }
+
+    @Bean
+    public Docket api() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .select()
+                .apis(RequestHandlerSelectors.any())
+                .paths(PathSelectors.regex("/manage.*"))
+                .build();
+    }
+
+    private Docket createDocket() {
+        return new Docket(DocumentationType.SWAGGER_2);
+    }
 }
\ No newline at end of file
diff --git a/airports-service/pom.xml b/airports-service/pom.xml
index 0ee0bf9218e6dc9c9dd6b52317ab1d11b86ccbc8..8645e8d5e39482dc4f2a4dba319850278b43d67e 100644
--- a/airports-service/pom.xml
+++ b/airports-service/pom.xml
@@ -39,6 +39,10 @@
             <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.springfox</groupId>
             <artifactId>springfox-boot-starter</artifactId>
diff --git a/airports-service/src/main/java/cz/muni/fi/pa165/airport/SwaggerConfig.java b/airports-service/src/main/java/cz/muni/fi/pa165/airport/SwaggerConfig.java
index cba41b5e286b4fb211283152f31a7af40f249c12..6ffba8ea2def8e9b4a93598a9663044fd461dc62 100644
--- a/airports-service/src/main/java/cz/muni/fi/pa165/airport/SwaggerConfig.java
+++ b/airports-service/src/main/java/cz/muni/fi/pa165/airport/SwaggerConfig.java
@@ -1,17 +1,70 @@
 package cz.muni.fi.pa165.airport;
 
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.util.ReflectionUtils;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
 @Configuration
 @EnableSwagger2
 public class SwaggerConfig {
 
+    @Bean // This bean is required when you want swagger and actuator to work together
+    public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
+        return new BeanPostProcessor() {
+
+            @Override
+            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
+                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
+                }
+                return bean;
+            }
+
+            private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(
+                    List<T> mappings) {
+                List<T> copy = mappings.stream().filter(mapping -> mapping.getPatternParser() == null)
+                        .collect(Collectors.toList());
+                mappings.clear();
+                mappings.addAll(copy);
+            }
+
+            @SuppressWarnings("unchecked")
+            private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
+                try {
+                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+                    field.setAccessible(true);
+                    return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
+                } catch (IllegalArgumentException | IllegalAccessException e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+        };
+    }
+
+    @Bean
+    public Docket api() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .select()
+                .apis(RequestHandlerSelectors.any())
+                .paths(PathSelectors.regex("/manage.*"))
+                .build();
+    }
+
     @Bean
     public Docket facadesV1Api() {
         return createDocket()
@@ -26,4 +79,5 @@ public class SwaggerConfig {
     private Docket createDocket() {
         return new Docket(DocumentationType.SWAGGER_2);
     }
+
 }
\ No newline at end of file
diff --git a/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/health/CustomHealthIndicator.java b/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/health/CustomHealthIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..409a131b2e944c7e29aa1abc6943c68347704eb8
--- /dev/null
+++ b/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/health/CustomHealthIndicator.java
@@ -0,0 +1,23 @@
+package cz.muni.fi.pa165.airport.observations.health;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.actuate.health.Health;
+import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomHealthIndicator implements HealthIndicator {
+
+    @Autowired
+    private HealthProvider healthProvider;
+
+    @Override
+    public Health health() {
+        boolean systemHealth = healthProvider.getSystemHealth();
+        if (systemHealth) {
+            return Health.up().build();
+        } else {
+            return Health.down().withDetail("error", "injected failure").build();
+        }
+    }
+}
diff --git a/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/health/HealthProvider.java b/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/health/HealthProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..cdc6f1c793c582ef81c1c9aa723b4f9f7f91a62b
--- /dev/null
+++ b/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/health/HealthProvider.java
@@ -0,0 +1,15 @@
+package cz.muni.fi.pa165.airport.observations.health;
+
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Component
+public class HealthProvider {
+
+    private AtomicInteger counter = new AtomicInteger(0);
+
+    public boolean getSystemHealth() {
+        return counter.getAndIncrement() % 2 == 0;
+    }
+}
diff --git a/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/info/CustomInfoContributor.java b/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/info/CustomInfoContributor.java
new file mode 100644
index 0000000000000000000000000000000000000000..da6d0e1e45a6742d3fbdc384a5d901eaf705c109
--- /dev/null
+++ b/airports-service/src/main/java/cz/muni/fi/pa165/airport/observations/info/CustomInfoContributor.java
@@ -0,0 +1,14 @@
+package cz.muni.fi.pa165.airport.observations.info;
+
+import org.springframework.boot.actuate.info.Info.Builder;
+import org.springframework.boot.actuate.info.InfoContributor;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CustomInfoContributor implements InfoContributor {
+
+    @Override
+    public void contribute(Builder builder) {
+        builder.withDetail("course", "PA165");
+    }
+}
diff --git a/airports-service/src/main/resources/application.properties b/airports-service/src/main/resources/application.properties
index 22ceb1220ca23da8297b84bb5bac30e424e6a2af..c0ba2135525c49153c3149b5091a899a518c0492 100644
--- a/airports-service/src/main/resources/application.properties
+++ b/airports-service/src/main/resources/application.properties
@@ -16,4 +16,14 @@ application-version=1.0
 logging.level.org.springframework.web=DEBUG
 logging.level.io.springfox=DEBUG
 
-management.endpoints.web.exposure.include=info,health,metrics,loggers
\ No newline at end of file
+management.endpoints.web.exposure.include=info,health,metrics,loggers,prometheus
+management.endpoint.health.show-details=always
+management.endpoint.health.probes.enabled=true
+management.endpoint.info.enabled=true
+management.endpoint.env.enabled=true
+management.context-path=/manage
+management.endpoints.web.base-path=/manage
+
+info.app.encoding=UTF-8
+info.app.java.source=17
+info.app.java.target=17
\ No newline at end of file