SG Collect Info

sgcollect_info is command line utility that provides detailed statistics for a specific Sync Gateway node. This tool must be run on each node individually, not on all simultaneously.

sgcollect_info outputs the following statistics in a zip file:

  1. Logs

  2. Configuration

  3. Expvars (exported variables) that contain important stats

  4. System Level OS stats

  5. Golang profile output (runtime memory and cpu profiling info)

CLI command and parameters

To see the CLI command line parameters, run:

./sgcollect_info --help

Examples

Collect Sync Gateway diagnostics and save locally:

./sgcollect_info /tmp/sgcollect_info.zip

Collect Sync Gateway diagnostics and upload them to the Couchbase Support AWS S3 bucket:

./sgcollect_info \
  --sync-gateway-config=/path/to/config.json \
  --sync-gateway-executable=/usr/bin/sync_gateway \
  --upload-host=s3.amazonaws.com/cb-customers \
  --customer=Acme \
  --ticket=123
  /tmp/sgcollect_info.zip

REST Endpoint

sgcollect_info can now be run from the Admin REST API as of Sync Gateway 2.1 using the _sgcollect_info endpoint.

Zipfile contents

The tool creates the following log files in the ouput file.

Log file Description

sync_gateway_access.log

The http access log for sync gateway (i.e which GETs and PUTs it has received and from which IPs)

sg_accel_access.log

The http access log for sg_accel (i.e which GETs and PUTs it has received and from which IPs)

sg_accel_error.log

The error log (all logging sent to stderr by sg_accel) for the sg_accel process

sync_gateway_error.log

The error log (all logging sent to stderr by sync_gateway) for the sync_gateway process

server_status.log

The output of http://localhost:4895 for the running sync gateway

db_db_name_status.log

The output of http://localhost:4895/db_name for the running sync gateway

sync_gateway.json

The on-disk configuration file used by sync_gateway when it was launched

sg_accel.json

The on-disk configuration file used by sg_accel when it was launched

running_server_config.log

The configuration used by sync gateway as it is running (may not match the on-disk config as it can be changed on-the-fly)

running_db_db_name_config.log

The config used by sync gateway for the database specified by db_name

expvars_json.log

The expvars (global exposed variables - see https://www.mikeperham.com/2014/12/17/expvar-metrics-for-golang/ for the running sync gateway instance)

sgcollect_info_options.log

The command line arguments passed to sgcollect_info for this particular output

sync_gateway.log

OS-level System Stats

expvars_json.log

Exported Variables (expvars) from Sync Gateway which show runtime stats

goroutine.pdf/raw/txt

Goroutine pprof profile output

heap.pdf/raw/txt

Heap pprof profile output

profile.pdf/raw/txt

CPU profile pprof profile output

syslog.tar.gz

System level logs like /var/log/dmesg on Linux

sync_gateway

The Sync Gateway binary executable

pprof_http_*.log

The pprof output that collects directly via an http client rather than using go tool, in case Go is not installed

Installing Optional Dependencies

sgcollect_info will be able to collect more information if the following tools are installed:

  • Golang — this should be the same version that Sync Gateway was built with.

Version Go build version

1.3.0

1.5.3

1.3.1

1.6.3

If go is not installed, sgcollect_info will print the following error message, you can ignore this message and there is no need to report it.

Exception during compression: [Error 2] The system cannot find the file specified IMPORTANT:Compression using gozip failed. Falling back to python implementation. Please let us know about this and provide console output.

Sharing Files with Us

The sgcollect_info tool can result in large files. Simply run the command below, replacing <FILE NAME> and <YOUR COMPANY NAME>, to upload a file to our cloud storage on Amazon AWS. Make sure you include the last slash (/) character after the company name.

curl --upload-file FILE NAME https://s3.amazonaws.com/customers.couchbase.com/<YOUR COMPANY NAME>/
We ship curl with Couchbase Server, on Linux this is located in /opt/couchbase/bin/.