Implementation of Monitoring and Logging in Spring Cloud Config Server

Below is the implementation of Monitoring and Logging in Spring Cloud Config Server.

Setup the Config Server

Step 1: Create a spring project using spring initializer and add the below required dependencies.

Dependencies:

  • Spring Web
  • Spring Dev Tools
  • Lombok
  • Spring Cloud Config Server
  • Spring Boot Actuator

After creating the Spring project, the file structure will be like below.


Step 2: Open the application.properties file and add the configuring the server port and git repository uri configuration, actuator and logging configurations of the application.

spring.application.name=config-server

server.port=8888
spring.cloud.config.server.git.uri=https://github.com/iammahesh123/spring-cloud-config-server.git

# Actuator settings
management.endpoints.web.exposure.include=health,info,metrics

#logging
logging.level.org.springframework.cloud.config.server=DEBUG

logging.file.name=config-server.log


Git repository application.yml code:

some.config.value=Hello from Config Server!


Step 3: Create the Logback.xml and put the below code for the logging configuration of the Spring Boot application.

Go to src > main > resources > Logback.xml and put the below code.

XML
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>


Step 4: Open the main class, add the @EnableConfigServer annotation to activate the Spring cloud config functionality of the application.

Go to src > main >java > org.example.configserver > ConfigServerApplication and put the below code.

Java
package org.example.configserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }

}


Step 5: Run the application

Once the Spring project is completed and successfully runs as a Spring application, it will start at port 8888.


View the Logs: Once run the application that generates the logs of the application, it looks like below information.

