cisco-perfmon-cli

SKILL.md

cisco-perfmon CLI

CLI for collecting Cisco CUCM real-time performance counters via the PerfMon SOAP API. Supports one-shot collection, session-based polling, continuous monitoring with live sparkline visualization, and multiple output formats.

Setup

Configure a cluster (one-time):

cisco-perfmon config add <name> --host <host> --username <user> --password <pass> --insecure
cisco-perfmon config test

For Secret Server integration:

cisco-perfmon config add <name> --host '<ss:ID:host>' --username '<ss:ID:username>' --password '<ss:ID:password>' --insecure

Or use environment variables:

export CUCM_HOST=<host>
export CUCM_USERNAME=<user>
export CUCM_PASSWORD=<pass>

Commands

config -- Manage cluster configurations

cisco-perfmon config add <name> --host <host> --username <user> --password <pass>
cisco-perfmon config use <name>
cisco-perfmon config list
cisco-perfmon config show
cisco-perfmon config remove <name>
cisco-perfmon config test

list-objects -- List available perfmon counter objects

cisco-perfmon list-objects                          # all objects
cisco-perfmon list-objects --search "CallManager"   # filter by keyword
cisco-perfmon list-objects --format json             # JSON output

list-instances -- List instances of a perfmon object

cisco-perfmon list-instances "Cisco CallManager"
cisco-perfmon list-instances "Process" --format json

describe -- Get counter descriptions

cisco-perfmon describe "Cisco CallManager"
cisco-perfmon describe "Cisco CallManager" --counter CallsActive
cisco-perfmon describe "Cisco CallManager" --counter CallsActive --instance ""

collect -- One-shot counter data collection

cisco-perfmon collect "Cisco CallManager"                                       # all counters
cisco-perfmon collect "Cisco CallManager" --counter CallsActive,CallsInProgress # specific counters
cisco-perfmon collect "Cisco CallManager" --instance ""                          # filter by instance
cisco-perfmon collect "Processor" --format json                                  # JSON output
cisco-perfmon collect "Memory" --format csv > memory.csv                         # export to CSV

session -- Manage perfmon polling sessions

cisco-perfmon session open                          # get a session handle
cisco-perfmon session add <handle> --counters '[{"host":"cucm","object":"Cisco CallManager","counter":"CallsActive"}]'
cisco-perfmon session collect <handle>              # collect session data
cisco-perfmon session remove <handle> --counters '[...]'
cisco-perfmon session close <handle>

watch -- Continuous monitoring with live sparklines

The watch command polls counters at a configurable interval and displays a live-updating table with sparkline visualizations showing value trends over the last 12 samples.

cisco-perfmon watch "Cisco CallManager"                                         # watch all counters
cisco-perfmon watch "Cisco CallManager" --counter CallsActive --interval 5      # specific counter, 5s interval
cisco-perfmon watch "Processor" --counter "% CPU Time" --instance "_Total"      # CPU monitoring
cisco-perfmon watch "Memory" --interval 30 --duration 300                       # 5-minute memory check
cisco-perfmon watch "Cisco CallManager" --format json --interval 10             # JSON output for piping

The table view shows: counter name, instance, current value, sparkline trend, min, max, and average. Press Ctrl+C to stop.

doctor -- Configuration and connectivity health check

cisco-perfmon doctor                                # run all checks
cisco-perfmon doctor --insecure                     # with TLS skip

Checks: active cluster config, PerfMon API connectivity, counter object availability, config file permissions, audit trail size.

Common Workflows

Check system health

cisco-perfmon doctor
cisco-perfmon collect "Cisco CallManager" --format json

Monitor calls during testing

cisco-perfmon watch "Cisco CallManager" --counter CallsActive,CallsInProgress,CallsAttempted --interval 5

CPU investigation

cisco-perfmon watch "Processor" --counter "% CPU Time" --instance "_Total" --interval 10
cisco-perfmon collect "Processor" --format json

List what counters are available

cisco-perfmon list-objects --search "Cisco"
cisco-perfmon list-instances "Cisco CallManager"
cisco-perfmon describe "Cisco CallManager" --counter CallsActive

Export counter data to CSV

cisco-perfmon collect "Cisco CallManager" --format csv > callmanager.csv

Session-based polling for selective counters

HANDLE=$(cisco-perfmon session open --format json | jq -r '.sessionHandle')
cisco-perfmon session add "$HANDLE" --counters '[{"host":"cucm-pub","object":"Cisco CallManager","counter":"CallsActive"}]'
cisco-perfmon session collect "$HANDLE"
cisco-perfmon session close "$HANDLE"

Output Formats

  • --format table (default) -- human-readable table
  • --format json -- for scripting/parsing
  • --format toon -- token-efficient for AI agents (recommended)
  • --format csv -- for spreadsheets

Global Flags

  • --host <host> -- override CUCM hostname
  • --username <user> -- override CUCM username
  • --password <pass> -- override CUCM password
  • --cluster <name> -- use a specific named cluster
  • --insecure -- skip TLS certificate verification (required for self-signed certs)
  • --no-audit -- disable audit logging for this command
  • --debug -- enable debug logging
Weekly Installs
2
GitHub Stars
4
First Seen
Mar 20, 2026
Installed on
amp2
cline2
opencode2
cursor2
kimi-cli2
warp2