BMC Control-M

BMC Control-M delivers is business automation solution that simplifies and automates diverse batch application workloads. When events meet predetermined criteria, this integration with xMatters relays critical BMC Control-M insight data to the correct people and systems to help coordinate and resolve incidents faster.

Available solutions




This template is for Zabbix version: 6.4
Also available for: 6.2 6.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/controlm_http?at=release/6.4

Control-M server by HTTP

Overview

For Zabbix version: 6.4 and higher.

This template is designed to get metrics from the Control-M server using the Control-M Automation API with HTTP agent.

This template monitors server statistics, discovers jobs and agents using Low Level Discovery.

To use this template, macros {$API.TOKEN}, {$API.URI.ENDPOINT}, and {$SERVER.NAME} need to be set.

See Zabbix template operation for basic instructions.

Tested versions

This template has been tested on:

  • Control-M 9.21.0

Setup

This template is primarily intended for using in conjunction with the Control-M enterprise manager by HTTP template in order to create host prototypes.

It monitors:

  • server statistics;
  • discovers jobs using Low Level Discovery;
  • discovers agents using Low Level Discovery.

However, if you wish to monitor the Control-M server separately with this template, you must set the following macros: {$API.TOKEN}, {$API.URI.ENDPOINT}, and {$SERVER.NAME}.

To access the {$API.TOKEN} macro, use one of the following interfaces:

Control-M WEB user interface;

Control-M command line interface tool CTM.

{$API.URI.ENDPOINT} - is the Control-M Automation API endpoint for the API requests, including your server IP, or DNS address, the Automation API port and path.

For example, https://monitored.controlm.instance:8443/automation-api.

{$SERVER.NAME} - is the name of the Control-M server to be monitored.

Macros used

Name Description Default
{$SERVER.NAME}

The name of the Control-M server.

{$API.URI.ENDPOINT}

The API endpoint is a URI - for example, https://monitored.controlm.instance:8443/automation-api.

{$API.TOKEN}

A token to use for API connections.

Items

Name Description Type Key and additional info
Control-M: Get Control-M server stats Gets the statistics of the server. Http Agent controlm.server.stats

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Error -> Could Not Get Server Stats.

Control-M: Get jobs Gets the status of jobs. Http Agent controlm.jobs
Control-M: Get agents Gets agents for the server. Http Agent controlm.agents
Control-M: Jobs statistics Gets the statistics of jobs. Dependent controlm.jobs.statistics

Preprocessing

  • Jsonpath: $.['returned', 'total']
Control-M: Jobs returned Gets the count of returned jobs. Dependent controlm.jobs.statistics.returned

Preprocessing

  • Jsonpath: $.[0]
  • Discard_Unchanged_Heartbeat: 1h
Control-M: Jobs total Gets the count of total jobs. Dependent controlm.jobs.statistics.total

Preprocessing

  • Jsonpath: $.[1]
  • Discard_Unchanged_Heartbeat: 1h
Control-M: Server state Gets the metric of the server state. Dependent server.state

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Error -> Could Not Get Server State.

  • Javascript: The text is too long. Please see the template.
  • Discard_Unchanged_Heartbeat: 1h
Control-M: Server message Gets the metric of the server message. Dependent server.message

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Error -> Could Not Get Server Message.

  • Discard_Unchanged_Heartbeat: 1h
Control-M: Server version Gets the metric of the server version. Dependent server.version

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Error -> Could Not Get Server Version.

  • Discard_Unchanged_Heartbeat: 1h

Triggers

