# Jenkins by HTTP ## Overview The template to monitor Apache Jenkins by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection. ## Requirements Zabbix version: 7.0 and higher. ## Tested versions This template has been tested on: - Jenkins 2.263.1 ## Configuration > Zabbix should be configured according to the instructions in the [Templates out of the box](https://www.zabbix.com/documentation/7.0/manual/config/templates_out_of_the_box) section. ## Setup Metrics are collected by requests to [Metrics API](https://plugins.jenkins.io/metrics/). For common metrics: Install and configure Metrics plugin parameters according [official documentations](https://plugins.jenkins.io/metrics/). Do not forget to configure access to the Metrics Servlet by issuing API key and change macro {$JENKINS.API.KEY}. For monitoring computers and builds: Create API token for monitoring user according [official documentations](https://www.jenkins.io/doc/book/system-administration/authenticating-scripted-clients/) and change macro {$JENKINS.USER}, {$JENKINS.API.TOKEN}. Don't forget to change macros {$JENKINS.URL}. ### Macros used |Name|Description|Default| |----|-----------|-------| |{$JENKINS.URL}|
Jenkins URL in the format `
API key to access Metrics Servlet
|| |{$JENKINS.USER}|Username for HTTP BASIC authentication
|`zabbix`| |{$JENKINS.API.TOKEN}|API token for HTTP BASIC authentication.
|| |{$JENKINS.PING.REPLY}|Expected reply to the ping.
|`pong`| |{$JENKINS.FILE_DESCRIPTORS.MAX.WARN}|Maximum percentage of file descriptors usage alert threshold (for trigger expression).
|`85`| |{$JENKINS.JOB.HEALTH.SCORE.MIN.WARN}|Minimum job's health score (for trigger expression).
|`50`| ### Items |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Jenkins: Get service metrics||HTTP agent|jenkins.get_metrics**Preprocessing**
Check for not supported value
⛔️Custom on fail: Discard value
**Preprocessing**
Check for not supported value
⛔️Custom on fail: Discard value
**Preprocessing**
Check for not supported value
⛔️Custom on fail: Discard value
**Preprocessing**
Check for not supported value
⛔️Custom on fail: Discard value
The message will reference the first node which fails this check. There may be other nodes that fail the check, but this health check is designed to fail fast.
|Dependent item|jenkins.disk_space.message**Preprocessing**
JSON Path: `$['disk-space'].message`
⛔️Custom on fail: Set value to
Discard unchanged with heartbeat: `3h`
The message will reference the first node which fails this check. There may be other nodes that fail the check, but this health check is designed to fail fast.
|Dependent item|jenkins.temporary_space.message**Preprocessing**
JSON Path: `$['temporary-space'].message`
⛔️Custom on fail: Set value to
Discard unchanged with heartbeat: `3h`
The message of plugins health check.
|Dependent item|jenkins.plugins.message**Preprocessing**
JSON Path: `$['plugins'].message`
⛔️Custom on fail: Set value to
Discard unchanged with heartbeat: `3h`
The message of thread deadlock health check.
|Dependent item|jenkins.thread_deadlock.message**Preprocessing**
JSON Path: `$['thread-deadlock'].message`
⛔️Custom on fail: Set value to
Discard unchanged with heartbeat: `3h`
Returns FAIL if any of the Jenkins disk space monitors are reporting the disk space as less than the configured threshold.
|Dependent item|jenkins.disk_space**Preprocessing**
JSON Path: `$['disk-space'].healthy`
Discard unchanged with heartbeat: `1h`
Returns FAIL if any of the Jenkins plugins failed to start.
|Dependent item|jenkins.plugins**Preprocessing**
JSON Path: `$.plugins.healthy`
Discard unchanged with heartbeat: `1h`
Returns FAIL if any of the Jenkins temporary space monitors are reporting the temporary space as less than the configured threshold.
|Dependent item|jenkins.temporary_space**Preprocessing**
JSON Path: `$['temporary-space'].healthy`
Discard unchanged with heartbeat: `1h`
Returns FAIL if there are any deadlocked threads in the Jenkins master JVM.
|Dependent item|jenkins.thread_deadlock**Preprocessing**
JSON Path: `$['thread-deadlock'].healthy`
Discard unchanged with heartbeat: `1h`
Raw items for gauges metrics.
|Dependent item|jenkins.gauges.raw**Preprocessing**
JSON Path: `$.gauges`
The number of executors available to Jenkins. This is corresponds to the sum of all the executors of all the online nodes.
|Dependent item|jenkins.executor.count**Preprocessing**
JSON Path: `$.['jenkins.executor.count.value'].value`
Discard unchanged with heartbeat: `1h`
The number of executors available to Jenkins that are not currently in use.
|Dependent item|jenkins.executor.free**Preprocessing**
JSON Path: `$.['jenkins.executor.free.value'].value`
The number of executors available to Jenkins that are currently in use.
|Dependent item|jenkins.executor.in_use**Preprocessing**
JSON Path: `$.['jenkins.executor.in-use.value'].value`
The number of build nodes available to Jenkins, both online and offline.
|Dependent item|jenkins.node.count**Preprocessing**
JSON Path: `$.['jenkins.node.count.value'].value`
Discard unchanged with heartbeat: `1h`
The number of build nodes available to Jenkins but currently offline.
|Dependent item|jenkins.node.offline**Preprocessing**
JSON Path: `$.['jenkins.node.offline.value'].value`
Discard unchanged with heartbeat: `1h`
The number of build nodes available to Jenkins and currently online.
|Dependent item|jenkins.node.online**Preprocessing**
JSON Path: `$.['jenkins.node.online.value'].value`
Discard unchanged with heartbeat: `1h`
The number of plugins in the Jenkins instance that started successfully.
|Dependent item|jenkins.plugins.active**Preprocessing**
JSON Path: `$.['jenkins.plugins.active'].value`
Discard unchanged with heartbeat: `1h`
The number of plugins in the Jenkins instance that failed to start. A value other than 0 is typically indicative of a potential issue within the Jenkins installation that will either be solved by explicitly disabling the plugin(s) or by resolving the plugin dependency issues.
|Dependent item|jenkins.plugins.failed**Preprocessing**
JSON Path: `$.['jenkins.plugins.failed'].value`
Discard unchanged with heartbeat: `1h`
The number of plugins in the Jenkins instance that are not currently enabled.
|Dependent item|jenkins.plugins.inactive**Preprocessing**
JSON Path: `$.['jenkins.plugins.inactive'].value`
Discard unchanged with heartbeat: `1h`
The number of plugins in the Jenkins instance that have a newer version reported as available in the current Jenkins update center metadata held by Jenkins. This value is not indicative of an issue with Jenkins but high values can be used as a trigger to review the plugins with updates with a view to seeing whether those updates potentially contain fixes for issues that could be affecting your Jenkins instance.
|Dependent item|jenkins.plugins.with_update**Preprocessing**
JSON Path: `$.['jenkins.plugins.withUpdate'].value`
Discard unchanged with heartbeat: `1h`
The number of projects.
|Dependent item|jenkins.project.count**Preprocessing**
JSON Path: `$.['jenkins.project.count.value'].value`
Discard unchanged with heartbeat: `1h`
The number of jobs in Jenkins.
|Dependent item|jenkins.job.count.value**Preprocessing**
JSON Path: `$.['jenkins.job.count.value'].value`
Discard unchanged with heartbeat: `3h`
Raw items for meters metrics.
|Dependent item|jenkins.meters.raw**Preprocessing**
JSON Path: `$.meters`
The rate at which jobs are scheduled. If a job is already in the queue and an identical request for scheduling the job is received then Jenkins will coalesce the two requests. This metric gives a reasonably pure measure of the load requirements of the Jenkins master as it is unaffected by the number of executors available to the system.
|Dependent item|jenkins.job.scheduled.m1.rate**Preprocessing**
JSON Path: `$.['jenkins.job.scheduled'].m1_rate`
The rate at which jobs are scheduled. If a job is already in the queue and an identical request for scheduling the job is received then Jenkins will coalesce the two requests. This metric gives a reasonably pure measure of the load requirements of the Jenkins master as it is unaffected by the number of executors available to the system.
|Dependent item|jenkins.job.scheduled.m5.rate**Preprocessing**
JSON Path: `$.['jenkins.job.scheduled'].m5_rate`
Raw items for timers metrics.
|Dependent item|jenkins.timers.raw**Preprocessing**
JSON Path: `$.timers`
The rate at which jobs in the build queue enter the blocked state.
|Dependent item|jenkins.job.blocked.m1.rate**Preprocessing**
JSON Path: `$.['jenkins.job.blocked.duration'].m1_rate`
The rate at which jobs in the build queue enter the blocked state.
|Dependent item|jenkins.job.blocked.m5.rate**Preprocessing**
JSON Path: `$.['jenkins.job.blocked.duration'].m5_rate`
The amount of time which jobs spend in the blocked state.
|Dependent item|jenkins.job.blocked.duration.p95**Preprocessing**
JSON Path: `$.['jenkins.job.blocked.duration'].p95`
The amount of time which jobs spend in the blocked state.
|Dependent item|jenkins.job.blocked.duration.p50**Preprocessing**
JSON Path: `$.['jenkins.job.blocked.duration'].p50`
The rate at which jobs are built.
|Dependent item|jenkins.job.building.m1.rate**Preprocessing**
JSON Path: `$.['jenkins.job.building.duration'].m1_rate`
The rate at which jobs are built.
|Dependent item|jenkins.job.building.m5.rate**Preprocessing**
JSON Path: `$.['jenkins.job.building.duration'].m5_rate`
The amount of time which jobs spend building.
|Dependent item|jenkins.job.building.duration.p95**Preprocessing**
JSON Path: `$.['jenkins.job.building.duration'].p95`
The amount of time which jobs spend building.
|Dependent item|jenkins.job.building.duration.p50**Preprocessing**
JSON Path: `$.['jenkins.job.building.duration'].p50`
The rate at which jobs in the build queue enter the buildable state.
|Dependent item|jenkins.job.buildable.m1.rate**Preprocessing**
JSON Path: `$.['jenkins.job.buildable.duration'].m1_rate`
The rate at which jobs in the build queue enter the buildable state.
|Dependent item|jenkins.job.buildable.m5.rate**Preprocessing**
JSON Path: `$.['jenkins.job.buildable.duration'].m5_rate`
The amount of time which jobs spend in the buildable state.
|Dependent item|jenkins.job.buildable.duration.p95**Preprocessing**
JSON Path: `$.['jenkins.job.buildable.duration'].p95`
The amount of time which jobs spend in the buildable state.
|Dependent item|jenkins.job.buildable.duration.p50**Preprocessing**
JSON Path: `$.['jenkins.job.buildable.duration'].p50`
The rate at which jobs are queued.
|Dependent item|jenkins.job.queuing.m1.rate**Preprocessing**
JSON Path: `$.['jenkins.job.queuing.duration'].m1_rate`
The rate at which jobs are queued.
|Dependent item|jenkins.job.queuing.m5.rate**Preprocessing**
JSON Path: `$.['jenkins.job.queuing.duration'].m5_rate`
The total time which jobs spend in the build queue.
|Dependent item|jenkins.job.queuing.duration.p95**Preprocessing**
JSON Path: `$.['jenkins.job.queuing.duration'].p95`
The total time which jobs spend in the build queue.
|Dependent item|jenkins.job.queuing.duration.p50**Preprocessing**
JSON Path: `$.['jenkins.job.queuing.duration'].p50`
The rate at which jobs are queued.
|Dependent item|jenkins.job.total.m1.rate**Preprocessing**
JSON Path: `$.['jenkins.job.total.duration'].m1_rate`
The rate at which jobs are queued.
|Dependent item|jenkins.job.total.m5.rate**Preprocessing**
JSON Path: `$.['jenkins.job.total.duration'].m5_rate`
The total time which jobs spend from entering the build queue to completing building.
|Dependent item|jenkins.job.total.duration.p95**Preprocessing**
JSON Path: `$.['jenkins.job.total.duration'].p95`
The total time which jobs spend from entering the build queue to completing building.
|Dependent item|jenkins.job.total.duration.p50**Preprocessing**
JSON Path: `$.['jenkins.job.total.duration'].p50`
The rate at which jobs enter the quiet period.
|Dependent item|jenkins.job.waiting.m1.rate**Preprocessing**
JSON Path: `$.['jenkins.job.waiting.duration'].m1_rate`
The rate at which jobs enter the quiet period.
|Dependent item|jenkins.job.waiting.m5.rate**Preprocessing**
JSON Path: `$.['jenkins.job.waiting.duration'].m5_rate`
The total amount of time that jobs spend in their quiet period.
|Dependent item|jenkins.job.waiting.duration.p95**Preprocessing**
JSON Path: `$.['jenkins.job.waiting.duration'].p95`
The total amount of time that jobs spend in their quiet period.
|Dependent item|jenkins.job.waiting.duration.p50**Preprocessing**
JSON Path: `$.['jenkins.job.waiting.duration'].p50`
The number of jobs that are in the Jenkins build queue and currently in the blocked state.
|Dependent item|jenkins.queue.blocked**Preprocessing**
JSON Path: `$.['jenkins.queue.blocked.value'].value`
The number of jobs that are in the Jenkins build queue.
|Dependent item|jenkins.queue.size**Preprocessing**
JSON Path: `$.['jenkins.queue.size.value'].value`
The number of jobs that are in the Jenkins build queue and currently in the blocked state.
|Dependent item|jenkins.queue.buildable**Preprocessing**
JSON Path: `$.['jenkins.queue.buildable.value'].value`
The number of jobs that are in the Jenkins build queue and currently in the blocked state.
|Dependent item|jenkins.queue.pending**Preprocessing**
JSON Path: `$.['jenkins.queue.pending.value'].value`
The number of jobs that are in the Jenkins build queue and currently in the blocked state.
|Dependent item|jenkins.queue.stuck**Preprocessing**
JSON Path: `$.['jenkins.queue.stuck.value'].value`
The number of currently active requests against the Jenkins master Web UI.
|Dependent item|jenkins.http.active_requests.rate**Preprocessing**
JSON Path: `$.counters.['http.activeRequests'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/400 status code.
|Dependent item|jenkins.http.bad_request.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.badRequest'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/500 status code.
|Dependent item|jenkins.http.server_error.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.serverError'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/503 status code.
|Dependent item|jenkins.http.service_unavailable.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.serviceUnavailable'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/200 status code.
|Dependent item|jenkins.http.ok.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.ok'].count`
The rate at which the Jenkins master Web UI is responding to requests with a non-informational status code that is not in the list: HTTP/200, HTTP/201, HTTP/204, HTTP/304, HTTP/400, HTTP/403, HTTP/404, HTTP/500, or HTTP/503.
|Dependent item|jenkins.http.other.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.other'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/201 status code.
|Dependent item|jenkins.http.created.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.created'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/204 status code.
|Dependent item|jenkins.http.no_content.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.noContent'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/404 status code.
|Dependent item|jenkins.http.not_found.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.notFound'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/304 status code.
|Dependent item|jenkins.http.not_modified.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.notModified'].count`
The rate at which the Jenkins master Web UI is responding to requests with an HTTP/403 status code.
|Dependent item|jenkins.http.forbidden.rate**Preprocessing**
JSON Path: `$.['http.responseCodes.forbidden'].count`
The rate at which the Jenkins master Web UI is receiving requests.
|Dependent item|jenkins.http.requests.rate**Preprocessing**
JSON Path: `$.['http.requests'].count`
The time spent generating the corresponding responses.
|Dependent item|jenkins.http.requests_p95.rate**Preprocessing**
JSON Path: `$.['http.requests'].p95`
The time spent generating the corresponding responses.
|Dependent item|jenkins.http.requests_p50.rate**Preprocessing**
JSON Path: `$.['http.requests'].p50`
Version of Jenkins server.
|Dependent item|jenkins.version**Preprocessing**
JSON Path: `$.['jenkins.versions.core'].value`
Discard unchanged with heartbeat: `3h`
The system load on the Jenkins master as reported by the JVM's Operating System JMX bean. The calculation of system load is operating system dependent. Typically this is the sum of the number of processes that are currently running plus the number that are waiting to run. This is typically comparable against the number of CPU cores.
|Dependent item|jenkins.system.cpu.load**Preprocessing**
JSON Path: `$.['system.cpu.load'].value`
The number of seconds since the Jenkins master JVM started.
|Dependent item|jenkins.system.uptime**Preprocessing**
JSON Path: `$.['vm.uptime.milliseconds'].value`
Custom multiplier: `0.001`
The ratio of used to total file descriptors
|Dependent item|jenkins.descriptor.ratio**Preprocessing**
JSON Path: `$.['vm.file.descriptor.ratio'].value`
Custom multiplier: `100`
**Preprocessing**
Check for not supported value
⛔️Custom on fail: Set value to: `0`
Regular expression: `{$JENKINS.PING.REPLY} 1`
⛔️Custom on fail: Set value to: `0`
Discard unchanged with heartbeat: `30m`
Jenkins disk space monitors are reporting the disk space as less than the configured threshold. The message will reference the first node which fails this check.
Health check message: {{ITEM.LASTVALUE2}.regsub("(.*)",\1)}
A failure is typically indicative of a potential issue within the Jenkins installation that will either be solved by explicitly disabling the failing plugin(s) or by resolving the corresponding plugin dependency issues.
Health check message: {{ITEM.LASTVALUE2}.regsub("(.*)",\1)}
Jenkins temporary space monitors are reporting the temporary space as less than the configured threshold. The message will reference the first node which fails this check.
Health check message: {{ITEM.LASTVALUE2}.regsub("(.*)",\1)}
There are any deadlocked threads in the Jenkins master JVM.
Health check message: {{ITEM.LASTVALUE2}.regsub('(.*)',\1)}
The Jenkins version has changed. Acknowledge to close the problem manually.
|`last(/Jenkins by HTTP/jenkins.version,#1)<>last(/Jenkins by HTTP/jenkins.version,#2) and length(last(/Jenkins by HTTP/jenkins.version))>0`|Info|**Manual close**: Yes| |Jenkins: Host has been restarted|Uptime is less than 10 minutes.
|`last(/Jenkins by HTTP/jenkins.system.uptime)<10m`|Info|**Manual close**: Yes| |Jenkins: Current number of used files is too high||`min(/Jenkins by HTTP/jenkins.descriptor.ratio,5m)>{$JENKINS.FILE_DESCRIPTORS.MAX.WARN}`|Warning|| |Jenkins: Service is down||`last(/Jenkins by HTTP/jenkins.ping)=0`|Average|**Manual close**: Yes| ### LLD rule Jobs discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Jobs discovery||HTTP agent|jenkins.jobs**Preprocessing**
JSON Path: `$.jobs.[*]`
Raw data for a job.
|Dependent item|jenkins.job.get[{#NAME}]**Preprocessing**
JSON Path: `$.jobs.[?(@.name == "{#NAME}")].first()`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `30m`
Represents health of project. A number between 0-100.
Job Description: {#DESCRIPTION}
Job Url: {#URL}
|Dependent item|jenkins.build.health[{#NAME}]**Preprocessing**
JSON Path: `$.healthReport..score.first()`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `30m`
Details: {#URL}/lastBuild/
|Dependent item|jenkins.last_build.number[{#NAME}]**Preprocessing**
JSON Path: `$.lastBuild.number`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `30m`
Build duration (in seconds).
|Dependent item|jenkins.last_build.duration[{#NAME}]**Preprocessing**
JSON Path: `$.lastBuild.duration`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
Discard unchanged with heartbeat: `30m`
**Preprocessing**
JSON Path: `$.lastBuild.timestamp`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
Discard unchanged with heartbeat: `30m`
**Preprocessing**
JSON Path: `$.lastBuild.result`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `30m`
Details: {#URL}/lastFailedBuild/
|Dependent item|jenkins.last_failed_build.number[{#NAME}]**Preprocessing**
JSON Path: `$.lastFailedBuild.number`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `30m`
Build duration (in seconds).
|Dependent item|jenkins.last_failed_build.duration[{#NAME}]**Preprocessing**
JSON Path: `$.lastFailedBuild.duration`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
Discard unchanged with heartbeat: `30m`
**Preprocessing**
JSON Path: `$.lastFailedBuild.timestamp`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
Discard unchanged with heartbeat: `30m`
Details: {#URL}/lastSuccessfulBuild/
|Dependent item|jenkins.last_successful_build.number[{#NAME}]**Preprocessing**
JSON Path: `$.lastSuccessfulBuild.number`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `30m`
Build duration (in seconds).
|Dependent item|jenkins.last_successful_build.duration[{#NAME}]**Preprocessing**
JSON Path: `$.lastSuccessfulBuild.duration`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
Discard unchanged with heartbeat: `30m`
**Preprocessing**
JSON Path: `$.lastSuccessfulBuild.timestamp`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
Discard unchanged with heartbeat: `30m`
**Preprocessing**
JSON Path: `$.computer.[*]`
Raw data for a computer.
|Dependent item|jenkins.computer.get[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.computer.[?(@.displayName == "{#DISPLAY_NAME}")].first()`
⛔️Custom on fail: Discard value
Discard unchanged with heartbeat: `1h`
The maximum number of concurrent builds that Jenkins may perform on this node.
|Dependent item|jenkins.computer.numExecutors[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.numExecutors`
⛔️Custom on fail: Discard value
Represents the actual online/offline state.
Node description: {#DESCRIPTION}
|Dependent item|jenkins.computer.state[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.offline`
Discard unchanged with heartbeat: `1h`
If the computer was offline (either temporarily or not), will return the cause as a string (without user info). Empty string if the system was put offline without given a cause.
|Dependent item|jenkins.computer.offline.reason[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.offlineCauseReason`
Discard unchanged with heartbeat: `3h`
Returns true if all the executors of this computer are idle.
|Dependent item|jenkins.computer.idle[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.idle`
Discard unchanged with heartbeat: `1h`
Returns true if this node is marked temporarily offline.
|Dependent item|jenkins.computer.temp_offline[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.temporarilyOffline`
Discard unchanged with heartbeat: `1h`
The available disk space of $JENKINS_HOME on agent.
|Dependent item|jenkins.computer.disk_space[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.monitorData['hudson.node_monitors.DiskSpaceMonitor'].size`
⛔️Custom on fail: Discard value
The available disk space of the temporary directory. Java tools and tests/builds often create files in the temporary directory, and may not function properly if there's no available space.
|Dependent item|jenkins.computer.temp_space[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
The round trip network response time from the master to the agent
|Dependent item|jenkins.computer.response_time[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
The total physical memory of the system, available bytes.
|Dependent item|jenkins.computer.available_physical_memory[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
Available swap space in bytes.
|Dependent item|jenkins.computer.available_swap_space[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
Total physical memory of the system, in bytes.
|Dependent item|jenkins.computer.total_physical_memory[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
Total number of swap space in bytes.
|Dependent item|jenkins.computer.total_swap_space[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `The text is too long. Please see the template.`
⛔️Custom on fail: Discard value
The clock difference between the master and nodes.
|Dependent item|jenkins.computer.clock_difference[{#DISPLAY_NAME}]**Preprocessing**
JSON Path: `$.monitorData['hudson.node_monitors.ClockMonitor'].diff`
⛔️Custom on fail: Discard value
Custom multiplier: `0.001`
Node down with reason: {{ITEM.LASTVALUE2}.regsub("(.*)",\1)}
|`last(/Jenkins by HTTP/jenkins.computer.state[{#DISPLAY_NAME}])=1 and length(last(/Jenkins by HTTP/jenkins.computer.offline.reason[{#DISPLAY_NAME}]))>0`|Average|**Depends on**:Node is temporarily Offline with reason: {{ITEM.LASTVALUE2}.regsub("(.*)",\1)}
|`last(/Jenkins by HTTP/jenkins.computer.temp_offline[{#DISPLAY_NAME}])=1 and length(last(/Jenkins by HTTP/jenkins.computer.offline.reason[{#DISPLAY_NAME}]))>0`|Info|**Manual close**: Yes| ## Feedback Please report any issues with the template at [`https://support.zabbix.com`](https://support.zabbix.com) You can also provide feedback, discuss the template, or ask for help at [`ZABBIX forums`](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback)