Search in sources :

Example 11 with ColumnFamilyStoreMBean

use of org.apache.cassandra.db.ColumnFamilyStoreMBean in project cassandra by apache.

the class JMXAuthTest method readAttribute.

@Test
public void readAttribute() throws Throwable {
    ColumnFamilyStoreMBean proxy = JMX.newMBeanProxy(connection, ObjectName.getInstance(tableMBean.getObjectName()), ColumnFamilyStoreMBean.class);
    // grant SELECT on a single specific Table mbean
    assertPermissionOnResource(Permission.SELECT, tableMBean, proxy::getTableName);
    // grant SELECT on all Table mbeans in named keyspace
    clearAllPermissions();
    JMXResource allTablesInKeyspace = JMXResource.mbean(String.format("org.apache.cassandra.db:type=Tables,keyspace=%s,*", KEYSPACE));
    assertPermissionOnResource(Permission.SELECT, allTablesInKeyspace, proxy::getTableName);
    // grant SELECT on all Table mbeans
    clearAllPermissions();
    JMXResource allTables = JMXResource.mbean("org.apache.cassandra.db:type=Tables,*");
    assertPermissionOnResource(Permission.SELECT, allTables, proxy::getTableName);
    // grant SELECT ON ALL MBEANS
    clearAllPermissions();
    assertPermissionOnResource(Permission.SELECT, JMXResource.root(), proxy::getTableName);
}
Also used : ColumnFamilyStoreMBean(org.apache.cassandra.db.ColumnFamilyStoreMBean) Test(org.junit.Test)

Example 12 with ColumnFamilyStoreMBean

use of org.apache.cassandra.db.ColumnFamilyStoreMBean in project eiger by wlloyd.

the class NodeCmd method printColumnFamilyStats.

