Skip to content

Commit

Permalink
kafka_cluster_with_monitoring
Browse files Browse the repository at this point in the history
  • Loading branch information
xBazilio committed Jun 5, 2021
1 parent eb46f5c commit 715e8d9
Show file tree
Hide file tree
Showing 4 changed files with 180 additions and 0 deletions.
24 changes: 24 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,50 @@ services:
volumes:
- "$PWD/kafka_distr:/opt/kafka"
- "$PWD/zookeeper/data/zoo1:/opt/zookeeper"
- "$PWD/prometheus:/opt/prometheus"
hostname: zoo1
networks:
- kafka-lab
environment:
JMX_PORT: 9093
EXTRA_ARGS: "-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.15.0.jar=16100:/opt/prometheus/zookeeper.yml"
zoo2:
build: zookeeper
ports:
- "127.0.0.12:2180:2180"
volumes:
- "$PWD/kafka_distr:/opt/kafka"
- "$PWD/zookeeper/data/zoo2:/opt/zookeeper"
- "$PWD/prometheus:/opt/prometheus"
hostname: zoo2
networks:
- kafka-lab
environment:
JMX_PORT: 9093
EXTRA_ARGS: "-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.15.0.jar=16100:/opt/prometheus/zookeeper.yml"
zoo3:
build: zookeeper
ports:
- "127.0.0.13:2180:2180"
volumes:
- "$PWD/kafka_distr:/opt/kafka"
- "$PWD/zookeeper/data/zoo3:/opt/zookeeper"
- "$PWD/prometheus:/opt/prometheus"
hostname: zoo3
networks:
- kafka-lab
environment:
JMX_PORT: 9093
EXTRA_ARGS: "-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.15.0.jar=16100:/opt/prometheus/zookeeper.yml"

kafka1:
build: kafka_server
ports:
- "127.0.0.21:16100:16100"
volumes:
- "$PWD/kafka_distr:/opt/kafka"
- "$PWD/kafka_server/logs1:/logs/kafka"
- "$PWD/prometheus:/opt/prometheus"
depends_on:
- zoo1
- zoo2
Expand All @@ -45,12 +60,16 @@ services:
- kafka-lab
environment:
JMX_PORT: 9093
EXTRA_ARGS: "-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.15.0.jar=16100:/opt/prometheus/kafka_broker.yml"
command: ["bin/kafka-server-start.sh", "config/server.properties", "--override", "broker.id=1"]
kafka2:
build: kafka_server
ports:
- "127.0.0.22:16100:16100"
volumes:
- "$PWD/kafka_distr:/opt/kafka"
- "$PWD/kafka_server/logs2:/logs/kafka"
- "$PWD/prometheus:/opt/prometheus"
depends_on:
- zoo1
- zoo2
Expand All @@ -60,12 +79,16 @@ services:
- kafka-lab
environment:
JMX_PORT: 9093
EXTRA_ARGS: "-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.15.0.jar=16100:/opt/prometheus/kafka_broker.yml"
command: ["bin/kafka-server-start.sh", "config/server.properties", "--override", "broker.id=2"]
kafka3:
build: kafka_server
ports:
- "127.0.0.23:16100:16100"
volumes:
- "$PWD/kafka_distr:/opt/kafka"
- "$PWD/kafka_server/logs3:/logs/kafka"
- "$PWD/prometheus:/opt/prometheus"
depends_on:
- zoo1
- zoo2
Expand All @@ -75,6 +98,7 @@ services:
- kafka-lab
environment:
JMX_PORT: 9093
EXTRA_ARGS: "-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.15.0.jar=16100:/opt/prometheus/kafka_broker.yml"
command: ["bin/kafka-server-start.sh", "config/server.properties", "--override", "broker.id=3"]

phpfront1:
Expand Down
Binary file added prometheus/jmx_prometheus_javaagent-0.15.0.jar
Binary file not shown.
69 changes: 69 additions & 0 deletions prometheus/kafka_broker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
lowercaseOutputName: true
rules:
# Special cases and very specific rules
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Value
name: kafka_server_$1_$2
type: GAUGE
labels:
clientId: "$3"
topic: "$4"
partition: "$5"
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), brokerHost=(.+), brokerPort=(.+)><>Value
name: kafka_server_$1_$2
type: GAUGE
labels:
clientId: "$3"
broker: "$4:$5"

- pattern : kafka.server<type=KafkaRequestHandlerPool, name=RequestHandlerAvgIdlePercent><>OneMinuteRate
name: kafka_server_kafkarequesthandlerpool_requesthandleravgidlepercent_total
type: GAUGE

- pattern : kafka.server<type=socket-server-metrics, clientSoftwareName=(.+), clientSoftwareVersion=(.+), listener=(.+), networkProcessor=(.+)><>connections
name: kafka_server_socketservermetrics_connections
type: GAUGE
labels:
client_software_name: "$1"
client_software_version: "$2"
listener: "$3"
network_processor: "$4"

- pattern : 'kafka.server<type=socket-server-metrics, listener=(.+), networkProcessor=(.+)><>(.+):'
name: kafka_server_socketservermetrics_$3
type: GAUGE
labels:
listener: "$1"
network_processor: "$2"

