Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/controlm_http?at=release/7.4
Control-M enterprise manager by HTTP
Overview
The template to monitor Control-M by Zabbix that work without any external scripts.
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- Control-M 9.21.0
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
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 HTTPtemplate.
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:
{$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,  | <set the api uri endpoint here> | 
| {$API.TOKEN} | A token to use for API connections. | <set the token here> | 
Items
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Get Control-M servers | Gets a list of servers. | HTTP agent | controlm.servers | 
| Get SLA services | Gets all the SLA active services. | HTTP agent | controlm.services | 
LLD rule Server discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Server discovery | Discovers the Control-M servers. | Dependent item | controlm.server.discovery Preprocessing 
 | 
LLD rule SLA services discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| SLA services discovery | Discovers the SLA services in the Control-M environment. | Dependent item | controlm.services.discovery Preprocessing 
 | 
Item prototypes for SLA services discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: stats | Gets the service statistics. | Dependent item | service.stats['{#SERVICE.NAME}','{#SERVICE.JOB}'] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status | Gets the service status. | Dependent item | service.status['{#SERVICE.NAME}','{#SERVICE.JOB}'] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'executed' | Gets the number of jobs in the state -  | Dependent item | service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',executed] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitCondition' | Gets the number of jobs in the state -  | Dependent item | service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitCondition] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitResource' | Gets the number of jobs in the state -  | Dependent item | service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitResource] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitHost' | Gets the number of jobs in the state -  | Dependent item | service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitHost] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'waitWorkload' | Gets the number of jobs in the state -  | Dependent item | service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',waitWorkload] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'completed' | Gets the number of jobs in the state -  | Dependent item | service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',completed] Preprocessing 
 | 
| Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs 'error' | Gets the number of jobs in the state -  | Dependent item | service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',error] Preprocessing 
 | 