Name Description Expression Severity Dependencies and additional info
Control-M: Server is down The server is down. last(/Control-M server by HTTP/Control-M: Server state)=0 or last(/Control-M server by HTTP/Control-M: Server state)=10 High -
Control-M: Server disconnected The server is disconnected. last(/Control-M server by HTTP/Control-M: Server message,#1)="Disconnected" High -
Control-M: Server error The server has encountered an error. last(/Control-M server by HTTP/Control-M: Server message,#1)<>"Connected" and last(/Control-M server by HTTP/Control-M: Server message,#1)<>"Disconnected" and last(/Control-M server by HTTP/Control-M: Server message,#1)<>"" High -
Control-M: Server version has changed The server version has changed. Acknowledge (Ack) to close. last(/Control-M server by HTTP/Control-M: Server version,#1)<>last(/Control-M server by HTTP/Control-M: Server version,#2) and length(last(/Control-M server by HTTP/Control-M: Server version))>0 Info -

LLD rule for jobs discovery

Name Description Type Key and additional info
Jobs discovery Discovers jobs on the server. Dependent controlm.jobs.discovery

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Value -> []

  • Discard_Unchanged_Heartbeat: 1h

Items for jobs discovery

Name Description Type Key and additional info
Job [{#JOB.ID}]: stats Gets the statistics of a job. Dependent job.stats['{#JOB.ID}']

Preprocessing

  • Jsonpath

    ⛔️On fail: Discard_Value

Job [{#JOB.ID}]: status Gets the status of a job. Dependent job.status['{#JOB.ID}']

Preprocessing

  • Jsonpath: $.status
  • Javascript: The text is too long. Please see the template.
  • Discard_Unchanged_Heartbeat: 1h
Job [{#JOB.ID}]: number of runs Gets the number of runs for a job. Dependent job.numberOfRuns['{#JOB.ID}']

Preprocessing

  • Jsonpath: $.numberOfRuns
  • Discard_Unchanged_Heartbeat: 1h
Job [{#JOB.ID}]: type Gets the job type. Dependent job.type['{#JOB.ID}']

Preprocessing

  • Jsonpath: $.type
  • Javascript: The text is too long. Please see the template.
  • Discard_Unchanged_Heartbeat: 1h
Job [{#JOB.ID}]: held status Gets the held status of a job. Dependent job.held['{#JOB.ID}']

Preprocessing

  • Jsonpath: $.held
  • Javascript: The text is too long. Please see the template.

Triggers for jobs discovery

Name Description Type Key and additional info
Job [{#JOB.ID}]: status [{ITEM.VALUE}] The job has encountered an issue. last(/Control-M server by HTTP/Job [{#JOB.ID}]: status,#1)=1 or last(/Control-M server by HTTP/Job [{#JOB.ID}]: status,#1)=10 Warning -

LLD rule for agent discovery

Name Description Type Key and additional info
Agent discovery Discovers agents on the server. Dependent controlm.agent.discovery

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Value -> []

  • Discard_Unchanged_Heartbeat: 1h

Items for agent discovery

Name Description Type Key and additional info
Agent [{#AGENT.NAME}]: stats Gets the statistics of an agent. Dependent agent.stats['{#AGENT.NAME}']

Preprocessing

  • Jsonpath

    ⛔️On fail: Discard_Value

Agent [{#AGENT.NAME}]: status Gets the status of an agent. Dependent agent.status['{#AGENT.NAME}']

Preprocessing

  • Jsonpath: $.status
  • Javascript: The text is too long. Please see the template.
  • Discard_Unchanged_Heartbeat: 1h
Agent [{#AGENT.NAME}]: version Gets the version number of an agent. Dependent agent.version['{#AGENT.NAME}']

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Value -> Unknown

  • Discard_Unchanged_Heartbeat: 1h

Triggers for agent discovery

Name Description Type Key and additional info
Agent [{#AGENT.NAME}]: status [{ITEM.VALUE}] The agent has encountered an issue. last(/Control-M server by HTTP/Agent [{#AGENT.NAME}]: status,#1)=1 or last(/Control-M server by HTTP/Agent [{#AGENT.NAME}]: status,#1)=10 Average -
Agent [{#AGENT.NAME}}: status disabled The agent is disabled. last(/Control-M server by HTTP/Agent [{#AGENT.NAME}]: status,#1)=2 or last(/Control-M server by HTTP/Agent [{#AGENT.NAME}]: status,#1)=3 Info -
Agent [{#AGENT.NAME}]: version has changed The agent version has changed. Acknowledge (Ack) to close. last(/Control-M server by HTTP/Agent [{#AGENT.NAME}]: version,#1)<>last(/Control-M server by HTTP/Agent [{#AGENT.NAME}]: version,#2) Info -
Agent [{#AGENT.NAME}]: unknown version The agent version is unknown. last(/Control-M server by HTTP/Agent [{#AGENT.NAME}]: version,#1)="Unknown" Warning -

Feedback

Please report any issues with the template at https://support.zabbix.com.

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums.

Control-M enterprise manager by HTTP

Overview

For Zabbix version: 6.4 and higher.

This template is designed to get metrics from the Control-M Enterprise Manager using the Control-M Automation API with HTTP agent.

This template monitors active Service Level Agreement (SLA) services, discovers Control-M servers using Low Level Discovery and also creates host prototypes for them in conjunction with the Control-M server by HTTP template.

To use this template, macros {$API.TOKEN} and {$API.URI.ENDPOINT} need to be set.

See Zabbix template operation for basic instructions.

Tested versions

This template has been tested on:

  • Control-M 9.21.0

Setup

This template is intended to be used on Control-M Enterprise Manager instances.

It monitors:

  • active SLA services;
  • discovers Control-M servers using Low Level Discovery;
  • creates host prototypes for discovered servers with the Control-M server by HTTP template.

To use this template, you must set macros: {$API.TOKEN} and {$API.URI.ENDPOINT}.

To access the API token, use one of the following Control-M interfaces:

Control-M WEB user interface;

Control-M command line interface tool CTM.

{$API.URI.ENDPOINT} - is the Control-M Automation API endpoint for the API requests, including your server IP, or DNS address, Automation API port and path.

For example, https://monitored.controlm.instance:8443/automation-api.

Macros used

Name Description Default
{$API.URI.ENDPOINT}

The API endpoint is a URI - for example, https://monitored.controlm.instance:8443/automation-api.

{$API.TOKEN}

A token to use for API connections.

Items

Name Description Type Key and additional info
Control-M: Get Control-M servers Gets a list of servers. Http Agent controlm.servers
Control-M: Get SLA services Gets all the SLA active services. Http Agent controlm.services

Triggers

Name Description Expression Severity Dependencies and additional info

LLD rule for server discovery

Name Description Type Key and additional info
Server discovery Discovers the Control-M servers. Dependent controlm.server.discovery

Preprocessing

  • Discard_Unchanged_Heartbeat: 2h

LLD rule for sla services discovery

Name Description Type Key and additional info
SLA services discovery Discovers the SLA services in the Control-M environment. Dependent controlm.services.discovery

Preprocessing

  • Jsonpath

    ⛔️On fail: Custom_Value -> []

  • Discard_Unchanged_Heartbeat: 1h

Items for sla services discovery

Name Description Type Key and additional info
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: stats Gets the service statistics. Dependent service.stats['{#SERVICE.NAME}','{#SERVICE.JOB}']

Preprocessing

  • Jsonpath

    ⛔️On fail: Discard_Value

  • Jsonpath

    ⛔️On fail: Discard_Value

Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status Gets the service status. Dependent service.status['{#SERVICE.NAME}','{#SERVICE.JOB}']

Preprocessing

  • Jsonpath: $.status
  • Javascript: The text is too long. Please see the template.
  • Discard_Unchanged_Heartbeat: 1h
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'executed' Gets the number of jobs in the state - executed. Dependent service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',executed]

Preprocessing

  • Jsonpath: $.statusByJobs.executed
  • Discard_Unchanged_Heartbeat: 1h
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitCondition' Gets the number of jobs in the state - waitCondition. Dependent service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitCondition]

Preprocessing

  • Jsonpath: $.statusByJobs.waitCondition
  • Discard_Unchanged_Heartbeat: 1h
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitResource' Gets the number of jobs in the state - waitResource. Dependent service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitResource]

Preprocessing

  • Jsonpath: $.statusByJobs.waitResource
  • Discard_Unchanged_Heartbeat: 1h
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitHost' Gets the number of jobs in the state - waitHost. Dependent service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitHost]

Preprocessing

  • Jsonpath: $.statusByJobs.waitHost
  • Discard_Unchanged_Heartbeat: 1h
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitWorkload' Gets the number of jobs in the state - waitWorkload. Dependent service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitWorkload]

Preprocessing

  • Jsonpath: $.statusByJobs.waitWorkload
  • Discard_Unchanged_Heartbeat: 1h
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'completed' Gets the number of jobs in the state - completed. Dependent service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',completed]

Preprocessing

  • Jsonpath: $.statusByJobs.completed
  • Discard_Unchanged_Heartbeat: 1h
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'error' Gets the number of jobs in the state - error. Dependent service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',error]

Preprocessing

  • Jsonpath: $.statusByJobs.error
  • Discard_Unchanged_Heartbeat: 1h

Triggers for sla services discovery

Name Description Type Key and additional info
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status [{ITEM.VALUE}] The service has encountered an issue. last(/Control-M enterprise manager by HTTP/Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status,#1)=0 or last(/Control-M enterprise manager by HTTP/Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status,#1)=10 Average -
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status [{ITEM.VALUE}] The service has finished its job late. last(/Control-M enterprise manager by HTTP/Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status,#1)=3 Warning -
Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs in 'error' state There are services present which are in the state - error. last(/Control-M enterprise manager by HTTP/Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'error',#1)>0 Average -

Feedback

Please report any issues with the template at https://support.zabbix.com.

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums.

Articles and documentation

+ Propose new article

Não encontrou a integração que vocá precisa?