JMX stands for Java Management Extensions. It is a technology that allows monitoring and managing Java applications, including Kafka brokers.
Click to reveal answer
beginner
How are Kafka metrics exposed via JMX?
Kafka exposes its internal metrics as MBeans (Managed Beans) through JMX, which can be accessed by JMX clients to monitor broker performance and health.
Click to reveal answer
intermediate
Name two common Kafka JMX metrics related to message throughput.
Two common Kafka JMX metrics for throughput are: 1. kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec 2. kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
Click to reveal answer
beginner
What tool can you use to view Kafka JMX metrics in real-time?
You can use JConsole, a Java monitoring tool, to connect to Kafka's JMX port and view metrics in real-time.
Click to reveal answer
beginner
Why is it important to monitor Kafka using JMX metrics?
Monitoring Kafka with JMX metrics helps detect performance issues, resource bottlenecks, and failures early, ensuring reliable message processing and system health.
Click to reveal answer
What does Kafka expose through JMX for monitoring?
AHTTP endpoints
BSQL queries
CMBeans representing internal metrics
DREST APIs
✗ Incorrect
Kafka exposes internal metrics as MBeans via JMX, which can be accessed by monitoring tools.
Which tool is commonly used to connect to Kafka's JMX port?
AJConsole
BPostman
CKafka Connect
DDocker
✗ Incorrect
JConsole is a Java monitoring tool used to connect to JMX ports and view metrics.
Which Kafka JMX metric tracks the number of messages received per second?
ADiskUsage
BBytesOutPerSec
CRequestLatency
DMessagesInPerSec
✗ Incorrect
MessagesInPerSec measures the number of messages received per second by the broker.
Why should you monitor Kafka using JMX metrics?
ATo deploy new Kafka versions
BTo detect performance issues early
CTo write SQL queries
DTo create Kafka topics
✗ Incorrect
Monitoring helps detect performance and health issues early for reliable Kafka operation.
Kafka JMX metrics are exposed on which type of port?
AJMX port
BHTTP port
CSSH port
DFTP port
✗ Incorrect
Kafka exposes JMX metrics on a dedicated JMX port configured for monitoring.
Explain how Kafka uses JMX metrics to help monitor broker health and performance.
Think about how Java applications expose internal data for monitoring.
You got /4 concepts.
List some key Kafka JMX metrics you would check to understand message throughput and broker load.
Focus on metrics related to messages and bytes per second.
You got /4 concepts.
Practice
(1/5)
1. What is the primary purpose of JMX metrics in Kafka?
easy
A. To configure Kafka brokers dynamically
B. To send messages between Kafka topics
C. To monitor Kafka's internal performance and health
D. To store data permanently in Kafka
Solution
Step 1: Understand JMX metrics role
JMX metrics provide data about Kafka's internal state and performance.
Step 2: Identify the correct purpose
Monitoring performance and health is the main use of JMX metrics in Kafka.
Final Answer:
To monitor Kafka's internal performance and health -> Option C
Quick Check:
JMX metrics = Monitoring Kafka [OK]
Hint: JMX metrics are for monitoring, not messaging or storage [OK]
Common Mistakes:
Confusing metrics with message sending
Thinking JMX configures Kafka brokers
Assuming JMX stores Kafka data
2. Which of the following is the correct way to identify a Kafka JMX metric?
easy
A. Using a topic name and partition number
B. Using a unique ObjectName and attribute
C. Using a consumer group ID
D. Using a broker ID and port number
Solution
Step 1: Recall JMX metric identification
Each JMX metric is accessed by a unique ObjectName and attribute in Kafka.
Step 2: Compare options
Only Using a unique ObjectName and attribute correctly describes the identification method for JMX metrics.
Final Answer:
Using a unique ObjectName and attribute -> Option B
Quick Check:
JMX metric ID = ObjectName + attribute [OK]
Hint: JMX metrics use ObjectName and attribute, not topic or group IDs [OK]
Common Mistakes:
Mixing JMX metric IDs with Kafka topic or consumer IDs
Confusing broker info with metric identifiers
Assuming partition number identifies metrics
3. Given the following Java snippet to get a Kafka JMX metric attribute, what will be the output if the metric value is 150?
ObjectName name = new ObjectName("kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec");
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Integer value = (Integer) mbs.getAttribute(name, "Count");
System.out.println(value);
medium
A. MBeanServerException
B. null
C. Count
D. 150
Solution
Step 1: Understand the code's purpose
The code queries the JMX MBeanServer for the 'Count' attribute of the specified metric.
Step 2: Interpret the output
If the metric value is 150, the printed output will be the integer 150.
Final Answer:
150 -> Option D
Quick Check:
Metric value printed = 150 [OK]
Hint: JMX attribute value prints directly if metric exists [OK]
Common Mistakes:
Expecting attribute name instead of value
Assuming null if metric exists
Confusing exceptions with normal output
4. You try to read a Kafka JMX metric but get a javax.management.InstanceNotFoundException. What is the most likely cause?
medium
A. The ObjectName used does not match any registered MBean
B. The Kafka broker is down
C. The attribute name is misspelled
D. The MBeanServer is not initialized
Solution
Step 1: Understand the exception meaning
InstanceNotFoundException means the requested MBean ObjectName is not found in the MBeanServer.
Step 2: Identify the cause
If the ObjectName does not match any registered MBean, this exception occurs.
Final Answer:
The ObjectName used does not match any registered MBean -> Option A
Quick Check:
InstanceNotFoundException = Wrong ObjectName [OK]
Hint: Check ObjectName spelling if InstanceNotFoundException occurs [OK]
Common Mistakes:
Blaming attribute name for InstanceNotFoundException
Assuming broker down causes this exception
Thinking MBeanServer is uninitialized
5. You want to monitor Kafka's message throughput using JMX metrics and alert if MessagesInPerSec.Count exceeds 1000. Which approach correctly combines JMX metric reading and alert logic in Java?
hard
A. Query the MBeanServer for the metric attribute, then compare the value to 1000 and trigger alert if greater
B. Subscribe to Kafka topic and count messages manually, ignoring JMX metrics
C. Use Kafka consumer lag metrics instead of MessagesInPerSec
D. Restart Kafka broker when MessagesInPerSec.Count exceeds 1000
Solution
Step 1: Understand monitoring with JMX
To monitor throughput, read the MessagesInPerSec.Count attribute from Kafka's JMX MBeanServer.
Step 2: Implement alert logic
Compare the retrieved metric value to 1000 and trigger an alert if it exceeds this threshold.
Final Answer:
Query the MBeanServer for the metric attribute, then compare the value to 1000 and trigger alert if greater -> Option A