Trigger prototypes for SLA services discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Control-M: Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status [{ITEM.VALUE}] | The service has encountered an issue. | last(/Control-M enterprise manager by HTTP/service.status['{#SERVICE.NAME}','{#SERVICE.JOB}'],#1)=0 or last(/Control-M enterprise manager by HTTP/service.status['{#SERVICE.NAME}','{#SERVICE.JOB}'],#1)=10 | Average | Manual close: Yes | 
| Control-M: Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: status [{ITEM.VALUE}] | The service has finished its job late. | last(/Control-M enterprise manager by HTTP/service.status['{#SERVICE.NAME}','{#SERVICE.JOB}'],#1)=3 | Warning | Manual close: Yes | 
| Control-M: Service [{#SERVICE.NAME}, {#SERVICE.JOB}]: jobs in 'error' state | There are services present which are in the state -  | last(/Control-M enterprise manager by HTTP/service.jobs.status['{#SERVICE.NAME}','{#SERVICE.JOB}',error],#1)>0 | Average | 
Control-M server by HTTP
Overview
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.
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- Control-M 9.21.0
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
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:
{$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. | <set the server name here> | 
| {$API.URI.ENDPOINT} | The API endpoint is a URI - for example,  | <set the api uri endpoint here> | 
| {$API.TOKEN} | A token to use for API connections. | <set the token here> | 
Items
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Get Control-M server stats | Gets the statistics of the server. | HTTP agent | controlm.server.stats Preprocessing 
 | 
| Get jobs | Gets the status of jobs. | HTTP agent | controlm.jobs | 
| Get agents | Gets agents for the server. | HTTP agent | controlm.agents | 
| Jobs statistics | Gets the statistics of jobs. | Dependent item | controlm.jobs.statistics Preprocessing 
 | 
| Jobs returned | Gets the count of returned jobs. | Dependent item | controlm.jobs.statistics.returned Preprocessing 
 | 
| Jobs total | Gets the count of total jobs. | Dependent item | controlm.jobs.statistics.total Preprocessing 
 | 
| Server state | Gets the metric of the server state. | Dependent item | server.state Preprocessing 
 | 
| Server message | Gets the metric of the server message. | Dependent item | server.message Preprocessing 
 | 
| Server version | Gets the metric of the server version. | Dependent item | server.version Preprocessing 
 | 
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Control-M: Server is down | The server is down. | last(/Control-M server by HTTP/server.state)=0 or last(/Control-M server by HTTP/server.state)=10 | High | |
| Control-M: Server disconnected | The server is disconnected. | last(/Control-M server by HTTP/server.message,#1)="Disconnected" | High | |
| Control-M: Server error | The server has encountered an error. | last(/Control-M server by HTTP/server.message,#1)<>"Connected" and last(/Control-M server by HTTP/server.message,#1)<>"Disconnected" and last(/Control-M server by HTTP/server.message,#1)<>"" | High | |
| Control-M: Server version has changed | The server version has changed. Acknowledge to close the problem manually. | last(/Control-M server by HTTP/server.version,#1)<>last(/Control-M server by HTTP/server.version,#2) and length(last(/Control-M server by HTTP/server.version))>0 | Info | Manual close: Yes | 
LLD rule Jobs discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Jobs discovery | Discovers jobs on the server. | Dependent item | controlm.jobs.discovery Preprocessing 
 | 
Item prototypes for Jobs discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Job [{#JOB.ID}]: stats | Gets the statistics of a job. | Dependent item | job.stats['{#JOB.ID}'] Preprocessing 
 | 
| Job [{#JOB.ID}]: status | Gets the status of a job. | Dependent item | job.status['{#JOB.ID}'] Preprocessing 
 | 
| Job [{#JOB.ID}]: number of runs | Gets the number of runs for a job. | Dependent item | job.numberOfRuns['{#JOB.ID}'] Preprocessing 
 | 
| Job [{#JOB.ID}]: type | Gets the job type. | Dependent item | job.type['{#JOB.ID}'] Preprocessing 
 | 
| Job [{#JOB.ID}]: held status | Gets the held status of a job. | Dependent item | job.held['{#JOB.ID}'] Preprocessing 
 | 
Trigger prototypes for Jobs discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Control-M: Job [{#JOB.ID}]: status [{ITEM.VALUE}] | The job has encountered an issue. | last(/Control-M server by HTTP/job.status['{#JOB.ID}'],#1)=1 or last(/Control-M server by HTTP/job.status['{#JOB.ID}'],#1)=10 | Warning | Manual close: Yes | 
LLD rule Agent discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Agent discovery | Discovers agents on the server. | Dependent item | controlm.agent.discovery Preprocessing 
 | 
Item prototypes for Agent discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Agent [{#AGENT.NAME}]: stats | Gets the statistics of an agent. | Dependent item | agent.stats['{#AGENT.NAME}'] Preprocessing 
 | 
| Agent [{#AGENT.NAME}]: status | Gets the status of an agent. | Dependent item | agent.status['{#AGENT.NAME}'] Preprocessing 
 | 
| Agent [{#AGENT.NAME}]: version | Gets the version number of an agent. | Dependent item | agent.version['{#AGENT.NAME}'] Preprocessing 
 | 
Trigger prototypes for Agent discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Control-M: Agent [{#AGENT.NAME}]: status [{ITEM.VALUE}] | The agent has encountered an issue. | last(/Control-M server by HTTP/agent.status['{#AGENT.NAME}'],#1)=1 or last(/Control-M server by HTTP/agent.status['{#AGENT.NAME}'],#1)=10 | Average | Manual close: Yes | 
| Control-M: Agent [{#AGENT.NAME}}: status disabled | The agent is disabled. | last(/Control-M server by HTTP/agent.status['{#AGENT.NAME}'],#1)=2 or last(/Control-M server by HTTP/agent.status['{#AGENT.NAME}'],#1)=3 | Info | Manual close: Yes | 
| Control-M: Agent [{#AGENT.NAME}]: version has changed | The agent version has changed. Acknowledge to close the problem manually. | last(/Control-M server by HTTP/agent.version['{#AGENT.NAME}'],#1)<>last(/Control-M server by HTTP/agent.version['{#AGENT.NAME}'],#2) | Info | Manual close: Yes | 
| Control-M: Agent [{#AGENT.NAME}]: unknown version | The agent version is unknown. | last(/Control-M server by HTTP/agent.version['{#AGENT.NAME}'],#1)="Unknown" | Warning | Manual close: Yes | 
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
