Skip to content

jujoramos/geode-support-shell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License

GEODE Support Shell

  1. Overview
  2. Building From Source
  3. Configuration Properties
  4. Execution of Commands

Overview

Apache Geode, also known as Pivotal GemFire, is a data management platform that provides real-time, consistent access to data-intensive applications throughout widely distributed cloud architectures. The Visual Statistics Display (VSD) is an utility that reads GemFire/Geofe statistics and produces graphical displays for further analysis.

A Geode/GemFire cluster can be composed of a few or a lot of members, each one having its own configuration files and also generating its own set of logs and statistics for troubleshooting and analysis. When dealing with large distributed systems running for a considerable period of time, however, the effort spent just by arranging the files required to analyze an incident can be extremely time consuming, and so does the general health assessment executed on each file to check whether the configuration is the same for all members, whether there are JVM pauses making members unresponsive, whether the memory is correctly sized to a fixed value for each heap space; the list goes on and on...

A big percentage of these repetitive tasks could (and should) be automated, improving the productivity of the analysis itself, and also reducing the amount of human mistakes inherent to executing the same thing over and over again. The goal of this project is to start building such a tool.

Building From Source

All platforms require a Java installation with JDK 1.8 or more recent version. The JAVA_HOME environment variable can be set as below:

Platform Command
Unix export JAVA_HOME=/usr/java/jdk1.8.0_121
OSX export JAVA_HOME=/usr/libexec/java_home -v 1.8
Windows set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_121"

Clone the current repository in your local environment and, within the directory containing the source code, run gradle build:

$ ./gradlew build

Once the build completes, the project files will be installed at build/libs. Verify the installation by invoking the java -jar command:

    $ java -jar build/libs/geode-support-shell-X.Y.Z.jar

The output should be as follows, and the available commands can be executed from the shell prompt.


  /$$$$$$                            /$$                  /$$$$$$                                                      /$$
 /$$__  $$                          | $$                 /$$__  $$                                                    | $$
| $$  \__/  /$$$$$$   /$$$$$$   /$$$$$$$  /$$$$$$       | $$  \__/ /$$   /$$  /$$$$$$   /$$$$$$   /$$$$$$   /$$$$$$  /$$$$$$
| $$ /$$$$ /$$__  $$ /$$__  $$ /$$__  $$ /$$__  $$      |  $$$$$$ | $$  | $$ /$$__  $$ /$$__  $$ /$$__  $$ /$$__  $$|_  $$_/
| $$|_  $$| $$$$$$$$| $$  \ $$| $$  | $$| $$$$$$$$       \____  $$| $$  | $$| $$  \ $$| $$  \ $$| $$  \ $$| $$  \__/  | $$
| $$  \ $$| $$_____/| $$  | $$| $$  | $$| $$_____/       /$$  \ $$| $$  | $$| $$  | $$| $$  | $$| $$  | $$| $$        | $$ /$$
|  $$$$$$/|  $$$$$$$|  $$$$$$/|  $$$$$$$|  $$$$$$$      |  $$$$$$/|  $$$$$$/| $$$$$$$/| $$$$$$$/|  $$$$$$/| $$        |  $$$$/
 \______/  \_______/ \______/  \_______/ \_______/       \______/  \______/ | $$____/ | $$____/  \______/ |__/         \___/
                                                                            | $$      | $$
                                                                            | $$      | $$
                                                                            |__/      |__/

geode-support-shell>

Configuration Properties

The application is built on top of Spring-Boot, so all configuration properties can be easily changed during startup using the following syntax:

$ java -jar geode-support-shell-X.Y.Z.jar --property.name=property.value

Below is a list of the configurable properties.

Property Default Value Description
logging.file geode-support-shell.log Location of the file where logs will be written to.
app.vsd.home --- Path to the folder where the Visual Statistics Display Tool (VSD) is installed.
app.history.file .geode-support-shell.history Location of the file where the history of commands executed will be saved.

Execution of Commands

All commands included are self descriptive, more information about specific commands can be obtained with the assistance of the help command. The list below contains a detailed description about each command, its arguments and what it should be used for.

Miscellaneous

help

Displays all available commands. When using with a command name as an argument, displays help for the specified command and its arguments.

Syntax:
$ geode-support-shell>help clear

NAME
	clear - Clear the shell screen.

SYNOPSYS
	clear 
Parameters:
Name Description
--C, --command Optional. The command to obtain help for.

start vsd

Starts the Visual Statistics Display Tool (VSD) and loads the specified statistics (decompress them if needed) into the tool for further analysis. The VSD tool is an external library which does not get shipped with this project and, as such, it should be installed on the local system before running this command, otherwise it will fail stating that the tool can not be found.

There are three different ways that can be used to configure the folder where VSD is installed:

  • Using the --vsdHome command argument.
  • Setting the system property app.vsd.home when starting the application.
  • Setting the environment variable VSD_HOME before starting the application.

The result includes a message stating whether VSD process could be launched or not, along with an additional error table, depending on whether the decompression of the compressed statistics files fails or succeeds.

Syntax:
$ tree
.
└── samples
    ├── corrupted
    │   ├── unparseableFile.gfs
    │   └── unparseableFile.gz
    └── uncorrupted
        ├── cluster1-locator.gz
        ├── cluster1-server1.gfs
        ├── cluster1-server2.gfs
        ├── cluster2-locator.gz
        ├── cluster2-server1.gfs
        ├── cluster2-server2.gfs
        └── sampleClient.gfs

$ geode-support-shell>start vsd --path ./samples --vsdHome /Applications/GemFire/vsd --decompressionFolder ./decompressed --timeZone "America/Buenos_Aires"
╔═════════════════════════════╦══════════════════╗
║File Name                    ║Error Description ║
╠═════════════════════════════╬══════════════════╣
║/corrupted/unparseableFile.gz║Not in GZIP format║
╚═════════════════════════════╩══════════════════╝

Visual Statistics Display Tool (VSD) successfully started.

$ tree
.
├── decompressed
│   ├── cluster1-locator.gfs
│   └── cluster2-locator.gfs
└── samples
    ├── corrupted
    │   ├── unparseableFile.gfs
    │   └── unparseableFile.gz
    └── uncorrupted
        ├── cluster1-locator.gz
        ├── cluster1-server1.gfs
        ├── cluster1-server2.gfs
        ├── cluster2-locator.gz
        ├── cluster2-server1.gfs
        ├── cluster2-server2.gfs
        └── sampleClient.gfs


Parameters:
Name Description
--path Optional. Path to directory to scan for statistics files.
--vsdHome Optional. Path to the Visual Statistics Display Tool (VSD) Installation Directory.
--decompressionFolder Optional. Path to the folder where decompressed files should be located. If none is specified, compressed files are left alone and won't be loaded into VSD.
--timeZone Optional. Time Zone to set as system environment variable. This will be used by the Visual Statistics Display Tool (VSD) when showing data. If not set, none is used.

Logs Commands

Keep in mind that only log files using the default log format shipped with GemFire/Geode are currently supported by the tool, namely the Apache Log4j 2 pattern [%level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} <%thread> tid=%hexTid] %message%n%throwable%n.

show logs metadata

Displays general information about the log file specified, or about the full set of log files contained within the directory specified, and exports the information to the desired format. When a folder is specified as the --path argument, the command will recursively iterate and parse all files matching the extension .log. The command aims to provide an overview of the log files, allowing the user to quickly asses the version and time frame covered.

The result includes one or two tables, depending on whether the parsing of the different log files fails or succeeds, and a message indicating whether the export was successful or not. The parsing results can be exported to a file through the --export parameter, the output format is chosen based on the file extension (only txt, csv and tsv are currently supported).

The Results table includes a list of the log files for which the parsing succeeded, along with the File Name (relative to the original path), Product Version, Operating System installed on the host where the member was running, the original Time Zone on which the file was created and the interval of time covered by the log file (Start Time and Finish Time). It is worth noting that GemFire/Geode does not add the metadata header when rolling log files, so some values (Product Version, Operating System and Time Zone) might be empty if the metadata was not found or if the intervalOnly parameter is set as true. Also, depending on whether the Time Zone was found and whether a specific Time Zone was specified as a parameter, the command will present Start Time and Finish Time according to the following rules:

  • If the --timeZone parameter is specified, then both values will be shown using the Time Zone specified as the filter.
  • If the --timeZone parameter is not specified and the Time Zone is found within the metadata, then both values will be shown using the original Time Zone from the log file.
  • If the --timeZone parameter is not specified and the Time Zone is not found within the metadata (or intervalOnly=true), then both values will be shown using the default Time Zone from the system.

The Errors table includes a list of the log files for which the parsing failed, along with the File Name (relative to the original path) and the Error Description.

Syntax:
$ geode-support-shell>show logs metadata --path ./samples
╔════════════════════════╦═══════════════╦══════════════════════════════════════╦════════════════════╦═══════════════════════╦═══════════════════════╗
║File Name               ║Product Version║Operating System                      ║Time Zone           ║Start Time             ║Finish Time            ║
╠════════════════════════╬═══════════════╬══════════════════════════════════════╬════════════════════╬═══════════════════════╬═══════════════════════╣
║/parseable/member_8X.log║8.2.0          ║x86_64 Mac OS X 10.13.6               ║Europe/Dublin       ║Aug 24, 2018 3:52:44 PM║Aug 24, 2018 4:07:57 PM║
╠════════════════════════╬═══════════════╬══════════════════════════════════════╬════════════════════╬═══════════════════════╬═══════════════════════╣
║/parseable/member_9X.log║9.4.0          ║amd64 Linux 3.10.0-862.11.6.el7.x86_64║America/Buenos_Aires║Apr 17, 2018 5:19:48 AM║Apr 17, 2018 5:20:45 AM║
╠════════════════════════╬═══════════════╬══════════════════════════════════════╬════════════════════╬═══════════════════════╬═══════════════════════╣
║/parseable/noHeader.log ║               ║                                      ║                    ║Sep 06, 2018 2:03:20 AM║Sep 06, 2018 4:12:14 AM║
╚════════════════════════╩═══════════════╩══════════════════════════════════════╩════════════════════╩═══════════════════════╩═══════════════════════╝

╔══════════════════════════════╦══════════════════════════╗
║File Name                     ║Error Description         ║
╠══════════════════════════════╬══════════════════════════╣
║/unparseable/unknownFormat.log║Log format not recognized.║
╚══════════════════════════════╩══════════════════════════╝

