Giter VIP home page Giter VIP logo

cucm_performance_exporter's Introduction

Build Status GitHub Go Report Card GitHub tag (latest SemVer)

CUCM Performace Exporter

Prometheus exporter for CISCO Unified Communication Manager performance metrics. Project utilize CISCO CUCM Performance API. System tested on version 10+. Detail API description is on CISCO DEVNET servers.

Configuration

Program need configuration file with next structure and information.

monitor_names: [ 'publisher.name','subscriber01.name' ]
metrics:
  goCollector: true
  processStatus: true
  callsActive: true
  callsInProgress: true
  callsCompleted: true
  partiallyRegisteredPhone: true
  registeredHardwarePhones: true
  gatewaysSessionsActive: true
  gatewaysSessionsFailed: true
  phoneSessionsActive: true
  phoneSessionsFailed: true
  callsAttempted: false
  gatewayRegistrationFailures: false
  gatewaysInService: false
  gatewaysOutOfService: false
  annunciatorOutOfResources: false
  annunciatorResourceActive: false
  annunciatorResourceAvailable: false
  annunciatorResourceTotal: false
  authenticatedCallsActive: false
  authenticatedCallsCompleted: false
  authenticatedPartiallyRegisteredPhone: false
  authenticatedRegisteredPhones: false
  callManagerHeartBeat: false
  cumulativeAllocatedResourceCannotOpenPort: false
  encryptedCallsActive: false
  encryptedCallsCompleted: false
  encryptedPartiallyRegisteredPhones: false
  encryptedRegisteredPhones: false
  hwConferenceActive: false
  hwConferenceCompleted: false
  hwConferenceOutOfResources: false
  hwConferenceResourceActive: false
  hwConferenceResourceAvailable: false
  hwConferenceResourceTotal: false
  mtpOutOfResources: false
  mtpRequestsThrottled: false
  mtpResourceActive: false
  mtpResourceAvailable: false
  mtpResourceTotal: true
  swConferenceActive: false
  swConferenceCompleted: false
  swConferenceOutOfResources: false
  swConferenceResourceActive: false
  swConferenceResourceAvailable: false
  swConferenceResourceTotal: false
  sipLineServerAuthorizationChallenges: false
  sipLineServerAuthorizationFailures: false
  sipTrunkApplicationAuthorizationFailures: false
  sipTrunkApplicationAuthorizations: false
  sipTrunkAuthorizationFailures: false
  sipTrunkAuthorizations: false
  sipTrunkServerAuthenticationChallenges: false
  systemCallsAttempted: false
  transcoderOutOfResources: false
  transcoderRequestsThrottled: false
  transcoderResourceActive: false
  transcoderResourceAvailable: false
  transcoderResourceTotal: false
  unEncryptedCallFailures: false
  videoCallsActive: false
  videoCallsCompleted: false
  videoOnHoldOutOfResources: false
  videoOnHoldResourceActive: false
  videoOutOfResources: false
port: 9719
apiAddress: publisher.name
apiUser: api_allowed_user
apiPwd: password
apiTimeout: 5
ignoreCertificate: true
allowStop: false
sleepBetweenRequest: 30
log:
  level: info
  fileName: ''
  jsonFormat: false
  logProgramInfo: false
  maxSize: 50
  maxBackups: 5
  maxAge: 30
  quiet: false
  • monitor_names - name of CUCM servers, use same names as in system CUCM configuration
  • metrics - allowed or disabled metrics collected from CUCM cluster
  • port - port where program start HTTP server with metrics
  • apiAddress - FQDN or IP address of publisher server
  • apiUser - user with rights to read performance metrics
  • apiPwd - password for apiUser
  • apiTimeout - API request timeout in second between 1 and 30 sec, default is 5
  • ignoreCertificate - system ignore certificate validity
  • allowStop - allow stopping the program from web UI
  • sleepBetweenRequest - how long program sleep between requests in sec (5 - 120)
  • log - setup logging from system

Actual supported metrics

Actual supported metrics shows configuration definition (above). More detail is in official CISCO documentation.

  • callsActive - This represents the number of voice or video streaming connections that are currently in use ( active).
  • callsInProgress - This represents the number of voice or video calls that are currently in progress on this CallManager, including all active calls.
  • callsCompleted - This represents the number of calls that were actually connected (a voice path or video stream was established) through this CallManager.
  • partiallyRegisteredPhone - This represents the number of partially registered SIP Phones.
  • registeredHardwarePhones - This represents the number of Cisco hardware IP phones (for example, models 7960, 7940, 7910, etc.) that are currently registered in the system.
  • gatewaysSessionsActive - This is a real-time counter which specifies the total number of active recording sessions between a recording-enabled gateway and a recording server.
  • gatewaysSessionsFailed - This is a cumulative counter which specifies the total number of gateway-preferred recording sessions which failed since the last restart of the Cisco Unified Communications Manager service.
  • phoneSessionsActive - This is a real-time counter which specifies the total number of active recording sessions between a Cisco IP Phone and a recording server.
  • phoneSessionsFailed - This is a cumulative counter which specifies the total number of phone-preferred recording sessions which failed since the last restart of the Cisco Unified Communications Manager service.

Program allow enabling/disabling standard GO client metrics. Detail about this metrics are described in Exploring Prometheus GO client Metrics.

  • goCollector - enable/disable internal program GO metrics
  • processStatus - enable/disable internal program status metrics

Log setup

  • level - Logging level, default Info, valid: Fatal, Error, Warning, Info, Debug, Trace
  • fileName - File name for actual log file, empty doesn't log to file
  • jsonFormat - Use JSON formatting, default false, valid: false, true
  • logProgramInfo - Include in log line and source file from source program
  • maxSize - maximal size of one log file in MB, default 50 MB, minimal1 MB, max 5 000 MB
  • maxBackups - maximal backup log files, default 5, minimal 0 file, max 100 files
  • maxAge - maximal log file age in day, default 30, minimal 1 day, maximal 365 days
  • quiet - don't log any message to std output, default false, valid: false, true

Start parameters

Program support CLI parameters. All parameters are optional and overwrite same configuration values.

  • --version - show actual program version
  • --config.show - show actual configuration and ends
  • --config.file file_name - start program with configuration file file_name, when omitted system use name " server.yml" in current directory
  • --api.address fqdn_or_ip - overwrite value apiAddress from configuration file with fqdn_or_ip
  • --api.user user_name - overwrite value apiUser from configuration file with user_name
  • --api.pwd user_pwd - overwrite value apiPwd from configuration file with user_pwd

Contribute

We welcome any contributions. Please fork the project on GitHub and open Pull Requests for any proposed changes.

Please note that we will not merge any changes that encourage insecure behaviour. If in doubt please open an Issue first to discuss your proposal.

Sponsoring

Many thanks Elevēo for support this project.

Elevēo - powered by ZOOM International

cucm_performance_exporter's People

Contributors

pokornyit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

roybalrm germanwb

cucm_performance_exporter's Issues

Jabber and MRA counters

Could you please add extra counters for Conferences, MGCP, Jabber and MRA:
RegisteredBOTJabberMRA
RegisteredBOTJabberNonMRA
RegisteredCSFJabberMRA
RegisteredCSFJabberNonMRA
RegisteredDevicesMRA
RegisteredDualModeDevices
RegisteredHardwarePhones
RegisteredHardwarePhonesMRA
RegisteredMGCPGateway
RegisteredOtherStationDevices
RegisteredTABJabberMRA
RegisteredTABJabberNonMRA
RegisteredTCTJabberMRA
RegisteredTCTJabberNonMRA

SWConferenceActive
SWConferenceCompleted
SWConferenceOutOfResources
SWConferenceResourceActive
SWConferenceResourceAvailable
SWConferenceResourceTotal

HWConferenceActive
HWConferenceCompleted
HWConferenceOutOfResources
HWConferenceResourceActive
HWConferenceResourceAvailable
HWConferenceResourceTotal

Thank you so much for your job!

open server.yml not found

I edited "config.yml" with my info but when i run the app i get this
./cucm_performance_exporter
INFO[2024-03-14 10:28:54.850] application Initializing ApplicationName=cucm-perfmon-exporter Arch=386 CPUs=4 RuntimeVersion=go1.22.1
ERRO[2024-03-14 10:28:54.850] problem with configuration. Error: open server.yml: no such file or directory
Program did not start due to configuration error!

i'm not seeing a file called open server.yml

i tried to overwrite the config using flags but with the same issue

Issue with execution

Getting the following:

go: github.com/prometheus/[email protected] requires
github.com/prometheus/[email protected] requires
github.com/prometheus/[email protected] requires
github.com/prometheus/[email protected] requires
github.com/mwitkow/[email protected]: invalid version: git fetch --unshallow -f origin in /home/mcqueenj/go/pkg/mod/cache/vcs/ff07aa22658f49e63fef8f4c0d0db965b4d9e57f277988d8c2420beb7ba2768b: exit status 128:
fatal: git fetch-pack: expected shallow list

Have tried cleaning the cache, but this appears to be a circular reference to the same packages with different versions.

Issues with 8 node cluster

I am getting this error if monitor_names has more than 4 servers.

evel=error msg="problem read OpenSession response. Status code: 500 Internal Server Error" func="main.(*perfClient).processRequest()" file="performance_client.go:55" operation="[OpenSession]" session=
time="2022-06-20 03:13:10.835" level=error msg="session request fail witk message response status is 500 Internal Server Error" func="main.(*perfMonService).OpenSession()" file="perfMonService.go:41" monitorNames="

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.