2024-05-12 23:37:31 - Logging Provider: org.jboss.logging.Slf4jLoggerProvider found via system property
2024-05-12 23:37:31 - HV000001: Hibernate Validator 8.0.1.Final
2024-05-12 23:37:32 - Trying to load META-INF/validation.xml for XML based Validator configuration.
2024-05-12 23:37:32 - Trying to load META-INF/validation.xml via TCCL
2024-05-12 23:37:32 - Trying to load META-INF/validation.xml via Hibernate Validator's class loader
2024-05-12 23:37:32 - No META-INF/validation.xml found. Using annotation based configuration only.
2024-05-12 23:37:32 - Cannot find jakarta.persistence.Persistence on classpath. Assuming non JPA 2 environment. All properties will per default be traversable.
2024-05-12 23:37:32 - Loaded expression factory via original TCCL
2024-05-12 23:37:32 - Starting ConfigServerApplication using Java 17.0.10 with PID 12336 (C:\Users\Mahesh\Desktop\Spring-cloud-config-management\config-server\target\classes started by User in C:\Users\Mahesh\Desktop\Spring-cloud-config-management)
2024-05-12 23:37:32 - Running with Spring Boot v3.2.5, Spring v6.1.6
2024-05-12 23:37:32 - No active profile set, falling back to 1 default profile: "default"
2024-05-12 23:37:32 - Loading source class org.example.configserver.ConfigServerApplication
2024-05-12 23:37:32 - Matching URLs for reloading : [file:/C:/Users/Mahesh/Desktop/Spring-cloud-config-management/config-server/target/classes/]
2024-05-12 23:37:32 - Included patterns for restart : []
2024-05-12 23:37:32 - Excluded patterns for restart : [/spring-boot-starter-[\w-]+/, /spring-boot/(bin|build|out)/, /spring-boot-starter/(bin|build|out)/, /spring-boot-devtools/(bin|build|out)/, /spring-boot-actuator/(bin|build|out)/, /spring-boot-autoconfigure/(bin|build|out)/]
2024-05-12 23:37:32 - Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2024-05-12 23:37:32 - For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2024-05-12 23:37:32 - Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1793f8d6
2024-05-12 23:37:32 - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'
2024-05-12 23:37:32 - Creating shared instance of singleton bean 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory'
2024-05-12 23:37:32 - HV000252: Using org.hibernate.validator.internal.engine.DefaultPropertyNodeNameProvider as property node name provider.
2024-05-12 23:37:32 - HV000234: Using org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator as ValidatorFactory-scoped message interpolator.
2024-05-12 23:37:32 - HV000234: Using org.hibernate.validator.internal.engine.resolver.TraverseAllTraversableResolver as ValidatorFactory-scoped traversable resolver.
2024-05-12 23:37:32 - HV000234: Using org.hibernate.validator.internal.util.ExecutableParameterNameProvider as ValidatorFactory-scoped parameter name provider.
2024-05-12 23:37:32 - HV000234: Using org.hibernate.validator.internal.engine.DefaultClockProvider as ValidatorFactory-scoped clock provider.
2024-05-12 23:37:32 - HV000234: Using org.hibernate.validator.internal.engine.scripting.DefaultScriptEvaluatorFactory as ValidatorFactory-scoped script evaluator factory.
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'refreshScope'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'org.springframework.cloud.autoconfigure.RefreshAutoConfiguration$RefreshScopeBeanDefinitionEnhancer'
2024-05-12 23:37:34 - Generating bean factory id from names: [applicationAvailability, applicationTaskExecutor, basicErrorController, beanNameHandlerMapping, beanNameViewResolver, beansEndpoint, cachesEndpoint, characterEncodingFilter, classLoaderMetrics, classPathFileSystemWatcher, classPathRestartStrategy, clientConfigServerHealthIndicator, compositeCompatibilityVerifier, compositeDiscoveryClient, conditionEvaluationDeltaLoggingListener, conditionsReportEndpoint, configClientHealthProperties, configClientProperties, configDataContextRefresher, configServerApplication, configServerHealthIndicator, configurationPropertiesBeans, configurationPropertiesRebinder, configurationPropertiesReportEndpoint, controllerEndpointDiscoverer, controllerEndpointHandlerMapping, controllerExposeExcludePropertyEndpointFilter, conventionErrorViewResolver, defaultConfigTokenProvider, defaultEnvironmentRepository, defaultMeterObservationHandler, defaultServletHandlerMapping, defaultValidator, defaultViewResolver, defaultsBindHandlerAdvisor, discoveryClientHealthIndicator, discoveryCompositeHealthContributor, diskSpaceHealthIndicator, diskSpaceMetrics, dispatcherServlet, dispatcherServletMappingDescriptionProvider, dispatcherServletRegistration, dumpEndpoint, eagerTaskExecutorMetrics, eagerlyInitializeJmxEndpointExporter, enableConfigServerMarker, encryptionController, endpointCachingOperationInvokerAdvisor, endpointMediaTypes, endpointObjectMapper, endpointObjectMapperWebMvcConfigurer, endpointObjectNameFactory, endpointOperationParameterMapper, environmentController, environmentEncryptor, environmentEndpoint, environmentManager, environmentWatch, error, errorAttributes, errorPageCustomizer, errorPageRegistrarBeanPostProcessor, featuresEndpoint, fileDescriptorMetrics, fileSystemWatcherFactory, fileWatcher, filterMappingDescriptionProvider, flashMapManager, forceAutoProxyCreatorToUseClassProxying, formContentFilter, gitCredentialsProviderFactory, gitEnvironmentRepositoryFactory, handlerExceptionResolver, handlerFunctionAdapter, healthContributorRegistry, healthEndpoint, healthEndpointGroupMembershipValidator, healthEndpointGroups, healthEndpointGroupsBeanPostProcessor, healthEndpointWebExtension, healthEndpointWebMvcHandlerMapping, healthHttpCodeStatusMapper, healthStatusAggregator, heapDumpWebEndpoint, httpClientConnectionFactory, httpMessageConvertersRestClientCustomizer, httpRequestHandlerAdapter, inetUtils, inetUtilsProperties, infoEndpoint, jacksonObjectMapper, jacksonObjectMapperBuilder, jmxAnnotationEndpointDiscoverer, jmxIncludeExcludePropertyEndpointFilter, jmxMBeanExporter, jsonComponentModule, jsonMixinModule, jsonMixinModuleEntries, jvmCompilationMetrics, jvmGcMetrics, jvmHeapPressureMetrics, jvmInfoMetrics, jvmMemoryMetrics, jvmThreadMetrics, lifecycleProcessor, liveReloadServer, liveReloadServerEventListener, loadBalancerClientsDefaultsMappingsProvider, localeCharsetMappingsCustomizer, localeResolver, logFileWebEndpoint, logbackMetrics, loggersEndpoint, loggingRebinder, management.endpoint.configprops-org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointProperties, management.endpoint.env-org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointProperties, management.endpoint.health-org.springframework.boot.actuate.autoconfigure.health.HealthEndpointProperties, management.endpoint.logfile-org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointProperties, management.endpoints.jmx-org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointProperties, management.endpoints.web-org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties, management.endpoints.web.cors-org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties, management.health.diskspace-org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthIndicatorProperties, management.info-org.springframework.boot.actuate.autoconfigure.info.InfoContributorProperties, management.metrics-org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties, management.observations-org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties, management.server-org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties, management.simple.metrics.export-org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleProperties, managementServletContext, mappingJackson2HttpMessageConverter, mappingsEndpoint, mbeanExporter, mbeanServer, messageConverters, meterRegistryCloser, meterRegistryPostProcessor, methodValidationPostProcessor, metricsEndpoint, metricsHttpClientUriTagFilter, metricsHttpServerUriTagFilter, metricsObservationHandlerGrouping, micrometerClock, multipartConfigElement, multipartResolver, multipleJGitEnvironmentProperties, mvcContentNegotiationManager, mvcConversionService, mvcHandlerMappingIntrospector, mvcPathMatcher, mvcPatternParser, mvcResourceUrlProvider, mvcUriComponentsContributor, mvcUrlPathHelper, mvcValidator, mvcViewResolver, nativeEnvironmentRepositoryFactory, objectNamingStrategy, observabilitySchedulingConfigurer, observationRegistry, observationRegistryPostProcessor, observationRestClientCustomizer, observationRestTemplateCustomizer, optionalLiveReloadServer, org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.availability.AvailabilityHealthContributorAutoConfiguration, org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration$WebEndpointServletConfiguration, org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration, org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration, org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration, org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration, org.springframework.boot.actuate.autoconfigure.health.HealthEndpointWebExtensionConfiguration$MvcAdditionalHealthEndpointPathsConfiguration, org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration, org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.integration.IntegrationMetricsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.startup.StartupTimeMetricsListenerAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration, org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$MeterObservationHandlerConfiguration, org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$MeterObservationHandlerConfiguration$OnlyMetricsMeterObservationHandlerConfiguration, org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration$OnlyMetricsConfiguration, org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration, org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration$MeterFilterConfiguration, org.springframework.boot.actuate.autoconfigure.observation.web.client.RestClientObservationConfiguration, org.springframework.boot.actuate.autoconfigure.observation.web.client.RestTemplateObservationConfiguration, org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration, org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration$MeterFilterConfiguration, org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksObservabilityAutoConfiguration, org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration, org.springframework.boot.actuate.autoconfigure.web.exchanges.HttpExchangesEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration, org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration, org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration$ServletWebConfiguration$SpringMvcConfiguration, org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration, org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration, org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$SameManagementContextConfiguration$EnableSameManagementContextConfiguration, org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration, org.springframework.boot.autoconfigure.AutoConfigurationPackages, org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration, org.springframework.boot.autoconfigure.aop.AopAutoConfiguration, org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration, org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration, org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration, org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration, org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration, org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration, org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration, org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration, org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration, org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration, org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory, org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration, org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration, org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonMixinConfiguration, org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration, org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration, org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration, org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration, org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration, org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration, org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration, org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration, org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorBuilderConfiguration, org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$TaskExecutorConfiguration, org.springframework.boot.autoconfigure.task.TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration, org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration, org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration, org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$TaskSchedulerBuilderConfiguration, org.springframework.boot.autoconfigure.task.TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration, org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration, org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration, org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration, org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration, org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration, org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration, org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletConfiguration, org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration, org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration, org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration, org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration, org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat, org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration, org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration, org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter, org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration, org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration, org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration, org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration, org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration, org.springframework.boot.context.internalConfigurationPropertiesBinder, org.springframework.boot.context.properties.BoundConfigurationProperties, org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor, org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.methodValidationExcludeFilter, org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration, org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$LiveReloadConfiguration, org.springframework.boot.devtools.autoconfigure.LocalDevToolsAutoConfiguration$RestartConfiguration, org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor, org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration, org.springframework.cloud.autoconfigure.LifecycleMvcEndpointAutoConfiguration, org.springframework.cloud.autoconfigure.PauseResumeEndpointsConfiguration, org.springframework.cloud.autoconfigure.RefreshAutoConfiguration, org.springframework.cloud.autoconfigure.RefreshAutoConfiguration$RefreshScopeBeanDefinitionEnhancer, org.springframework.cloud.autoconfigure.RefreshEndpointAutoConfiguration, org.springframework.cloud.autoconfigure.RefreshEndpointAutoConfiguration$RefreshEndpointConfiguration, org.springframework.cloud.autoconfigure.RestartEndpointWithoutIntegrationConfiguration, org.springframework.cloud.client.CommonsClientAutoConfiguration, org.springframework.cloud.client.CommonsClientAutoConfiguration$ActuatorConfiguration, org.springframework.cloud.client.CommonsClientAutoConfiguration$DiscoveryLoadBalancerConfiguration, org.springframework.cloud.client.ReactiveCommonsClientAutoConfiguration, org.springframework.cloud.client.discovery.composite.CompositeDiscoveryClientAutoConfiguration, org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration, org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration, org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration, org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationConfiguration, org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration, org.springframework.cloud.commons.config.CommonsConfigAutoConfiguration, org.springframework.cloud.commons.security.ResourceServerTokenRelayAutoConfiguration, org.springframework.cloud.commons.security.ResourceServerTokenRelayAutoConfiguration$ResourceServerTokenRelayRegistrationAutoConfiguration, org.springframework.cloud.commons.util.UtilAutoConfiguration, org.springframework.cloud.config.client.ConfigClientAutoConfiguration, org.springframework.cloud.config.client.ConfigClientAutoConfiguration$ConfigServerHealthIndicatorConfiguration, org.springframework.cloud.config.server.config.CompositeConfiguration, org.springframework.cloud.config.server.config.ConfigServerAutoConfiguration, org.springframework.cloud.config.server.config.ConfigServerConfiguration, org.springframework.cloud.config.server.config.ConfigServerEncryptionConfiguration, org.springframework.cloud.config.server.config.ConfigServerMvcConfiguration, org.springframework.cloud.config.server.config.ConfigServerMvcConfiguration$RefreshableEnvironmentControllerConfiguration, org.springframework.cloud.config.server.config.DefaultRepositoryConfiguration, org.springframework.cloud.config.server.config.DefaultTextEncryptionAutoConfiguration, org.springframework.cloud.config.server.config.EncryptionAutoConfiguration, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration$ConfigServerActuatorConfiguration, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration$DefaultEnvironmentWatch, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration$JGitFactoryConfig, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration$JGitHttpClientConfig, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration$NativeFactoryConfig, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration$VaultFactoryConfig, org.springframework.cloud.config.server.config.EnvironmentRepositoryConfiguration$VaultHttpClientConfig, org.springframework.cloud.config.server.config.ResourceRepositoryConfiguration, org.springframework.cloud.config.server.config.VaultConfiguration, org.springframework.cloud.configuration.CompatibilityVerifierAutoConfiguration, org.springframework.context.annotation.internalAutowiredAnnotationProcessor, org.springframework.context.annotation.internalCommonAnnotationProcessor, org.springframework.context.annotation.internalConfigurationAnnotationProcessor, org.springframework.context.event.internalEventListenerFactory, org.springframework.context.event.internalEventListenerProcessor, parameterNamesModule, pathMappedEndpoints, pingHealthContributor, preserveErrorControllerTargetClassPostProcessor, processorMetrics, propertiesMeterFilter, propertiesObservationFilter, propertySourcesPlaceholderConfigurer, refreshEndpoint, refreshEventListener, refreshScope, refreshScopeHealthIndicator, refreshScopeLifecycle, requestContextFilter, requestMappingHandlerAdapter, requestMappingHandlerMapping, resourceController, resourceControllerAdvice, resourceHandlerMapping, resourceRepository, restClientBuilder, restClientBuilderConfigurer, restClientSsl, restTemplateBuilder, restTemplateBuilderConfigurer, restartingClassPathChangedEventListener, routerFunctionMapping, scheduledTasksEndpoint, scopedTarget.environmentController, searchPathCompositeEnvironmentRepository, server-org.springframework.boot.autoconfigure.web.ServerProperties, servletEndpointDiscoverer, servletEndpointRegistrar, servletExposeExcludePropertyEndpointFilter, servletMappingDescriptionProvider, servletWebChildContextFactory, servletWebServerFactoryCustomizer, simpleAsyncTaskExecutorBuilder, simpleAsyncTaskSchedulerBuilder, simpleConfig, simpleControllerHandlerAdapter, simpleDiscoveryClient, simpleDiscoveryProperties, simpleMeterRegistry, singleTextEncryptorLocator, sleuthPresentVerifier, spring.cloud.compatibility-verifier-org.springframework.cloud.configuration.CompatibilityVerifierProperties, spring.cloud.config.server-org.springframework.cloud.config.server.config.ConfigServerProperties, spring.cloud.config.server.aws-secretsmanager-org.springframework.cloud.config.server.environment.AwsSecretsManagerEnvironmentProperties, spring.cloud.config.server.awsparamstore-org.springframework.cloud.config.server.environment.AwsParameterStoreEnvironmentProperties, spring.cloud.config.server.awss3-org.springframework.cloud.config.server.environment.AwsS3EnvironmentProperties, spring.cloud.config.server.credhub-org.springframework.cloud.config.server.environment.CredhubEnvironmentProperties, spring.cloud.config.server.gcp-secret-manager-org.springframework.cloud.config.server.environment.GoogleSecretManagerEnvironmentProperties, spring.cloud.config.server.jdbc-org.springframework.cloud.config.server.environment.JdbcEnvironmentProperties, spring.cloud.config.server.native-org.springframework.cloud.config.server.environment.NativeEnvironmentProperties, spring.cloud.config.server.redis-org.springframework.cloud.config.server.environment.RedisEnvironmentProperties, spring.cloud.config.server.svn-org.springframework.cloud.config.server.environment.SvnKitEnvironmentProperties, spring.cloud.config.server.vault-org.springframework.cloud.config.server.environment.VaultEnvironmentProperties, spring.cloud.discovery.client.health-indicator-org.springframework.cloud.client.discovery.health.DiscoveryClientHealthIndicatorProperties, spring.cloud.refresh-org.springframework.cloud.autoconfigure.RefreshAutoConfiguration$RefreshProperties, spring.cloud.service-registry.auto-registration-org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties, spring.devtools-org.springframework.boot.devtools.autoconfigure.DevToolsProperties, spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties, spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties, spring.jmx-org.springframework.boot.autoconfigure.jmx.JmxProperties, spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties, spring.mvc-org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties, spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties, spring.sql.init-org.springframework.boot.autoconfigure.sql.init.SqlInitializationProperties, spring.ssl-org.springframework.boot.autoconfigure.ssl.SslProperties, spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties, spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties, spring.web-org.springframework.boot.autoconfigure.web.WebProperties, springApplicationAdminRegistrar, springBootVersionVerifier, springCloudCommonsFeatures, sslBundleRegistry, sslPropertiesSslBundleRegistrar, standardJacksonObjectMapperBuilderCustomizer, startupTimeMetrics, stringHttpMessageConverter, taskExecutorBuilder, taskSchedulerBuilder, themeResolver, threadPoolTaskExecutorBuilder, threadPoolTaskSchedulerBuilder, tomcatMetricsBinder, tomcatServletWebServerFactory, tomcatServletWebServerFactoryCustomizer, tomcatWebServerFactoryCustomizer, uptimeMetrics, vaultEnvironmentRepositoryFactory, vaultRestTemplateFactory, viewControllerHandlerMapping, viewNameTranslator, viewResolver, webEndpointDiscoverer, webEndpointPathMapper, webEndpointServletHandlerMapping, webExposeExcludePropertyEndpointFilter, webMvcObservationFilter, webServerFactoryCustomizerBeanPostProcessor, websocketServletWebServerCustomizer, welcomePageHandlerMapping, welcomePageNotAcceptableHandlerMapping]
2024-05-12 23:37:34 - BeanFactory id=8ec3f7d2-641e-3cf5-8705-30f5c712d221
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'propertySourcesPlaceholderConfigurer'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerProcessor'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'preserveErrorControllerTargetClassPostProcessor'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'forceAutoProxyCreatorToUseClassProxying'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerFactory'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProcessor'
2024-05-12 23:37:34 - Creating shared instance of singleton bean 'org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor'


Setup the Client-application

Step 1: Create a spring project using spring initializer and add the below required dependencies.

Dependencies:

  • Spring Web
  • Spring Dev Tools
  • Lombok
  • Spring Cloud Config Client

After creating the Spring project, the file structure will be like below.


Step 2: Open the application.properties file and add the configuring the server port and import git uri configuration.

spring.application.name=client-application

spring.cloud.config.import=optional:configserver:http://localhost:8888


Step 3: Open the main and create the RESTAPI endpoint of the application.

Go to src > main >java > org.example.clientapplication > ClientApplication and put the below code.

Java
package org.example.clientapplication;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class ClientApplication {

    @Value("${some.config.value}")
    private String configValue;

    @GetMapping("/")
    public String readConfig() {
        return "Config Value: " + configValue;
    }

    public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class, args);
    }
}


Step 4: Run the application

Once the Spring project is completed and successfully runs as a Spring application, it will start at port 8080.


Managing Configuration Testing:

Endpoint API:

GET http://localhost:8080/

Postman Output:


Health Endpoint:

http://localhost:8888/actuator/health

Output:


Metrics Endpoint:

http://localhost:8888/actuator/metrics

Output:


This example demonstrates the implementation of the configuration for the monitoring and logging of the microservices with Spring Cloud Config of the Spring Boot application.



Monitoring and Logging in Spring Cloud Config Server

In Microservices, Spring Cloud Server can play a crucial role in Spring microservices by providing centralized configuration management. It helps externalize configuration properties across all environments for applications, making them easier to manage and update without redeploying or restarting the applications. Monitoring and logging in the Spring Cloud Config Server are essential for understanding its operational health, troubleshooting issues, and ensuring that configuration changes propagate correctly to the client applications.

Monitoring and logging are two critical components of managing the health and reliability of the Spring Cloud Config Server. It enables us to track the behavior of the server, analyze its performance, and respond proactively to the potential issues of the application.

Similar Reads

Monitoring

Monitoring can involve the continuous observation of the system’s operational status. In the Spring Cloud Config Server context, this generally focuses on the metrics that represent the server’s health, performance, and usage. Effective monitoring can help detect and diagnose system anomalies, and performance bottlenecks and assist in capacity planning....

Logging

Logging is the process of the recording information about the operations and events within the system. This information is critical for the debugging issues, auditing the system use, and understanding the operational flow of the Config Server....

Integration with Spring Boot

Spring Cloud Config Server is the part of the Spring ecosystem, integrates the smoothly with Spring Boot Actuator for the monitoring and with the common logging framework like SLF4J and Logback for logging:...

Implementation of Monitoring and Logging in Spring Cloud Config Server

Below is the implementation of Monitoring and Logging in Spring Cloud Config Server....

Contact Us