分类目录归档:Uncategorized

Kafka监控框架介绍

  前段时间在想Kafka怎么监控、怎么知道生产的消息或消费的消费是否有丢失,目前有几个开源的Kafka监控框架这里整理了下,不过这几个框架都有各自的问题侧重点不一样;

1、Kafka Monitor
2、Availability-Monitor-for-Kafka
3、Kafka Web Console
4、Kafka Manage
5、KafkaOffsetMonitor

kafka-monitor

git clone https://github.com/linkedin/kafka-monitor.git  
cd kafka-monitor  
./gradlew jar    //下载依赖,这个会比较久编译源码  

启动KafkaMonitor

./bin/kafka-monitor-start.sh config/kafka-monitor.properties  

enter image description here
  启动端到端监控Kafka集群:

 ./bin/end-to-end-test.sh --topic test --broker-list localhost:9092 --zookeeper localhost:2181

  打开监控页面:http://localhost:8000/index.html 页面显示 kafka实时的度量监控值(例如,服务可用性,消息丢失率)动态图显示
  enter image description here

  Kafka-monitor把度量监控信息写入JMX中,并使用jolokia框架所以可以通过http请求获取监控的度量值;

curl localhost:8778/jolokia/read/kmf.services:type=produce-service,name=*/produce-availability-avg

  Kafka-monitor与Kafka为同根同源的都是LinkedIn公司开源的不过Kafka-minitor刚开源没半年所有功能相对于其他监控框架来说比较简单;
  kafka-monitor启动后会启动一个produce、一个consume,broker过时时间为10分钟; 用于捕获服务的可用性、消息丢失率、延迟率等,可监控集群与单个kafka;
  kafka-monitor默认自动创建监控topic,可以修改为已经存在的topic,自动增加partition,确保监控topic的partition# >= broker#
  produce用于生成消息到kafka,并产生生成速率、可用性度量数据
  consume从kafka中消费消息,并产生消息丢失率、消息重复率、端到端延迟 依赖生产服务来提供消息内嵌的消息序列号和时间戳。

KafkaManager

  KafkaManager为Yahoo开源的KafkaManager管理工具, 可管理多个集群; 能够更容易地检查集群的状态, 能够创建主题, 执行首选的副本选择,能够基于集群当前的状态生成分区分配,并基于生成的分配执行分区的重分配 检查集群状态可以发现集群中主题分布不均匀、分区分布不均匀等,

KafkaManager 编译生成,下载依赖会比较久
enter image description here

Availability Monitor for Kafka

  Availability Monitor for Kafka微软开源的Kafka可用性、延迟性的监控框架,提供JMX接口,并可存入SqlServer;

  AvailabilityMonitor可监控发送与读取数据的可用性、延迟;
  Producer可用性=所有主题和分区成功发送消息数/尝试发送消息数
  Consumer可用性=所有主题和分区消息成功读取数/消息尝试读取数
  通过往Producer发送数据测试Producer的可用性与延迟,消息以CanaryMessage_为前缀,可以通过producerProperties.json修改;

  通过从所有分区的尾部读取数据来衡量Consumer的可用性与延迟

enter image description here

enter image description here

线性回归——最小二乘法_实例(二)

  上篇文章介绍了最小二乘法矩阵形式的理论与证明、计算过程,这里使用程序代码的方式计算出矩阵形式的解,并给出线性拟合;

Octave代码

 clear all;close all;
 % 拟合的数据集
 x = [1,2;1,6;1,9;1,13];
 y = [4;8;12;21]; 
 % 根据公式 w = (x'*x)^-1  * x' * y
 % 与上篇文章一样一步步分解如下,其实这里可以不用分解,上篇文章分解时为了好计算
 x_t =x'*x;   

 %% (x'*x)^-1或inv(x' * x)
 x_i = x_t^-1; 

 x_i_t = x_i*x'; 

% 求出w
 w = x_i_t * y;   

 %% 在画板上绘制出数据集的点
 figure(1);hold off
 plot(x(:,2),y,'bo','markersize',5,'linewidth',2)
 set(gca,'xtick',0:1:25)  

 % 画布大小为25*25
 xplot = [0 25];
 yplot = [0 25];
 xlim(xplot)
 ylim(yplot)
 hold on
 % 打印出拟合的线段
 plot(xplot,w(1,:)+w(2,:)*xplot,'r','linewidth',2)
 set(gca,'yTick',1:1:25) 
 set(gca,'xTick',1:1:25) 
 xlabel('x');
 ylabel('y');

运行结果

enter image description here