Christian Meier
7a6ef71eef
refactor the BrokerTreeWatcher
...
split things into smaller pieces and as preparation of having only
ONE TreeWatcher running which itself dispatch the events to the interresting
parties.
Sponsored by Lookout Inc.
2015-11-10 22:42:07 +01:00
Christian Meier
618aaf915e
make the connection or disconnection of consumers failsafe
...
i.e. ignore errors on disconnect and do not register consumers which
fail to connect
2015-11-10 22:15:57 +01:00
Christian Meier
66c0c332bb
make is proper POJO and remove json magic to allow easier testing
2015-11-10 22:15:57 +01:00
Christian Meier
4c655995f9
nicer logging
2015-11-10 22:15:57 +01:00
Christian Meier
dc918a700e
not needed
2015-11-10 22:15:57 +01:00
R. Tyler Croy
fb4f152fed
Bump the minor version for release, updating the group too
...
Renaming the entire source tree now that this is under reiseburo
2015-11-07 12:39:25 -08:00
Christian Meier
98af950498
be nice and close all resources on shutdown
2015-11-03 20:40:49 +01:00
Christian Meier
439e8f635e
declare private methods as such
...
helps to understand what methods could be used by other threads
2015-11-03 20:40:49 +01:00
Christian Meier
45d98cb5f6
allow new nodes to be added when they pop up
...
also ensure the broker list is synchronized in both the KafkaPoller
as well the BrokerTreeWatcher threads
2015-11-03 20:40:48 +01:00
Christian Meier
59c8e79f4e
reduce polling speed in case kafka is responding with exceptions
...
just double the interval on each successive error and reset it to 1 sec
once a request succeeded again. maximum polling inteval is about half
an hour.
2015-11-03 20:40:41 +01:00
R. Tyler Croy
3778a24044
Add the --exclude CLI option for filtering out unwanted consumer groups
...
Fixes #34
2015-09-01 17:10:43 -07:00
R. Tyler Croy
7b918d448a
Don't use groovy strings where we don't need to
2015-09-01 16:29:34 -07:00
R. Tyler Croy
e18ac81468
Introduce codenarc and make the project adhere to some coding standards
2015-09-01 15:50:31 -07:00
R. Tyler Croy
fc97f67100
Add support for a customized delay in seconds between reports (defaulting to 5s)
2015-09-01 14:41:16 -07:00
R. Tyler Croy
b6bbcf92a4
Don't reconnect if we have invalid data in our brokerConsumerMap, just warn about it
...
Fixes #30
2015-08-14 15:11:16 -07:00
R. Tyler Croy
be33333bfa
Bail out and try to force a reconnect if our broker's consumer is nulled
...
Still need to explore how we're getting into this state, but this is a start to
handling that scenario more gracefully
References #130
2015-08-14 10:50:45 -07:00
R. Tyler Croy
5df6083e6d
Log a single error line for KafkaException exceptions when polling
...
Fixes #31
2015-08-14 10:13:17 -07:00
R. Tyler Croy
e01e699861
Move the hacking docs out and link to groovydocs properly
2015-07-04 15:08:22 -07:00
R. Tyler Croy
f968a2c1c8
Move the README over to asciidoc and wire together publishing asciidoc to gh-pages
2015-07-04 15:02:35 -07:00
R. Tyler Croy
f053d9b68c
Catch and log exceptions coming from the dumpMetadata() call
...
Fixes #23
2015-03-22 11:08:40 -07:00
R. Tyler Croy
3a9caa2535
Avoid computing negative values for offsets, making zero the lowest possible value
...
Fixes #25
2015-03-22 10:56:26 -07:00
R. Tyler Croy
dc33298435
Groovy's getStrings() method with string interpolation doesn't do what you think it does
...
groovy:000> user = "Ron"
===> Ron
groovy:000> "hello ${user}"
===> hello Ron
groovy:000> "hello ${user}".getStrings()
===> [hello , ]
groovy:000> "hello ${user}".toString()
===> hello Ron
Fixes #24
2015-03-20 15:13:40 -07:00
R. Tyler Croy
38e8c62e00
Properly report metrics to datadog with the appropriate tags
...
This requires a much more recent version of our metrics-datadog library but
does result in the right values being reported into datadog.
2015-03-20 10:58:45 -07:00
R. Tyler Croy
71347594ca
Major refactor to support dropwizard-metrics as the means of outputting metrics
...
This commit changes the structure of Verspaetung pretty dramatically to allow
for the registering of Gauges for the various offsets
With this change the KafkaPoller is pushing the latest offsets into a map and the
ZK consumer tree watchers are pushing consumer offsets into a separate map.
References #17
2015-02-06 08:34:19 -08:00
R. Tyler Croy
7b13050ee2
Restructure KafkaPoller to make catching and logging exceptions easier
...
I've not cleaned this up enough to make things easier to test, partially
because mocking the Kafka client APIs is a giant pain in the ass
Fixes #16
2015-01-30 02:45:16 -08:00
R. Tyler Croy
0fa983d0e8
Add support for prefixing the metrics with a CLI supplied option
...
Fixes #15
2015-01-30 02:45:16 -08:00
R. Tyler Croy
95c244867a
Leave a skipped test in place for later
...
Going to get back to #14
2015-01-30 02:45:16 -08:00
R. Tyler Croy
8995351bba
Parse the consumer group from the KafkaSpout ZK path instead of using the JSON
...
The JSON in the Znode is actually the name of the topology, not necessarily the
name of the consumer group used by a KafkSpout
Fixes #9
2015-01-28 03:05:30 -08:00
R. Tyler Croy
d0c99b9a34
Implement the KafkaSpoutTreeWatcher for processing Storm KafkaSpout offset data
...
Fixes #9
2015-01-28 02:45:49 -08:00
R. Tyler Croy
b4b9fe9860
Introduce the AbstractConsumerTreeWatcher to handle watchers on Kafka consumer trees
...
This gives us two kinds of AbstractTreeWatcher instances, those that watch
special-case subtrees (e.g. the BrokerTreeWatcher) and then those which need to
watch and report Kafka consumer offset information (e.g. StandardTreeWatcher)
References #9
2015-01-28 02:02:59 -08:00
R. Tyler Croy
af19abfacb
Refactor the handling of TreeCache into the AbstractTreeWatcher itself
...
This should lay the groundwork for refactoring much of the BrokerTreeWatcher up
into the AbstractTreeWatcher
2015-01-28 01:44:53 -08:00
R. Tyler Croy
0706895af1
Refactor some of the KafkaPoller setup out and add support for --dry-run
...
Fixes #10
2015-01-28 01:13:13 -08:00
R. Tyler Croy
a444f49b46
Invoke the onDelta callbacks for zero deltas too
...
It turns out that datadog doesn't indicate that the delta is shrinking unless
you report a zero value.
2015-01-26 09:40:16 -08:00
R. Tyler Croy
18e747788e
Add a simple heartbeat to the configured statsd host for every second9
...
Fixes #4
2015-01-26 07:00:07 -08:00
R. Tyler Croy
5e1a4e11ba
Use a ocpy on write list for the consumers map to avoid thrash between threads
...
Once we've finished caching our consumers map the majority of the operations on
this consumersMap list will be traversals inside of the KafkaPoller. Thus
making the performance hit worth it.
What we don't want to happen is to try to iterate through the consumersmap's
list of consumers while receiving new ZK childEvents
Fixes #6
2015-01-26 06:52:54 -08:00
R. Tyler Croy
4f16c3dfd1
Avoid NPEs when starting up and scanning brokers
...
The problem was we were trying to parse the JSON of /brokers/ids' when the
treecache found that node.
Fixes #8
2015-01-26 06:20:46 -08:00
R. Tyler Croy
a022252157
Add some simple command line overrides for ZK and statsd hosts
...
Fixes #5
2015-01-26 06:15:35 -08:00
R. Tyler Croy
c15c25534c
Remove unnecessary synchronized statement
2015-01-26 04:17:28 -08:00
R. Tyler Croy
49c2d7fc1d
Add logback as a dependency and gut the printlns from the codebase
2015-01-26 04:11:27 -08:00
R. Tyler Croy
6d82735b3c
Ignore "owners" and other subtrees from the Kafka High Level Consumer ZK space
...
References #2
2015-01-26 04:06:27 -08:00
R. Tyler Croy
ba2fa562ac
Stupidly and blindly fire a bunch of crap into statsd on localhost
...
This is not the final product by a long shot, just needed to figure out how
things would look inside datadog
2015-01-20 13:23:01 -08:00
R. Tyler Croy
5fe4d8efaa
Hack together the actual delta reporting, UNCLEAN CODE ALERT
...
Still very much in the experimental phase, need to refactor KafkaPoller a lot
at this point and decide which code should live where and give it plenty of
tests
2015-01-19 16:22:22 -08:00
R. Tyler Croy
193b147064
Exploratory testing, a veritable boatload of garbage and hacks
...
This will at least create some stupid consumers and try to fetch the latest
offsets for a bunch of stupid topics.
The Kafka/Scala internals are so immensely frustrating
2015-01-19 15:55:47 -08:00
R. Tyler Croy
293ebb6fa9
Prefer callback lists instead of a single callback per object
...
This doesn't really matter but I prefer this approach from a style vantage
point
2015-01-19 13:15:00 -08:00
R. Tyler Croy
8b792d72fd
Properly use the passed in AbstractMap for the StandardTreeWatcher
2015-01-19 13:08:01 -08:00
R. Tyler Croy
7e593f1235
Introducing the BrokerTreeWatcher to track changes to the broker list in Zookeeper
...
This commit includes a lot of work in progress kind of code. STill
experimenting with how to bind the events from the Zookeeper event-driven
system, in with the KafkaPoller busy-wait-loop system.
2015-01-19 11:45:22 -08:00
R. Tyler Croy
c53413d5b9
Introduce TopicPartition for acting as a Hash key for (topic, partition_id) tuples
...
This means the consumersMap that we're going to keep track of will have the key
of a TopicPartition, e.g.: ConcurrentHashMap<TopicPartition, List<ConsumerOffset>>
When we receive the data from the Kafka meta-data calls (to be added) all we'll
need to do is create the right TopicPartition and walk the list of
ConsumerOffset instances to start reporting metrics
2015-01-19 10:12:41 -08:00
R. Tyler Croy
c4bd4ef9c2
Push a HashMap through into the TreeWatchres to start keeping tabs on consumer offsets
...
This data structure isn't fully bake dyet, but at least gives some organization
to the data we're caching out of the Zookeeper tree
2015-01-18 10:25:04 -08:00
R. Tyler Croy
afd2ee8567
Introduce the TreeWatcher objects for transforming events into something tangible
...
References #2
2015-01-17 16:51:26 -08:00
R. Tyler Croy
86878d5b10
Nuke some old classes that didn't make any sense
2015-01-17 15:54:51 -08:00