Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-16513

Add tool to display or export the contents of a virtual table

    XMLWordPrintableJSON

Details

    • Operability
    • Normal
    • All
    • None

    Description

      Several virtual tables were recently added, but they're currently only accessible via cqlsh or programmatically. While this is valuable for many use cases, operators are accustomed with the convenience of querying system metrics with a simple nodetool command.

      In addition to that, a relatively common request is to provide nodetool output in different formats (JSON, YAML and even XML) (CASSANDRA-5977, CASSANDRA-12035, CASSANDRA-12486, CASSANDRA-12698, CASSANDRA-12503). However this requires lots of manual labor as each nodetool subcommand needs to be adapted to support new output formats.

      I propose adding a new CLI tool that will consistently print to the standard output the contents of a virtual table. By default the command will print the output in a tabular format similar to cqlsh, but a "--format" parameter can be specified to modify the output to some other format like JSON or YAML.

      It should be possible to add a limit to the amount of rows displayed and filter to display only rows from with specific keys (ie. keyspace or table). The command should be flexible and provide simple hooks for registration and customization of new virtual tables.

      My vision is that this is a path towards deprecating JMX and toward CQL for management, as we move information currently available through JMX to virtual tables (as CASSANDRA-14457 did with compactionstats) and easily expose them in this new tool as more virtual tables are added. Eventually we can also add setters when we start supporting writeable virtual tables.

      I propose calling this tool admintool (naming bikeshedding welcome), for example:

      admintool help
      
      admintool <subcommand> <entity>
      
      Available subcommands and entities are:
      
      subcommands:
       - show
       - set (future)
      
      entities:
       - caches
       - internode_inbound
       - internode_outbound
       - settings
       - sstable_tasks
       - system_properties
       - thread_pools
      
      nodetool show clients --format yaml
      ...
      nodetool show internode_outboud --format json
      ...
      nodetool show sstabletasks --filter keyspace=my_ks --filter table=my_table
      ...
      

      Attachments

        Activity

          People

            subkanthi Kanthi Subramanian
            paulo Paulo Motta
            Kanthi Subramanian
            Paulo Motta
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated: