use of io.strimzi.api.kafka.model.JmxPrometheusExporterMetricsBuilder in project strimzi by strimzi.
the class MetricsIsolatedST method testKafkaMetricsSettings.
/**
* 1. Update metrics form whatever it is to @metricsConfigYaml in spec.kafka.metricsConfig
* 2. Check, whether the metrics ConfigMap is changed
* 3. Updates ConfigMap linked as metrics on
* 4. Check, whether the metrics ConfigMap is changed
*/
@ParallelTest
void testKafkaMetricsSettings() {
String metricsConfigJson = "{\"lowercaseOutputName\":true}";
String metricsConfigYaml = "lowercaseOutputName: true";
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true);
ConfigMap externalMetricsCm = new ConfigMapBuilder().withData(Collections.singletonMap(Constants.METRICS_CONFIG_YAML_NAME, metricsConfigYaml)).withNewMetadata().withName("external-metrics-cm").withNamespace(SECOND_NAMESPACE).endMetadata().build();
kubeClient().getClient().configMaps().inNamespace(SECOND_NAMESPACE).createOrReplace(externalMetricsCm);
// spec.kafka.metrics -> spec.kafka.jmxExporterMetrics
ConfigMapKeySelector cmks = new ConfigMapKeySelectorBuilder().withName("external-metrics-cm").withKey(Constants.METRICS_CONFIG_YAML_NAME).build();
JmxPrometheusExporterMetrics jmxPrometheusExporterMetrics = new JmxPrometheusExporterMetricsBuilder().withNewValueFrom().withConfigMapKeyRef(cmks).endValueFrom().build();
KafkaResource.replaceKafkaResourceInSpecificNamespace(SECOND_CLUSTER, k -> {
k.getSpec().getKafka().setMetricsConfig(jmxPrometheusExporterMetrics);
}, SECOND_NAMESPACE);
PodUtils.verifyThatRunningPodsAreStable(SECOND_NAMESPACE, SECOND_CLUSTER);
ConfigMap actualCm = kubeClient(SECOND_NAMESPACE).getConfigMap(KafkaResources.kafkaMetricsAndLogConfigMapName(SECOND_CLUSTER));
assertThat(actualCm.getData().get(Constants.METRICS_CONFIG_JSON_NAME), is(metricsConfigJson));
// update metrics
ConfigMap externalMetricsUpdatedCm = new ConfigMapBuilder().withData(Collections.singletonMap(Constants.METRICS_CONFIG_YAML_NAME, metricsConfigYaml.replace("true", "false"))).withNewMetadata().withName("external-metrics-cm").withNamespace(SECOND_NAMESPACE).endMetadata().build();
kubeClient().getClient().configMaps().inNamespace(SECOND_NAMESPACE).createOrReplace(externalMetricsUpdatedCm);
PodUtils.verifyThatRunningPodsAreStable(SECOND_NAMESPACE, SECOND_CLUSTER);
actualCm = kubeClient(SECOND_NAMESPACE).getConfigMap(KafkaResources.kafkaMetricsAndLogConfigMapName(SECOND_CLUSTER));
assertThat(actualCm.getData().get(Constants.METRICS_CONFIG_JSON_NAME), is(metricsConfigJson.replace("true", "false")));
}
use of io.strimzi.api.kafka.model.JmxPrometheusExporterMetricsBuilder in project strimzi by strimzi.
the class KafkaConnectClusterTest method testMetricsParsingFromConfigMap.
@ParallelTest
public void testMetricsParsingFromConfigMap() {
MetricsConfig metrics = new JmxPrometheusExporterMetricsBuilder().withNewValueFrom().withConfigMapKeyRef(new ConfigMapKeySelectorBuilder().withName("my-metrics-configuration").withKey("config.yaml").build()).endValueFrom().build();
KafkaConnect kafkaConnect = new KafkaConnectBuilder(this.resource).editSpec().withMetricsConfig(metrics).endSpec().build();
KafkaConnectCluster kc = KafkaConnectCluster.fromCrd(Reconciliation.DUMMY_RECONCILIATION, kafkaConnect, VERSIONS);
assertThat(kc.isMetricsEnabled(), is(true));
assertThat(kc.getMetricsConfigInCm(), is(metrics));
}
use of io.strimzi.api.kafka.model.JmxPrometheusExporterMetricsBuilder in project strimzi by strimzi.
the class KafkaMirrorMaker2ClusterTest method testMetricsParsingFromConfigMap.
@ParallelTest
public void testMetricsParsingFromConfigMap() {
MetricsConfig metrics = new JmxPrometheusExporterMetricsBuilder().withNewValueFrom().withConfigMapKeyRef(new ConfigMapKeySelectorBuilder().withName("my-metrics-configuration").withKey("config.yaml").build()).endValueFrom().build();
KafkaMirrorMaker2 kafkaMirrorMaker2 = new KafkaMirrorMaker2Builder(this.resource).editSpec().withMetricsConfig(metrics).endSpec().build();
KafkaMirrorMaker2Cluster kmm = KafkaMirrorMaker2Cluster.fromCrd(Reconciliation.DUMMY_RECONCILIATION, kafkaMirrorMaker2, VERSIONS);
assertThat(kmm.isMetricsEnabled(), is(true));
assertThat(kmm.getMetricsConfigInCm(), is(metrics));
}
use of io.strimzi.api.kafka.model.JmxPrometheusExporterMetricsBuilder in project strimzi by strimzi.
the class KafkaTemplates method kafkaWithMetricsAndCruiseControlWithMetrics.
public static KafkaBuilder kafkaWithMetricsAndCruiseControlWithMetrics(String name, int kafkaReplicas, int zookeeperReplicas) {
Kafka kafka = getKafkaFromYaml(Constants.PATH_TO_KAFKA_METRICS_CONFIG);
ConfigMap kafkaMetricsCm = TestUtils.configMapFromYaml(Constants.PATH_TO_KAFKA_METRICS_CONFIG, "kafka-metrics");
KubeClusterResource.kubeClient().getClient().configMaps().inNamespace(kubeClient().getNamespace()).createOrReplace(kafkaMetricsCm);
ConfigMap zkMetricsCm = TestUtils.configMapFromYaml(Constants.PATH_TO_KAFKA_METRICS_CONFIG, "kafka-metrics");
KubeClusterResource.kubeClient().getClient().configMaps().inNamespace(kubeClient().getNamespace()).createOrReplace(zkMetricsCm);
ConfigMap ccCm = new ConfigMapBuilder().withApiVersion("v1").withNewMetadata().withName("cruise-control-metrics-test").withLabels(Collections.singletonMap("app", "strimzi")).endMetadata().withData(Collections.singletonMap("metrics-config.yml", "lowercaseOutputName: true\n" + "rules:\n" + "- pattern: kafka.cruisecontrol<name=(.+)><>(\\w+)\n" + " name: kafka_cruisecontrol_$1_$2\n" + " type: GAUGE")).build();
KubeClusterResource.kubeClient().getClient().configMaps().inNamespace(kubeClient().getNamespace()).createOrReplace(ccCm);
ConfigMapKeySelector cmks = new ConfigMapKeySelectorBuilder().withName("cruise-control-metrics-test").withKey("metrics-config.yml").build();
JmxPrometheusExporterMetrics jmxPrometheusExporterMetrics = new JmxPrometheusExporterMetricsBuilder().withNewValueFrom().withConfigMapKeyRef(cmks).endValueFrom().build();
return defaultKafka(kafka, name, kafkaReplicas, zookeeperReplicas).editSpec().withNewKafkaExporter().endKafkaExporter().withNewCruiseControl().withMetricsConfig(jmxPrometheusExporterMetrics).endCruiseControl().endSpec();
}
use of io.strimzi.api.kafka.model.JmxPrometheusExporterMetricsBuilder in project strimzi-kafka-operator by strimzi.
the class KafkaClusterTest method testMetricsParsingFromConfigMap.
@ParallelTest
public void testMetricsParsingFromConfigMap() {
MetricsConfig metrics = new JmxPrometheusExporterMetricsBuilder().withNewValueFrom().withConfigMapKeyRef(new ConfigMapKeySelectorBuilder().withName("my-metrics-configuration").withKey("config.yaml").build()).endValueFrom().build();
Kafka kafkaAssembly = new KafkaBuilder(ResourceUtils.createKafka(namespace, cluster, replicas, image, healthDelay, healthTimeout)).editSpec().editKafka().withMetricsConfig(metrics).endKafka().endSpec().build();
KafkaCluster kc = KafkaCluster.fromCrd(Reconciliation.DUMMY_RECONCILIATION, kafkaAssembly, VERSIONS);
assertThat(kc.isMetricsEnabled(), is(true));
assertThat(kc.getMetricsConfigInCm(), is(metrics));
}
Aggregations