aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsolsson <solsson@gmail.com>2018-02-03 14:37:31 +0100
committerGitHub <noreply@github.com>2018-02-03 14:37:31 +0100
commit5a2b8c72d43c82c4333c3f523e23bbbc17833fc9 (patch)
treec814157ffafb490a50fcec55dc8c7dbdba91994b
parent35aa5198a067bb133c8f27886b3e5bfd117803a1 (diff)
parenta564ed271d95058f23d3230042865b918b03214d (diff)
downloadkubernetes-kafka-5a2b8c72d43c82c4333c3f523e23bbbc17833fc9.tar.gz
kubernetes-kafka-5a2b8c72d43c82c4333c3f523e23bbbc17833fc9.tar.bz2
kubernetes-kafka-5a2b8c72d43c82c4333c3f523e23bbbc17833fc9.zip
Merge pull request #128 from Yolean/metrics-jmx-for-brokers
Add Kafka Prometheus metrics export
-rw-r--r--prometheus/10-metrics-config.yml45
-rw-r--r--prometheus/50-kafka-jmx-exporter-patch.yml42
2 files changed, 87 insertions, 0 deletions
diff --git a/prometheus/10-metrics-config.yml b/prometheus/10-metrics-config.yml
new file mode 100644
index 0000000..345e192
--- /dev/null
+++ b/prometheus/10-metrics-config.yml
@@ -0,0 +1,45 @@
+kind: ConfigMap
+metadata:
+ name: jmx-config
+ namespace: kafka
+apiVersion: v1
+data:
+
+ jmx-kafka-prometheus.yml: |+
+ lowercaseOutputName: true
+ jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:5555/jmxrmi
+ ssl: false
+ whitelistObjectNames: ["kafka.server:*","kafka.controller:*","java.lang:*"]
+ rules:
+ - pattern : kafka.server<type=ReplicaFetcherManager, name=MaxLag, clientId=(.+)><>Value
+ - pattern : kafka.server<type=BrokerTopicMetrics, name=(BytesInPerSec|BytesOutPerSec|MessagesInPerSec), topic=(.+)><>OneMinuteRate
+ - pattern : kafka.server<type=KafkaRequestHandlerPool, name=RequestHandlerAvgIdlePercent><>OneMinuteRate
+ - pattern : kafka.server<type=Produce><>queue-size
+ - pattern : kafka.server<type=ReplicaManager, name=(PartitionCount|UnderReplicatedPartitions)><>(Value|OneMinuteRate)
+ - pattern : kafka.server<type=controller-channel-metrics, broker-id=(.+)><>(.*)
+ - pattern : kafka.server<type=socket-server-metrics, networkProcessor=(.+)><>(.*)
+ - pattern : kafka.server<type=Fetch><>queue-size
+ - pattern : kafka.server<type=SessionExpireListener, name=(.+)><>OneMinuteRate
+ - pattern : kafka.controller<type=KafkaController, name=(.+)><>Value
+ - pattern : java.lang<type=OperatingSystem><>SystemCpuLoad
+ - pattern : java.lang<type=Memory><HeapMemoryUsage>used
+ - pattern : java.lang<type=OperatingSystem><>FreePhysicalMemorySize
+
+ jmx-zookeeper-prometheus.yaml: |+
+ rules:
+ - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d)><>(\\w+)"
+ name: "zookeeper_$2"
+ - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d), name1=replica.(\\d)><>(\\w+)"
+ name: "zookeeper_$3"
+ labels:
+ replicaId: "$2"
+ - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d), name1=replica.(\\d), name2=(\\w+)><>(\\w+)"
+ name: "zookeeper_$4"
+ labels:
+ replicaId: "$2"
+ memberType: "$3"
+ - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d), name1=replica.(\\d), name2=(\\w+), name3=(\\w+)><>(\\w+)"
+ name: "zookeeper_$4_$5"
+ labels:
+ replicaId: "$2"
+ memberType: "$3" \ No newline at end of file
diff --git a/prometheus/50-kafka-jmx-exporter-patch.yml b/prometheus/50-kafka-jmx-exporter-patch.yml
new file mode 100644
index 0000000..7876ef4
--- /dev/null
+++ b/prometheus/50-kafka-jmx-exporter-patch.yml
@@ -0,0 +1,42 @@
+# meant to be applied using
+# kubectl --namespace kafka patch statefulset kafka --patch "$(cat prometheus/50-kafka-jmx-exporter-patch.yml )"
+apiVersion: apps/v1beta2
+kind: StatefulSet
+metadata:
+ name: kafka
+ namespace: kafka
+spec:
+ template:
+ metadata:
+ annotations:
+ prometheus.io/scrape: "true"
+ prometheus.io/port: "5556"
+ spec:
+ containers:
+ - name: metrics
+ image: solsson/kafka-prometheus-jmx-exporter@sha256:a23062396cd5af1acdf76512632c20ea6be76885dfc20cd9ff40fb23846557e8
+ command:
+ - java
+ - -XX:+UnlockExperimentalVMOptions
+ - -XX:+UseCGroupMemoryLimitForHeap
+ - -XX:MaxRAMFraction=1
+ - -XshowSettings:vm
+ - -jar
+ - jmx_prometheus_httpserver.jar
+ - "5556"
+ - /etc/jmx-kafka/jmx-kafka-prometheus.yml
+ ports:
+ - containerPort: 5556
+ resources:
+ requests:
+ cpu: 0m
+ memory: 60Mi
+ limits:
+ memory: 120Mi
+ volumeMounts:
+ - name: jmx-config
+ mountPath: /etc/jmx-kafka
+ volumes:
+ - name: jmx-config
+ configMap:
+ name: jmx-config