Joel, We're using 0.7.1 right now. I see there's a 0.7.2 that was recently released, but we haven't updated to that yet.
Do the mbean operations return different values from the attributes? Mike On Wed, Nov 21, 2012 at 1:47 PM, Joel Koshy <jjkosh...@gmail.com> wrote: > Hi Mike, > > What Kafka version are you using? I tried the latest trunk (0.7) and the > attributes I see are: > Broker/partition,fetch offset,consumer offset > > The values seem to be correct - and if you want to get the latest available > offset/consumer lag there are mbean operations (not attributes) that also > seem to work correctly. > > > On Wed, Nov 21, 2012 at 7:57 AM, Mike Heffner <m...@librato.com> wrote: > > > Well, I've currently "solved" the monitoring problem on our end by > skipping > > the JMX attributes and using the 'kafka-rb' Ruby gem to read the latest > > offset for the topic. This is the comparison of offsets read from the > > consumer, JMX, and the Ruby gem: > > > > Storm Consumer offset: > > --------------------------------- > > "offset"=>2847272176, "partition"=>2, "broker"=>{"host"=>"10.120.x.x", > > "port"=>9092}, "topic"=>"mcommits"} > > > > JMX Attributes: > > --------------------- > > attrs: {"CurrentOffset"=>162919578, "Name"=>"mcommits-2", > > "NumAppendedMessages"=>7285958, "NumberOfSegments"=>3, > "Size"=>1236661577} > > > > OFFSETS command sent from Ruby gem: > > ------------------------------------------------------------ > > 10.120.x.x:mcommits:2: latest offset: 2847274728 > > > > This is the output of the log file directory for this topic:partition: > > > > -rw-r--r-- 1 root root 536871010 2012-11-16 05:36 > > 00000000001610613151.kafka > > -rw-r--r-- 1 root root 536870989 2012-11-20 14:28 > > 00000000002147484161.kafka > > -rw-r--r-- 1 root root 162919578 2012-11-21 15:48 > > 00000000002684355150.kafka > > > > So, the "latest offset" from the Ruby gem matches what I would expect to > > see -- only slightly ahead of the active consumer. AFAICT, the values > from > > JMX aren't usable to monitor this. Should I file a bug or feature request > > to publish an offset in the JMX attributes that matches the 'latest > offset' > > read from the Kakfa server? > > > > Cheers, > > > > Mike > > > > > > On Wed, Nov 21, 2012 at 12:08 AM, Jun Rao <jun...@gmail.com> wrote: > > > > > The attribute getCurrentOffset gives the log end offset. It's not > > > necessarily the log size though since older segments could be deleted. > > > > > > Thanks, > > > > > > Jun > > > > > > On Tue, Nov 20, 2012 at 1:12 PM, Mike Heffner <m...@librato.com> > wrote: > > > > > > > Jun, > > > > > > > > Do you have any idea on what the JMX attribute values on the beans " > > > > kafka:type=kafka.logs.{topic name}-{partition idx}" represent then? > It > > > > seems like these should correctly represent the current offsets of > the > > > > producer logs? They appeared to track correctly for a while, but once > > the > > > > log size grew, they seemed to no longer be correct. Is there > > potentially > > > a > > > > bug in these values are large log sizes? > > > > > > > > I can try the other interface, but it would be nice to know what's > > wrong > > > > with the current JMX values. > > > > > > > > Thanks, > > > > > > > > Mike > > > > > > > > > > > > On Tue, Nov 20, 2012 at 12:12 PM, Jun Rao <jun...@gmail.com> wrote: > > > > > > > > > The tool gets the end offset of the log using getOffsetBefore and > the > > > > > consumer offset from ZK. It then calculates the lag. > > > > > > > > > > We do have a JMX for lag in ZookeeperConsumerConnector. The api is > > the > > > > > following, but you need to provide topic/brokerid/partitionid. > > > > > > > > > > /** > > > > > * JMX interface for monitoring consumer > > > > > */ > > > > > trait ZookeeperConsumerConnectorMBean { > > > > > def getPartOwnerStats: String > > > > > def getConsumerGroup: String > > > > > def getOffsetLag(topic: String, brokerId: Int, partitionId: Int): > > > Long > > > > > def getConsumedOffset(topic: String, brokerId: Int, partitionId: > > > Int): > > > > > Long > > > > > def getLatestOffset(topic: String, brokerId: Int, partitionId: > > Int): > > > > Long > > > > > } > > > > > > > > > > Thanks > > > > > > > > > > Jun > > > > > > > > > > On Tue, Nov 20, 2012 at 8:03 AM, Mike Heffner <m...@librato.com> > > > wrote: > > > > > > > > > > > I have not tried that yet, I was hoping to use an existing Ruby > > > > > monitoring > > > > > > process that we use to monitor several other existing resources. > I > > > > also > > > > > > don't want to make changes to the Kafka consumer code, as it's > part > > > of > > > > a > > > > > > bundled package (Storm). > > > > > > > > > > > > Where does ConsumerOffsetChecker pull its information from? > > Shouldn't > > > > the > > > > > > values from JMX match? Guess I might need to look at its source > > code > > > to > > > > > > figure out what it's doing. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Nov 20, 2012 at 12:34 AM, Jun Rao <jun...@gmail.com> > > wrote: > > > > > > > > > > > > > Instead of using jmx, have you tried using > ConsumerOffsetChecker > > to > > > > > > figure > > > > > > > out the consumer lag? > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Jun > > > > > > > > > > > > > > On Mon, Nov 19, 2012 at 7:10 PM, Mike Heffner < > m...@librato.com> > > > > > wrote: > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > > > I am trying to write a custom monitoring script for our Kafka > > > setup > > > > > and > > > > > > > > would like some help understanding how to interpret the JMX > > > > > attributes. > > > > > > > > > > > > > > > > In our setup, the consumers are writing their current offset > > to a > > > > > path > > > > > > in > > > > > > > > ZK. This is the value they are getting back from a call > > > > > > > > to SimpleConsumer.getOffsetsBefore(). A snapshot of this > value > > > > looks > > > > > > > like: > > > > > > > > > > > > > > > > {"offset"=>5338008447, "partition"=>2, > > > > > "broker"=>{"host"=>"10.x.x.94", > > > > > > > > "port"=>9092}, "topic"=>"mcommits"} > > > > > > > > > > > > > > > > Using the MX4J interface, I poll the > > > > > > > > bean "kafka:type=kafka.logs.mcommits-2" on host 10.x.x.94 and > > get > > > > the > > > > > > > > attribute values: > > > > > > > > > > > > > > > > {"CurrentOffset"=>506171524, "Name"=>"mcommits-2", > > > > > > > > "NumAppendedMessages"=>10526508, "NumberOfSegments"=>4, > > > > > > > "Size"=>2116784530} > > > > > > > > > > > > > > > > At the time both of these values were snapshotted, this > > consumer > > > > was > > > > > > > close > > > > > > > > to the end of the log file. In that case, I would expect both > > > > offsets > > > > > > to > > > > > > > be > > > > > > > > fairly similar, however the consumer offset is >> the > producer > > > log > > > > > > > offset, > > > > > > > > which doesn't make sense. > > > > > > > > > > > > > > > > Clearly there is something I'm not understanding. How do I > use > > > the > > > > > JMX > > > > > > > > attributes to calculate how far behind the consumer is from > the > > > end > > > > > of > > > > > > > the > > > > > > > > log file? In this scenario the consumer offset is >> both the > > > > > > > CurrentOffset > > > > > > > > value and the Size value. Is there a way of interpreting > these > > > > values > > > > > > > that > > > > > > > > I'm not seeing? > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > Mike Heffner <m...@librato.com> > > > > > > > > Librato, Inc. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > Mike Heffner <m...@librato.com> > > > > > > Librato, Inc. > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > Mike Heffner <m...@librato.com> > > > > Librato, Inc. > > > > > > > > > > > > > > > -- > > > > Mike Heffner <m...@librato.com> > > Librato, Inc. > > > -- Mike Heffner <m...@librato.com> Librato, Inc.