diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a81a688b5a712f7595e5234f018b21abc7e30e60 Binary files /dev/null and b/.DS_Store differ diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..593d33e9e09da016a4050114a481cff9f2a2c106 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2757 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\froman\fcharset0 Times-Roman;} +{\colortbl;\red255\green255\blue255;\red0\green0\blue0;} +{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;} +\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\partightenfactor0 + +\f0\fs24 \cf0 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 run services\ +docker-compose up -d\ +\ +kafka ui\ +http://localhost:8080\ +\ +prometheus\ +http://localhost:9090\ +\ +\ +grafana\ +http://localhost:3000} \ No newline at end of file diff --git a/alerts.yml b/alerts.yml new file mode 100644 index 0000000000000000000000000000000000000000..85f7dca2e874a947f6897d15b4679de7c9cd0328 --- /dev/null +++ b/alerts.yml @@ -0,0 +1,11 @@ +groups: + - name: KafkaAlerts + rules: + - alert: HighPartitionLag + expr: kafka_topic_partition_lag > 100 + for: 1m + labels: + severity: critical + annotations: + summary: "High partition lag on {{ $labels.topic }}" + description: "Partition lag is {{ $value }} for topic {{ $labels.topic }}." \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..d26a7135bb5b18f336684b0da38a5c126396a561 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,44 @@ +version: '3.8' + +services: + zookeeper: + image: confluentinc/cp-zookeeper:latest + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ports: + - "2181:2181" + + kafka: + image: confluentinc/cp-kafka:latest + ports: + - "9092:9092" + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + depends_on: + - zookeeper + + prometheus: + image: prom/prometheus:latest + ports: + - "9090:9090" + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + + grafana: + image: grafana/grafana:latest + ports: + - "3000:3000" + + + kafka-ui: + image: provectuslabs/kafka-ui:latest + ports: + - "8080:8080" + environment: + KAFKA_CLUSTERS_0_NAME: local + KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092 + depends_on: + - kafka diff --git a/prometheus.yml b/prometheus.yml new file mode 100644 index 0000000000000000000000000000000000000000..3931a2e8daf8d283b405aa10751597f1ab6a2596 --- /dev/null +++ b/prometheus.yml @@ -0,0 +1,14 @@ +global: + scrape_interval: 15s + +scrape_configs: + - job_name: 'kafka' + static_configs: + - targets: ['kafka:7071'] + + - job_name: 'zookeeper' + static_configs: + - targets: ['zookeeper:7071'] + +rule_files: + - "alerts.yml"