# Count and Value
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>(Count|Value)
name: kafka_$1_$2_$3
labels:
"$4": "$5"
"$6": "$7"
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.+)><>(Count|Value)
name: kafka_$1_$2_$3
labels:
"$4": "$5"
- pattern: kafka.(.*)<type=(.+), name=(.+)><>(Count|Value)
name: kafka_$1_$2_$3

# Percentile
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.*), (.+)=(.+)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
"$6": "$7"
quantile: "0.$8"
- pattern: kafka.(.*)<type=(.+), name=(.+), (.+)=(.*)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
quantile: "0.$6"
- pattern: kafka.(.*)<type=(.+), name=(.+)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
quantile: "0.$4"
87 changes: 87 additions & 0 deletions prometheus/zookeeper.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
lowercaseOutputName: true
lowercaseOutputLabelNames: true
whitelistObjectNames:
- org.apache.ZooKeeperService:name3=Connections,*
- org.apache.ZooKeeperService:name3=InMemoryDataTree,*
- org.apache.ZooKeeperService:name0=*,name1=replica*,name2=*
- org.apache.ZooKeeperService:name0=*,name1=replica*
- org.apache.ZooKeeperService:name0=*
# If you are running a Standalone Zookeeper, the whitelist objects below would help.
# If the zookeeper has a quorum, no need to worry about anything else.
- org.apache.ZooKeeperService:name1=InMemoryDataTree,name0=*
- org.apache.ZooKeeperService:name0=*,name1=Connections,name2=*,name3=*
rules:
# Below rule applies for Zookeeper Cluster having multiple ZK nodes
# org.apache.ZooKeeperService:name0=*,name3=Connections,name1=*,name2=*,name4=*,name5=*
- pattern: "org.apache.ZooKeeperService<name0=(.+), name1=replica.(\\d+), name2=(\\w+), name3=Connections, name4=(.+), name5=(.+)><>([^:]+)"
name: zookeeper_connections_$6
labels:
server_name: "$1"
server_id: $2
client_address: "$4"
connection_id: "$5"
member_type: "$3"
- pattern: "org.apache.ZooKeeperService<name0=(.+), name1=replica.(\\d+), name2=(\\w+)><>(\\w+): (\\d+)"
name: zookeeper_$4
labels:
server_name: "$1"
server_id: $2
member_type: "$3"
# Below rule applies for Zookeeper Cluster having multiple ZK nodes
# org.apache.ZooKeeperService:name0=*,name3=InMemoryDataTree
- pattern: "org.apache.ZooKeeperService<name0=(.+), name1=replica.(\\d+), name2=(\\w+), name3=InMemoryDataTree><>(WatchCount|NodeCount): (\\d+)"
name: zookeeper_inmemorydatatree_$4
type: GAUGE
labels:
server_name: "$1"
server_id: $2
member_type: "$3"
# Below rule applies for Zookeeper Cluster having multiple ZK nodes
# org.apache.ZooKeeperService:name0=*,name1=replica*
- pattern: "org.apache.ZooKeeperService<name0=(.+), name1=replica.(\\d+)><>(.+): (.+)"
name: zookeeper_status
type: UNTYPED
value: 1
labels:
server_name: "$1"
server_id: $2
$3: $4
# Below rule applies for Zookeeper Cluster having multiple ZK nodes
# org.apache.ZooKeeperService:name0=*
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+)><>(QuorumSize): (\\d+)"
name: zookeeper_status_$2
type: GAUGE
labels:
server_id: $1
# ###########################################################################
# ###########################################################################
# Below rule applies to a Standalone ZK
# org.apache.ZooKeeperService:name0=*,name1=InMemoryDataTree
- pattern: "org.apache.ZooKeeperService<name0=(.+), name1=InMemoryDataTree><>(WatchCount|NodeCount): (\\d+)"
name: zookeeper_inmemorydatatree_$2
type: GAUGE
labels:
server_name: $1
server_id: "1"
# Below rule applies to a Standalone ZK
# org.apache.ZooKeeperService:name0=*,name1=Connections,name2=*,name3=*
- pattern: "org.apache.ZooKeeperService<name0=(.+), name1=Connections, name2=(.+), name3=(.+)><>([^:]+)"
name: zookeeper_connections_$4
labels:
server_name: "$1"
client_address: "$2"
connection_id: "$3"
# Below rule applies to a Standalone ZK
# org.apache.ZooKeeperService:name0=*
- pattern: "org.apache.ZooKeeperService<name0=(.+)><>(StartTime|ClientPort|SecureClientAddress|Version|SecureClientPort): (.+)"
name: zookeeper_$2
value: 1
labels:
server_name: "$1"
$2: "$3"
# Below rule applies to a Standalone ZK
# org.apache.ZooKeeperService:name0=*
- pattern: "org.apache.ZooKeeperService<name0=(.+)><>(.+): (.+)"
name: zookeeper_$2
type: GAUGE

0 comments on commit 715e8d9

Please sign in to comment.