今天我们使用prometheus+Grafana+kafka_exporter+kafka实现监控Kafka运行状态。
kafka_exporter:采集kafka各项指标数据
prometheus:获取kafka_exporter数据
Grafana:展示prometheus采集的数据
如何使用prometheus和Grafana监控Kafka运行状态呢,请君继续往下看。
一、Kafka简介
(1)Kafka基本概念
Kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景。
(2)Kafka的特性
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒
- 可扩展性:kafka集群支持热扩展
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
- 高并发:支持数千个客户端同时读写
(3)Kafka场景应用
- 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
- 消息系统:解耦和生产者和消费者、缓存消息等。
- 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
- 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
- 流式处理:比如spark streaming和storm
- 事件源
二、部署Kafka
(1)安装zookeeper
# 安装jdk
# .....
# 下载
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
# 解压
tar -zxvf apache-zookeeper-3.6.4-bin.tar.gz
cd ../apache-zookeeper-3.6.4-bin/conf
cp zoo_sample.cfg zoo.cfg
# 修改配置文件
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/prometheus/apache-zookeeper-3.7.0-bin
clientPort=2181
(2)zookeeper启动
# 启动
./zkServer.sh start
#查看状态
./zkServer.sh status
(3)安装kafka
# 解压
tar -zxvf kafka_2.13-2.8.0.tgz
cd /kafka_2.13-2.8.0/config
# 修改配置文件
vim server.properties
listeners=PLAINTEXT://:9092
log.dirs=/home/prometheus/kafka_2.13-2.8.0/logs
zookeeper.connect=localhost:2181
(4)Kafka启动
# 启动
./kafka-server-start.sh ../config/server.properties
# 创建topic
./kafka-topics.sh --create --bootstrap-server 192.168.52.129:9092 --replication-factor 3 --partitions 1 --topic test-topic
三、部署kafka_exporter
(1)下载
wget https://github.com/danielqsj/kafka_exporter/releases/download/v1.2.0/kafka_exporter-1.2.0.linux-amd64.tar.gz
(2)解压
[prometheus@192 ~]$ tar -zxvf kafka_exporter-1.2.0.linux-amd64.tar.gz
kafka_exporter-1.2.0.linux-amd64/
kafka_exporter-1.2.0.linux-amd64/LICENSE
kafka_exporter-1.2.0.linux-amd64/kafka_exporter
(3)启动
./kafka_exporter --kafka.server=192.168.52.129:9092 &
四、集成Prometheus
在prometheus.yml配置文件添加以下配置
scrape_configs:
- job_name: "kafka"
static_configs:
- targets: ['192.168.52.129:9308']
五、集成Grafana
使用监控模板:
https://grafana.com/grafana/dashboards/7589
学习更多内容,请关注IT运维先森微信公众号,将为你分享更多技术内容。
版权归原作者 IT运维先森 所有, 如有侵权,请联系我们删除。