一、Debian Kafka監控體系搭建
UnderReplicatedPartitions
(未同步分區數,需為0)、ISR shrink/expand
(ISR集合變動,頻繁變動需排查網絡或磁盤問題)、ActiveControllerCount
(活躍控制器數,應為1)、LeaderElectionRateAndTimeMs
(Leader選舉頻率和時間,過高說明集群不穩定)、UncleanLeaderElectionsPerSec
(非同步Leader選舉次數,需為0);基礎資源指標包括CPU使用率(建議<70%)、內存使用率(建議<80%)、磁盤I/O等待時間(建議<10ms)、網絡帶寬利用率(建議<70%)。request-latency-avg
(請求平均延遲,反映網絡與Broker性能)、waiting-threads
(等待線程數,過多說明Broker處理能力不足)、record-error-rate
(消息錯誤率,需為0)、batch-size-avg
(平均批次大小,反映批量發送效率)。records-lag-max
(最大消費滯后,需設定閾值如1000條)、fetch-rate
(拉取速率,反映消費能力)、max.poll.interval.ms
(單次poll最大間隔,避免消費者超時被踢出組)。docker run -d --rm -p 9000:9000 -e KAFKA_BROKERCONNECT=<host:port> -e SERVER_SERVLET_CONTEXTPATH="/" obsidiandynamics/kafdrop
),提供Topic、消費者組的實時詳情,支持關鍵詞搜索和Topic創建/刪除,界面友好適合日常管理。kafka_exporter
采集Kafka指標,Prometheus存儲并設置告警規則(如UnderReplicatedPartitions > 0
),Grafana導入Kafka專用Dashboard(如Confluent官方Dashboard)實現可視化,支持多維度數據分析。java -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --offsetStorage kafka --zk zk-server1,zk-server2 --port 8080 --refresh 10.seconds --retain 2.days
啟動,查看消費者組消費狀態和Topic offset信息,配置簡單適合快速監控。二、Debian Kafka調優策略
num.partitions
根據數據量和消費者數量設置(建議每個Broker承載100-200個分區,單分區SSD寫入吞吐約10MB/s),num.replica.fetchers
(副本同步線程數)設置為CPU核心數的1/3(如8核設置為2-3),加速Follower數據同步;啟用unclean.leader.election.enable=false
(禁止非同步副本成為Leader),min.insync.replicas=2
(至少2個副本同步),保證數據可靠性。num.io.threads
(IO線程數)設置為磁盤數量的2-3倍(如4塊SSD設置為8-12),充分利用多磁盤并行能力;socket.send.buffer.bytes
/socket.receive.buffer.bytes
(網絡緩沖區)設置為128KB-1MB,提升傳輸效率;log.segment.bytes
(日志分段大?。┰O置為2-5GB(默認1GB),減少文件切換開銷;log.retention.hours
(日志保留時間)根據業務需求設置(如7天),避免磁盤空間耗盡。batch.size
(批次大?。哪J16KB增大至64KB-1MB(減少網絡請求次數),linger.ms
(批次等待時間)設置為5-50ms(允許更多消息合并);compression.type
(壓縮類型)啟用lz4
或zstd
(壓縮率30%-50%,zstd
性能更優),減少網絡傳輸量。acks
(應答機制)根據需求選擇(1
=Leader確認,平衡吞吐與可靠性;all
=所有副本確認,高可靠但吞吐降低);buffer.memory
(生產者緩沖區)設置為512MB-1GB(防止消息積壓導致阻塞);retries
(重試次數)設置為Integer.MAX_VALUE
(避免瞬態錯誤丟失消息),retry.backoff.ms
(重試間隔)設置為100ms(避免頻繁重試)。fetch.min.bytes
(單次拉取最小數據量)設置為1MB(減少網絡請求頻率),max.poll.records
(單次poll最大消息數)設置為500-1000(根據處理能力調整);max.partition.fetch.bytes
(單分區拉取上限)設置為5-10MB(匹配高吞吐場景)。session.timeout.ms
(會話超時時間)設置為45s(默認45s,避免頻繁Rebalance),heartbeat.interval.ms
(心跳間隔)設置為3s(默認3s,保持消費者活性);使用coordinator.rack
配置消費者機架親和性,減少跨機房網絡開銷。vm.swappiness
(交換內存使用率)設置為1-10(減少交換內存,避免OOM Killer終止進程);ulimit -n
(文件描述符限制)設置為100000+(支持高并發連接);net.core.somaxconn
(TCP連接隊列長度)設置為1024(避免連接拒絕)。