我正在尝试监控Kafka 0.10中消费者群体的滞后情况。
我们的消费者正在跟踪他们在Kafka而非ZooKeper的抵消。这意味着我可以使用以下内容获取数据:
import React, { Component } from 'react'
import { render } from 'react-dom'
import { Map, TileLayer, Circle, Marker, Popup, LayersControl, LayerGroup } from 'react-leaflet'
class SimpleExample extends Component {
constructor() {
super()
this.state = {
lat: 51.505,
lng: -0.09,
zoom: 3,
radius: 0
};
this.onClick1 = this.onClick1.bind(this);
this.onClick2 = this.onClick2.bind(this);
}
getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
onClick1(){
this.setState({radius: this.getRandomArbitrary(100, 800)});
}
onClick2(){
this.setState({radius: 0});
}
renderFirst() {
var result = [];
for(var i =0; i < 10; i++) {
result.push(
<Marker position={[i,i]}>
<Popup>
<span>A pretty CSS3 popup. <br/> Easily customizable.</span>
</Popup>
</Marker>
)}
return result;
}
renderSecond() {
return <MyLayer latlng={[1, 10]} radius={this.state.radius}/>
}
render() {
return (
<div>
<button name="btn" onClick={this.onClick1}>Click me</button>
<button name="btn" onClick={this.onClick2}>Then me</button>
<Map center={[0, 0]} zoom={this.state.zoom}>
<TileLayer
attribution='© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
/>
<LayersControl position='topleft'>
<LayersControl.Overlay checked name="first layer">
{this.renderFirst()}
</LayersControl.Overlay>
<LayersControl.Overlay checked name="second layer">
{this.renderSecond()}
</LayersControl.Overlay>
</LayersControl>
</Map>
</div>
);
}
}
class MyLayer extends Component {
constructor(props) {
super(props);
}
render() {
if (this.props.radius === 0) {
return <LayerGroup/>;
}
return (<LayerGroup>
<Circle center={this.props.latlng} fillColor="red" radius={this.props.radius}/>
</LayerGroup>);
}
}
render(<SimpleExample />, document.getElementById('container'))
这很好用。但是,我的经纪人已经使用Prometheus JMX exporter来收集大量统计数据。我已将JConsole连接到代理,但无法看到bin/kafka-consumer-groups.sh --bootstrap-server <broker> --describe --group <group-name>
报告的JMX中报告的相同数据。
在没有需要任何其他工具的情况下,是否可以使用JMX 从Kafka获取此信息?
答案 0 :(得分:0)
您可以为所有分区检索指标{topic}-{partition}.records-lag
的atrributes kafka.consumer:type=consumer-fetch-manager-metrics,client-id={client-id}
。这应该等同于consumer-groups.sh
答案 1 :(得分:-2)
要向消费者公开JMX指标,只需添加
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
基于Java的消费者应用程序的参数,然后可以使用jconsole工具和localhost:9090 url访问它。在那里你可以找到 kafka.consumer:type = consumer-fetch-manager-metrics bean。