$ geode-support-shell>show logs metadata --path ./samples --timeZone "America/Chicago" --intervalOnly true --export /temp/output.txt
╔════════════════════════╦═══════════════╦════════════════╦═════════╦═══════════════════════════╦════════════════════════════╗
║File Name               ║Product Version║Operating System║Time Zone║Start Time[America/Chicago]║Finish Time[America/Chicago]║
╠════════════════════════╬═══════════════╬════════════════╬═════════╬═══════════════════════════╬════════════════════════════╣
║/parseable/member_8X.log║               ║                ║         ║Aug 24, 2018 9:52:44 AM    ║Aug 24, 2018 10:07:57 AM    ║
╠════════════════════════╬═══════════════╬════════════════╬═════════╬═══════════════════════════╬════════════════════════════╣
║/parseable/member_9X.log║               ║                ║         ║Apr 17, 2018 3:19:48 AM    ║Apr 17, 2018 3:20:45 AM     ║
╠════════════════════════╬═══════════════╬════════════════╬═════════╬═══════════════════════════╬════════════════════════════╣
║/parseable/noHeader.log ║               ║                ║         ║Sep 05, 2018 8:03:20 PM    ║Sep 05, 2018 10:12:14 PM    ║
╚════════════════════════╩═══════════════╩════════════════╩═════════╩═══════════════════════════╩════════════════════════════╝

╔══════════════════════════════╦══════════════════════════╗
║File Name                     ║Error Description         ║
╠══════════════════════════════╬══════════════════════════╣
║/unparseable/unknownFormat.log║Log format not recognized.║
╚══════════════════════════════╩══════════════════════════╝

Data successfully exported to /temp/output.txt.
Parameters:
Name Description
--path Mandatory. Path to the log file, or directory to scan for log files.
--intervalOnly Optional. Whether to parse the full metadata (default, slower) or only the time covered by the log file (extremely faster).
--timeZone Optional. Time Zone Id to use when showing results. If not set, the default from the local system will be used (or the one from the log file, if found and '--intervalOnly' is set as 'false').
--export Optional. Path to file where command results should be written to (the extension sets the output format: txt, csv, tsv).

filter logs by date-time

Scans the log files contained within the sourceFolder, and copies them to different directories depending on whether they match (matchingFolder) the time frame specified as the filter or not (nonMatchingFolder). The command aims to quickly setup an organized folder structure where files covering a time frame of interest are grouped together, allowing the user to start the proper analysis on a valid set instead of manually checking and moving the files one by one.

The result includes one or two tables, depending on whether the parsing of the different log files fails or succeeds.

The Results table includes a list of the log files for which the parsing succeeded, along with the File Name (relative to the original path), and the flag Matches, which states whether the file matches the specified time frame or not. Considering that the Time Zone for each file might or might not be found (metadata header not included in rolled logs), the time period specified as the filter is compared against the time interval covered by the log file using the Time Zone specified through the parameter --timeZone or, if not set, the default system Time Zone; either way, no manual conversion should be done by the user.

The Errors table includes a list of the log files for which there was an error, either parsing the file or copying it to the corresponding folder, along with the File Name (relative to the original path) and the Error Description.

Syntax:
$ tree
.
└── samples
    ├── parseable
    │   ├── member_8X.log
    │   ├── member_9X.log
    │   └── noHeader.log
    └── unparseable
        └── unknownFormat.log

$ geode-support-shell>filter logs by date-time --sourceFolder ./samples --matchingFolder ./relevant --nonMatchingFolder ./irrelevant --year 2018 --month 04 --day 17
╔════════════════════════╦═══════╗
║File Name               ║Matches║
╠════════════════════════╬═══════╣
║/parseable/member_8X.log║false  ║
╠════════════════════════╬═══════╣
║/parseable/member_9X.log║true   ║
╠════════════════════════╬═══════╣
║/parseable/noHeader.log ║false  ║
╚════════════════════════╩═══════╝

╔══════════════════════════════╦══════════════════════════╗
║File Name                     ║Error Description         ║
╠══════════════════════════════╬══════════════════════════╣
║/unparseable/unknownFormat.log║Log format not recognized.║
╚══════════════════════════════╩══════════════════════════╝

$ tree
.
├── irrelevant
│   ├── member_8X.log
│   └── noHeader.log
├── relevant
│   └── member_9X.log
└── samples
    ├── parseable
    │   ├── member_8X.log
    │   ├── member_9X.log
    │   └── noHeader.log
    └── unparseable
        └── unknownFormat.log

$ geode-support-shell>filter logs by date-time --sourceFolder ./samples --matchingFolder ./relevant --nonMatchingFolder ./irrelevant --year 2018 --month 09 --day 05 --hour 21 --minute 30 --second 00 --timeZone "America/Chicago"
╔════════════════════════╦═══════╗
║File Name               ║Matches║
╠════════════════════════╬═══════╣
║/parseable/member_8X.log║false  ║
╠════════════════════════╬═══════╣
║/parseable/member_9X.log║false  ║
╠════════════════════════╬═══════╣
║/parseable/noHeader.log ║true   ║
╚════════════════════════╩═══════╝

╔══════════════════════════════╦══════════════════════════╗
║File Name                     ║Error Description         ║
╠══════════════════════════════╬══════════════════════════╣
║/unparseable/unknownFormat.log║Log format not recognized.║
╚══════════════════════════════╩══════════════════════════╝

$ tree
.
├── irrelevant
│   ├── member_8X.log
│   └── member_9X.log
├── relevant
│   └── noHeader.log
└── samples
    ├── parseable
    │   ├── member_8X.log
    │   ├── member_9X.log
    │   └── noHeader.log
    └── unparseable
        └── unknownFormat.log
Parameters:
Name Description
--year Mandatory. Year [2010 - ...] to look for within the log samples.
--month Mandatory. Month of Year [1 - 12] to look for within the log samples.
--day Mandatory. Day of Month [1 - 31] to look for within the log samples.
--hour Optional. Hour of day [00 - 23] to look for within the log samples.
--minute Optional. Minute of Hour [00 - 59] to look for within the log samples.
--second Optional. Second of minute [00 - 59] to look for within the log samples.
--sourceFolder Mandatory. Directory to scan for logs.
--matchingFolder Mandatory. Directory where matching files should be copied to.
--nonMatchingFolder Mandatory. Directory where non matching files should be copied to.
--timeZone Optional. Time Zone Id to use when filtering. If not set, the system Time Zone will be used.

Statistics

show statistics metadata

Displays general information about the statistics file specified, or about the full set of statistics files contained within the directory specified. When a folder is specified as the --path argument, the command will recursively iterate and parse all files matching the extension .gfs or .gz. The command aims to provide an overview of the statistics files, allowing the user to quickly asses the version and time frame covered by the sampling.

The result includes one or two tables, depending on whether the parsing of the different statistics files fails or succeeds, and a message indicating whether the export was successful or not. The parsing results can be exported to a file through the --export parameter, the output format is chosen based on the file extension (only txt, csv and tsv are currently supported).

The Results table includes a list of the statistics files for which the parsing succeeded, along with the File Name (relative to the original path), the Product Version on which the member that created the statistics file was running, the underlying Operating System installed on the host where the member that created the statistics file was running, the original Time Zone on which the file was created and the interval of time covered by the statistics file (Start Time and Finish Time). It's worth noting that both the Start Time and Finish Time are shown using the original Time Zone from the statistics file, unless a different Time Zone has been specified when executing the command, in which case both timestamps are converted to the specified Time Zone. It should also be mentioned that the Finish Time, unlike the Start Time which is written in the file by the GemFire/Geode member directly, it's measured by retrieving the last available sample for a well known and always existing statistic (VMStats.cpus).

The Errors table includes a list of the statistics files for which the parsing failed, along with the File Name (relative to the original path) and the Error Description.

Syntax:
$ geode-support-shell>show statistics metadata --path ./samples 
╔═════════════════════════════════╦═══════════════╦════════════════╦═══════════════╦═══════════════════════╦════════════════════════╗
║File Name                        ║Product Version║Operating System║Time Zone      ║Start Time             ║Finish Time             ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬═══════════════════════╬════════════════════════╣
║/uncorrupted/cluster1-locator.gz ║GemFire 9.3.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 2:06:09 PM║Mar 22, 2018 3:17:05 PM ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬═══════════════════════╬════════════════════════╣
║/uncorrupted/cluster1-server1.gfs║GemFire 9.3.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 2:06:22 PM║Mar 22, 2018 3:17:06 PM ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬═══════════════════════╬════════════════════════╣
║/uncorrupted/cluster1-server2.gfs║GemFire 9.3.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 2:06:22 PM║Mar 22, 2018 3:17:05 PM ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬═══════════════════════╬════════════════════════╣
║/uncorrupted/cluster2-locator.gz ║GemFire 8.2.8  ║Mac OS X 10.13.3║America/Chicago║Mar 22, 2018 9:06:24 AM║Mar 22, 2018 10:17:04 AM║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬═══════════════════════╬════════════════════════╣
║/uncorrupted/cluster2-server1.gfs║GemFire 8.2.8  ║Mac OS X 10.13.3║America/Chicago║Mar 22, 2018 9:06:33 AM║Mar 22, 2018 10:17:03 AM║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬═══════════════════════╬════════════════════════╣
║/uncorrupted/cluster2-server2.gfs║GemFire 8.2.8  ║Mac OS X 10.13.3║America/Chicago║Mar 22, 2018 9:06:33 AM║Mar 22, 2018 10:17:04 AM║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬═══════════════════════╬════════════════════════╣
║/uncorrupted/sampleClient.gfs    ║GemFire 9.1.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 2:06:51 PM║Mar 22, 2018 3:07:08 PM ║
╚═════════════════════════════════╩═══════════════╩════════════════╩═══════════════╩═══════════════════════╩════════════════════════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝

$ geode-support-shell>show statistics metadata --path ./samples --timeZone "America/Buenos_Aires" --export /temp/output.csv
╔═════════════════════════════════╦═══════════════╦════════════════╦═══════════════╦════════════════════════════════╦═════════════════════════════════╗
║File Name                        ║Product Version║Operating System║Time Zone      ║Start Time[America/Buenos_Aires]║Finish Time[America/Buenos_Aires]║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬════════════════════════════════╬═════════════════════════════════╣
║/uncorrupted/cluster1-locator.gz ║GemFire 9.3.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 11:06:09 AM        ║Mar 22, 2018 12:17:05 PM         ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬════════════════════════════════╬═════════════════════════════════╣
║/uncorrupted/cluster1-server1.gfs║GemFire 9.3.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 11:06:22 AM        ║Mar 22, 2018 12:17:06 PM         ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬════════════════════════════════╬═════════════════════════════════╣
║/uncorrupted/cluster1-server2.gfs║GemFire 9.3.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 11:06:22 AM        ║Mar 22, 2018 12:17:05 PM         ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬════════════════════════════════╬═════════════════════════════════╣
║/uncorrupted/cluster2-locator.gz ║GemFire 8.2.8  ║Mac OS X 10.13.3║America/Chicago║Mar 22, 2018 11:06:24 AM        ║Mar 22, 2018 12:17:04 PM         ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬════════════════════════════════╬═════════════════════════════════╣
║/uncorrupted/cluster2-server1.gfs║GemFire 8.2.8  ║Mac OS X 10.13.3║America/Chicago║Mar 22, 2018 11:06:33 AM        ║Mar 22, 2018 12:17:03 PM         ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬════════════════════════════════╬═════════════════════════════════╣
║/uncorrupted/cluster2-server2.gfs║GemFire 8.2.8  ║Mac OS X 10.13.3║America/Chicago║Mar 22, 2018 11:06:33 AM        ║Mar 22, 2018 12:17:04 PM         ║
╠═════════════════════════════════╬═══════════════╬════════════════╬═══════════════╬════════════════════════════════╬═════════════════════════════════╣
║/uncorrupted/sampleClient.gfs    ║GemFire 9.1.0  ║Mac OS X 10.13.3║Europe/Dublin  ║Mar 22, 2018 11:06:51 AM        ║Mar 22, 2018 12:07:08 PM         ║
╚═════════════════════════════════╩═══════════════╩════════════════╩═══════════════╩════════════════════════════════╩═════════════════════════════════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝

Data successfully exported to /temp/output.csv.
Parameters:
Name Description
--path Mandatory. Path to statistics file, or directory to scan for statistics files.
--timeZone Optional. Time Zone Id to use when showing results. If not set, the default from the statistics file will be used. Useful when analyzing files written in different time zones (clusters replicating data over the WAN, as an example).
--export Optional. Path to file where command results should be written to (the extension sets the output format: txt, csv, tsv).

filter statistics by date-time

Scans the statistics files contained within the sourceFolder, and copies them to different directories depending on whether they match (matchingFolder) the time frame specified as the filter or not (nonMatchingFolder). The command aims to quickly setup an organized folder structure where files covering a time frame of interest are grouped together, allowing the user to start the proper analysis on a valid set instead of manually checking and moving the files one by one.

The result includes one or two tables, depending on whether the parsing of the different statistics files fails or succeeds.

The Results table includes a list of the statistics files for which the parsing succeeded, along with the File Name (relative to the original path), and the flag Matches, which states whether the file matches the specified time frame or not. In general the analysis is executed on different members that belong to the same distributed system, so it's expected for all of them to be on the same Time Zone. As such, the time frame specified as the filter is compared against the time interval covered by the statistics file using the same Time Zone as the one of the statistics file itself; in short: the user must set the the filter without doing any manual conversion between Time Zones. If, on the other hand, the files cover members from different Time Zones (different clusters replicated through WAN probably), the user can specify a unique Time Zone to use, in which case all timestamps from the statistics files will be converted prior to executing the comparision.

The Errors table includes a list of the statistics files for which there was an error, either parsing the file or copying it to the corresponding folder, along with the File Name (relative to the original path) and the Error Description.

Syntax:
$ tree
.
└── samples
    ├── corrupted
    │   ├── unparseableFile.gfs
    │   └── unparseableFile.gz
    └── uncorrupted
        ├── cluster1-locator.gz
        ├── cluster1-server1.gfs
        ├── cluster1-server2.gfs
        ├── cluster2-locator.gz
        ├── cluster2-server1.gfs
        ├── cluster2-server2.gfs
        └── sampleClient.gfs

$ geode-support-shell>filter statistics by date-time --sourceFolder ./samples --matchingFolder ./relevant --nonMatchingFolder ./irrelevant --year 2018 --month 3 --day 22 --hour 15
╔═════════════════════════════════╦═══════╗
║File Name                        ║Matches║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster1-locator.gz ║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster1-server1.gfs║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster1-server2.gfs║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster2-locator.gz ║false  ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster2-server1.gfs║false  ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster2-server2.gfs║false  ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/sampleClient.gfs    ║true   ║
╚═════════════════════════════════╩═══════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝

$ tree
.
├── irrelevant
│   ├── cluster2-locator.gz
│   ├── cluster2-server1.gfs
│   └── cluster2-server2.gfs
├── relevant
│   ├── cluster1-locator.gz
│   ├── cluster1-server1.gfs
│   ├── cluster1-server2.gfs
│   └── sampleClient.gfs
└── samples
    ├── corrupted
    │   ├── unparseableFile.gfs
    │   └── unparseableFile.gz
    └── uncorrupted
        ├── cluster1-locator.gz
        ├── cluster1-server1.gfs
        ├── cluster1-server2.gfs
        ├── cluster2-locator.gz
        ├── cluster2-server1.gfs
        ├── cluster2-server2.gfs
        └── sampleClient.gfs

$ geode-support-shell>filter statistics by date-time --sourceFolder ./samples --matchingFolder ./relevant --nonMatchingFolder ./irrelevant --year 2018 --month 3 --day 22 --hour 11 --minute 30 --timeZone "America/Buenos_Aires"
╔═════════════════════════════════╦═══════╗
║File Name                        ║Matches║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster1-locator.gz ║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster1-server1.gfs║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster1-server2.gfs║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster2-locator.gz ║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster2-server1.gfs║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/cluster2-server2.gfs║true   ║
╠═════════════════════════════════╬═══════╣
║/uncorrupted/sampleClient.gfs    ║true   ║
╚═════════════════════════════════╩═══════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝

$ tree
.
├── relevant
│   ├── cluster1-locator.gz
│   ├── cluster1-server1.gfs
│   ├── cluster1-server2.gfs
│   ├── cluster2-locator.gz
│   ├── cluster2-server1.gfs
│   ├── cluster2-server2.gfs
│   └── sampleClient.gfs
└── samples
    ├── corrupted
    │   ├── unparseableFile.gfs
    │   └── unparseableFile.gz
    └── uncorrupted
        ├── cluster1-locator.gz
        ├── cluster1-server1.gfs
        ├── cluster1-server2.gfs
        ├── cluster2-locator.gz
        ├── cluster2-server1.gfs
        ├── cluster2-server2.gfs
        └── sampleClient.gfs
Parameters:
Name Description
--year Mandatory. Year [2010 - ...] to look for within the statistics samples.
--month Mandatory. Month of Year [1 - 12] to look for within the statistics samples.
--day Mandatory. Day of Month [1 - 31] to look for within the statistics samples.
--hour Optional. Hour of day [00 - 23] to look for within the statistics samples.
--minute Optional. Minute of Hour [00 - 59] to look for within the statistics samples.
--second Optional. Second of minute [00 - 59] to look for within the statistics samples.
--sourceFolder Mandatory. Directory to scan for statistics.
--matchingFolder Mandatory. Directory where matching files should be copied to.
--nonMatchingFolder Mandatory. Directory where non matching files should be copied to.
--timeZone Optional. Time Zone Id to use when filtering. If not set, the Time Zone from the statistics file will be used. Useful when filtering a set of statistics files from different time zones.

show statistics summary

Displays the summary statistical values for a particular Geode/GemFire statistic, or a set of statistics that matches a filter.

The result includes one or two tables, depending on whether the parsing of the different statistics files fails or succeeds, and a message indicating whether the export was successful or not. The parsing results can be exported to a file through the --export parameter, the output format is chosen based on the file extension (only txt, csv and tsv are currently supported).

The Results table includes a list of statistics for which the filter matched, grouped by Statistic or Sampling, along with the maximum, minimum, average, standard deviation and last sample values for each match. The groupBy parameter specifies how the results will be shown; Statistic is preferred when searching and comparing a particular statistic over a set of files, and Sampling is better when searching and comparing several statistics per file.

The Errors table includes a list of the statistics files for which the parsing failed, along with the File Name (relative to the original path) and the Error Description.

Syntax:
# Search strictly for StatSampler.jvmPauses, include those results for which all values are 0 and group results by statistic id. Export result table to /tmp/jvmPauses.tsv
$ geode-support-shell>show statistics summary --path ./samples --statistic jvmPauses --category StatSampler --groupBy Statistic --showEmptyStatistics true --export /tmp/jvmPauses.tsv
╔════════════════════════════════════╦═══════╦═══════╦═══════╦══════════╦══════════════════╗
║StatSampler[statSampler].jvmPauses  ║Minimum║Maximum║Average║Last Value║Standard Deviation║
╠════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──/uncorrupted/cluster1-locator.gz ║0.00   ║0.00   ║0.00   ║0.00      ║0.00              ║
╠════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──/uncorrupted/cluster1-server1.gfs║0.00   ║0.00   ║0.00   ║0.00      ║0.00              ║
╠════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──/uncorrupted/cluster1-server2.gfs║0.00   ║0.00   ║0.00   ║0.00      ║0.00              ║
╠════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──/uncorrupted/cluster2-locator.gz ║0.00   ║0.00   ║0.00   ║0.00      ║0.00              ║
╠════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──/uncorrupted/cluster2-server1.gfs║0.00   ║0.00   ║0.00   ║0.00      ║0.00              ║
╠════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──/uncorrupted/cluster2-server2.gfs║0.00   ║2.00   ║1.96   ║2.00      ║0.25              ║
╠════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──/uncorrupted/sampleClient.gfs    ║0.00   ║0.00   ║0.00   ║0.00      ║0.00              ║
╚════════════════════════════════════╩═══════╩═══════╩═══════╩══════════╩══════════════════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝

Data successfully exported to /tmp/jvmPauses.tsv.

# Search for all statistics with name ending in "InProgress", ignore those for which all values are zero and group results by sampling file.
$ geode-support-shell>show statistics summary --path ./samples --statistic .*InProgress
╔═════════════════════════════════════════════════════════════════════════════════════╦═══════╦═══════╦═══════╦══════════╦══════════════════╗
║/uncorrupted/cluster1-server1.gfs                                                    ║Minimum║Maximum║Average║Last Value║Standard Deviation║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──CachePerfStats[RegionStats-gatewayEventIdIndexMetaData].getInitialImagesInProgress║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──DistributionStats[distributionStats].initialImageRequestsInProgress               ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──DistributionStats[distributionStats].replyWaitsInProgress                         ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║/uncorrupted/cluster1-server2.gfs                                                    ║Minimum║Maximum║Average║Last Value║Standard Deviation║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──DLockStats[dlockStats].grantWaitsInProgress                                       ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──DistributionStats[distributionStats].replyWaitsInProgress                         ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PartitionedRegionStats[/test].putLocalInProgress                                  ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PartitionedRegionStats[/test].sendReplicationInProgress                           ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║/uncorrupted/cluster2-locator.gz                                                     ║Minimum║Maximum║Average║Last Value║Standard Deviation║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──LocatorStats[192.168.1.7-0.0.0.0/0.0.0.0:12334].requestsInProgress                ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║/uncorrupted/cluster2-server1.gfs                                                    ║Minimum║Maximum║Average║Last Value║Standard Deviation║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──DistributionStats[distributionStats].replyWaitsInProgress                         ║0.00   ║2.00   ║0.00   ║0.00      ║0.08              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PartitionedRegionStats[/test].putLocalInProgress                                  ║0.00   ║2.00   ║0.00   ║0.00      ║0.08              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PartitionedRegionStats[/test].sendReplicationInProgress                           ║0.00   ║2.00   ║0.00   ║0.00      ║0.08              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║/uncorrupted/cluster2-server2.gfs                                                    ║Minimum║Maximum║Average║Last Value║Standard Deviation║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──DistributionStats[distributionStats].replyWaitsInProgress                         ║0.00   ║3.00   ║0.00   ║0.00      ║0.06              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──DistributionStats[distributionStats].syncSocketWritesInProgress                   ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PartitionedRegionStats[/test].putLocalInProgress                                  ║0.00   ║2.00   ║0.00   ║0.00      ║0.05              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PartitionedRegionStats[/test].putRemoteInProgress                                 ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PartitionedRegionStats[/test].sendReplicationInProgress                           ║0.00   ║2.00   ║0.00   ║0.00      ║0.04              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║/uncorrupted/sampleClient.gfs                                                        ║Minimum║Maximum║Average║Last Value║Standard Deviation║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──ClientSendStats[ClientSendStats-default-192.168.1.7:10102].putSendsInProgress     ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──ClientStats[ClientStats-default-192.168.1.7:10101].putsInProgress                 ║0.00   ║1.00   ║0.00   ║0.00      ║0.03              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──ClientStats[ClientStats-default-192.168.1.7:10102].putsInProgress                 ║0.00   ║1.00   ║0.00   ║0.00      ║0.03              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PoolStats[default->[any servers]].clientOpSendsInProgress                         ║0.00   ║1.00   ║0.00   ║0.00      ║0.02              ║
╠═════════════════════════════════════════════════════════════════════════════════════╬═══════╬═══════╬═══════╬══════════╬══════════════════╣
║└──PoolStats[default->[any servers]].clientOpsInProgress                             ║0.00   ║1.00   ║0.00   ║0.00      ║0.04              ║
╚═════════════════════════════════════════════════════════════════════════════════════╩═══════╩═══════╩═══════╩══════════╩══════════════════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝

# Search for all statistics related to "queue" and "Gateway", ignore those for which all values are zero and group results by statistic id.
$ geode-support-shell>show statistics summary --path ./samples --statistic .*queue.* --category .*Gateway.* --groupBy Statistic 
╔════════════════════════════════════════════════════════════════════════╦═══════╦════════════╦════════════╦════════════╦══════════════════╗
║GatewayReceiverStatistics[192.168.1.7-0.0.0.0/0.0.0.0:5292].loadPerQueue║Minimum║Maximum     ║Average     ║Last Value  ║Standard Deviation║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server1.gfs                                    ║1.00   ║1.00        ║1.00        ║1.00        ║0.00              ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║GatewayReceiverStatistics[192.168.1.7-0.0.0.0/0.0.0.0:5325].loadPerQueue║Minimum║Maximum     ║Average     ║Last Value  ║Standard Deviation║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster2-server1.gfs                                    ║1.00   ║1.00        ║1.00        ║1.00        ║0.00              ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║GatewayReceiverStatistics[192.168.1.7-0.0.0.0/0.0.0.0:5386].loadPerQueue║Minimum║Maximum     ║Average     ║Last Value  ║Standard Deviation║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster2-server2.gfs                                    ║1.00   ║1.00        ║1.00        ║1.00        ║0.00              ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║GatewayReceiverStatistics[192.168.1.7-0.0.0.0/0.0.0.0:5421].loadPerQueue║Minimum║Maximum     ║Average     ║Last Value  ║Standard Deviation║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server2.gfs                                    ║1.00   ║1.00        ║1.00        ║1.00        ║0.00              ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║GatewaySenderStatistics[gatewaySenderStats-DC1].eventQueueSize          ║Minimum║Maximum     ║Average     ║Last Value  ║Standard Deviation║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server1.gfs                                    ║0.00   ║3.00        ║0.01        ║0.00        ║0.12              ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server2.gfs                                    ║0.00   ║2.00        ║0.01        ║0.00        ║0.10              ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║GatewaySenderStatistics[gatewaySenderStats-DC1].eventQueueTime          ║Minimum║Maximum     ║Average     ║Last Value  ║Standard Deviation║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server1.gfs                                    ║0.00   ║351933542.00║231829429.62║351933542.00║100677918.94      ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server2.gfs                                    ║0.00   ║352327561.00║233665534.64║352327561.00║100317771.41      ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║GatewaySenderStatistics[gatewaySenderStats-DC1].eventsQueued            ║Minimum║Maximum     ║Average     ║Last Value  ║Standard Deviation║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server1.gfs                                    ║0.00   ║3601.00     ║2041.80     ║3600.00     ║1157.73           ║
╠════════════════════════════════════════════════════════════════════════╬═══════╬════════════╬════════════╬════════════╬══════════════════╣
║└──/uncorrupted/cluster1-server2.gfs                                    ║0.00   ║3601.00     ║2041.38     ║3600.00     ║1157.60           ║
╚════════════════════════════════════════════════════════════════════════╩═══════╩════════════╩════════════╩════════════╩══════════════════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝

# Search for all performance statistics related to the "test" region only, ignore those for which all values are zero and group results by statistic id.
$ geode-support-shell>show statistics summary --path ./samples --category CachePerfStats --instance .*test.* --groupBy Sampling
╔═══════════════════════════════════════════════════════════════════════╦════════════╦═════════════╦═════════════╦═════════════╦══════════════════╗
║/uncorrupted/cluster1-server1.gfs                                      ║Minimum     ║Maximum      ║Average      ║Last Value   ║Standard Deviation║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].clears                   ║0.00        ║11.00        ║0.00         ║11.00        ║0.17              ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].creates                  ║0.00        ║3601.00      ║2042.28      ║3600.00      ║1157.44           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].entries                  ║0.00        ║3601.00      ║2041.44      ║0.00         ║1157.62           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImageTime      ║0.00        ║11936199.00  ║11844628.65  ║11936199.00  ║1011466.20        ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImagesCompleted║0.00        ║6.00         ║5.95         ║6.00         ║0.51              ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updateTime               ║0.00        ║520300430.00 ║345902693.90 ║520300430.00 ║148080792.49      ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updates                  ║0.00        ║1963.00      ║1113.30      ║1963.00      ║631.40            ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║/uncorrupted/cluster1-server2.gfs                                      ║Minimum     ║Maximum      ║Average      ║Last Value   ║Standard Deviation║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].creates                  ║0.00        ║3601.00      ║2041.38      ║3600.00      ║1157.60           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].entries                  ║0.00        ║3601.00      ║2041.38      ║3600.00      ║1157.60           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImageTime      ║0.00        ║15237682.00  ║15125405.95  ║15237682.00  ║1266489.88        ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImagesCompleted║0.00        ║5.00         ║4.96         ║5.00         ║0.42              ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updateTime               ║0.00        ║444789899.00 ║297925067.90 ║444789899.00 ║125330375.89      ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updates                  ║0.00        ║1637.00      ║928.15       ║1637.00      ║526.22            ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║/uncorrupted/cluster2-server1.gfs                                      ║Minimum     ║Maximum      ║Average      ║Last Value   ║Standard Deviation║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].creates                  ║0.00        ║3600.00      ║2045.87      ║3600.00      ║1154.36           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].entries                  ║0.00        ║3600.00      ║2045.88      ║3600.00      ║1154.36           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImageTime      ║0.00        ║13817717.00  ║13748761.84  ║13817717.00  ║926883.83         ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImagesCompleted║0.00        ║5.00         ║4.97         ║5.00         ║0.34              ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updateTime               ║0.00        ║273142260.00 ║182043962.39 ║273142260.00 ║78846116.91       ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updates                  ║0.00        ║1637.00      ║930.90       ║1637.00      ║524.58            ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║/uncorrupted/cluster2-server2.gfs                                      ║Minimum     ║Maximum      ║Average      ║Last Value   ║Standard Deviation║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].creates                  ║0.00        ║3600.00      ║2051.18      ║3600.00      ║1151.58           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].entries                  ║0.00        ║3600.00      ║2051.18      ║3600.00      ║1151.58           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImageTime      ║0.00        ║12443364.00  ║12376580.15  ║12443364.00  ║875315.74         ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].getInitialImagesCompleted║0.00        ║6.00         ║5.97         ║6.00         ║0.42              ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updateTime               ║0.00        ║305507895.00 ║203256255.08 ║305507895.00 ║88798186.95       ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-partition-test].updates                  ║0.00        ║1963.00      ║1117.83      ║1963.00      ║628.26            ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║/uncorrupted/sampleClient.gfs                                          ║Minimum     ║Maximum      ║Average      ║Last Value   ║Standard Deviation║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-test].creates                            ║1.00        ║3600.00      ║1800.34      ║3600.00      ║1039.31           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-test].metaDataRefreshCount               ║0.00        ║1.00         ║1.00         ║1.00         ║0.06              ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-test].putTime                            ║126051209.00║7450594711.00║4429521895.50║7450594711.00║1933210695.43     ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-test].puts                               ║1.00        ║3600.00      ║1800.34      ║3600.00      ║1039.31           ║
╠═══════════════════════════════════════════════════════════════════════╬════════════╬═════════════╬═════════════╬═════════════╬══════════════════╣
║└──CachePerfStats[RegionStats-test].regions                            ║1.00        ║1.00         ║1.00         ║1.00         ║0.00              ║
╚═══════════════════════════════════════════════════════════════════════╩════════════╩═════════════╩═════════════╩═════════════╩══════════════════╝

╔══════════════════════════════╦═══════════════════════════════╗
║File Name                     ║Error Description              ║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gfs║Unexpected token byte value: 67║
╠══════════════════════════════╬═══════════════════════════════╣
║/corrupted/unparseableFile.gz ║Not in GZIP format             ║
╚══════════════════════════════╩═══════════════════════════════╝
Parameters:
Name Description
path Mandatory. Path to statistics file, or directory to scan for statistics files.
groupBy Optional. Whether to group results by Sampling (default) or Statistic.
filter Optional. Filter to use when showing results (None by default, per Sample or per Second).
showEmptyStatistics Optional. Whether to include statistics for which all sample values are 0. (false by default)
category Optional. Category of the statistic to search for (VMStats, IndexStats, etc.). Can be a regular expression.
instance Optional. Instance of the statistic to search for (region name, function name, etc.). Can be a regular expression.
statistic Optional. Name of the statistic to search for (replyWaitsInProgress, delayDuration, etc.). Can be a regular expression.
--export Optional. Path to file where command results should be written to (the extension sets the output format: txt, csv, tsv).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages