Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import java.io.IOException;
import java.lang.management.MemoryUsage;
import java.net.InetAddress;
import java.util.Collections;
import java.util.List;
import java.util.Map;
Expand All @@ -32,6 +33,7 @@
import org.apache.cassandra.tools.NodeProbe;
import org.apache.cassandra.tools.nodetool.Compact;
import org.apache.tinkerpop.gremlin.util.NumberHelper;
import org.slf4j.Logger;

import com.baidu.hugegraph.backend.store.BackendMetrics;
import com.baidu.hugegraph.backend.store.BackendTable;
Expand All @@ -42,13 +44,16 @@
import com.baidu.hugegraph.testutil.Whitebox;
import com.baidu.hugegraph.util.E;
import com.baidu.hugegraph.util.InsertionOrderUtil;
import com.baidu.hugegraph.util.Log;
import com.baidu.hugegraph.util.UnitUtil;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.google.common.collect.ImmutableList;

public class CassandraMetrics implements BackendMetrics {

private static final Logger LOG = Log.logger(CassandraMetrics.class);

private final Cluster cluster;
private final int port;
private final String username;
Expand Down Expand Up @@ -139,6 +144,7 @@ protected Map<String, Object> getMetricsByHost(String host) {
* probe.takeSnapshot(snapshotName, table, options, keyspaces)
*/
} catch (Throwable e) {
LOG.debug("Unable to get metrics from host '{}':", host, e);
metrics.put(EXCEPTION, e.toString());
}
return metrics;
Expand Down Expand Up @@ -290,15 +296,17 @@ private Map<String, Object> executeAllHosts(Function<String, Object> func) {

Map<String, Object> hostsResults = InsertionOrderUtil.newMap();
for (Host host : hosts) {
String address = host.getAddress().getHostAddress();
hostsResults.put(address, func.apply(address));
InetAddress address = host.getAddress();
String hostAddress = address.getHostAddress();
hostsResults.put(hostAddress, func.apply(hostAddress));
}
results.put(SERVERS, hostsResults);

return results;
}

private NodeProbe newNodeProbe(String host) throws IOException {
LOG.debug("Probe to cassandra node: '{}:{}'", host, this.port);
return this.username.isEmpty() ?
new NodeProbe(host, this.port) :
new NodeProbe(host, this.port, this.username, this.password);
Expand Down
222 changes: 112 additions & 110 deletions hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,123 +100,125 @@ public void testMetricsBackend() {

servers = (Map<?, ?>) graph.get("servers");
Assert.assertGte(1, servers.size());
for (Map.Entry<?, ?> e : servers.entrySet()) {
String key = (String) e.getKey();
value = e.getValue();
Assert.assertTrue(String.format(
"Expect map value for key %s but got %s",
key, value),
value instanceof Map);
host = (Map<?, ?>) value;
assertMapContains(host, "mem_max");
assertMapContains(host, "mem_committed");
assertMapContains(host, "mem_used");
assertMapContains(host, "mem_used_readable");
assertMapContains(host, "mem_unit");

assertMapContains(host, "disk_usage");
assertMapContains(host, "disk_usage_readable");
assertMapContains(host, "disk_usage_details");
assertMapContains(host, "disk_unit");

assertMapContains(host, "uptime");
assertMapContains(host, "uptime_readable");
assertMapContains(host, "time_unit");

assertMapContains(host, "estimated_partition_count");
assertMapContains(host, "dropped_mutations");
assertMapContains(host, "pending_flushes");
assertMapContains(host, "key_cache_hit_rate");
assertMapContains(host, "bloom_filter_false_ratio");

assertMapContains(host, "write_latency_hugegraph");
assertMapContains(host, "read_latency_hugegraph");
assertMapContains(host, "write_latency_*");
assertMapContains(host, "read_latency_*");

assertMapContains(host, "key_cache_size");
assertMapContains(host, "key_cache_entries");
assertMapContains(host, "row_cache_size");
assertMapContains(host, "row_cache_entries");
assertMapContains(host, "counter_cache_size");
assertMapContains(host, "counter_cache_entries");

assertMapContains(host, "compaction_completed_tasks");
assertMapContains(host, "compaction_pending_tasks");
assertMapContains(host, "compaction_bytes_compacted");

assertMapContains(host, "live_nodes");
assertMapContains(host, "joining_nodes");
assertMapContains(host, "moving_nodes");
assertMapContains(host, "leaving_nodes");
assertMapContains(host, "unreachable_nodes");

assertMapContains(host, "keyspaces");
assertMapContains(host, "num_tables");
assertMapContains(host, "exception_count");
}
// TODO: Uncomment after fixed #1843
// for (Map.Entry<?, ?> e : servers.entrySet()) {
// String key = (String) e.getKey();
// value = e.getValue();
// Assert.assertTrue(String.format(
// "Expect map value for key %s but got %s",
// key, value),
// value instanceof Map);
// host = (Map<?, ?>) value;
// assertMapContains(host, "mem_max");
// assertMapContains(host, "mem_committed");
// assertMapContains(host, "mem_used");
// assertMapContains(host, "mem_used_readable");
// assertMapContains(host, "mem_unit");
//
// assertMapContains(host, "disk_usage");
// assertMapContains(host, "disk_usage_readable");
// assertMapContains(host, "disk_usage_details");
// assertMapContains(host, "disk_unit");
//
// assertMapContains(host, "uptime");
// assertMapContains(host, "uptime_readable");
// assertMapContains(host, "time_unit");
//
// assertMapContains(host, "estimated_partition_count");
// assertMapContains(host, "dropped_mutations");
// assertMapContains(host, "pending_flushes");
// assertMapContains(host, "key_cache_hit_rate");
// assertMapContains(host, "bloom_filter_false_ratio");
//
// assertMapContains(host, "write_latency_hugegraph");
// assertMapContains(host, "read_latency_hugegraph");
// assertMapContains(host, "write_latency_*");
// assertMapContains(host, "read_latency_*");
//
// assertMapContains(host, "key_cache_size");
// assertMapContains(host, "key_cache_entries");
// assertMapContains(host, "row_cache_size");
// assertMapContains(host, "row_cache_entries");
// assertMapContains(host, "counter_cache_size");
// assertMapContains(host, "counter_cache_entries");
//
// assertMapContains(host, "compaction_completed_tasks");
// assertMapContains(host, "compaction_pending_tasks");
// assertMapContains(host, "compaction_bytes_compacted");
//
// assertMapContains(host, "live_nodes");
// assertMapContains(host, "joining_nodes");
// assertMapContains(host, "moving_nodes");
// assertMapContains(host, "leaving_nodes");
// assertMapContains(host, "unreachable_nodes");
//
// assertMapContains(host, "keyspaces");
// assertMapContains(host, "num_tables");
// assertMapContains(host, "exception_count");
// }
break;
case "scylladb":
assertMapContains(graph, "cluster_id");
assertMapContains(graph, "servers");

servers = (Map<?, ?>) graph.get("servers");
Assert.assertGte(1, servers.size());
for (Map.Entry<?, ?> e : servers.entrySet()) {
String key = (String) e.getKey();
value = e.getValue();
Assert.assertTrue(String.format(
"Expect map value for key %s but got %s",
key, value),
value instanceof Map);
host = (Map<?, ?>) value;
assertMapContains(host, "mem_max");
assertMapContains(host, "mem_committed");
assertMapContains(host, "mem_used");
assertMapContains(host, "mem_used_readable");
assertMapContains(host, "mem_unit");

assertMapContains(host, "disk_usage");
assertMapContains(host, "disk_usage_readable");
assertMapContains(host, "disk_usage_details");
assertMapContains(host, "disk_unit");

assertMapContains(host, "uptime");
assertMapContains(host, "uptime_readable");
assertMapContains(host, "time_unit");

assertMapContains(host, "estimated_partition_count");
assertMapContains(host, "dropped_mutations");
assertMapContains(host, "pending_flushes");
//assertMapContains(host, "key_cache_hit_rate");
assertMapContains(host, "bloom_filter_false_ratio");

//assertMapContains(host, "write_latency_hugegraph");
//assertMapContains(host, "read_latency_hugegraph");
//assertMapContains(host, "write_latency_*");
//assertMapContains(host, "read_latency_*");

assertMapContains(host, "key_cache_size");
assertMapContains(host, "key_cache_entries");
assertMapContains(host, "row_cache_size");
assertMapContains(host, "row_cache_entries");
assertMapContains(host, "counter_cache_size");
assertMapContains(host, "counter_cache_entries");

assertMapContains(host, "compaction_completed_tasks");
assertMapContains(host, "compaction_pending_tasks");
//assertMapContains(host, "compaction_bytes_compacted");

assertMapContains(host, "live_nodes");
assertMapContains(host, "joining_nodes");
assertMapContains(host, "moving_nodes");
assertMapContains(host, "leaving_nodes");
assertMapContains(host, "unreachable_nodes");

assertMapContains(host, "keyspaces");
assertMapContains(host, "num_tables");
assertMapContains(host, "exception_count");
}
// TODO: Uncomment after fixed #1843
// for (Map.Entry<?, ?> e : servers.entrySet()) {
// String key = (String) e.getKey();
// value = e.getValue();
// Assert.assertTrue(String.format(
// "Expect map value for key %s but got %s",
// key, value),
// value instanceof Map);
// host = (Map<?, ?>) value;
// assertMapContains(host, "mem_max");
// assertMapContains(host, "mem_committed");
// assertMapContains(host, "mem_used");
// assertMapContains(host, "mem_used_readable");
// assertMapContains(host, "mem_unit");
//
// assertMapContains(host, "disk_usage");
// assertMapContains(host, "disk_usage_readable");
// assertMapContains(host, "disk_usage_details");
// assertMapContains(host, "disk_unit");
//
// assertMapContains(host, "uptime");
// assertMapContains(host, "uptime_readable");
// assertMapContains(host, "time_unit");
//
// assertMapContains(host, "estimated_partition_count");
// assertMapContains(host, "dropped_mutations");
// assertMapContains(host, "pending_flushes");
// //assertMapContains(host, "key_cache_hit_rate");
// assertMapContains(host, "bloom_filter_false_ratio");
//
// //assertMapContains(host, "write_latency_hugegraph");
// //assertMapContains(host, "read_latency_hugegraph");
// //assertMapContains(host, "write_latency_*");
// //assertMapContains(host, "read_latency_*");
//
// assertMapContains(host, "key_cache_size");
// assertMapContains(host, "key_cache_entries");
// assertMapContains(host, "row_cache_size");
// assertMapContains(host, "row_cache_entries");
// assertMapContains(host, "counter_cache_size");
// assertMapContains(host, "counter_cache_entries");
//
// assertMapContains(host, "compaction_completed_tasks");
// assertMapContains(host, "compaction_pending_tasks");
// //assertMapContains(host, "compaction_bytes_compacted");
//
// assertMapContains(host, "live_nodes");
// assertMapContains(host, "joining_nodes");
// assertMapContains(host, "moving_nodes");
// assertMapContains(host, "leaving_nodes");
// assertMapContains(host, "unreachable_nodes");
//
// assertMapContains(host, "keyspaces");
// assertMapContains(host, "num_tables");
// assertMapContains(host, "exception_count");
// }
break;
case "hbase":
assertMapContains(graph, "cluster_id");
Expand Down