任何应用功能再强大、性能再优越,如果没有与之匹配的监控,那么一切都是虚无缥缈的。监控不仅可以为应用提供运行时的数据作为依据参考,还可以迅速定位问题,提供预防及告警等功能,很大程度上增强了整体服务的鲁棒性。

一、Kafka监控指标与获取

Kafka监控的4个维度:

  • 集群信息
  • broker信息
  • topic信息
  • consumer group信息

使用JConsole访问JMX

(1)终端输入jconsole,启动Java监视和管理控制台。

(2)修改kafka-run-class.sh,使JConsole可以通过远程连接。

KAFKA_JMX_OPTS="

-Dcom.sun.management.jmxremote 

-Dcom.sun.management.jmxremote.authenticate=false  

-Dcom.sun.management.jmxremote.ssl=false 

-Djava.rmi.server.hostname=服务器的IP地址或者域名"

(3)修改kafka-server-start.sh,增加export JMX_PORT="9999"

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
export JMX_PORT="9999"
fi

(4)检查是否开启JMX

broker在启动过程中,始终会将JMX端口信息写入Kafka对应的位置.

(5)连接

(6)查看MBean

MBean的名称,xxx.type=yyy,{attr} = zzz

其中xxx指的是组件名,如xxx = kafka.server

zzz 和 attr 指的是MBean的范围,例如topic = test,表示该MBean的作用范围是名为test的topic。

指标分类:

  • kafka.server 服务器端JMX指标
  • kafka.network 网络相关JMX指标
  • kafka.log 分区日志相关JMX指标
  • kafka.controller controller相关指标

使用Java程序访问JMX

(1)监控broker一分钟消息流入的速度

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec

OneMinuteRate 表示某个broker一分钟消息流入的速度(messages/s)。


public class KafkaJmxDemo { private MBeanServerConnection conn; private String jmxUrl; private String ipAndPort; public KafkaJmxDemo(String ipAndPort) {
this.ipAndPort = ipAndPort;
} /**
* 初始化JMX连接
*
* @return
*/
public boolean init() {
jmxUrl = "service:jmx:rmi:///jndi/rmi://" + ipAndPort + "/jmxrmi";
try {
JMXServiceURL serviceURL = new JMXServiceURL(jmxUrl);
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, null);
conn = connector.getMBeanServerConnection();
if (conn == null) {
return false;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
} public double getMsgInPerSec() {
String objectName = "kafka.server:type=BrokerTopicMetrics," +
"name=MessagesInPerSec";
Object val = getAttribute(objectName, "OneMinuteRate");
if (val != null) {
return (double) (Double) val;
}
return 0.0;
} private Object getAttribute(String objName, String objAttr) {
ObjectName objectName;
try {
objectName = new ObjectName(objName);
return conn.getAttribute(objectName, objAttr);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public static void main(String[] args) {
KafkaJmxDemo kafkaJmxDemo = new KafkaJmxDemo("127.0.0.1:9999");
kafkaJmxDemo.init();
System.out.println(kafkaJmxDemo.getMsgInPerSec());
} }

(2)获取指定Topic、指定分区的LEO值


public long getTopicPatitionLeo(String topic, int partition) {
String objectName = "kafka.log:type=Log,name=LogEndOffset,topic=" + topic + ",partition=" + partition;
Object val = getAttribute(objectName, "Value");
if (val != null) {
return (long) (Long) val;
}
return 0L;
}

(3)监控指定Topic的消息流入的速度


public double getBrokerTopicMetrics(String topic) {
String objectName = "kafka.server:type=BrokerTopicMetrics," +
"name=BytesInPerSec,topic=" + topic;
Object val = getAttribute(objectName, "OneMinuteRate");
if (val != null) {
return (double) (Double) val;
}
return 0.0;
}

输出

Kafka重要监控参数

(1)消息入站、出站速率

## 入站速率
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec ## 出站速率
kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec
属性名 含义
Count broker处理过的总消息字节数
OneMinuteRate 统计过去1分钟内的消息速率
MeanRate 统计平均消息速率

二、监控系统kafka-manager

注意每一行后面不要留空格。

[repositories]
local
aliyun: http://maven.aliyun.com/nexus/content/groups/public/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots

Add Cluster时,会提示异常。

Yikes! Ask timed out on [ActorSelection[Anchor(akka://kafka-manager-system/), Path(/user/kafka-manager)]] after [5000 ms]. Message of type [kafka.manager.model.ActorModel$KMAddCluster]. A typical reason for `AskTimeoutException` is that the recipient actor didn't send a reply.

三、监控系统kafka-eagle

安装参考

官方参考文档:https://docs.kafka-eagle.org/

https://www.cnblogs.com/yinzhengjie/p/9957389.html

下载


wget https://github.com/smartloli/kafka-eagle-bin/archive/v1.2.0.tar.gz

效果图

创建Topic

监控Broker的消息出入站速率

参考文档

kafka-manager Github

Kafka集群管理工具kafka-manager的安装使用

kafka manager的使用,kafka manager页面参数说明

Kafka Manager几个指标含义

Kafka(三) —— 集群监控的更多相关文章

  1. Spring Cloud :断路器集群监控(Turbine)

    一. 简介      上一篇文章我们已经实现了对单个服务实例的监控,当然在实际应用中,单个实例的监控数据没有多大的价值,我们更需要的是一个集群系统的监控信息,这时我们就需要引入Turbine.Turb ...

  2. kafka集群监控之kafka-manager部署(kafka-manager的进程为:ProdServerStart)

    kafka集群监控之kafka-manager部署(ProdServerStart) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 雅虎官网GitHub项目:https://git ...

  3. 断路器Hystrix与Turbine集群监控-Spring Cloud学习第三天(非原创)

    文章大纲 一.Hystrix基础介绍二.断路器Hystrix简单使用三.自定义Hystrix请求命令四.Hystrix的服务降级与异常处理五.Hystrix的请求缓存与请求合并六.Hystrix仪表盘 ...

  4. vivo 容器集群监控系统架构与实践

    vivo 互联网服务器团队-YuanPeng 一.概述 从容器技术的推广以及 Kubernetes成为容器调度管理领域的事实标准开始,云原生的理念和技术架构体系逐渐在生产环境中得到了越来越广泛的应用实 ...

  5. 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务

    在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...

  6. kafka+zookeeper集群

    参考:  kafka中文文档   快速搭建kafka+zookeeper高可用集群   kafka+zookeeper集群搭建 kafka+zookeeper集群部署 kafka集群部署   kafk ...

  7. 理解OpenShift(7):基于 Prometheus 的集群监控

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  8. MongoDB高可用集群+MMS集群监控搭建

    备注: mongodb学习资料 http://www.runoob.com/mongodb/mongodb-tutorial.html 一. 集群的三个组件: mongos(query routers ...

  9. 完美集群监控组合ganglia和nagios

    Ganglia是伯克利开发的一个集群监控软件.可以监视和显示集群中的节点的各种状态信息,比如如:cpu .mem.硬盘利用率, I/O负载.网络流量情况等,同时可以将历史数据以曲线方式通过php页面呈 ...

  10. Turbine——Hystrix集群监控

    上一篇文章讲述了如何利用Hystrix Dashboard去监控断路器的Hystrix command.当我们有很多个服务的时候,这就需要聚合所有服务的Hystrix Dashboard的数据了.这就 ...

随机推荐

  1. mysql 安装与基本管理

    目录 mysql 安装与基本管理 MySQL介绍 下载安装 登录设置密码 破解密码 统一字符编码 mysql参数配置 mysql 常用指令 mysql 安装与基本管理 MySQL介绍 MySQL是一个 ...

  2. [React] 函数定义组件

    函数定义组件的例子 function Welcome(props) { return <h1>Hello, {props.name}</h1>; } 该函数是一个有效的 Rea ...

  3. Oracle 11g 服务器结构

    Oracle 服务器主要又实例.数据库.程序全局区和前台进程组成. 实例可以进一步划分为系统全局区(SGA)和后台进程(PMON.SMON等)两部分,其中,SGA 使用操作系统的内存资源,而后台进程需 ...

  4. Android多线程操作,as快捷键笔记

    Android studio 快捷键 cmd+p 快速查看该方法的参数定义 * * option + shift +上下 快速移动上下行 * * cmd + e 显示最近操作的文件 * * cmd + ...

  5. hadoop2.8 集群 1 (伪分布式搭建)

    简介: 关于完整分布式请参考: hadoop2.8 ha 集群搭建   [七台机器的集群] Hadoop:(hadoop2.8) Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户 ...

  6. Kubernetes- Dashboard 部署

    获取dashboard 的yaml文件 wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/dep ...

  7. zabbix Server 4.0 监控TCP的12种状态

      zabbix Server 4.0 监控TCP的12种状态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 大家对TCP三次握手比较熟悉了,都知道当发生DOSS攻击时,客户端发送 ...

  8. 【转】Java奇技淫巧-插件化注解处理API(Pluggable Annotation Processing API)

    参考资料 JDK6的新特性之六:插入式注解处理API(Pluggable Annotation Processing API) Java Annotation Processing and Creat ...

  9. Codes: MODERN ROBOTICS Ch.3_Expo. Coods.基础代码实现

    %%1 Transform omega to so3 matrix % W for skew-symmetirc matirx % w for omega, angular velocity func ...

  10. 《你说对就队》第九次团队作业:Beta冲刺与验收准备

    <你说对就队>第九次团队作业:Beta冲刺与验收准备 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> ...