deviceinsight / kafka-health-check

Health Check for Apache Kafka
Apache License 2.0
33 stars 16 forks source link
health-check kafka spring spring-boot-actuator

= Kafka Health Check

:uri-build-status: https://travis-ci.org/deviceinsight/kafka-health-check :img-build-status: https://api.travis-ci.org/deviceinsight/kafka-health-check.svg?branch=master

image:{img-build-status}[Build Status Badge,link={uri-build-status}]

This library provides a kafka health check for spring boot actuator.

== Usage

Add the following dependency to your pom.xml

[source,xml] ....

com.deviceinsight.kafka kafka-health-check 1.3.0

....

In the same maven module you can configure the topic, poll timeouts, subscription timeouts and the receive timeouts in the application.yml

An example for an application.yaml is:

[source,yaml] .... kafka: health: topic: health-checks sendReceiveTimeout: 2.5s pollTimeout: 200ms subscriptionTimeout: 5s ....

The values shown are the defaults.

IMPORTANT: Make sure the configured health check topic exists!

[source,java] .... @Bean @ConfigurationProperties("kafka.health") public KafkaHealthProperties kafkaHealthProperties() { return new KafkaHealthProperties(); } ....

[source,java] .... @Bean public KafkaConsumingHealthIndicator kafkaConsumingHealthIndicator(KafkaHealthProperties kafkaProperties, KafkaProperties processingProperties) { return new KafkaConsumingHealthIndicator(kafkaHealthProperties, processingProperties.buildConsumerProperties(), processingProperties.buildProducerProperties()); } ....

Now if you call the actuator endpoint actuator/health you should see the following output:

[source,json] .... { "status" : "UP", "details" : { "kafkaConsuming" : { "status" : "UP" } } } ....

== Configuration

|=== |Property |Default |Description

|kafka.health.topic |health-checks | Topic to subscribe to |kafka.health.sendReceiveTimeout |2.5s | The maximum time, given as https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-conversion-duration[Duration], to wait for sending and receiving the message. |kafka.health.pollTimeout |200ms | The time, given as https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-conversion-duration[Duration], spent fetching the data from the topic |kafka.health.subscriptionTimeout |5s | The maximum time, given as https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-conversion-duration[Duration], to wait for subscribing to topic |kafka.health.cache.maximumSize |200 | Specifies the maximum number of entries the cache may contain.

|===

== Releasing

Creating a new release involves the following steps:

. ./mvnw gitflow:release-start gitflow:release-finish . git push origin master . git push --tags . git push origin develop

In order to deploy the release to Maven Central, you need to create an account at https://issues.sonatype.org and configure your account in ~/.m2/settings.xml:

[source,xml] ....

ossrh your-jira-id your-jira-pwd

....

The account also needs access to the project on Maven Central. This can be requested by another project member.

Then check out the release you want to deploy (git checkout x.y.z) and run ./mvnw deploy -Prelease.