Configuration

Confluent Cloud

Kpow works out of the box with Confluent Cloud, simply follow our Kafka cluster configuration documentation to get started.

Extra configuration is required to display disk information related to your clusters, or to monitor multiple Confluent Cloud clusters that share the same bootstrap url.

Confluent Cloud Metrics API integration

Kpow retrieves the following information via the Confluent Metrics API.

  • Broker disk information (io.confluent.kafka.server/retained_bytes)
  • Active connection count (io.confluent.kafka.server/active_connection_count)

Kpow requires this integration to show disk information (both topic and broker) as Confluent Cloud does not support the Kafka AdminClient function that normally returns this data.

Create a Cloud API Key

To enable this integration, first create a new API key in Confluent Cloud.

Please Note: From the Confluent Cloud Metrics documentation:

You must use a Cloud API Key to communicate with the Metrics API. Using the Cluster API Key that is used to communicate with Kafka causes an authentication error.

Next, add these additional environment variables to your Kpow's deployment:

CONFLUENT_API_KEY=XXXYYYZZZZ
CONFLUENT_API_SECRET=XXXYYYZZZZYYYZZZZ

Kpow will now collect telemetry about your Confluent Cloud cluster using the Metrics API. Once configured disk metrics/stats will start appearing in Kpow's UI.

Confluent Cloud metrics will also be available via Kpow's Prometheus integration.

API limitations

Confluent Cloud's metrics API has the following limitations:

  • Maximum of 50 requests per minute per IP address
  • Maximum of 1000 results returned per metrics query

By default, Kpow will scrape disk information for all topic partitions. Given Confluent Cloud's imposed limitations it may not be feasible to query at a topic-partition granularity. For example, if you have over 50, 000 partitions in your cluster, you will exceed the imposed rate limiting.

Because of these limitations, telemetry gathered using Confluent Cloud's metrics API will not be available when in Live mode.

Configuration

CONFLUENT_DISK_MODE

To get around the API limitations imposed by Confluent Cloud's metrics API, Kpow has an additional environment variable: CONFLUENT_DISK_MODE.

Currently, two modes are supported:

  • COMPLETE (default): data is queried at a topic-partition granularity, all replica disk information is complete.
  • INFERRED: data is queried at a topic granularity. Topic-partition replica disk information is estimated based on other Kpow telemetry (number of messages in partition, average size of record, etc). Replica disk information at a topic granularity is complete.

If you are bumping up against any of the Confluent Cloud API limitations, it is recommended to set CONFLUENT_DISK_MODE=INFERRED if you are comfortable with the topic-partition replica disk data being estimated.

CONFLUENT_METRICS_URL

If you are using the self-managed Confluent Platform, you can set CONFLUENT_METRICS_URL=https://my-metrics-endpoint.

The default metrics endpoint is https://api.telemetry.confluent.cloud/v2/metrics/cloud/query

CONFLUENT_PARALLELISM

Specifies the number of parallel HTTP requests made to the Metrics API when collecting disk telemetry. Defaults to 8.

Multi-tenant Confluent Cloud

To connect to two clusters that share the same BOOTSTRAP , but are accessed with different auth credentials, provide a unique CLUSTER_ID environment variable for each cluster definition, for example:

BOOTSTRAP=pkc-5nym1.us-east-1.aws.confluent.cloud:9092
CLUSTER_ID=confluent-cloud-dev
SECURITY_PROTOCOL=SASL_SSL
SASL_MECHANISM=PLAIN
SASL_JAAS_CONFIG=org.apache.kafka.common.security.plain.PlainLoginModule required username="user-1" password="pass-1";
SSL_ENDPOINT_IDENTIFICATION_ALGORITHM=https
CONFLUENT_API_KEY=XXXYYYZZZZ
CONFLUENT_API_SECRET=XXXYYYZZZZYYYZZZZ

BOOTSTRAP_2=pkc-5nym1.us-east-1.aws.confluent.cloud:9092
CLUSTER_ID_2=confluent-cloud-stage
SECURITY_PROTOCOL_2=SASL_SSL
SASL_MECHANISM_2=PLAIN
SASL_JAAS_CONFIG_2=org.apache.kafka.common.security.plain.PlainLoginModule required username="user-2" password="pass-2";
SSL_ENDPOINT_IDENTIFICATION_ALGORITHM_2=https
CONFLUENT_API_KEY_2=XXXYYYZZZZ
CONFLUENT_API_SECRET_2=XXXYYYZZZZYYYZZZZ

Note: the CLUSTER_ID environment variable must be unique across all clusters defined in Kpow, and can be any unique identifier (eg, the string confluent-cloud-stage)