Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

upstream changes #9

Open
wants to merge 521 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
521 commits
Select commit Hold shift + click to select a range
5edd5e9
Increment version
patelh Aug 1, 2017
c096ee1
Merge pull request #420 from fuji-151a/add_test_to_KafkaVersionTest
patelh Aug 1, 2017
86d0840
Merge pull request #417 from yahoo/add-sec-pro
patelh Aug 1, 2017
bcde58e
Merge pull request #411 from fuji-151a/update_readme
patelh Aug 1, 2017
3eaaf95
Fix license
patelh Aug 2, 2017
c402709
Update readme
patelh Aug 4, 2017
552dba7
Fix bug in endpoint parsing
patelh Aug 8, 2017
03b1023
Increment version
patelh Aug 8, 2017
85a6323
Clean up test
patelh Aug 8, 2017
de5a2fa
Merge pull request #423 from yahoo/fix-parse-endpoints
patelh Aug 9, 2017
f40433e
Add config option for 0.11.0.0
dnelson Aug 16, 2017
ca2406a
Add 0.11 to the readme
dnelson Aug 16, 2017
aaa9be6
Add missing tests
dnelson Aug 17, 2017
9904d55
added environment variables to control basic auth
simplesteph Sep 12, 2017
3332765
Merge pull request #424 from dnelson/support-0-11-0-0
patelh Sep 22, 2017
5de818f
Increment version
patelh Sep 22, 2017
04907ee
Merge pull request #432 from simplesteph/patch-1
patelh Sep 22, 2017
ec62311
increasing threadpool size
Oct 26, 2017
77a7474
reverting application.conf
Oct 26, 2017
74f3c2e
Format offset values
Nov 7, 2017
e736679
Merge pull request #448 from stephen-lazarionok/master
patelh Dec 1, 2017
078453d
Merge pull request #442 from aruna0319/master
patelh Dec 1, 2017
aa640ad
Increment version
patelh Dec 1, 2017
0b7c762
Add config value for 0.11.0.2
icco Dec 8, 2017
f3eecdf
Add Kafka 1.0.0 as a valid config version
icco Dec 8, 2017
1d4a76e
Add 0.11.0.2 and 1.0.0 to all of the version lists
icco Dec 8, 2017
7337eb5
Update tests with 0.11.0.2 and 1.0.0
icco Dec 8, 2017
5df0ac6
Use a separate thread to get the committed offsets to fixed bug 'Yike…
Dec 11, 2017
5a58f74
fixed build error for TestCreateTopic
Dec 11, 2017
d04d7f8
fixed build error for TestReassingPartitions
Dec 11, 2017
3996d5a
add support for disallowed topic offset
Dec 12, 2017
ba2225a
add shutdown check in KafkaTopicOffsetGet's thread
Jan 5, 2018
77e3114
Sort topicSummary JSON by partition number
andrewdotn Jan 11, 2018
80a0aa7
Merge pull request #456 from DavidLiuXh/master
patelh Jan 22, 2018
6062369
Increment version
patelh Jan 22, 2018
75f52b6
Changed default container to fluid one, so that the view looks good o…
rahulsinghai Feb 23, 2018
3c3c947
fixed issue 471: Incorrect log when exceptions occur in KafkaStateAct…
Feb 26, 2018
49a2052
add support for listener_security_protocol_map when parsing security …
maxinechan Mar 14, 2018
625bb7e
Merge pull request #454 from icco/patch-1
patelh Mar 16, 2018
83d22ae
Merge pull request #472 from rahulsinghai/change-default-container
patelh Mar 16, 2018
f4f1f49
Merge pull request #473 from DavidLiuXh/master
patelh Mar 16, 2018
d81baae
Merge pull request #484 from maxinec/listenerMap
patelh Mar 17, 2018
0356db5
Increment verison
patelh Mar 17, 2018
a70e7ca
added akka.logger-startup-timeout property
Mar 27, 2018
bf068d0
Merge pull request #491 from gmyrianthous/akka-logger-startup-timeout…
patelh Apr 12, 2018
85ebbe4
Reassign partitions with replication factor option
cipriansofronia Mar 18, 2018
6abbb78
added information about consumer lag to the /api/status/:cluster/cons…
Jun 11, 2018
b773ddb
Upgrade to Kafka 1.1.0
Jun 18, 2018
afcc912
Upgrade deprecated APIs
Jun 20, 2018
3f78a12
Add missing test config values
Jun 20, 2018
658f384
Add topic config for Kafka_1_1_0
Jun 20, 2018
b7ce02d
Fix tests
Jun 21, 2018
107f881
Fix delete topic test
Jun 25, 2018
c341897
Add consumer properties in test
Jun 25, 2018
55c2ab8
Fix case of missing properties
Jun 27, 2018
27cedb1
Add systemd support for packages creation and fix configuration's tem…
Mar 20, 2018
d10f95d
make test pass
vpiserchia Jul 1, 2018
cf8f81f
add missing version 1.0.1 everywhere
vpiserchia Jul 1, 2018
e49e9f4
Merge pull request #519 from panditsurabhi/master
patelh Jul 3, 2018
d4cd461
Merge pull request #522 from vpiserchia/1.1.0
patelh Jul 3, 2018
1ee2a1f
Use caffeine for consumer offset cache
patelh Jul 3, 2018
5672010
Expose cache config in tuning
patelh Jul 3, 2018
29ef9db
Update tuning in controller, views, config, fix tests
patelh Jul 4, 2018
2ae1aa8
Add missing files, add logging when metadata is not valid
patelh Jul 5, 2018
9989cba
Fall back on assignments to determine subscriptions
patelh Jul 5, 2018
324411d
Fix deser of backfill groups
patelh Jul 5, 2018
8dc25d5
Merge pull request #526 from yahoo/use-caffeine
patelh Jul 5, 2018
8dcdbf8
Final version before upgrading libs
patelh Jul 6, 2018
41f008d
Fail fast if required properties are missing from consumer properties
Jul 12, 2018
9ada539
Remove PLAINTEXT hardcoding
Jul 12, 2018
84d492e
Remove unnecessary check
Jul 12, 2018
fb1bfdd
Use secure communication if possible
Jul 13, 2018
742cb96
Merge pull request #531 from yahoo/ssl
patelh Jul 13, 2018
1f7e58e
Increment version
patelh Jul 13, 2018
99faec9
Read securityprotocol from cluster config
Jul 17, 2018
9596b99
Increment version
Jul 18, 2018
cc17614
Merge pull request #533 from yahoo/secure-cluster
patelh Jul 18, 2018
7fdd8eb
fixed issues: #528, #513,#502,#479,#477,#471. update add/update clus…
Jul 16, 2018
53b885b
Merge remote-tracking branch 'origin/master'
Jul 16, 2018
f695b97
Merge remote-tracking branch 'origin/master'
Jul 17, 2018
1e5f3c7
fixed some test errors
Jul 17, 2018
f779d1f
Make SASL configs optional, fix update cluster bug
patelh Jul 28, 2018
e27328c
Merge pull request #532 from kingmorning/master
patelh Jul 28, 2018
63c5804
Increment version
patelh Jul 28, 2018
aba9eda
added 2.0.0 as valid version.
murong00 Aug 6, 2018
1fdc1e1
Web Application Potentially Vulnerable to Clickjacking For Nessus
Nov 5, 2018
3fcffa6
made docker image building integrated
Nov 14, 2018
fe34f76
fixed image version tag
Nov 14, 2018
2140b5e
Rename LICENCE to LICENSE
Dec 4, 2018
a353663
allow functionality with Kafka 2.12-2.1.0
Dec 13, 2018
f1a338a
cleanup some white space
brandonpalmer Dec 13, 2018
4ce3f60
Merge pull request #582 from linehrr/feature/dockerization
patelh Dec 17, 2018
48bb088
Merge pull request #593 from brandonpalmer/support-2.1.x
patelh Dec 17, 2018
c55f298
Add support for kafka v1.1.1
vtomasr5 Dec 20, 2018
15fefe1
fix test
vtomasr5 Dec 20, 2018
6951836
Merge pull request #544 from murong00/branch-543
patelh Dec 21, 2018
e4fd136
Merge branch 'master' into master
patelh Dec 21, 2018
4273fc0
Merge pull request #596 from vtomasr5/master
patelh Dec 21, 2018
4d5176b
Hide navigation menu items when reassign-replicas and replica-electio…
dylanmei Dec 22, 2018
27ac3d1
Remove zookeeper info when cluster-manager feature absent
dylanmei Dec 22, 2018
a357975
Merge pull request #599 from dylanmei/hide_cluster_zookeepers
patelh Dec 22, 2018
d1aaed5
Merge pull request #598 from dylanmei/hide_feature_menu_items
patelh Dec 22, 2018
1aaa75b
Merge pull request #579 from hejiefang/iss-576
patelh Dec 22, 2018
6b0c38e
Merge branch 'master' into master
patelh Dec 22, 2018
d60c17c
Merge pull request #511 from gregor-i/master
patelh Dec 22, 2018
aa7f0b1
Merge pull request #462 from andrewdotn/master
patelh Dec 22, 2018
04b585e
Increment version
patelh Dec 22, 2018
aefdec1
Merge branch 'master' of github.com:yahoo/kafka-manager into reassign…
Dec 24, 2018
6c26ad0
Basic authentication with ldap support
dpavlov Dec 26, 2018
d6e111a
Basic authentication with ldap support documentation
dpavlov Jan 2, 2019
8697396
Add debug logging for basic authentication with ldap support
dpavlov Jan 2, 2019
f382346
Merge pull request #600 from KL-HIS/ldap-integration
patelh Jan 9, 2019
7ede1d3
Fix typo in views.consumer.consumerList script tag
akki Jan 18, 2019
f0ebc84
Issue #606 Fix
YounghoLee Jan 21, 2019
38f934e
Update json4s to 3.6.3
Jan 22, 2019
8c17652
Merge pull request #605 from akki/patch-1
patelh Jan 23, 2019
151953d
Merge pull request #607 from YounghoLee/kafka-manager_issue606
patelh Jan 23, 2019
f671f1b
Merge pull request #608 from alexey-kotlyar/upgrade-jackson-to-2.9.6
patelh Jan 23, 2019
42d16b0
switch to slim jre base
Feb 28, 2019
3513924
Merge branch 'master' of github.com:yahoo/kafka-manager
Feb 28, 2019
4ee373d
Merge pull request #618 from linehrr/master
patelh Feb 28, 2019
f1cacea
Add support for Kafka 2.1.0
Mar 6, 2019
259868b
Support Kafka 2.1.1
Mar 6, 2019
a9db1f7
Merge pull request #620 from xales/support-210
patelh Mar 8, 2019
2ca848b
Increment version
patelh Mar 13, 2019
53dcff1
Support Kafka 2.2.0
sbstnsp Mar 27, 2019
684ceae
Update model.scala
woshiduncan Apr 4, 2019
c63f1cc
Merge pull request #1 from woshiduncan/woshiduncan-patch-1
woshiduncan Apr 4, 2019
59a84e7
Merge pull request #626 from sbstnsp/2.2.0
patelh Apr 9, 2019
79231d6
Upgrade libs, increment version, WIP
patelh Jul 6, 2018
b7afe64
Fix tests - WIP
patelh Jul 6, 2018
b85761e
Remove unused dep
patelh Mar 27, 2019
4258cb0
Update README.md
patelh Mar 27, 2019
bf44a55
Update README.md
patelh Mar 27, 2019
e14892b
Fix test using fake app
patelh Mar 28, 2019
0785448
Fix test cleanup, upgrade jackson to 2.9.8
patelh Mar 28, 2019
182d43f
Update travis
patelh Mar 31, 2019
8d29b5d
Fix assembly plugin conf
patelh Mar 31, 2019
a37216a
Upgrade to kafka 2.2.0
patelh Apr 4, 2019
a7b74cd
Fix table highlights
patelh Apr 4, 2019
319a3f0
Update deps, fix log
patelh Apr 5, 2019
451cf33
Update topic configs, closes #629
patelh Apr 9, 2019
2c29667
Merge pull request #627 from yahoo/increment-version
patelh Apr 9, 2019
08a0332
Merge pull request #632 from woshiduncan/master
patelh Apr 9, 2019
5c9cd4b
Improve "not recommended for large number of consumers" message
simPod Mar 24, 2019
d187627
Merge pull request #624 from simPod/improve-message
patelh Apr 9, 2019
69c605e
Merge branch 'master' of github.com:yahoo/kafka-manager into reassign…
Apr 10, 2019
a242f06
Merge pull request #486 from cipriansofronia/reassign-partitions-with…
patelh Apr 10, 2019
2e4c39e
Increment version
patelh Apr 10, 2019
c2f38a6
Fix create topic bug
patelh Apr 11, 2019
9f82c0f
Increment version
patelh Apr 11, 2019
6733e88
Fix update config
patelh Apr 11, 2019
fd5517e
Code for scheduling preferred replica election service
akki Apr 3, 2019
a36f5be
Update HTML as per newer style
akki Apr 18, 2019
f808b68
Use val in cancelScheduleRunElection (instead of var)
akki Apr 30, 2019
022a5d4
Move implicit outside foreach
akki Apr 30, 2019
7f0a1f5
Remove var usage in controllers.PreferredReplicaElection
akki May 6, 2019
4923e9d
Add Group Filter
simioa May 8, 2019
3d8bb1f
Update README
simioa May 8, 2019
c949ff2
Update README
simioa May 8, 2019
d2859b1
Add Secondary Sort by partition ID for assignment view
djiang Aug 8, 2019
8ac50db
Merge pull request #674 from djiang/dj-add-secondary-sort-by-partitio…
panditsurabhi Aug 21, 2019
8f01939
Fix LDAP authentication does not support colons in password
Oct 15, 2019
a8896d7
Merge pull request #645 from simioa/feature/ldap_group_filter
patelh Oct 17, 2019
7aec105
Re-adding unzip to Docker base image
DreadPirateRobertson Dec 13, 2019
774a5f5
Changing Travis build to use openjdk8
DreadPirateRobertson Dec 13, 2019
2a3d13c
Merge pull request #710 from DreadPirateRobertson/master
patelh Jan 10, 2020
97c973c
updated README to reflect name change
gyehuda Jan 22, 2020
6446142
Merge pull request #716 from yahoo/gyehuda-namechange-1
gyehuda Jan 22, 2020
7356569
Remove use of apache logo
patelh Jan 23, 2020
20cbcf0
Merge pull request #718 from patelh/hp-remove-logo
patelh Jan 23, 2020
d09508e
Add support Kafka 2.4.0
kuhella Feb 4, 2020
99075f8
Change to java 11, rename to cmak
patelh Feb 18, 2020
ec4dbb4
Update readme
patelh Feb 18, 2020
f2175fc
Merge pull request #720 from arenadata/2.4.0
patelh Feb 18, 2020
606ff09
Merge pull request #698 from sukhinin/fix-ldap-auth
patelh Feb 18, 2020
a1dcb9d
Merge pull request #724 from yahoo/hp-java-11
patelh Feb 18, 2020
b38d85b
Update readme
patelh Feb 18, 2020
5a4a96d
Rename config keys to cmak to address issue#713
Feb 19, 2020
555167a
Merge pull request #726 from yahoo/surabhip-issue713
patelh Feb 20, 2020
c77bb20
Update dependency to kafka 2.4
patelh Feb 20, 2020
8233da7
Change name to cmak
patelh Feb 20, 2020
1a7ce11
fix merge
patelh Feb 20, 2020
72acd31
increment version
patelh Feb 20, 2020
2740a58
Merge pull request #727 from yahoo/hp-update-kf
patelh Feb 20, 2020
d5c3c0c
migration to cmak notes
patelh Feb 20, 2020
165e29f
Log zk retry, reduce default to 10
patelh Feb 27, 2020
c7640d3
Ignore null msgs from offset topic
patelh Feb 27, 2020
03f2868
Merge pull request #630 from akki/election-scheduler
patelh Mar 3, 2020
047f56d
Increment version
patelh Mar 3, 2020
4f3a999
Disable metric reporter for consumer
patelh Mar 3, 2020
e49c461
Use noop reporter
patelh Mar 3, 2020
afdb8cc
Override kafka JmxReporter
patelh Mar 3, 2020
d357af0
Fix assembly
patelh Mar 3, 2020
2b3ca92
A free public domain favicon
patelh Mar 3, 2020
5a09496
Create a new option to trust all non-expired certificates during LDAP…
ParthKolekar Mar 5, 2020
5d38588
Update README.md documentation
ParthKolekar Mar 5, 2020
cea3b57
cluster duplicate security protocol SASL_PLAINTEXT fix
iamgd67 Mar 6, 2020
97f6263
Set RPM compression to preserve backwards compatability
Naicisum Mar 10, 2020
3134254
Support OAUTHBEARER SASL mechanism
May 8, 2020
5446a78
Sort topics in consumer view
bjoernhaeuser Jun 20, 2020
97c2c9a
Merge pull request #742 from ParthKolekar/trust-all-certificates
patelh Jun 20, 2020
17f4af1
Merge pull request #743 from iamgd67/clusterSecurityProtocolDumplicat…
patelh Jun 20, 2020
d81c7e4
Merge pull request #746 from Naicisum/rpm-compat
patelh Jun 20, 2020
22ac35a
Merge pull request #779 from bjoernhaeuser/sort-topics
patelh Jun 20, 2020
b405265
Merge pull request #769 from heaje/oauthbearer
patelh Jun 20, 2020
eba0b95
Increment version
patelh Jun 20, 2020
6854494
Add support many missing versions
Aug 21, 2020
b369458
Updated missing version and logging info
Aug 21, 2020
8f551ce
Using kafka 2.5.1 as test engine 2.6.0 needs more work
Aug 21, 2020
583133f
remove 2.6.0 support
Aug 21, 2020
f237136
Removing 2.6.0 support for now
Aug 21, 2020
90f3852
backing down to use 2.4.1 server for testing
Aug 21, 2020
dd5cdfb
using 2.4.1 server engine
Aug 21, 2020
20c6296
adding 2.6.0 but using 2.4.1 as test harness
Aug 21, 2020
c3b5140
Fix cut/paste typo for 2.6.0
Aug 21, 2020
8e16403
Merge pull request #793 from tmelhiser/add-missing-versions
patelh Aug 24, 2020
5788b6b
http -> https
lapsatech Nov 3, 2020
c83d8dc
Implement LDAP + StartTLS in CMAK
ParthKolekar Apr 5, 2021
e28fef3
temp version
iamgd67 Jul 27, 2021
7477554
runnable version
iamgd67 Jul 27, 2021
029400d
ignore gradle dir
iamgd67 Jul 27, 2021
4a12f4b
get broker
iamgd67 Jul 27, 2021
2d7e8ee
basic display work
iamgd67 Jul 27, 2021
e67f482
a working version
iamgd67 Jul 28, 2021
22616cb
adjust broker config button
iamgd67 Jul 28, 2021
5abaf9d
link better
iamgd67 Jul 29, 2021
a332b18
code style fix
iamgd67 Jul 29, 2021
bea4983
add test and name/default fix
iamgd67 Jul 29, 2021
0957b70
fit for blank broker config
iamgd67 Jul 29, 2021
82cde91
package move
iamgd67 Jul 29, 2021
4f7d908
broker config page bread crumbs include broker
iamgd67 Jul 29, 2021
5a050fb
display configs on broker page
iamgd67 Jul 29, 2021
71232ee
fix(jquery): Upgrade Jquery version
1arrow Aug 12, 2021
6e7be91
Merge pull request #811 from lapsatech/release-2.0.0.2
patelh Oct 19, 2021
c1868b6
Merge pull request #858 from 1arrow/patch-1
pranavbhole Dec 7, 2021
204288b
Add latest kafka versions
danieltoader Mar 1, 2022
82a3aba
Merge pull request #871 from danieltoader/kafka-3-1-0
pranavbhole Mar 17, 2022
4d7d5cd
pipeline build
mcjyang Apr 27, 2022
d955da4
fix yaml
mcjyang Apr 27, 2022
91034b6
fix image
mcjyang Apr 28, 2022
2ae0b34
use 2.12.13
mcjyang Apr 28, 2022
b6bcc84
use 11.0.14.1_1.6.2_2.12.15
mcjyang Apr 28, 2022
09b137f
pr test
mcjyang Apr 28, 2022
4dcc688
Merge pull request #874 from yahoo/build-pipeline
pranavbhole Apr 28, 2022
8ec4c6f
Add latest kafka versions 3.1.1 and 3.2.0
juergen-walter Jul 15, 2022
9c06b68
Set release version to 3.0.0.7
juergen-walter Jul 29, 2022
15c7777
Merge pull request #881 from juergen-walter/kafka-3-2-0
patelh Dec 12, 2022
65b0b11
Merge pull request #856 from iamgd67/brokerConfigs
patelh Dec 12, 2022
30abfde
Merge pull request #837 from ParthKolekar/parthkolekar-allow-starttls
patelh Dec 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ dist
activator*
RUNNING_PID
.DS_Store
*.log
*.swp
18 changes: 14 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
language: scala
sudo: false
jdk: oraclejdk8
sudo: true
jdk: openjdk11
install: true
script: "./sbt clean coverage assembly"
script: travis_wait 30 ./sbt clean coverage assembly
scala:
- 2.11.5
- 2.12.10
#after_success:
# - sbt coverageReport coveralls

cache:
directories:
- $HOME/.sbt/1.0/dependency
- $HOME/.sbt/boot/scala*
- $HOME/.sbt/launchers
- $HOME/.ivy2/cache
before_cache:
- find $HOME/.sbt -name "*.lock" -type f -delete
- find $HOME/.ivy2/cache -name "ivydata-*.properties" -type f -delete
4 changes: 2 additions & 2 deletions LICENCE → LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ Apache License
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright {yyyy} {name of copyright owner}
Copyright 2015 Yahoo Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand All @@ -198,4 +198,4 @@ Apache License
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.
151 changes: 127 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
Kafka Manager
CMAK (Cluster Manager for Apache Kafka, previously known as Kafka Manager)
=============

A tool for managing [Apache Kafka](http://kafka.apache.org).
CMAK (previously known as Kafka Manager) is a tool for managing [Apache Kafka](http://kafka.apache.org) clusters.
_See below for details about the name change._

It supports the following :
CMAK supports the following:

- Manage multiple clusters
- Easy inspection of cluster state (topics, consumers, offsets, brokers, replica distribution, partition distribution)
Expand Down Expand Up @@ -65,22 +66,21 @@ Broker View
Requirements
------------

1. [Kafka 0.8.1.1 or 0.8.2.1](http://kafka.apache.org/downloads.html)
2. [sbt 0.13.x](http://www.scala-sbt.org/download.html)
3. Java 8+
1. [Kafka 0.8.*.* or 0.9.*.* or 0.10.*.* or 0.11.*.*](http://kafka.apache.org/downloads.html)
2. Java 11+

Configuration
-------------

The minimum configuration is the zookeeper hosts which are to be used for kafka manager state.
The minimum configuration is the zookeeper hosts which are to be used for CMAK (pka kafka manager) state.
This can be found in the application.conf file in conf directory. The same file will be packaged
in the distribution zip file; you may modify settings after unzipping the file on the desired server.

kafka-manager.zkhosts="my.zookeeper.host.com:2181"
cmak.zkhosts="my.zookeeper.host.com:2181"

You can specify multiple zookeeper hosts by comma delimiting them, like so:

kafka-manager.zkhosts="my.zookeeper.host.com:2181,other.zookeeper.host.com:2181"
cmak.zkhosts="my.zookeeper.host.com:2181,other.zookeeper.host.com:2181"

Alternatively, use the environment variable `ZK_HOSTS` if you don't want to hardcode any values.

Expand All @@ -90,30 +90,109 @@ You can optionally enable/disable the following functionality by modifying the d

application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"]

- KMClusterManagerFeature - allows adding, updating, deleting cluster from Kafka Manager
- KMClusterManagerFeature - allows adding, updating, deleting cluster from CMAK (pka Kafka Manager)
- KMTopicManagerFeature - allows adding, updating, deleting topic from a Kafka cluster
- KMPreferredReplicaElectionFeature - allows running of preferred replica election for a Kafka cluster
- KMReassignPartitionsFeature - allows generating partition assignments and reassigning partitions

Consider setting these parameters for larger clusters with jmx enabled :

- cmak.broker-view-thread-pool-size=< 3 * number_of_brokers>
- cmak.broker-view-max-queue-size=< 3 * total # of partitions across all topics>
- cmak.broker-view-update-seconds=< cmak.broker-view-max-queue-size / (10 * number_of_brokers) >

Here is an example for a kafka cluster with 10 brokers, 100 topics, with each topic having 10 partitions giving 1000 total partitions with JMX enabled :

- cmak.broker-view-thread-pool-size=30
- cmak.broker-view-max-queue-size=3000
- cmak.broker-view-update-seconds=30

The follow control consumer offset cache's thread pool and queue :

- cmak.offset-cache-thread-pool-size=< default is # of processors>
- cmak.offset-cache-max-queue-size=< default is 1000>
- cmak.kafka-admin-client-thread-pool-size=< default is # of processors>
- cmak.kafka-admin-client-max-queue-size=< default is 1000>

You should increase the above for large # of consumers with consumer polling enabled. Though it mainly affects ZK based consumer polling.

Kafka managed consumer offset is now consumed by KafkaManagedOffsetCache from the "__consumer_offsets" topic. Note, this has not been tested with large number of offsets being tracked. There is a single thread per cluster consuming this topic so it may not be able to keep up on large # of offsets being pushed to the topic.

### Authenticating a User with LDAP
Warning, you need to have SSL configured with CMAK (pka Kafka Manager) to ensure your credentials aren't passed unencrypted.
Authenticating a User with LDAP is possible by passing the user credentials with the Authorization header.
LDAP authentication is done on first visit, if successful, a cookie is set.
On next request, the cookie value is compared with credentials from Authorization header.
LDAP support is through the basic authentication filter.

1. Configure basic authentication
- basicAuthentication.enabled=true
- basicAuthentication.realm=< basic authentication realm>

2. Encryption parameters (optional, otherwise randomly generated on startup) :
- basicAuthentication.salt="some-hex-string-representing-byte-array"
- basicAuthentication.iv="some-hex-string-representing-byte-array"
- basicAuthentication.secret="my-secret-string"

3. Configure LDAP / LDAP + StartTLS / LDAPS authentication

_Note: LDAP is unencrypted and insecure. LDAPS is a commonly implemented
extension that implements an encryption layer in a manner similar to how
HTTPS adds encryption to an HTTP. LDAPS has not been documented, and the
specification is not formally defined anywhere. LDAP + StartTLS is the
currently recommended way to start an encrypted channel, and it upgrades
an existing LDAP connection to achieve this encryption._

- basicAuthentication.ldap.enabled=< Boolean flag to enable/disable ldap authentication >
- basicAuthentication.ldap.server=< fqdn of LDAP server >
- basicAuthentication.ldap.port=< port of LDAP server (typically 389 for LDAP and LDAP + StartTLS and typically 636 for LDAPS) >
- basicAuthentication.ldap.username=< LDAP search username >
- basicAuthentication.ldap.password=< LDAP search password >
- basicAuthentication.ldap.search-base-dn=< LDAP search base >
- basicAuthentication.ldap.search-filter=< LDAP search filter >
- basicAuthentication.ldap.connection-pool-size=< maximum number of connection to LDAP server >
- basicAuthentication.ldap.ssl=< Boolean flag to enable/disable LDAPS (usually incompatible with StartTLS) >
- basicAuthentication.ldap.starttls=< Boolean flat to enable StartTLS (usually incompatible with SSL) >

4. (Optional) Limit access to a specific LDAP Group
- basicAuthentication.ldap.group-filter=< LDAP group filter >
- basicAuthentication.ldap.ssl-trust-all=< Boolean flag to allow non-expired invalid certificates >

#### Example (Online LDAP Test Server):

- basicAuthentication.ldap.enabled=true
- basicAuthentication.ldap.server="ldap.forumsys.com"
- basicAuthentication.ldap.port=389
- basicAuthentication.ldap.username="cn=read-only-admin,dc=example,dc=com"
- basicAuthentication.ldap.password="password"
- basicAuthentication.ldap.search-base-dn="dc=example,dc=com"
- basicAuthentication.ldap.search-filter="(uid=$capturedLogin$)"
- basicAuthentication.ldap.group-filter="cn=allowed-group,ou=groups,dc=example,dc=com"
- basicAuthentication.ldap.connection-pool-size=10
- basicAuthentication.ldap.ssl=false
- basicAuthentication.ldap.ssl-trust-all=false
- basicAuthetication.ldap.starttls=false


Deployment
----------

The command below will create a zip file which can be used to deploy the application.

sbt clean dist
./sbt clean dist

Please refer to play framework documentation on production deployment.
Please refer to play framework documentation on [production deployment/configuration](https://www.playframework.com/documentation/2.4.x/ProductionConfiguration).

If java is not in your path, or you need to build against a specific java version,
please use the following (the example assumes oracle java8):
please use the following (the example assumes zulu java11):

$ PATH=/usr/local/oracle-java-8/bin:$PATH \
JAVA_HOME=/usr/local/oracle-java-8 \
/path/to/sbt -java-home /usr/local/oracle-java-8 dist clean
$ PATH=/usr/lib/jvm/zulu-11-amd64/bin:$PATH \
JAVA_HOME=/usr/lib/jvm/zulu-11-amd64 \
/path/to/sbt -java-home /usr/lib/jvm/zulu-11-amd64 clean dist

This ensures that the 'java' and 'javac' binaries in your path are first looked up in the
oracle java8 release. Next, for all downstream tools that only listen to JAVA_HOME, it points
them to the oracle java8 location. Lastly, it tells sbt to use the oracle java8 location as
correct location. Next, for all downstream tools that only listen to JAVA_HOME, it points
them to the java11 location. Lastly, it tells sbt to use the java11 location as
well.

Starting the service
Expand All @@ -122,17 +201,27 @@ Starting the service
After extracting the produced zipfile, and changing the working directory to it, you can
run the service like this:

$ bin/kafka-manager
$ bin/cmak

By default, it will choose port 9000. This is overridable, as is the location of the
configuration file. For example:

$ bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=8080
$ bin/cmak -Dconfig.file=/path/to/application.conf -Dhttp.port=8080

Again, if java is not in your path, or you need to run against a different version of java,
add the -java-home option as follows:

$ bin/kafka-manager -java-home /usr/local/oracle-java-8
$ bin/cmak -java-home /usr/lib/jvm/zulu-11-amd64

Starting the service with Security
----------------------------------

To add JAAS configuration for SASL, add the config file location at start:

$ bin/cmak -Djava.security.auth.login.config=/path/to/my-jaas.conf

NOTE: Make sure the user running CMAK (pka kafka manager) has read permissions on the jaas config file


Packaging
---------
Expand All @@ -146,12 +235,26 @@ If you'd like to create a Debian or RPM package instead, you can run one of:
Credits
-------

Logo/favicon used is from [Apache Kafka](http://kafka.apache.org).

Most of the utils code has been adapted to work with [Apache Curator](http://curator.apache.org) from [Apache Kafka](http://kafka.apache.org).

Name and Management
-------

CMAK was renamed from its previous name due to [this issue](https://github.com/yahoo/kafka-manager/issues/713). CMAK is designed to be used with Apache Kafka and is offered to support the needs of the Kafka community. This project is currently managed by employees at Verizon Media and the community who supports this project.

License
-------

Apache Licensed. See accompanying LICENSE file.
Licensed under the terms of the Apache License 2.0. See accompanying LICENSE file for terms.

Consumer/Producer Lag
-------

Producer offset is polled. Consumer offset is read from the offset topic for Kafka based consumers. This means the reported lag may be negative since we are consuming offset from the offset topic faster then polling the producer offset. This is normal and not a problem.

Migration from Kafka Manager to CMAK
-------

1. Copy config files from old version to new version (application.conf, consumer.properties)
2. Change start script to use bin/cmak instead of bin/kafka-manager

29 changes: 0 additions & 29 deletions app/GlobalKafkaManager.scala

This file was deleted.

13 changes: 13 additions & 0 deletions app/controllers/ApiHealth.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package controllers

import play.api.i18n.I18nSupport
import play.api.mvc._

import scala.concurrent.ExecutionContext

class ApiHealth(val cc: ControllerComponents)(implicit ec:ExecutionContext) extends AbstractController(cc) with I18nSupport {

def ping = Action { implicit request:RequestHeader =>
Ok("healthy").withHeaders("X-Frame-Options" -> "SAMEORIGIN")
}
}
18 changes: 9 additions & 9 deletions app/controllers/Application.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@
package controllers

import features.ApplicationFeatures
import kafka.manager.features.ClusterFeatures
import models.navigation.Menus
import play.api.i18n.I18nSupport
import play.api.mvc._

import scala.concurrent.ExecutionContext

/**
* @author hiral
*/
object Application extends Controller {

import play.api.libs.concurrent.Execution.Implicits.defaultContext

private[this] val kafkaManager = KafkaManagerContext.getKafkaManager
class Application(val cc: ControllerComponents, kafkaManagerContext: KafkaManagerContext)
(implicit af: ApplicationFeatures, menus: Menus, ec:ExecutionContext) extends AbstractController(cc) with I18nSupport {

private[this] implicit val af: ApplicationFeatures = ApplicationFeatures.features
private[this] val kafkaManager = kafkaManagerContext.getKafkaManager

def index = Action.async {
def index = Action.async { implicit request: RequestHeader =>
kafkaManager.getClusterList.map { errorOrClusterList =>
Ok(views.html.index(errorOrClusterList))
Ok(views.html.index(errorOrClusterList)).withHeaders("X-Frame-Options" -> "SAMEORIGIN")
}
}
}
Loading