public static BrokerMetric getCpuMetric(long now, int brokerId) { double cpuUtil = ((com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean()).getProcessCpuLoad(); return new BrokerMetric(RawMetricType.BROKER_CPU_UTIL, now, brokerId, cpuUtil); }
@Override public String toString() { return String.format("[%s,%s,time=%d,brokerId=%d,value=%.3f]", MetricClassId.BROKER_METRIC, rawMetricType(), time(), brokerId(), value()); } }
public static CruiseControlMetric fromBytes(byte[] bytes) throws UnknownVersionException { ByteBuffer buffer = ByteBuffer.wrap(bytes); switch (CruiseControlMetric.MetricClassId.forId(buffer.get())) { case BROKER_METRIC: return BrokerMetric.fromBuffer(buffer); case TOPIC_METRIC: return TopicMetric.fromBuffer(buffer); case PARTITION_METRIC: return PartitionMetric.fromBuffer(buffer); default: // This could happen when a new type of metric is added but we are still running the old code. // simply ignore the metric by returning a null. return null; } }
@Override public ByteBuffer toBuffer(int headerPos) { ByteBuffer buffer = ByteBuffer.allocate(headerPos + 1 /* version */ + 1 /* raw metric type */ + Long.BYTES /* time */ + Integer.BYTES /* broker id */ + Double.BYTES /* value */); buffer.position(headerPos); buffer.put(METRIC_VERSION); buffer.put(rawMetricType().id()); buffer.putLong(time()); buffer.putInt(brokerId()); buffer.putDouble(value()); return buffer; }
static BrokerMetric fromBuffer(ByteBuffer buffer) throws UnknownVersionException { byte version = buffer.get(); if (version > METRIC_VERSION) { throw new UnknownVersionException("Cannot deserialize the topic metrics for version " + version + ". " + "Current version is " + METRIC_VERSION); } RawMetricType rawMetricType = RawMetricType.forId(buffer.get()); long time = buffer.getLong(); int brokerId = buffer.getInt(); double value = buffer.getDouble(); return new BrokerMetric(rawMetricType, time, brokerId, value); }
public static CruiseControlMetric fromBytes(byte[] bytes) throws UnknownVersionException { ByteBuffer buffer = ByteBuffer.wrap(bytes); switch (CruiseControlMetric.MetricClassId.forId(buffer.get())) { case BROKER_METRIC: return BrokerMetric.fromBuffer(buffer); case TOPIC_METRIC: return TopicMetric.fromBuffer(buffer); case PARTITION_METRIC: return PartitionMetric.fromBuffer(buffer); default: // This could happen when a new type of metric is added but we are still running the old code. // simply ignore the metric by returning a null. return null; } }
@Override public String toString() { return String.format("[%s,%s,time=%d,brokerId=%d,value=%.3f]", MetricClassId.BROKER_METRIC, rawMetricType(), time(), brokerId(), value()); } }
return new TopicMetric(RawMetricType.TOPIC_BYTES_IN, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_IN, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_BYTES_OUT, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_OUT, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_REPLICATION_BYTES_IN, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_REPLICATION_BYTES_IN, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_REPLICATION_BYTES_OUT, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_REPLICATION_BYTES_OUT, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_FETCH_REQUEST_RATE, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_FETCH_REQUEST_RATE, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_PRODUCE_REQUEST_RATE, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_PRODUCE_REQUEST_RATE, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_MESSAGES_IN_PER_SEC, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_MESSAGES_IN_PER_SEC, now, brokerId, value); return new BrokerMetric(RawMetricType.BROKER_PRODUCE_REQUEST_RATE, now, brokerId, value);
@Override public ByteBuffer toBuffer(int headerPos) { ByteBuffer buffer = ByteBuffer.allocate(headerPos + 1 /* version */ + 1 /* raw metric type */ + Long.BYTES /* time */ + Integer.BYTES /* broker id */ + Double.BYTES /* value */); buffer.position(headerPos); buffer.put(METRIC_VERSION); buffer.put(rawMetricType().id()); buffer.putLong(time()); buffer.putInt(brokerId()); buffer.putDouble(value()); return buffer; }
switch (rawMetricType) { case ALL_TOPIC_BYTES_IN: metrics.add(new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_IN, _time.milliseconds(), BROKER_ID_0, 820.0 * BYTES_IN_KB)); metrics.add(new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_IN, _time.milliseconds(), BROKER_ID_1, 500.0 * BYTES_IN_KB)); break; case ALL_TOPIC_BYTES_OUT: metrics.add(new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_OUT, _time.milliseconds(), BROKER_ID_0, 1380.0 * BYTES_IN_KB)); metrics.add(new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_OUT, _time.milliseconds(), BROKER_ID_1, 500.0 * BYTES_IN_KB)); break; case BROKER_CPU_UTIL: metrics.add(new BrokerMetric(RawMetricType.BROKER_CPU_UTIL, _time.milliseconds(), BROKER_ID_0, 50.0)); metrics.add(new BrokerMetric(RawMetricType.BROKER_CPU_UTIL, _time.milliseconds(), BROKER_ID_1, 30.0)); break; default: metrics.add(new BrokerMetric(rawMetricType, _time.milliseconds(), BROKER_ID_0, i++ * BYTES_IN_MB)); metrics.add(new BrokerMetric(rawMetricType, _time.milliseconds(), BROKER_ID_1, i++ * BYTES_IN_MB)); break;
@Test public void testBrokerMetricSerde() throws UnknownVersionException { BrokerMetric brokerMetric = new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_IN, 123L, 0, 0.1); CruiseControlMetric deserialized = MetricSerde.fromBytes(MetricSerde.toBytes(brokerMetric)); assertEquals(CruiseControlMetric.MetricClassId.BROKER_METRIC.id(), deserialized.metricClassId().id()); assertEquals(RawMetricType.ALL_TOPIC_BYTES_IN.id(), deserialized.rawMetricType().id()); assertEquals(TIME, deserialized.time()); assertEquals(BROKER_ID, deserialized.brokerId()); assertEquals(VALUE, deserialized.value(), 0.000001); }
public static BrokerMetric getCpuMetric(long now, int brokerId) { double cpuUtil = ((com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean()).getProcessCpuLoad(); return new BrokerMetric(RawMetricType.BROKER_CPU_UTIL, now, brokerId, cpuUtil); }
static BrokerMetric fromBuffer(ByteBuffer buffer) throws UnknownVersionException { byte version = buffer.get(); if (version > METRIC_VERSION) { throw new UnknownVersionException("Cannot deserialize the topic metrics for version " + version + ". " + "Current version is " + METRIC_VERSION); } RawMetricType rawMetricType = RawMetricType.forId(buffer.get()); long time = buffer.getLong(); int brokerId = buffer.getInt(); double value = buffer.getDouble(); return new BrokerMetric(rawMetricType, time, brokerId, value); }
return new TopicMetric(RawMetricType.TOPIC_BYTES_IN, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_IN, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_BYTES_OUT, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_BYTES_OUT, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_REPLICATION_BYTES_IN, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_REPLICATION_BYTES_IN, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_REPLICATION_BYTES_OUT, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_REPLICATION_BYTES_OUT, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_FETCH_REQUEST_RATE, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_FETCH_REQUEST_RATE, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_PRODUCE_REQUEST_RATE, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_PRODUCE_REQUEST_RATE, now, brokerId, value); return new TopicMetric(RawMetricType.TOPIC_MESSAGES_IN_PER_SEC, now, brokerId, topic, value); } else { return new BrokerMetric(RawMetricType.ALL_TOPIC_MESSAGES_IN_PER_SEC, now, brokerId, value); return new BrokerMetric(RawMetricType.BROKER_PRODUCE_REQUEST_RATE, now, brokerId, value);