public void printColumnFamilyStats(PrintStream outs) {
    Map<String, List<ColumnFamilyStoreMBean>> cfstoreMap = new HashMap<String, List<ColumnFamilyStoreMBean>>();
    // get a list of column family stores
    Iterator<Map.Entry<String, ColumnFamilyStoreMBean>> cfamilies = probe.getColumnFamilyStoreMBeanProxies();
    while (cfamilies.hasNext()) {
        Entry<String, ColumnFamilyStoreMBean> entry = cfamilies.next();
        String tableName = entry.getKey();
        ColumnFamilyStoreMBean cfsProxy = entry.getValue();
        if (!cfstoreMap.containsKey(tableName)) {
            List<ColumnFamilyStoreMBean> columnFamilies = new ArrayList<ColumnFamilyStoreMBean>();
            columnFamilies.add(cfsProxy);
            cfstoreMap.put(tableName, columnFamilies);
        } else {
            cfstoreMap.get(tableName).add(cfsProxy);
        }
    }
    // print out the table statistics
    for (Entry<String, List<ColumnFamilyStoreMBean>> entry : cfstoreMap.entrySet()) {
        String tableName = entry.getKey();
        List<ColumnFamilyStoreMBean> columnFamilies = entry.getValue();
        long tableReadCount = 0;
        long tableWriteCount = 0;
        int tablePendingTasks = 0;
        double tableTotalReadTime = 0.0f;
        double tableTotalWriteTime = 0.0f;
        outs.println("Keyspace: " + tableName);
        for (ColumnFamilyStoreMBean cfstore : columnFamilies) {
            long writeCount = cfstore.getWriteCount();
            long readCount = cfstore.getReadCount();
            if (readCount > 0) {
                tableReadCount += readCount;
                tableTotalReadTime += cfstore.getTotalReadLatencyMicros();
            }
            if (writeCount > 0) {
                tableWriteCount += writeCount;
                tableTotalWriteTime += cfstore.getTotalWriteLatencyMicros();
            }
            tablePendingTasks += cfstore.getPendingTasks();
        }
        double tableReadLatency = tableReadCount > 0 ? tableTotalReadTime / tableReadCount / 1000 : Double.NaN;
        double tableWriteLatency = tableWriteCount > 0 ? tableTotalWriteTime / tableWriteCount / 1000 : Double.NaN;
        outs.println("\tRead Count: " + tableReadCount);
        outs.println("\tRead Latency: " + String.format("%s", tableReadLatency) + " ms.");
        outs.println("\tWrite Count: " + tableWriteCount);
        outs.println("\tWrite Latency: " + String.format("%s", tableWriteLatency) + " ms.");
        outs.println("\tPending Tasks: " + tablePendingTasks);
        // print out column family statistics for this table
        for (ColumnFamilyStoreMBean cfstore : columnFamilies) {
            outs.println("\t\tColumn Family: " + cfstore.getColumnFamilyName());
            outs.println("\t\tSSTable count: " + cfstore.getLiveSSTableCount());
            outs.println("\t\tSpace used (live): " + cfstore.getLiveDiskSpaceUsed());
            outs.println("\t\tSpace used (total): " + cfstore.getTotalDiskSpaceUsed());
            outs.println("\t\tNumber of Keys (estimate): " + cfstore.estimateKeys());
            outs.println("\t\tMemtable Columns Count: " + cfstore.getMemtableColumnsCount());
            outs.println("\t\tMemtable Data Size: " + cfstore.getMemtableDataSize());
            outs.println("\t\tMemtable Switch Count: " + cfstore.getMemtableSwitchCount());
            outs.println("\t\tRead Count: " + cfstore.getReadCount());
            outs.println("\t\tRead Latency: " + String.format("%01.3f", cfstore.getRecentReadLatencyMicros() / 1000) + " ms.");
            outs.println("\t\tWrite Count: " + cfstore.getWriteCount());
            outs.println("\t\tWrite Latency: " + String.format("%01.3f", cfstore.getRecentWriteLatencyMicros() / 1000) + " ms.");
            outs.println("\t\tPending Tasks: " + cfstore.getPendingTasks());
            outs.println("\t\tBloom Filter False Postives: " + cfstore.getBloomFilterFalsePositives());
            outs.println("\t\tBloom Filter False Ratio: " + String.format("%01.5f", cfstore.getRecentBloomFilterFalseRatio()));
            outs.println("\t\tBloom Filter Space Used: " + cfstore.getBloomFilterDiskSpaceUsed());
            outs.println("\t\tCompacted row minimum size: " + cfstore.getMinRowSize());
            outs.println("\t\tCompacted row maximum size: " + cfstore.getMaxRowSize());
            outs.println("\t\tCompacted row mean size: " + cfstore.getMeanRowSize());
            outs.println("");
        }
        outs.println("----------------");
    }
}
Also used : ColumnFamilyStoreMBean(org.apache.cassandra.db.ColumnFamilyStoreMBean) Entry(java.util.Map.Entry)

Example 13 with ColumnFamilyStoreMBean

use of org.apache.cassandra.db.ColumnFamilyStoreMBean in project eiger by wlloyd.

the class ThreadPoolProxyMBeanIterator method setCompactionThreshold.

/**
     * Set the compaction threshold
     *
     * @param minimumCompactionThreshold minimum compaction threshold
     * @param maximumCompactionThreshold maximum compaction threshold
     */
public void setCompactionThreshold(String ks, String cf, int minimumCompactionThreshold, int maximumCompactionThreshold) {
    ColumnFamilyStoreMBean cfsProxy = getCfsProxy(ks, cf);
    cfsProxy.setMinimumCompactionThreshold(minimumCompactionThreshold);
    cfsProxy.setMaximumCompactionThreshold(maximumCompactionThreshold);
}
Also used : ColumnFamilyStoreMBean(org.apache.cassandra.db.ColumnFamilyStoreMBean)

Aggregations

ColumnFamilyStoreMBean (org.apache.cassandra.db.ColumnFamilyStoreMBean)13 Test (org.junit.Test)3 Entry (java.util.Map.Entry)2 ObjectName (javax.management.ObjectName)2 IOException (java.io.IOException)1 AbstractMap (java.util.AbstractMap)1 ArrayList (java.util.ArrayList)1 MalformedObjectNameException (javax.management.MalformedObjectNameException)1 CompositeData (javax.management.openmbean.CompositeData)1 Sampler (org.apache.cassandra.metrics.TableMetrics.Sampler)1 StreamStateCompositeData (org.apache.cassandra.streaming.management.StreamStateCompositeData)1 EstimatedHistogram (org.apache.cassandra.utils.EstimatedHistogram)1