DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Status
Current state: Under Discussion
Discussion thread:
JIRA:
Released:
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
In KIP-827 we exposed logdirs total and usable space via Kafka API, we can also expose this through kafka-log-dirs.sh.
Public Interfaces
Currently, we output the logDir info in the form of a JSON, here is an example:
{
"version":1,
"brokers":[
{
"broker":1,
"logDirs":[
{
"logDir":"/tmp/kraft-combined-logs",
"error":null,
"partitions":[
{
"partition":"foo-0",
"size":0,
"offsetLag":0,
"isFuture":false
}
]
}
]
}
]
}
we are just adding totalBytes and usableBytes to every json entity in $.brokers.logDirs, and bumping the $.version to 2.
Proposed Changes
We already have a LogDirsCommand which can be used to get the logdirs and details about the replicas they contain, here is the demo:
bin/kafka-log-dirs.sh --bootstrap-server localhost:9092 --topic-list foo --describe
Querying brokers for log directories information
Received log directory information from brokers 1
{
"version":1,
"brokers":[
{
"broker":1,
"logDirs":[
{
"logDir":"/tmp/kraft-combined-logs",
"error":null,
"partitions":[
{
"partition":"foo-0",
"size":0,
"offsetLag":0,
"isFuture":false
}
]
}
]
}
]
}
we are just adding totalBytes and usableBytes to every json entity in logDirs, and set version=2, here is an demo:
bin/kafka-log-dirs.sh --bootstrap-server localhost:9092 --topic-list foo --describe
Querying brokers for log directories information
Received log directory information from brokers 1
{
"version":2,
"brokers":[
{
"broker":1,
"logDirs":[
{
"logDir":"/tmp/kraft-combined-logs",
"totalBytes":{
"empty":false,
"present":true,
"asLong":245107195904
},
"error":null,
"usableBytes":{
"empty":false,
"present":true,
"asLong":16010731520
},
"partitions":[
{
"partition":"foo-0",
"size":0,
"offsetLag":0,
"isFuture":false
}
]
}
]
}
]
}
Compatibility, Deprecation, and Migration Plan
This change only added 2 fields to JSON schema so it's expected to be compatible.
Test Plan
Test locally using a local Kafka cluster.