('46979','20','1.3.6.1.4.1.12356.101.9.2.1.1.7.1','10604','Detected info intrusions','ips.detected.info[fgIpsInfoSevDetections.0]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Number of info severity intrusions detected per second.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f570cf723b904be593a99a8338e577de','0','2','0'),
('46980','20','1.3.6.1.4.1.12356.101.9.2.1.1.6.1','10604','Detected low intrusions','ips.detected.low[fgIpsLowSevDetections.0]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Number of low severity intrusions detected per second.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5edd46eba610442888acf0c8bdcde2c1','0','2','0'),
('46981','20','1.3.6.1.4.1.12356.101.9.2.1.1.5.1','10604','Detected medium intrusions','ips.detected.med[fgIpsMedSevDetections.0]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Number of medium severity intrusions detected per second.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0e4f211aa2b6492fa461e2bc5af1723f','0','2','0'),
('46982','20','1.3.6.1.4.1.12356.101.9.2.1.1.8.1','10604','Detected signature based intrusions','ips.detected.sign[fgIpsSignatureDetections.0]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Number of intrusions detected by signature per second.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','bf7ab7c7fdfd42a28e15545904baa6dc','0','2','0'),
('46983','20','1.3.6.1.4.1.12356.101.9.2.1.1.1.1','10604','Total detected intrusions','ips.detected.total[fgIpsIntrusionsDetected.0]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Total number of intrusions detected per second.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f35dea442cbe4578a221571b2dbd676f','0','2','0'),
('46984','20','1.3.6.1.4.1.12356.101.4.1.8.0','10604','IPv4 Active sessions','net.ipv4.sessions[fgSysSesCount.0]','5m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Number of active sessions on the device.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ba89be1a4a01484f955fc6d740d1c736','0','2','0'),
('46985','20','walk[1.3.6.1.4.1.12356.101.4.9.2.1]','10604','SNMP walk SD-WAN health-checks','sdwan_health.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Used for discovering SD-WAN health-checks from FORTINET-FORTIGATE-MIB.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','de401c1befce453bb9de93cb154026d4','0','2','0'),
('46986','20','walk[1.3.6.1.4.1.12356.101.4.4.2.1]','10604','SNMP walk CPU','system.cpu.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Used for discovering CPU from FORTINET-FORTIGATE-MIB.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','47d06309bad546b0b303c0c602c76415','0','2','0'),
('46987','20','walk[1.3.6.1.4.1.12356.101.3.2.1.1]','10604','SNMP walk virtual domain','vdom.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Used for discovering virtual domains from FORTINET-FORTIGATE-MIB.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','14d4584977a74e0791bf063652bf4c39','0','2','0'),
('46988','20','1.3.6.1.4.1.12356.101.12.2.3.1.1.1','10604','SSL VPN state','vpn.ssl.state[fgVpnSslState.0]','1m','31d','365d','0','3','','','','',NULL,'1211','','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Used to determine whether SSL-VPN is enabled on this virtual domain.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','08bf282b9b3c4e78b139f3f6fe3bcd97','0','2','0'),
('46989','20','1.3.6.1.4.1.12356.101.12.1.1.0','10604','Active IPsec VPN tunnels','vpn.tunnel.active[fgVpnTunnelUpCount.0]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Number of IPsec VPN tunnels with at least one SA.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1699dd171a1f41d5896ac766477033ca','0','2','0'),
('46990','20','walk[1.3.6.1.4.1.12356.101.12.2.2.1.3,1.3.6.1.4.1.12356.101.12.2.2.1.20]','10604','SNMP walk VPN tunnels','vpn.tunnel.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Used for discovering VPN tunnels from FORTINET-FORTIGATE-MIB.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','349a383498cd42729940d1b9e5176e3e','0','2','0'),
('46991','20','1.3.6.1.4.1.12356.101.12.2.3.1.2.1','10604','Active SSL VPN users','vpn.users.count[fgVpnSslStatsLoginUsers.0]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: FORTINET-FORTIGATE-MIB
Current number of users logged in through SSL-VPN tunnels in the virtual domain.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c9a78b70b0f54fdc92d5efbfd38a32c5','0','2','0'),
('46992','20','walk[1.3.6.1.4.1.12356.101.14.4.3.1]','10604','SNMP walk wireless AP','wireless.ap.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Used for discovering wireless access points from FORTINET-FORTIGATE-MIB.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5135b14791f844e4b1e1cdef4817a5d2','0','2','0'),
('47069','21','','10627','Get ELB NLB alarms data','aws.elb.nlb.get_alarms','0s;m/1','0','0','0','4','','','','',NULL,NULL,E'var AWS = {
	params: {},
	metadata: ''http://169.254.169.254/latest/'',

	getField: function (data, path) {
		var steps = path.split(''.'');
		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}

			data = data[step];
		}

		return data;
	},

	setParams: function (params) {
		AWS.params[''proxy''] = params.proxy;
		switch (AWS.getField(params, ''auth_type'')) {
			case ''role_base'':
				AWS.params[''auth_type''] = ''role_base'';
				var request = new HttpRequest();
				if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
					request.setProxy(AWS.params.proxy);
				}
				request.addHeader(''X-aws-ec2-metadata-token-ttl-seconds: 21600'');
				var token = request.put(AWS.metadata + ''api/token'');

				if (request.getStatus() !== 200 || token === null || token === '''') {
					throw ''Error getting IMDSv2 session token.'';
				}
				request.addHeader(''X-aws-ec2-metadata-token: '' + token);
				var IamRoleName = request.get(AWS.metadata + ''meta-data/iam/security-credentials'');

				if (request.getStatus() !== 200 || IamRoleName === null || IamRoleName === '''') {
					throw ''Error getting security credentials from instance metadata. Role not found.'';
				}

				credentials = request.get(AWS.metadata + ''meta-data/iam/security-credentials/'' + encodeURI(IamRoleName));

				if (request.getStatus() !== 200 || credentials === null || credentials === '''') {
					throw ''Error getting security credentials from instance metadata.'';
				}

				try {
					credentials = JSON.parse(credentials);
				}
				catch (error) {
					throw ''Failed to parse response received from instance metadata. Check debug log for more information.'';
				}

				[''AccessKeyId'', ''SecretAccessKey'', ''Token''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			case ''assume_role'':
				AWS.params[''auth_type''] = ''assume_role'';

				[''AccessKeyId'', ''SecretAccessKey'', ''sts_region'', ''role_arn''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});

				role_arn_regex = /role\\/(.+)$/;

				var payload = {
					''Action'': ''AssumeRole'',
					''Version'': ''2011-06-15'',
					''RoleArn'': AWS.params.role_arn,
					''RoleSessionName'': AWS.params.role_arn.match(role_arn_regex)[1] + ''Session'',
				};

				credentials = AWS.getField(AWS.request(''GET'', AWS.params.sts_region, ''sts'', AWS.prepareParams(payload), ''''), ''AssumeRoleResponse.AssumeRoleResult.Credentials'');

				[''AccessKeyId'', ''SecretAccessKey'', ''SessionToken''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			default:
				AWS.params[''auth_type''] = ''access_key'';
				[''AccessKeyId'', ''SecretAccessKey''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});
		}
		[''region'', ''arn'', ''loadbalancer_name''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: "'' + field + ''".'';
			}
			AWS.params[field] = params[field];
		});
	},

	sign: function (key, message) {
		var hex = hmac(''sha256'', key, message);

		if ((hex.length % 2) === 1) {
			throw ''Invalid length of a hex string!'';
		}

		var result = new Int8Array(hex.length / 2);
		for (var i = 0, b = 0; i < hex.length; i += 2, b++) {
			result[b] = parseInt(hex.substring(i, i + 2), 16);
		}

		return result;
	},

	prepareParams: function (params) {
		var result = [];

		Object.keys(params).sort().forEach(function (key) {
			if (typeof params[key] !== ''object'') {
				result.push(key + ''='' + encodeURIComponent(params[key]));
			}
			else {
				result.push(prepareObject(key, params[key]));
			}
		});

		return result.join(''&'');
	},

	request: function (method, region, service, params, data) {
		if (typeof data === ''undefined'' || data === null) {
			data = '''';
		}

		var amzdate = (new Date()).toISOString().replace(/\\.\\d+Z/, ''Z'').replace(/[-:]/g, ''''),
			date = amzdate.replace(/T\\d+Z/, ''''),
			host = service + ''.'' + region + ''.amazonaws.com'',
			canonical_uri = ''/'',
			canonical_headers = ''content-encoding:amz-1.0\\n'' + ''host:'' + host + ''\\n'' + ''x-amz-date:'' + amzdate + ''\\n'',
			signed_headers = ''content-encoding;host;x-amz-date'',
			canonical_request = method + ''\\n'' + canonical_uri + ''\\n'' + params + ''\\n'' + canonical_headers + ''\\n'' + signed_headers + ''\\n'' + sha256(data),
			credential_scope = date + ''/'' + region + ''/'' + service + ''/'' + ''aws4_request'',
			request_string = ''AWS4-HMAC-SHA256'' + ''\\n'' + amzdate + ''\\n'' + credential_scope + ''\\n'' + sha256(canonical_request),
			key = AWS.sign(''AWS4'' + AWS.params.SecretAccessKey, date),
			key = AWS.sign(key, region),
			key = AWS.sign(key, service),
			key = AWS.sign(key, ''aws4_request''),
			request = new HttpRequest(),
			url = ''https://'' + host + canonical_uri + ''?'' + params;

		if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
			request.setProxy(AWS.params.proxy);
		}
		request.addHeader(''x-amz-date: '' + amzdate);
		request.addHeader(''Accept: application/json'');
		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Content-Encoding: amz-1.0'');
		request.addHeader(''Authorization: '' + ''AWS4-HMAC-SHA256 Credential='' + AWS.params.AccessKeyId + ''/'' + credential_scope + '', '' + ''SignedHeaders='' + signed_headers + '', '' + ''Signature='' + hmac(''sha256'', key, request_string));
		if (AWS.params.auth_type === ''role_base'' || (AWS.params.auth_type === ''assume_role'' & !params.includes(''AssumeRole''))) {
			request.addHeader(''X-Amz-Security-Token: '' + (AWS.params.auth_type === ''role_base'' ? AWS.params.Token : AWS.params.SessionToken));
		}

		Zabbix.log(4, ''[ AWS ELB ] Sending request: '' + url);
		response = request.get(url);
		Zabbix.log(4, ''[ AWS ELB ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			try {
				response = JSON.parse(XML.toJson(response));
			}
			catch (error) {
				throw ''Failed to parse response received from AWS CloudWatch API. Check debug log for more information.'';
			}
		}

		return response;
	},

	getAlarms: function () {
		var payload = {
			''Action'': ''DescribeAlarms'',
			''Version'': ''2010-08-01'',
			''MaxRecords'': 100
		},
			result = [];

		while (payload.NextToken !== '''') {
			var alarms = AWS.getField(AWS.request(''GET'', AWS.params.region, ''monitoring'', AWS.prepareParams(payload)), ''DescribeAlarmsResponse.DescribeAlarmsResult'');
			payload.NextToken = alarms.NextToken || '''';
			alarms_list = AWS.getField(alarms, ''MetricAlarms'');
			regex = /loadbalancer\\/(.+)$/;

			if (!Array.isArray(alarms_list))
				alarms_list = [alarms_list];
			alarms_list.forEach(function (alarm) {
				var dimensions = alarm.Dimensions;

				if (Array.isArray(alarm.Metrics)) {
					alarm.Metrics.forEach(function (metric) {
						if (typeof metric.MetricStat === ''object'' && metric.MetricStat !== null
							&& typeof metric.MetricStat.Metric === ''object'' && metric.MetricStat.Metric !== null
							&& Array.isArray(metric.MetricStat.Metric.Dimensions)) {
							dimensions = dimensions.concat(metric.MetricStat.Metric.Dimensions);
						}
					});
				}
				for (var i in dimensions) {
					if ((dimensions[i].Name === ''LoadBalancer'' && dimensions[i].Value === AWS.params.arn.match(regex)[1])
						|| (dimensions[i].Name === ''LoadBalancerName'' && dimensions[i].Value === AWS.params.loadbalancer_name)) {
						result.push(alarm);
						break;
					}
				}
			});
		}

		return result;
	}
};

try {
	AWS.setParams(JSON.parse(value));

	return JSON.stringify(AWS.getAlarms());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AWS ELB Alarms ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'`DescribeAlarms` API method: https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html','0','7d','0','',NULL,'{$AWS.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','6d74c1a68ea9476dadc39b785f333d5d','0','2','0'),
('47070','21','','10627','Get metrics data','aws.elb.nlb.get_metrics','0s;m/1','0','0','0','4','','','','',NULL,NULL,E'var AWS = {
	params: {},
	metadata: ''http://169.254.169.254/latest/'',
	request_period: 60,

	getField: function (data, path) {
		var steps = path.split(''.'');
		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}

			data = data[step];
		}

		return data;
	},

	setParams: function (params) {
		AWS.params[''proxy''] = params.proxy;
		switch (AWS.getField(params, ''auth_type'')) {
			case ''role_base'':
				AWS.params[''auth_type''] = ''role_base'';
				var request = new HttpRequest();
				if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
					request.setProxy(AWS.params.proxy);
				}
				request.addHeader(''X-aws-ec2-metadata-token-ttl-seconds: 21600'');
				var token = request.put(AWS.metadata + ''api/token'');

				if (request.getStatus() !== 200 || token === null || token === '''') {
					throw ''Error getting IMDSv2 session token.'';
				}
				request.addHeader(''X-aws-ec2-metadata-token: '' + token);
				var IamRoleName = request.get(AWS.metadata + ''meta-data/iam/security-credentials'');

				if (request.getStatus() !== 200 || IamRoleName === null || IamRoleName === '''') {
					throw ''Error getting security credentials from instance metadata. Role not found.'';
				}

				credentials = request.get(AWS.metadata + ''meta-data/iam/security-credentials/'' + encodeURI(IamRoleName));

				if (request.getStatus() !== 200 || credentials === null || credentials === '''') {
					throw ''Error getting security credentials from instance metadata.'';
				}

				try {
					credentials = JSON.parse(credentials);
				}
				catch (error) {
					throw ''Failed to parse response received from instance metadata. Check debug log for more information.'';
				}

				[''AccessKeyId'', ''SecretAccessKey'', ''Token''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			case ''assume_role'':
				AWS.params[''auth_type''] = ''assume_role'';

				[''AccessKeyId'', ''SecretAccessKey'', ''sts_region'', ''role_arn''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});

				role_arn_regex = /role\\/(.+)$/;

				var payload = {
					''Action'': ''AssumeRole'',
					''Version'': ''2011-06-15'',
					''RoleArn'': AWS.params.role_arn,
					''RoleSessionName'': AWS.params.role_arn.match(role_arn_regex)[1] + ''Session'',
				};

				credentials = AWS.getField(AWS.request(''POST'', AWS.params.sts_region, ''sts'', AWS.prepareParams(payload), ''''), ''AssumeRoleResponse.AssumeRoleResult.Credentials'');

				[''AccessKeyId'', ''SecretAccessKey'', ''SessionToken''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			default:
				AWS.params[''auth_type''] = ''access_key'';
				[''AccessKeyId'', ''SecretAccessKey''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});
		}
		[''region'', ''arn''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: "'' + field + ''".'';
			}
			AWS.params[field] = params[field];
		});
	},

	sign: function (key, message) {
		var hex = hmac(''sha256'', key, message);

		if ((hex.length % 2) === 1) {
			throw ''Invalid length of a hex string!'';
		}

		var result = new Int8Array(hex.length / 2);
		for (var i = 0, b = 0; i < hex.length; i += 2, b++) {
			result[b] = parseInt(hex.substring(i, i + 2), 16);
		}

		return result;
	},

	prepareParams: function (params) {
		var result = [];

		Object.keys(params).sort().forEach(function (key) {
			if (typeof params[key] !== ''object'') {
				result.push(key + ''='' + encodeURIComponent(params[key]));
			}
			else {
				result.push(prepareObject(key, params[key]));
			}
		});

		return result.join(''&'');
	},

	renderMetricQuery: function (period, arn) {
		var metrics_list = [
			''ActiveFlowCount:Average'',
			''ActiveFlowCount_TCP:Average'',
			''ActiveFlowCount_TLS:Average'',
			''ActiveFlowCount_UDP:Average'',
			''ClientTLSNegotiationErrorCount:Sum'',
			''ConsumedLCUs:Sum'',
			''ConsumedLCUs_TCP:Sum'',
			''ConsumedLCUs_TLS:Sum'',
			''ConsumedLCUs_UDP:Sum'',
			''NewFlowCount:Sum'',
			''NewFlowCount_TCP:Sum'',
			''NewFlowCount_TLS:Sum'',
			''NewFlowCount_UDP:Sum'',
			''PeakPacketsPerSecond:Maximum'',
			''PortAllocationErrorCount:Sum'',
			''SecurityGroupBlockedFlowCount_Inbound_ICMP:Sum'',
			''SecurityGroupBlockedFlowCount_Inbound_TCP:Sum'',
			''SecurityGroupBlockedFlowCount_Inbound_UDP:Sum'',
			''SecurityGroupBlockedFlowCount_Outbound_ICMP:Sum'',
			''SecurityGroupBlockedFlowCount_Outbound_TCP:Sum'',
			''SecurityGroupBlockedFlowCount_Outbound_UDP:Sum'',
			''ProcessedBytes:Sum'',
			''ProcessedBytes_TCP:Sum'',
			''ProcessedBytes_TLS:Sum'',
			''ProcessedBytes_UDP:Sum'',
			''ProcessedPackets:Sum'',
			''TargetTLSNegotiationErrorCount:Sum'',
			''TCP_Client_Reset_Count:Sum'',
			''TCP_ELB_Reset_Count:Sum'',
			''TCP_Target_Reset_Count:Sum'',
			''UnhealthyRoutingFlowCount:Sum''
		],
			regex = /loadbalancer\\/(.+)$/;

		var metric_payload = [];
		metrics_list.forEach(function (metric, index) {
			var parts = metric.split('':'', 2);
			metric_payload.push({
				''Id'': ''m'' + index,
				''MetricStat'': {
					''Metric'': {
						''MetricName'': parts[0],
						''Namespace'': ''AWS/NetworkELB'',
						''Dimensions'': [
							{
								''Name'': ''LoadBalancer'',
								''Value'': arn.match(regex)[1],
							}
						]
					},
					''Period'': period,
					''Stat'': parts[1],
				}
			});
		});

		return metric_payload;
	},

	request: function (method, region, service, params, data) {
		if (typeof data === ''undefined'' || data === null) {
			data = JSON.stringify([]);
		}
		else {
			data = JSON.stringify(data)
		}
		var amzdate = (new Date()).toISOString().replace(/\\.\\d+Z/, ''Z'').replace(/[-:]/g, ''''),
			date = amzdate.replace(/T\\d+Z/, ''''),
			canonical_uri = ''/'',
			host = service + ''.'' + region + ''.amazonaws.com'',
			canonical_headers = ''content-encoding:amz-1.0\\n'' + ''host:'' + host + ''\\n'' + ''x-amz-date:'' + amzdate + ''\\n'',
			signed_headers = ''content-encoding;host;x-amz-date'',
			canonical_request = method + ''\\n'' + canonical_uri + ''\\n'' + params + ''\\n'' + canonical_headers + ''\\n'' + signed_headers + ''\\n'' + sha256(data),
			credential_scope = date + ''/'' + region + ''/'' + service + ''/'' + ''aws4_request'',
			request_string = ''AWS4-HMAC-SHA256'' + ''\\n'' + amzdate + ''\\n'' + credential_scope + ''\\n'' + sha256(canonical_request),
			key = AWS.sign(''AWS4'' + AWS.params.SecretAccessKey, date),
			key = AWS.sign(key, region),
			key = AWS.sign(key, service),
			key = AWS.sign(key, ''aws4_request''),
			request = new HttpRequest(),
			url = ''https://'' + host + canonical_uri + ''?'' + params;

		if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
			request.setProxy(AWS.params.proxy);
		}
		request.addHeader(''x-amz-date: '' + amzdate);
		request.addHeader(''x-amz-content-sha256:'' + sha256(data));
		request.addHeader(''X-Amz-Target: GraniteServiceVersion20100801.GetMetricData'')
		request.addHeader(''Accept: application/json'');
		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Content-Encoding: amz-1.0'');
		request.addHeader(''Authorization: '' + ''AWS4-HMAC-SHA256 Credential='' + AWS.params.AccessKeyId + ''/'' + credential_scope + '', '' + ''SignedHeaders='' + signed_headers + '', '' + ''Signature='' + hmac(''sha256'', key, request_string));
		if (AWS.params.auth_type === ''role_base'' || (AWS.params.auth_type === ''assume_role'' & !params.includes(''AssumeRole''))) {
			request.addHeader(''X-Amz-Security-Token: '' + (AWS.params.auth_type === ''role_base'' ? AWS.params.Token : AWS.params.SessionToken));
		}

		Zabbix.log(4, ''[ AWS ELB ] Sending request: '' + url);
		response = request.post(url, data);
		Zabbix.log(4, ''[ AWS ELB ] Received response with status code '' + request.getStatus() + '': '' + response);
		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		return JSON.parse(response);
	},

	getMetricsData: function () {
		var end_time = Math.floor((new Date().getTime()) / 1000),
			start_time = end_time - AWS.request_period * 60;
		payload = {
			''StartTime'': start_time,
			''EndTime'': end_time,
			''ScanBy'': ''TimestampDescending'',
			''MetricDataQueries'': AWS.renderMetricQuery(AWS.request_period, AWS.params.arn)
		};

		return AWS.getField(AWS.request(''POST'', AWS.params.region, ''monitoring'', '''', payload), ''MetricDataResults'');
	}
};

try {
	AWS.setParams(JSON.parse(value));
	return JSON.stringify(AWS.getMetricsData());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AWS ELB Get metrics] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get ELB Network Load Balancer metrics.
Full metrics list related to Network Load Balancer: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-cloudwatch-metrics.html','0','7d','0','',NULL,'{$AWS.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','76d374302b29430c8fe5813656ffd928','0','2','0'),
('47071','21','','10627','Get target groups','aws.elb.nlb.get_target_groups','0s;m/30','0','0','0','4','','','','',NULL,NULL,E'var AWS = {
	params: {},
	metadata: ''http://169.254.169.254/latest/'',

	getField: function (data, path) {
		var steps = path.split(''.'');
		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}

			data = data[step];
		}

		return data;
	},

	setParams: function (params) {
		AWS.params[''proxy''] = params.proxy;
		switch (AWS.getField(params, ''auth_type'')) {
			case ''role_base'':
				AWS.params[''auth_type''] = ''role_base'';
				var request = new HttpRequest();
				if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
					request.setProxy(AWS.params.proxy);
				}
				request.addHeader(''X-aws-ec2-metadata-token-ttl-seconds: 21600'');
				var token = request.put(AWS.metadata + ''api/token'');

				if (request.getStatus() !== 200 || token === null || token === '''') {
					throw ''Error getting IMDSv2 session token.'';
				}
				request.addHeader(''X-aws-ec2-metadata-token: '' + token);
				var IamRoleName = request.get(AWS.metadata + ''meta-data/iam/security-credentials'');

				if (request.getStatus() !== 200 || IamRoleName === null || IamRoleName === '''') {
					throw ''Error getting security credentials from instance metadata. Role not found.'';
				}

				credentials = request.get(AWS.metadata + ''meta-data/iam/security-credentials/'' + encodeURI(IamRoleName));

				if (request.getStatus() !== 200 || credentials === null || credentials === '''') {
					throw ''Error getting security credentials from instance metadata.'';
				}

				try {
					credentials = JSON.parse(credentials);
				}
				catch (error) {
					throw ''Failed to parse response received from instance metadata. Check debug log for more information.'';
				}

				[''AccessKeyId'', ''SecretAccessKey'', ''Token''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			case ''assume_role'':
				AWS.params[''auth_type''] = ''assume_role'';

				[''AccessKeyId'', ''SecretAccessKey'', ''sts_region'', ''role_arn''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});

				role_arn_regex = /role\\/(.+)$/;

				var payload = {
					''Action'': ''AssumeRole'',
					''Version'': ''2011-06-15'',
					''RoleArn'': AWS.params.role_arn,
					''RoleSessionName'': AWS.params.role_arn.match(role_arn_regex)[1] + ''Session'',
				};

				credentials = AWS.getField(AWS.request(''GET'', AWS.params.sts_region, ''sts'', AWS.prepareParams(payload), ''''), ''AssumeRoleResponse.AssumeRoleResult.Credentials'');

				[''AccessKeyId'', ''SecretAccessKey'', ''SessionToken''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			default:
				AWS.params[''auth_type''] = ''access_key'';
				[''AccessKeyId'', ''SecretAccessKey''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});
		}
		[''region'', ''arn''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: "'' + field + ''".'';
			}
			AWS.params[field] = params[field];
		});
	},

	sign: function (key, message) {
		var hex = hmac(''sha256'', key, message);

		if ((hex.length % 2) === 1) {
			throw ''Invalid length of a hex string!'';
		}

		var result = new Int8Array(hex.length / 2);
		for (var i = 0, b = 0; i < hex.length; i += 2, b++) {
			result[b] = parseInt(hex.substring(i, i + 2), 16);
		}

		return result;
	},

	prepareParams: function (params) {
		var result = [];

		Object.keys(params).sort().forEach(function (key) {
			if (typeof params[key] !== ''object'') {
				result.push(key + ''='' + encodeURIComponent(params[key]));
			}
			else {
				result.push(prepareObject(key, params[key]));
			}
		});

		return result.join(''&'');
	},

	request: function (method, region, service, params, data) {
		if (typeof data === ''undefined'' || data === null) {
			data = JSON.stringify([]);
		}
		var amzdate = (new Date()).toISOString().replace(/\\.\\d+Z/, ''Z'').replace(/[-:]/g, ''''),
			date = amzdate.replace(/T\\d+Z/, ''''),
			canonical_uri = ''/'',
			host = service + ''.'' + region + ''.amazonaws.com'',
			canonical_headers = ''content-encoding:amz-1.0\\n'' + ''host:'' + host + ''\\n'' + ''x-amz-date:'' + amzdate + ''\\n'',
			signed_headers = ''content-encoding;host;x-amz-date'',
			canonical_request = method + ''\\n'' + canonical_uri + ''\\n'' + params + ''\\n'' + canonical_headers + ''\\n'' + signed_headers + ''\\n'' + sha256(data),
			credential_scope = date + ''/'' + region + ''/'' + service + ''/'' + ''aws4_request'',
			request_string = ''AWS4-HMAC-SHA256'' + ''\\n'' + amzdate + ''\\n'' + credential_scope + ''\\n'' + sha256(canonical_request),
			key = AWS.sign(''AWS4'' + AWS.params.SecretAccessKey, date),
			key = AWS.sign(key, region),
			key = AWS.sign(key, service),
			key = AWS.sign(key, ''aws4_request''),
			request = new HttpRequest(),
			url = ''https://'' + host + canonical_uri + ''?'' + params;

		if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
			request.setProxy(AWS.params.proxy);
		}
		request.addHeader(''x-amz-date: '' + amzdate);
		request.addHeader(''x-amz-content-sha256:'' + sha256(data));
		request.addHeader(''Accept: application/json'');
		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Content-Encoding: amz-1.0'');
		request.addHeader(''Authorization: '' + ''AWS4-HMAC-SHA256 Credential='' + AWS.params.AccessKeyId + ''/'' + credential_scope + '', '' + ''SignedHeaders='' + signed_headers + '', '' + ''Signature='' + hmac(''sha256'', key, request_string));
		if (AWS.params.auth_type === ''role_base'' || (AWS.params.auth_type === ''assume_role'' & !params.includes(''AssumeRole''))) {
			request.addHeader(''X-Amz-Security-Token: '' + (AWS.params.auth_type === ''role_base'' ? AWS.params.Token : AWS.params.SessionToken));
		}

		Zabbix.log(4, ''[ AWS ELB ] Sending request: '' + url);
		response = request.get(url);
		Zabbix.log(4, ''[ AWS ELB ] Received response with status code '' + request.getStatus() + '': '' + response);
		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		return JSON.parse(response);
	},

	listTargetGroups: function () {
		var lld_array = [],
			regex = /targetgroup\\/(.+)$/,
			payload = {
				''Action'': ''DescribeTargetGroups'',
				''LoadBalancerArn'': AWS.params.arn,
				''Version'': ''2015-12-01''
			};
		targets = AWS.getField(AWS.request(''GET'', AWS.params.region, ''elasticloadbalancing'', AWS.prepareParams(payload), ''''), ''DescribeTargetGroupsResponse.DescribeTargetGroupsResult.TargetGroups'');

		if (!Array.isArray(targets))
			targets = [targets]

		targets.forEach(function (targets) {
			lld_array.push(
				{
					target_name: AWS.getField(targets, ''TargetGroupName''),
					target_arn: AWS.getField(targets, ''TargetGroupArn'').match(regex)[0],
					type: AWS.getField(targets, ''TargetType''),
					protocol: AWS.getField(targets, ''Protocol'')
				}
			)
		});

		return lld_array;
	}
};

try {
	AWS.setParams(JSON.parse(value));
	return JSON.stringify(AWS.listTargetGroups());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AWS ELB Target groups ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get ELB target group.
`DescribeTargetGroups` API method: https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_DescribeTargetGroups.html','0','7d','0','',NULL,'{$AWS.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','d80c238267744bc9b46de217acd93842','0','2','0'),
('47107','21','','10627','[{#AWS.ELB.TARGET.GROUP.NAME}]: Get metrics','aws.elb.nlb.target_groups.get_metrics["{#AWS.ELB.TARGET.GROUP.NAME}"]','0s;m/5','0','0','0','4','','','','',NULL,NULL,E'var AWS = {
	params: {},
	metadata: ''http://169.254.169.254/latest/'',
	request_period: 60,

	getField: function (data, path) {
		var steps = path.split(''.'');
		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}

			data = data[step];
		}

		return data;
	},

	setParams: function (params) {
		AWS.params[''proxy''] = params.proxy;
		switch (AWS.getField(params, ''auth_type'')) {
			case ''role_base'':
				AWS.params[''auth_type''] = ''role_base'';
				var request = new HttpRequest();
				if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
					request.setProxy(AWS.params.proxy);
				}
				request.addHeader(''X-aws-ec2-metadata-token-ttl-seconds: 21600'');
				var token = request.put(AWS.metadata + ''api/token'');

				if (request.getStatus() !== 200 || token === null || token === '''') {
					throw ''Error getting IMDSv2 session token.'';
				}
				request.addHeader(''X-aws-ec2-metadata-token: '' + token);
				var IamRoleName = request.get(AWS.metadata + ''meta-data/iam/security-credentials'');

				if (request.getStatus() !== 200 || IamRoleName === null || IamRoleName === '''') {
					throw ''Error getting security credentials from instance metadata. Role not found.'';
				}

				credentials = request.get(AWS.metadata + ''meta-data/iam/security-credentials/'' + encodeURI(IamRoleName));

				if (request.getStatus() !== 200 || credentials === null || credentials === '''') {
					throw ''Error getting security credentials from instance metadata.'';
				}

				try {
					credentials = JSON.parse(credentials);
				}
				catch (error) {
					throw ''Failed to parse response received from instance metadata. Check debug log for more information.'';
				}

				[''AccessKeyId'', ''SecretAccessKey'', ''Token''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			case ''assume_role'':
				AWS.params[''auth_type''] = ''assume_role'';

				[''AccessKeyId'', ''SecretAccessKey'', ''sts_region'', ''role_arn''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});

				role_arn_regex = /role\\/(.+)$/;

				var payload = {
					''Action'': ''AssumeRole'',
					''Version'': ''2011-06-15'',
					''RoleArn'': AWS.params.role_arn,
					''RoleSessionName'': AWS.params.role_arn.match(role_arn_regex)[1] + ''Session'',
				};

				credentials = AWS.getField(AWS.request(''POST'', AWS.params.sts_region, ''sts'', AWS.prepareParams(payload), ''''), ''AssumeRoleResponse.AssumeRoleResult.Credentials'');

				[''AccessKeyId'', ''SecretAccessKey'', ''SessionToken''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			default:
				AWS.params[''auth_type''] = ''access_key'';
				[''AccessKeyId'', ''SecretAccessKey''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});
		}
		[''region'', ''arn'', ''target_arn''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: "'' + field + ''".'';
			}
			AWS.params[field] = params[field];
		});
	},

	sign: function (key, message) {
		var hex = hmac(''sha256'', key, message);

		if ((hex.length % 2) === 1) {
			throw ''Invalid length of a hex string!'';
		}

		var result = new Int8Array(hex.length / 2);
		for (var i = 0, b = 0; i < hex.length; i += 2, b++) {
			result[b] = parseInt(hex.substring(i, i + 2), 16);
		}

		return result;
	},

	prepareParams: function (params) {
		var result = [];

		Object.keys(params).sort().forEach(function (key) {
			if (typeof params[key] !== ''object'') {
				result.push(key + ''='' + encodeURIComponent(params[key]));
			}
			else {
				result.push(prepareObject(key, params[key]));
			}
		});

		return result.join(''&'');
	},

	renderMetricQuery: function (period, arn, target_arn) {
		var metrics_list = [
			''HealthyHostCount:Minimum'',
			''UnHealthyHostCount:Maximum''
		],
			regex = /loadbalancer\\/(.+)$/;

		var metric_payload = [];
		metrics_list.forEach(function (metric, index) {
			var parts = metric.split('':'', 2);
			metric_payload.push({
				''Id'': ''m'' + index,
				''MetricStat'': {
					''Metric'': {
						''MetricName'': parts[0],
						''Namespace'': ''AWS/NetworkELB'',
						''Dimensions'': [
							{
								''Name'': ''LoadBalancer'',
								''Value'': arn.match(regex)[1],
							},
							{
								''Name'': ''TargetGroup'',
								''Value'': target_arn
							}
						]
					},
					''Period'': period,
					''Stat'': parts[1],
				}
			});
		});

		return metric_payload;
	},

	request: function (method, region, service, params, data) {
		if (typeof data === ''undefined'' || data === null) {
			data = JSON.stringify([]);
		}
		else {
			data = JSON.stringify(data)
		}
		var amzdate = (new Date()).toISOString().replace(/\\.\\d+Z/, ''Z'').replace(/[-:]/g, ''''),
			date = amzdate.replace(/T\\d+Z/, ''''),
			canonical_uri = ''/'',
			host = service + ''.'' + region + ''.amazonaws.com'',
			canonical_headers = ''content-encoding:amz-1.0\\n'' + ''host:'' + host + ''\\n'' + ''x-amz-date:'' + amzdate + ''\\n'',
			signed_headers = ''content-encoding;host;x-amz-date'',
			canonical_request = method + ''\\n'' + canonical_uri + ''\\n'' + params + ''\\n'' + canonical_headers + ''\\n'' + signed_headers + ''\\n'' + sha256(data),
			credential_scope = date + ''/'' + region + ''/'' + service + ''/'' + ''aws4_request'',
			request_string = ''AWS4-HMAC-SHA256'' + ''\\n'' + amzdate + ''\\n'' + credential_scope + ''\\n'' + sha256(canonical_request),
			key = AWS.sign(''AWS4'' + AWS.params.SecretAccessKey, date),
			key = AWS.sign(key, region),
			key = AWS.sign(key, service),
			key = AWS.sign(key, ''aws4_request''),
			request = new HttpRequest(),
			url = ''https://'' + host + canonical_uri + ''?'' + params;

		if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
			request.setProxy(AWS.params.proxy);
		}
		request.addHeader(''x-amz-date: '' + amzdate);
		request.addHeader(''x-amz-content-sha256:'' + sha256(data));
		request.addHeader(''X-Amz-Target: GraniteServiceVersion20100801.GetMetricData'')
		request.addHeader(''Accept: application/json'');
		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Content-Encoding: amz-1.0'');
		request.addHeader(''Authorization: '' + ''AWS4-HMAC-SHA256 Credential='' + AWS.params.AccessKeyId + ''/'' + credential_scope + '', '' + ''SignedHeaders='' + signed_headers + '', '' + ''Signature='' + hmac(''sha256'', key, request_string));
		if (AWS.params.auth_type === ''role_base'' || (AWS.params.auth_type === ''assume_role'' & !params.includes(''AssumeRole''))) {
			request.addHeader(''X-Amz-Security-Token: '' + (AWS.params.auth_type === ''role_base'' ? AWS.params.Token : AWS.params.SessionToken));
		}

		Zabbix.log(4, ''[ AWS ELB ] Sending request: '' + url);
		response = request.post(url, data);
		Zabbix.log(4, ''[ AWS ELB ] Received response with status code '' + request.getStatus() + '': '' + response);
		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		return JSON.parse(response);
	},

	getMetricsData: function () {
		var end_time = Math.floor((new Date().getTime()) / 1000),
			start_time = end_time - AWS.request_period * 60;
		payload = {
			''StartTime'': start_time,
			''EndTime'': end_time,
			''ScanBy'': ''TimestampDescending'',
			''MetricDataQueries'': AWS.renderMetricQuery(AWS.request_period, AWS.params.arn, AWS.params.target_arn)
		};

		return AWS.getField(AWS.request(''POST'', AWS.params.region, ''monitoring'', '''', payload), ''MetricDataResults'');
	}
};

try {
	AWS.setParams(JSON.parse(value));
	return JSON.stringify(AWS.getMetricsData());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AWS ELB Get targets group metrics] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','2',NULL,'Get the metrics of the ELB target group `{#AWS.ELB.TARGET.GROUP.NAME}`.
Full list of metrics related to AWS ELB here: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-cloudwatch-metrics.html#user-authentication-metric-table','0','7d','0','',NULL,'{$AWS.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','9438a03b48bd4617a2363f83f758f107','0','2','0'),
('47131','22','','10628','Website {$WEBSITE.DOMAIN} Get data','website.get.data','{$WEBSITE.GET.DATA.INTERVAL}','0','0','0','4','','','','',NULL,NULL,'const Website = {
    params: {},

    setParams(params) {
        [''scheme'', ''domain'',''width'', ''height''].forEach(function (field) {
            if (typeof params !== ''object'' || !params[field]) {
                throw new Error(''Required param is not set: '' + field + ''.'');
            }
        });
        this.params = params;
    },

    getOptions(browser) {
        switch ((browser || '''').trim().toLowerCase()) {
            case ''firefox'':
                return Browser.firefoxOptions();
            case ''safari'':
                return Browser.safariOptions();
            case ''edge'':
                return Browser.edgeOptions();
            default:
                return Browser.chromeOptions();
        }
    },

    getPerformance() {
        const browser = new Browser(Website.getOptions(Website.params.browser));
        const url = Website.params.scheme + ''://'' + Website.params.domain + ''/'' + Website.params.path
        const screenshot = '''';
        browser.setScreenSize(Number(Website.params.width), Number(Website.params.height))
        browser.navigate(url);
        browser.collectPerfEntries();
        screenshot = browser.getScreenshot();
        const result = browser.getResult();
        result.screenshot = screenshot;

        return JSON.stringify(result);
    }
};

try {
    Website.setParams(JSON.parse(value));
    return Website.getPerformance();

} catch (error) {
    error += (String(error).endsWith(''.'')) ? '''' : ''.'';
    Zabbix.log(3, ''[ Website get metrics] ERROR: '' + error);
    return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Returns the JSON with performance counters of the requested website.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b5d5b396dfdc4fc99e4c2d0216728027','0','2','0'),
('47158','21','','10629','Get branches','github.repo.branches.get','{$GITHUB.INTERVAL:"get_branches"}','0','0','0','4','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var result = github.apiRequest(github.params.api_url + github.params.api_query + ''?'' + github.params.query_params || '''', github.params.pagination_required);

	return JSON.stringify(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','0',NULL,'Get the repository branches.

Information about endpoint:
https://docs.github.com/en/rest/branches/branches?apiVersion=2022-11-28#list-branches','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_branches"}','','','','200','1','0','','','0','0','0','0','0','0','0','e348ae4bd2c04b5c88df2f5cb422eb61','0','2','0'),
('47159','21','','10629','Get issue count','github.repo.issues.get','{$GITHUB.INTERVAL:"get_issues_count"}','0','0','0','4','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value));

	var issues_count,
		issues_count_result = {
			issues: {
				total: 0,
				open: 0,
				closed: 0
			},
			pr: {
				total: 0,
				open: 0,
				closed: 0
			}
		};

	issues_count = github.apiRequest(github.params.api_url + ''repos/'' + github.params.repo_owner + ''/'' + github.params.repo_name + ''/pulls?state=all&per_page=1'', github.params.pagination_required);
	issues_count_result.pr.total = github.itemsCount(issues_count);

	issues_count = github.apiRequest(github.params.api_url + ''repos/'' + github.params.repo_owner + ''/'' + github.params.repo_name + ''/pulls?state=open&per_page=1'', github.params.pagination_required);
	issues_count_result.pr.open = github.itemsCount(issues_count);

	issues_count_result.pr.closed = issues_count_result.pr.total - issues_count_result.pr.open;


	issues_count = github.apiRequest(github.params.api_url + ''repos/'' + github.params.repo_owner + ''/'' + github.params.repo_name + ''/issues?state=all&per_page=1'', github.params.pagination_required);
	issues_count_result.issues.total = github.itemsCount(issues_count) - issues_count_result.pr.total;

	issues_count = github.apiRequest(github.params.api_url + ''repos/'' + github.params.repo_owner + ''/'' + github.params.repo_name + ''/issues?state=open&per_page=1'', github.params.pagination_required);
	issues_count_result.issues.open = github.itemsCount(issues_count) - issues_count_result.pr.open;

	issues_count_result.issues.closed = issues_count_result.issues.total - issues_count_result.issues.open;

	return JSON.stringify(issues_count_result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','0',NULL,'Get the count of issues and pull requests in the repository (total, open, closed).

Information about endpoint for issues:
https://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#list-repository-issues

Information about endpoint for pull requests:
https://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_issues_count"}','','','','200','1','0','','','0','0','0','0','0','0','0','f88f02dc593844a89eb601e833a1a19c','0','2','0'),
('47160','21','','10629','Number of releases','github.repo.releases.count','{$GITHUB.INTERVAL:"get_releases_count"}','31d','365d','0','3','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var result = github.apiRequest(github.params.api_url + github.params.api_query + ''?'' + github.params.query_params || '''', github.params.pagination_required);

	return github.itemsCount(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','0',NULL,'The number of releases in the repository. Note that this number also includes draft releases.

Information about endpoint:
https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#list-releases','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_releases_count"}','','','','200','1','0','','','0','0','0','0','0','0','0','0098bfc3ed5c4181a7dcd1eceb8e7251','0','2','0'),
('47161','21','','10629','Get repository','github.repo.repository.get','{$GITHUB.INTERVAL:"get_repo"}','0','0','0','4','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var repo_data = github.apiRequest(github.params.api_url + github.params.api_query);

	if (repo_data.data[0].fork === false) {
		var repo_community_profile = github.apiRequest(github.params.api_url + github.params.api_query + ''/community/profile'');

		repo_data.data[0].zbx_community_profile = repo_community_profile.data[0];
	}

	return JSON.stringify(repo_data);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','0',NULL,'Get the general repository information. If the repository is not a fork, the community profile metrics are also retrieved.

Information about endpoint:
https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#get-a-repository

Information about community profile metrics:
https://docs.github.com/en/rest/metrics/community?apiVersion=2022-11-28#get-community-profile-metrics','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_repo"}','','','','200','1','0','','','0','0','0','0','0','0','0','37e94a93bf924d84bb6609eec47ff081','0','2','0'),
('47162','21','','10629','Get self-hosted runners','github.repo.runners.get','{$GITHUB.INTERVAL:"get_runners"}','0','0','0','4','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var result = github.apiRequest(github.params.api_url + github.params.api_query + ''?'' + github.params.query_params || '''', github.params.pagination_required);

	return JSON.stringify(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','0',NULL,'Get the self-hosted runners of the repository.

Note that admin access to the repository is required to use this endpoint:
https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#list-self-hosted-runners-for-a-repository','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_runners"}','','','','200','1','0','','','0','0','0','0','0','0','0','a0ca909d3c734d859594771985a5c302','0','2','0'),
('47163','21','','10629','Number of tags','github.repo.tags.count','{$GITHUB.INTERVAL:"get_tags_count"}','31d','365d','0','3','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var result = github.apiRequest(github.params.api_url + github.params.api_query + ''?'' + github.params.query_params || '''', github.params.pagination_required);

	return github.itemsCount(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','0',NULL,'The number of tags in the repository.

Information about endpoint:
https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-repository-tags','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_tags_count"}','','','','200','1','0','','','0','0','0','0','0','0','0','49d81fc72a6a455ebee7304592056930','0','2','0'),
('47164','21','','10629','Get workflows','github.repo.workflows.get','{$GITHUB.INTERVAL:"get_workflows"}','0','0','0','4','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var repo_data = github.apiRequest(github.params.api_url + github.params.api_query);

	if (repo_data.data[0].fork === false) {
		var repo_community_profile = github.apiRequest(github.params.api_url + github.params.api_query + ''/community/profile'');

		repo_data.data[0].zbx_community_profile = repo_community_profile.data[0];
	}

	return JSON.stringify(repo_data);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','0',NULL,'Get the repository workflows.

Information about endpoint:
https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#list-repository-workflows','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_workflows"}','','','','200','1','0','','','0','0','0','0','0','0','0','d45dbcb0493d4258ac2cdba10648b3b3','0','2','0'),
('47185','21','','10629','Branch [{#BRANCH_NAME}]: Number of commits','github.repo.branches.commits.total[{#BRANCH_NAME}]','{$GITHUB.INTERVAL:"get_commits_count:{#BRANCH_NAME}"}','31d','365d','0','3','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var result = github.apiRequest(github.params.api_url + github.params.api_query + ''?'' + github.params.query_params || '''', github.params.pagination_required);

	return github.itemsCount(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','2',NULL,'Get the number of commits in the branch.

Information about endpoint:
https://docs.github.com/en/rest/commits/commits?apiVersion=2022-11-28#list-commits','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_commits_count:{#BRANCH_NAME}"}','','','','200','1','0','','','0','0','0','0','0','0','0','927ef4806cc4460a8882c204a9e94817','0','2','0'),
('47186','21','','10629','Workflow [{#WORKFLOW_NAME}]: Get last run','github.repo.workflows.last_run.get[{#WORKFLOW_NAME}]','{$GITHUB.INTERVAL:"get_last_run:{#WORKFLOW_NAME}"}','0','0','0','4','','','','',NULL,NULL,E'var github = {
	params: {},

	setParams: function (params, required) {
		required = required || [];
		required.concat([''api_url'', ''user_agent'', ''api_version'', ''repo_owner'', ''repo_name'', ''pagination_required'', ''api_token'']).forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined''
				|| params[field] === '''') {
				throw ''Required parameter is not set: "'' + field + ''".'';
			}
		});

		github.params = params;

		if (typeof github.params.api_url === ''string'' && !github.params.api_url.endsWith(''/'')) {
			github.params.api_url += ''/'';
		}
	},

	apiRequest: function (url, pagination_required) {
		const next_pattern = /<([^>]+)>;\\s*rel="next"/i;
		var request = new HttpRequest(),
			response,
			headers,
			final_data = {
				headers: {},
				data: []
			};

		pagination_required = (typeof pagination_required !== ''undefined'') ? pagination_required : ''true'';

		request.addHeader(''User-Agent: '' + github.params.user_agent);
		request.addHeader(''Accept: application/vnd.github+json'');
		request.addHeader(''X-GitHub-Api-Version: '' + github.params.api_version);
		request.addHeader(''Authorization: Bearer '' + github.params.api_token);

		if (typeof github.params.http_proxy !== ''undefined'' && github.params.http_proxy !== '''') {
			request.setProxy(github.params.http_proxy);
			Zabbix.log(4, ''[ GitHub Repo ] Using HTTP proxy: '' + github.params.http_proxy);
		}

		while (url) {
			Zabbix.log(4, ''[ GitHub Repo ] Sending request: '' + url);

			response = request.get(url);

			Zabbix.log(4, ''[ GitHub Repo ] Received response with status code '' + request.getStatus() + '': '' + response);

			if (request.getStatus() < 200 || request.getStatus() >= 300) {
				throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
			}

			try {
				response = JSON.parse(response);
			}
			catch (error) {
				throw ''Failed to parse response received from API. Check debug log for more information.'';
			}

			var parsed_data = github.parseData(response);
			final_data.data = final_data.data.concat(parsed_data);

			headers = request.getHeaders();

			url = ((headers.link || '''').match(next_pattern) || [])[1];

			if (pagination_required === ''false'') {
				url = '''';
			}
		}

		final_data.headers = request.getHeaders();

		delete request;

		return final_data;
	},

	parseData: function (response_data) {
		if (!response_data) {
			return [];
		}

		const normalization_required = "total_count" in response_data && !("url" in response_data);
		if (!normalization_required) return response_data;

		delete response_data.incomplete_results;
		delete response_data.repository_selection;
		delete response_data.total_count;

		const namespaceKey = Object.keys(response_data)[0];
		response_data = response_data[namespaceKey];

		return response_data;
	},

	itemsCount: function (response_data) {
		const last_page_number = /<[^>]+page=(\\d+)>;\\s*rel="last"/i;

		if (response_data.headers.link){
			return response_data.headers.link.match(last_page_number)[1];
		}

		return response_data.data.length;
	}
}

try {
	github.setParams(JSON.parse(value), [''api_query'']);

	var result = github.apiRequest(github.params.api_url + github.params.api_query + ''?'' + github.params.query_params || '''', github.params.pagination_required);

	return JSON.stringify(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ GitHub Repo ] ERROR: '' + error);
	return JSON.stringify({ error: error });
}','','0','','','','','2',NULL,'Get the data about the last workflow run.

Information about endpoint:
https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#list-workflow-runs-for-a-workflow','0','7d','0','',NULL,'{$GITHUB.TIMEOUT:"get_last_run:{#WORKFLOW_NAME}"}','','','','200','1','0','','','0','0','0','0','0','0','0','32311fa69236401388321fad4ae183d6','0','2','0'),
('47195','16','','10630','License: Users: Get','jmx.discovery[attributes,"com.atlassian.jira:type=jira.license"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'License data for the discovery rule.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','27334384618d4b2f91d700b188463a56','0','2','0'),
('47196','16','','10630','DB: Connections: Limit','jmx["com.atlassian.jira:name=BasicDataSource,connectionpool=connections",MaxTotal]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Total allowed database connection count.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','11a89b91831b4b5d899bff63ba935cbb','0','2','0'),
('47197','16','','10630','DB: Connections: Active','jmx["com.atlassian.jira:name=BasicDataSource,connectionpool=connections",NumActive]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Active database connection count.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f064dbd8781848c09184fb83a3a46097','0','2','0'),
('47198','16','','10630','DB: Reads',E'jmx["com.atlassian.jira:type=db.reads",invocation\\.count]','1m','31d','365d','0','0','','rps','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Database read operations from Jira per second.
Units: rps - read operations per second.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2928e1e3b68940938a0b107eb5d72b95','0','2','0'),
('47199','16','','10630','DB: Writes',E'jmx["com.atlassian.jira:type=db.writes",invocation\\.count]','1m','31d','365d','0','0','','wps','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Database write operations from Jira per second.
Units: wps - write operations per second.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ad5c16fa48864dc6b625a23f95ecf07a','0','2','0'),
('47200','16','','10630','Entity: Attachments','jmx["com.atlassian.jira:type=entity.attachments.total",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The number of attachments.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','942556b043734986a2c5e261e97d5b1c','0','2','0'),
('47201','16','','10630','Entity: Components','jmx["com.atlassian.jira:type=entity.components.total",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The number of components.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7aa003c53cb14555a88ee02e804ca45f','0','2','0'),
('47202','16','','10630','Entity: Custom fields','jmx["com.atlassian.jira:type=entity.customfields.total",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The number of custom fields.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8ddf2cb59bb44d8a8fe7f2ca9e44ad20','0','2','0'),
('47203','16','','10630','Entity: Filters','jmx["com.atlassian.jira:type=entity.filters.total",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The number of filters.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2c8d303953ed44b6815129a6a77ee5c6','0','2','0'),
('47204','16','','10630','Entity: Issues','jmx["com.atlassian.jira:type=entity.issues.total",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The number of issues.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5d9a669481ab448eb5c9e0b64f3517b0','0','2','0'),
('47205','16','','10630','Entity: Versions created','jmx["com.atlassian.jira:type=entity.versions.total",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The number of versions created.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b6a8a8ed8a9242858560b0743cc955aa','0','2','0'),
('47206','16','','10630','Issue: Created per minute','jmx["com.atlassian.jira:type=issue.created.count",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Issues created per minute.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2152f7eb0bff4c9888e131634b770673','0','2','0'),
('47207','16','','10630','Issue: Search per minute','jmx["com.atlassian.jira:type=issue.search.count",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Issue searches performed per minute.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','25fdfd0e3dce4d95ac2cdaed41ba5fb6','0','2','0'),
('47208','16','','10630','Issue: Updates per minute','jmx["com.atlassian.jira:type=issue.updated.count",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Issue updates performed per minute.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','060d5f5ccf3a4ab197e4b95d9eb88b17','0','2','0'),
('47209','16','','10630','DB: Connections: Failed per minute','jmx["com.atlassian.jira:type=metrics,category00=db,category01=connection,category02=failures,name=counter",Count]','0;m0-59','31d','365d','0','0','','fpm','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The count of database connection failures registered in one minute.
Units: fpm - fails per minute.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','bb565c20d5ad4cf1a94aea5966ec12fa','0','2','0'),
('47210','16','','10630','DB: Connections: Latency','jmx["com.atlassian.jira:type=metrics,category00=db,category01=connection,category02=latency,name=value",Value]','1m','31d','365d','0','0','','ms','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of latency when querying the database.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8fb52b3e150a4f5fb84e8b527aaaf5a5','0','2','0'),
('47211','16','','10630','DB: Pool: Connections: Active','jmx["com.atlassian.jira:type=metrics,category00=db,category01=connection,category02=pool,category03=numActive,name=value",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Active connection count of the database pool.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2d22d7c78abe40b8a82fb70a8d1091d1','0','2','0'),
('47212','16','','10630','DB: Pool: Connections: Idle','jmx["com.atlassian.jira:type=metrics,category00=db,category01=connection,category02=pool,category03=numIdle,name=value",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'Idle connection count of the database pool.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c18d258cdb8f420e8cb18a9e6e7c2bf8','0','2','0'),
('47213','16','','10630','DB: Connections: State','jmx["com.atlassian.jira:type=metrics,category00=db,category01=connection,category02=state,name=value",Value]','1m','31d','365d','0','3','','','','',NULL,'1224','','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The state of the database connection.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','fc7870021dc04bf499db8834be67987e','0','2','0'),
('47214','16','','10630','HTTP: Pool: Connections: Active','jmx["com.atlassian.jira:type=metrics,category00=http,category01=connection,category02=pool,category03=numActive,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the number of active connections in the HTTP connection pool.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','25d810c7fd5e4116a8e2323b7a2537a0','0','2','0'),
('47215','16','','10630','HTTP: Pool: Connections: Idle','jmx["com.atlassian.jira:type=metrics,category00=http,category01=connection,category02=pool,category03=numIdle,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the number of idle connections in the HTTP connection pool.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b244d220b7e24d48913f4e8e1b490732','0','2','0'),
('47216','16','','10630','HTTP: Sessions: Active','jmx["com.atlassian.jira:type=metrics,category00=http,category01=connection,category02=sessions,category03=active,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the number of active user sessions.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','195bc0648f6445bbbe205a5869383c68','0','2','0'),
('47217','16','','10630','HTTP: Requests per minute','jmx["com.atlassian.jira:type=metrics,category00=http,category01=requests,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the total number of HTTP requests per minute.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0d5a76f579284baf9eaa47180ed2c3fa','0','2','0'),
('47218','16','','10630','Mail: Queue: Processing state','jmx["com.atlassian.jira:type=metrics,category00=mail,category01=queue,category02=jobRunning,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,'1226','','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest indicator of the state of a mail queue job.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7029cc0f375740c79790b410b92579a1','0','2','0'),
('47219','16','','10630','Mail: Sent per minute','jmx["com.atlassian.jira:type=metrics,category00=mail,category01=queue,category02=numEmailsSentPerMin,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the number of emails sent by the SMTP server per minute.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','27f65a6cc7a147c2a95d3348db0cc9eb','0','2','0'),
('47220','16','','10630','Mail: Queue: Error','jmx["com.atlassian.jira:type=metrics,category00=mail,category01=queue,category02=numErrors,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the number of items in an error mail queue.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ec7e12f99490496c814e9000108ec8c9','0','2','0'),
('47221','16','','10630','Mail: Queue','jmx["com.atlassian.jira:type=metrics,category00=mail,category01=queue,category02=numItems,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the number of items in a mail queue.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','67789113243b4689af58e42d0a127878','0','2','0'),
('47222','16','','10630','Mail: Processed per minute','jmx["com.atlassian.jira:type=metrics,category00=mail,category01=queue,category02=numItemsProcessedPerMin,name=value",Value]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The latest measure of the number of items processed by a mail queue per minute.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3d311c2e46af4c98b11f5f1a50b5318e','0','2','0'),
('47223','16','','10630','Quicksearch: Concurrent searches','jmx["com.atlassian.jira:type=quicksearch.concurrent.search",Value]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','0',NULL,'The number of concurrent searches that are being performed in real-time by using the quick search.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6a81cf33cc834115b352324a18355368','0','2','0'),
('47224','16','','10630','Storage discovery','jmx.discovery[beans,"com.atlassian.jira:type=metrics,category00=home,category01=*,category02=write,category03=latency,*,name=value"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','1',NULL,'Discovery of the Jira storage metrics.','0','7d','1','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6b671426094e4268b48f51eb97ddd8bf','0','2','0'),
('47225','16','','10630','Indexing latency discovery','jmx.discovery[beans,"com.atlassian.jira:type=metrics,category00=indexing,name=*"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','1',NULL,'Discovery of the Jira indexing metrics.','0','7d','1','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','886f8b2c518d4f3bb3d4441e29bf13fc','0','2','0'),
('47226','16','','10630','Issue latency discovery','jmx.discovery[beans,"com.atlassian.jira:type=metrics,category00=issue,name=*"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','1',NULL,'Discovery of the Jira issue latency metrics.','0','7d','1','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','70db70727f824102b769a652713432ad','0','2','0'),
('47227','16','','10630','Mail server discovery','jmx.discovery[beans,"com.atlassian.jira:type=metrics,category00=mail,category01=*,category02=connection,category03=state,name=*"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','1',NULL,'Discovery of the Jira connected mail servers.','0','7d','1','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2bd3e8ce78f84ccba599137b0e0ab6a0','0','2','0'),
('47229','16','','10630','Storage [{#JMXCATEGORY01}]: Latency','jmx["{#JMXOBJ}",Value]','15m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','2',NULL,'The median latency of writing a small file (~30 bytes) to `{#JMXCATEGORY01}`.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','933c9c8b11e848f88775ee9b54f8d292','0','2','0'),
('47230','16','','10630','Indexing [{#JMXNAME}]: Latency','jmx["com.atlassian.jira:type=metrics,category00=indexing,name={#JMXNAME}",Mean]','15m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','2',NULL,'Average time spent on indexing operations.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2b02e3232de34ae9803f80ac94ade79c','0','2','0'),
('47231','16','','10630','Issue [{#JMXNAME}]: Latency','jmx["{#JMXOBJ}",Mean]','15m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','2',NULL,'Average time spent on issue `{#JMXNAME}` operations.','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','da6d68fa14f24f58bcbe1157b9818321','0','2','0'),
('47232','16','','10630','Mail [{#JMXCATEGORY01},{#JMXNAME}]: Connection state','jmx["{#JMXOBJ}",Connected]','1m','31d','365d','0','3','','','','',NULL,'1224','','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','2',NULL,'Shows connection state of Jira to discovered mail server: `{#JMXCATEGORY01}-{#JMXNAME}`','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5281bee6b829433a875c0e026d805206','0','2','0'),
('47233','16','','10630','Mail [{#JMXCATEGORY01},{#JMXNAME}]: Failures per minute','jmx["{#JMXOBJ}",TotalFailures]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$JMX.USER}','{$JMX.PASSWORD}','','','2',NULL,'Count of failed connections to discovered mail server `{#JMXCATEGORY01}-{#JMXNAME}` per minute','0','7d','0','service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','949854436d6542f9a859a65cec20572d','0','2','0'),
('47237','21','','10631','Apps: Get reports','ms365.apps.reports.get','6h','0','0','0','4','','','','',NULL,NULL,E'const ms365 = {
	params: {},
	token: null,

	setParams: function (params) {
		[''app_id'', ''password'', ''tenant_id''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		ms365.params = params;
	},

	login: function () {
		const response = new HttpRequest(),
			login = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			login.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		login.addHeader(''Content-Type: application/x-www-form-urlencoded'');

		response = login.post(
			''https://login.microsoftonline.com/'' + encodeURIComponent(ms365.params.tenant_id) + ''/oauth2/v2.0/token'',
			''grant_type=client_credentials&scope=https://graph.microsoft.com/.default&client_id='' + encodeURIComponent(ms365.params.app_id) + ''&client_secret='' + encodeURIComponent(ms365.params.password)
		);

		if (login.getStatus() < 200 || login.getStatus() >= 300) {
			throw ''Login failed with status code '' + login.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse login session response.'';
		}

		if (!response.hasOwnProperty(''access_token'')) {
			throw ''Authentication response does not contain access token.'';
		}

		ms365.token = response[''access_token''];
	},

	request: function (url) {
		const response = new HttpRequest(),
			request = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			request.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		if (!ms365.token) {
			throw ''Request does not contain access token.'';
		}

		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Authorization: Bearer '' + ms365.token);

		Zabbix.log(4, ''[ Microsoft 365 ] Request url: '' + url);

		response = request.get(url);

		Zabbix.log(4, ''[ Microsoft 365 ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			return JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from API.'';
		}
	},

	getField: function (data, path) {
		const steps = path.split(''.'');

		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}
			data = data[step];
		}

		return ms365.nullToZero(data);
	},

	nullToZero: function (data) {
		Object.keys(data).forEach(function (key) {
			if (data[key] === null) {
				data[key] = 0;
			} else if (typeof data[key] === ''object'') {
				ms365.nullToZero(data[key]);
			}
		});

		return data;
	},

	getMetricsData: function (endpoints) {
		const data = {};

		data.metrics = {};
		endpoints.forEach(function (field) {
			link = ''https://graph.microsoft.com/beta/reports/'' + field + ''(period=\\''D7\\'')?$format=application/json'';
			answer = ms365.getField(ms365.request(link), ''value'');

			data.metrics[field] = answer;
		});

		return data;
	},

	getServiceData: function () {
		var data = {},

		link = ''https://graph.microsoft.com/beta/admin/serviceAnnouncement/healthOverviews/'';
		data.services = ms365.request(link);

		return data;
	}
};


endpoints = [
	''getOffice365ActiveUserCounts'',
	''getOffice365ServicesUserCounts'',
	''getM365AppUserCounts'',
	''getM365AppPlatformUserCounts''
];

try {
	ms365.setParams(JSON.parse(value));
	ms365.login();
	return JSON.stringify(ms365.getMetricsData(endpoints));
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ Microsoft 365 ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Accumulated data from the Microsoft Graph API "reports" endpoints.
More information:
https://learn.microsoft.com/en-us/graph/api/resources/report?view=graph-rest-beta','0','7d','0','',NULL,'{$MS365.API.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','f694dc8e49084d3a961c7124cb712c43','0','2','0'),
('47238','21','','10631','OneDrive: Get reports','ms365.onedrive.reports.get','6h','0','0','0','4','','','','',NULL,NULL,E'const ms365 = {
	params: {},
	token: null,

	setParams: function (params) {
		[''app_id'', ''password'', ''tenant_id''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		ms365.params = params;
	},

	login: function () {
		const response = new HttpRequest(),
			login = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			login.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		login.addHeader(''Content-Type: application/x-www-form-urlencoded'');

		response = login.post(
			''https://login.microsoftonline.com/'' + encodeURIComponent(ms365.params.tenant_id) + ''/oauth2/v2.0/token'',
			''grant_type=client_credentials&scope=https://graph.microsoft.com/.default&client_id='' + encodeURIComponent(ms365.params.app_id) + ''&client_secret='' + encodeURIComponent(ms365.params.password)
		);

		if (login.getStatus() < 200 || login.getStatus() >= 300) {
			throw ''Login failed with status code '' + login.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse login session response.'';
		}

		if (!response.hasOwnProperty(''access_token'')) {
			throw ''Authentication response does not contain access token.'';
		}

		ms365.token = response[''access_token''];
	},

	request: function (url) {
		const response = new HttpRequest(),
			request = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			request.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		if (!ms365.token) {
			throw ''Request does not contain access token.'';
		}

		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Authorization: Bearer '' + ms365.token);

		Zabbix.log(4, ''[ Microsoft 365 ] Request url: '' + url);

		response = request.get(url);

		Zabbix.log(4, ''[ Microsoft 365 ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			return JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from API.'';
		}
	},

	getField: function (data, path) {
		const steps = path.split(''.'');

		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}
			data = data[step];
		}

		return ms365.nullToZero(data);
	},

	nullToZero: function (data) {
		Object.keys(data).forEach(function (key) {
			if (data[key] === null) {
				data[key] = 0;
			} else if (typeof data[key] === ''object'') {
				ms365.nullToZero(data[key]);
			}
		});

		return data;
	},

	getMetricsData: function (endpoints) {
		const data = {};

		data.metrics = {};
		endpoints.forEach(function (field) {
			link = ''https://graph.microsoft.com/beta/reports/'' + field + ''(period=\\''D7\\'')?$format=application/json'';
			answer = ms365.getField(ms365.request(link), ''value'');

			data.metrics[field] = answer;
		});

		return data;
	},

	getServiceData: function () {
		var data = {},

		link = ''https://graph.microsoft.com/beta/admin/serviceAnnouncement/healthOverviews/'';
		data.services = ms365.request(link);

		return data;
	}
};


const endpoints = [
	''getOneDriveActivityUserCounts'',
	''getOneDriveActivityFileCounts'',
	''getOneDriveUsageAccountCounts'',
	''getOneDriveUsageFileCounts'',
	''getOneDriveUsageStorage''
];

try {
	ms365.setParams(JSON.parse(value));
	ms365.login();
	return JSON.stringify(ms365.getMetricsData(endpoints));
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ Microsoft 365 ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Accumulated data from the Microsoft Graph API "reports" endpoints.
More information:
https://learn.microsoft.com/en-us/graph/api/resources/report?view=graph-rest-beta','0','7d','0','',NULL,'{$MS365.API.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','31b78185119446f397404ae7abf05684','0','2','0'),
('47239','21','','10631','Outlook: Get reports','ms365.outlook.reports.get','6h','0','0','0','4','','','','',NULL,NULL,E'const ms365 = {
	params: {},
	token: null,

	setParams: function (params) {
		[''app_id'', ''password'', ''tenant_id''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		ms365.params = params;
	},

	login: function () {
		const response = new HttpRequest(),
			login = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			login.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		login.addHeader(''Content-Type: application/x-www-form-urlencoded'');

		response = login.post(
			''https://login.microsoftonline.com/'' + encodeURIComponent(ms365.params.tenant_id) + ''/oauth2/v2.0/token'',
			''grant_type=client_credentials&scope=https://graph.microsoft.com/.default&client_id='' + encodeURIComponent(ms365.params.app_id) + ''&client_secret='' + encodeURIComponent(ms365.params.password)
		);

		if (login.getStatus() < 200 || login.getStatus() >= 300) {
			throw ''Login failed with status code '' + login.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse login session response.'';
		}

		if (!response.hasOwnProperty(''access_token'')) {
			throw ''Authentication response does not contain access token.'';
		}

		ms365.token = response[''access_token''];
	},

	request: function (url) {
		const response = new HttpRequest(),
			request = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			request.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		if (!ms365.token) {
			throw ''Request does not contain access token.'';
		}

		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Authorization: Bearer '' + ms365.token);

		Zabbix.log(4, ''[ Microsoft 365 ] Request url: '' + url);

		response = request.get(url);

		Zabbix.log(4, ''[ Microsoft 365 ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			return JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from API.'';
		}
	},

	getField: function (data, path) {
		const steps = path.split(''.'');

		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}
			data = data[step];
		}

		return ms365.nullToZero(data);
	},

	nullToZero: function (data) {
		Object.keys(data).forEach(function (key) {
			if (data[key] === null) {
				data[key] = 0;
			} else if (typeof data[key] === ''object'') {
				ms365.nullToZero(data[key]);
			}
		});

		return data;
	},

	getMetricsData: function (endpoints) {
		const data = {};

		data.metrics = {};
		endpoints.forEach(function (field) {
			link = ''https://graph.microsoft.com/beta/reports/'' + field + ''(period=\\''D7\\'')?$format=application/json'';
			answer = ms365.getField(ms365.request(link), ''value'');

			data.metrics[field] = answer;
		});

		return data;
	},

	getServiceData: function () {
		var data = {},

		link = ''https://graph.microsoft.com/beta/admin/serviceAnnouncement/healthOverviews/'';
		data.services = ms365.request(link);

		return data;
	}
};


endpoints = [
	''getEmailActivityCounts'',
	''getEmailActivityUserCounts'',
	''getEmailAppUsageUserCounts'',
	''getMailboxUsageMailboxCounts'',
	''getMailboxUsageStorage''
];

try {
	ms365.setParams(JSON.parse(value));
	ms365.login();
	return JSON.stringify(ms365.getMetricsData(endpoints));
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ Microsoft 365 ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Accumulated data from the Microsoft Graph API "reports" endpoints.
More information:
https://learn.microsoft.com/en-us/graph/api/resources/report?view=graph-rest-beta','0','7d','0','',NULL,'{$MS365.API.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','4e4d78bd44db421a908288031489c3d4','0','2','0'),
('47240','21','','10631','Services: Get services','ms365.services.get','6h','0','0','0','4','','','','',NULL,NULL,E'const ms365 = {
	params: {},
	token: null,

	setParams: function (params) {
		[''app_id'', ''password'', ''tenant_id''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		ms365.params = params;
	},

	login: function () {
		const response = new HttpRequest(),
			login = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			login.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		login.addHeader(''Content-Type: application/x-www-form-urlencoded'');

		response = login.post(
			''https://login.microsoftonline.com/'' + encodeURIComponent(ms365.params.tenant_id) + ''/oauth2/v2.0/token'',
			''grant_type=client_credentials&scope=https://graph.microsoft.com/.default&client_id='' + encodeURIComponent(ms365.params.app_id) + ''&client_secret='' + encodeURIComponent(ms365.params.password)
		);

		if (login.getStatus() < 200 || login.getStatus() >= 300) {
			throw ''Login failed with status code '' + login.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse login session response.'';
		}

		if (!response.hasOwnProperty(''access_token'')) {
			throw ''Authentication response does not contain access token.'';
		}

		ms365.token = response[''access_token''];
	},

	request: function (url) {
		const response = new HttpRequest(),
			request = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			request.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		if (!ms365.token) {
			throw ''Request does not contain access token.'';
		}

		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Authorization: Bearer '' + ms365.token);

		Zabbix.log(4, ''[ Microsoft 365 ] Request url: '' + url);

		response = request.get(url);

		Zabbix.log(4, ''[ Microsoft 365 ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			return JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from API.'';
		}
	},

	getField: function (data, path) {
		const steps = path.split(''.'');

		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}
			data = data[step];
		}

		return ms365.nullToZero(data);
	},

	nullToZero: function (data) {
		Object.keys(data).forEach(function (key) {
			if (data[key] === null) {
				data[key] = 0;
			} else if (typeof data[key] === ''object'') {
				ms365.nullToZero(data[key]);
			}
		});

		return data;
	},

	getMetricsData: function (endpoints) {
		const data = {};

		data.metrics = {};
		endpoints.forEach(function (field) {
			link = ''https://graph.microsoft.com/beta/reports/'' + field + ''(period=\\''D7\\'')?$format=application/json'';
			answer = ms365.getField(ms365.request(link), ''value'');

			data.metrics[field] = answer;
		});

		return data;
	},

	getServiceData: function () {
		var data = {},

		link = ''https://graph.microsoft.com/beta/admin/serviceAnnouncement/healthOverviews/'';
		data.services = ms365.request(link);

		return data;
	}
};


try {
	ms365.setParams(JSON.parse(value));
	ms365.login();
	return JSON.stringify(ms365.getServiceData());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ Microsoft 365 ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'The list of Microsoft cloud services and their health statuses subscribed by a tenant.
More information:
https://learn.microsoft.com/en-us/graph/api/servicehealth-get?view=graph-rest-beta&tabs=http','0','7d','0','',NULL,'{$MS365.API.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','53c72fa948454b998f612c4d099dd440','0','2','0'),
('47241','21','','10631','SharePoint: Get reports','ms365.sharepoint.reports.get','6h','0','0','0','4','','','','',NULL,NULL,E'const ms365 = {
	params: {},
	token: null,

	setParams: function (params) {
		[''app_id'', ''password'', ''tenant_id''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		ms365.params = params;
	},

	login: function () {
		const response = new HttpRequest(),
			login = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			login.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		login.addHeader(''Content-Type: application/x-www-form-urlencoded'');

		response = login.post(
			''https://login.microsoftonline.com/'' + encodeURIComponent(ms365.params.tenant_id) + ''/oauth2/v2.0/token'',
			''grant_type=client_credentials&scope=https://graph.microsoft.com/.default&client_id='' + encodeURIComponent(ms365.params.app_id) + ''&client_secret='' + encodeURIComponent(ms365.params.password)
		);

		if (login.getStatus() < 200 || login.getStatus() >= 300) {
			throw ''Login failed with status code '' + login.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse login session response.'';
		}

		if (!response.hasOwnProperty(''access_token'')) {
			throw ''Authentication response does not contain access token.'';
		}

		ms365.token = response[''access_token''];
	},

	request: function (url) {
		const response = new HttpRequest(),
			request = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			request.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		if (!ms365.token) {
			throw ''Request does not contain access token.'';
		}

		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Authorization: Bearer '' + ms365.token);

		Zabbix.log(4, ''[ Microsoft 365 ] Request url: '' + url);

		response = request.get(url);

		Zabbix.log(4, ''[ Microsoft 365 ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			return JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from API.'';
		}
	},

	getField: function (data, path) {
		const steps = path.split(''.'');

		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}
			data = data[step];
		}

		return ms365.nullToZero(data);
	},

	nullToZero: function (data) {
		Object.keys(data).forEach(function (key) {
			if (data[key] === null) {
				data[key] = 0;
			} else if (typeof data[key] === ''object'') {
				ms365.nullToZero(data[key]);
			}
		});

		return data;
	},

	getMetricsData: function (endpoints) {
		const data = {};

		data.metrics = {};
		endpoints.forEach(function (field) {
			link = ''https://graph.microsoft.com/beta/reports/'' + field + ''(period=\\''D7\\'')?$format=application/json'';
			answer = ms365.getField(ms365.request(link), ''value'');

			data.metrics[field] = answer;
		});

		return data;
	},

	getServiceData: function () {
		var data = {},

		link = ''https://graph.microsoft.com/beta/admin/serviceAnnouncement/healthOverviews/'';
		data.services = ms365.request(link);

		return data;
	}
};


endpoints = [
	''getSharePointActivityFileCounts'',
	''getSharePointActivityUserCounts'',
	''getSharePointActivityPages'',
	''getSharePointSiteUsageFileCounts'',
	''getSharePointSiteUsageSiteCounts'',
	''getSharePointSiteUsageStorage'',
	''getSharePointSiteUsagePages''
];

try {
	ms365.setParams(JSON.parse(value));
	ms365.login();
	return JSON.stringify(ms365.getMetricsData(endpoints));
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ Microsoft 365 ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Accumulated data from the Microsoft Graph API "reports" endpoints.
More information:
https://learn.microsoft.com/en-us/graph/api/resources/report?view=graph-rest-beta','0','7d','0','',NULL,'{$MS365.API.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','fd2cb544cfd744c1a94a1d32243978e6','0','2','0'),
('47242','21','','10631','Teams: Get reports','ms365.teams.reports.get','6h','0','0','0','4','','','','',NULL,NULL,E'const ms365 = {
	params: {},
	token: null,

	setParams: function (params) {
		[''app_id'', ''password'', ''tenant_id''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		ms365.params = params;
	},

	login: function () {
		const response = new HttpRequest(),
			login = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			login.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		login.addHeader(''Content-Type: application/x-www-form-urlencoded'');

		response = login.post(
			''https://login.microsoftonline.com/'' + encodeURIComponent(ms365.params.tenant_id) + ''/oauth2/v2.0/token'',
			''grant_type=client_credentials&scope=https://graph.microsoft.com/.default&client_id='' + encodeURIComponent(ms365.params.app_id) + ''&client_secret='' + encodeURIComponent(ms365.params.password)
		);

		if (login.getStatus() < 200 || login.getStatus() >= 300) {
			throw ''Login failed with status code '' + login.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse login session response.'';
		}

		if (!response.hasOwnProperty(''access_token'')) {
			throw ''Authentication response does not contain access token.'';
		}

		ms365.token = response[''access_token''];
	},

	request: function (url) {
		const response = new HttpRequest(),
			request = new HttpRequest();

		if (typeof ms365.params.http_proxy !== ''undefined'' && ms365.params.http_proxy !== '''') {
			request.setProxy(ms365.params.http_proxy);
			Zabbix.log(4, ''[ Microsoft 365 ] Using HTTP proxy: '' + ms365.params.http_proxy);
		}

		if (!ms365.token) {
			throw ''Request does not contain access token.'';
		}

		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Authorization: Bearer '' + ms365.token);

		Zabbix.log(4, ''[ Microsoft 365 ] Request url: '' + url);

		response = request.get(url);

		Zabbix.log(4, ''[ Microsoft 365 ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			return JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from API.'';
		}
	},

	getField: function (data, path) {
		const steps = path.split(''.'');

		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}
			data = data[step];
		}

		return ms365.nullToZero(data);
	},

	nullToZero: function (data) {
		Object.keys(data).forEach(function (key) {
			if (data[key] === null) {
				data[key] = 0;
			} else if (typeof data[key] === ''object'') {
				ms365.nullToZero(data[key]);
			}
		});

		return data;
	},

	getMetricsData: function (endpoints) {
		const data = {};

		data.metrics = {};
		endpoints.forEach(function (field) {
			link = ''https://graph.microsoft.com/beta/reports/'' + field + ''(period=\\''D7\\'')?$format=application/json'';
			answer = ms365.getField(ms365.request(link), ''value'');

			data.metrics[field] = answer;
		});

		return data;
	},

	getServiceData: function () {
		var data = {},

		link = ''https://graph.microsoft.com/beta/admin/serviceAnnouncement/healthOverviews/'';
		data.services = ms365.request(link);

		return data;
	}
};


endpoints = [
	''getTeamsDeviceUsageDistributionUserCounts'',
	''getTeamsDeviceUsageDistributionTotalUserCounts'',
	''getTeamsUserActivityTotalDistributionCounts'',
	''getTeamsUserActivityDistributionUserCounts'',
	''getTeamsUserActivityDistributionTotalUserCounts'',
	''getTeamsTeamActivityDistributionCounts''
];

try {
	ms365.setParams(JSON.parse(value));
	ms365.login();
	return JSON.stringify(ms365.getMetricsData(endpoints));
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ Microsoft 365 ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Accumulated data from the Microsoft Graph API "reports" endpoints.
More information:
https://learn.microsoft.com/en-us/graph/api/resources/report?view=graph-rest-beta','0','7d','0','',NULL,'{$MS365.API.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','a77e654c05ec44ed991a36c6b1df472f','0','2','0'),
('47414','3','','10173','Get alarms','vmware.alarms.get[{$VMWARE.URL}]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'Get alarm status.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5a0c711cae454f0e92a492dd1718101f','0','2','0'),
('47415','21','','10173','Get Overall Health VC State','vmware.health.get','1m','0','0','0','4','','','','',NULL,NULL,'var Vcenter = {
	 params: {},
	 vmware_api_session_id: '''',
	 health_status: '''',
	 error_msg: '''',

	 setParams: function (params) {
		  [''url'', ''username'', ''password''].forEach(function (field) {
			  if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				  throw ''Required param is not set: '' + field + ''.'';
			  }
		  });

		  if (params[''url''].endsWith(''/'')) {
			   params[''url''] = params[''url''].slice(0,-1);
		  }
		  params[''url''] = params[''url''].replace(''/sdk'','''');

		  Vcenter.params = params;
	 },

	 isGtOrEqVersion: function (first_version, second_version) {
		  var first = first_version.split(''.'').map(Number),
			  second = second_version.split(''.'').map(Number);

		  if (first.length > second.length) {
			  const max_componens_length = first.length
		  }
		  else {
			  const max_componens_length = second.length
		  }

		  var num_components = first.length;
		  while (num_components < max_componens_length) {
			  first.push(0);
			  num_components = num_components +1;
		  }

		  var num_components = second.length;
		  while (num_components < max_componens_length) {
			  second.push(0);
			  num_components = num_components +1;
		  }

		  if (first[0] > second[0] ||
			  (first[0] === second[0] && first[1] > second[1]) ||
			  (first[0] === second[0] && first[1] === second[1] && first[2] >= second[2])) {
			  return true;
		  }

		  return false;
	  },

	 login: function () {
		  var response, request = new HttpRequest();
		  request.setHttpAuth(HTTPAUTH_BASIC, Vcenter.params.username, Vcenter.params.password);
		  request.addHeader(''Accept: application/json'');
		  request.addHeader(''Content-Type: application/json'');

		  response = request.post(Vcenter.params.url + ''/api/session'', '''');
		  if (request.getStatus() >= 200 && request.getStatus() < 300 && (!JSON.parse(response).error)) {
			   Vcenter.vmware_api_session_id = Vcenter.removeQuotes(response);
			   return true;
		  }

		  response = request.post(Vcenter.params.url + ''/rest/com/vmware/cis/session'', '''');
		  if (request.getStatus() >= 200 && request.getStatus() < 300) {
			   Vcenter.vmware_api_session_id = JSON.parse(response).value;
			   return true;
		  }

		  return false;
	 },

	 logout: function () {
		  path = ''/rest/com/vmware/cis/session'';
		  if (Vcenter.vmware_api_version && Vcenter.isGtOrEqVersion(Vcenter.vmware_api_version, ''7.0.2'')) {
			   path = ''/api/session'';
		  }

		  Vcenter.request(Vcenter.params.url + path, ''delete'');
	 },

	 get_version: function () {
		  path = ''/rest/appliance/system/version'';

		  try {
			   Vcenter.vmware_api_version = Vcenter.request(Vcenter.params.url + path, ''get'').version;
			   return true;
		  }
		  catch (error) {
			   return false;
		  }
	 },

	 removeQuotes: function (str){
		  if (str.startsWith(''"'') && str.endsWith(''"'')) {
			  return str.slice(1, -1);
		  }

		  return str;
	 },

	 getHealthStatus: function () {
		  path = ''/api/appliance/health/system'';
		  if (!Vcenter.isGtOrEqVersion(Vcenter.vmware_api_version, ''7.0.2'')) {
			   path = ''/rest/appliance/health/system'';
		  }

		  result = Vcenter.removeQuotes(Vcenter.request(Vcenter.params.url + path, ''get''));

		  const idx = [
			   ''green'',
			   ''yellow'',
			   ''orange'',
			   ''red'',
			   ''gray''
			   ].indexOf(result.toLowerCase());
		  Vcenter.health_status = idx !== -1 ? idx : 5;
	 },

	 request: function (url, method) {
		  var response, request = new HttpRequest();

		  if (typeof Vcenter.params.proxy !== ''undefined'' && Vcenter.params.proxy !== '''') {
			   request.setProxy(Vcenter.params.proxy);
		  }

		  request.setHttpAuth(HTTPAUTH_NONE);
		  request.addHeader("Cookie: vmware-api-session-id=" + Vcenter.vmware_api_session_id);

		  Zabbix.log(4, ''[ VMware vCenter ] Sending request: '' + url);

		  switch (method) {
			   case ''get'':
				   response = request.get(url);
				   break;

			   case ''post'':
				   response = request.post(url);
				   break;

			   case ''delete'':
					response = request.delete(url);
					break;

			   default:
				   throw ''Unsupported HTTP request method: '' + method;
		  }

		  Zabbix.log(4, ''[ VMware vCenter ] Received response with status code '' + request.getStatus() + '': '' + response);

		  if (request.getStatus() < 200 || request.getStatus() >= 300) {
			   throw ''Cannot connect to VMware vCenter. Check debug log for more information.'';
		  }

		  if (method !== ''delete'' && JSON.parse(response).value) {
			   return JSON.parse(response).value;
		  }
		  else {
			   return response;
		  }
	 }
};

try {
	 Vcenter.setParams(JSON.parse(value));
	 
	 if (Vcenter.login() && Vcenter.get_version() && Vcenter.isGtOrEqVersion(Vcenter.vmware_api_version, ''6.5.0'')) {
		  Vcenter.getHealthStatus();
	 }
	 else {
		  Vcenter.health_status = 6;
	 }

	 if (Vcenter.vmware_api_session_id) {
		  Vcenter.logout();
	 }
}
catch (error) {
	 Zabbix.log(3, ''[ VMware vCenter ] ERROR: '' + error);
	 Vcenter.error_msg = ''Failed to get data from API:'' + error;
}

return JSON.stringify({''health'': Vcenter.health_status, ''error'': Vcenter.error_msg});','','0','','','','','0',NULL,'Gets overall health of the system. This item works only with VMware vCenter versions above 6.5.','0','7d','0','',NULL,'10','','','','200','1','0','','','0','0','0','0','0','0','0','889333d3225147e1b1604119050a121f','0','2','0'),
('47416','3','','10174','Snapshot consolidation needed','vmware.vm.consolidationneeded[{$VMWARE.URL},{$VMWARE.VM.UUID}]','1m','31d','365d','0','3','','','','',NULL,'1229','','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'Displays whether snapshot consolidation is needed or not. One of the following:
- True;
- False.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','20332e3c1ea54266a02ad500bc9ec1ca','0','2','0'),
('47417','3','','10174','Hypervisor maintenance mode','vmware.vm.hv.maintenance[{$VMWARE.URL},{$VMWARE.VM.UUID}]','1m','31d','365d','0','3','','','','',NULL,'1230','','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'Hypervisor maintenance mode. One of the following:
- Normal mode;
- Maintenance mode.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b794d9df3e764df8b04239d5779269cd','0','2','0'),
('47418','3','','10174','Get snapshots','vmware.vm.snapshot.get[{$VMWARE.URL},{$VMWARE.VM.UUID}]','1h','0','0','0','4','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'Snapshots of the guest VM.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','550350d76aa346c49ef828418ebc53be','0','2','0'),
('47419','3','','10174','VM state','vmware.vm.state[{$VMWARE.URL},{$VMWARE.VM.UUID}]','1m','31d','365d','0','3','','','','',NULL,'1232','','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware virtual machine state. One of the following:
- Not running;
- Resetting;
- Running;
- Shutting down;
- Standby;
- Unknown.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2e68d5709d4f46b49b62d37a890e4193','0','2','0'),
('47420','3','','10174','VMware Tools status','vmware.vm.tools[{$VMWARE.URL},{$VMWARE.VM.UUID},status]','1m','31d','365d','0','3','','','','',NULL,'1231','','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'Monitoring of VMware Tools. One of the following:
- Guest tools executing scripts: VMware Tools is starting.
- Guest tools not running: VMware Tools is not running.
- Guest tools running: VMware Tools is running.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6089b7822620423aa2b2e66066d33217','0','2','0'),
('47421','3','','10174','VMware Tools version','vmware.vm.tools[{$VMWARE.URL},{$VMWARE.VM.UUID},version]','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'Monitoring of the VMware Tools version.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3870a0d8bfd1474db6e096a1a9a246b3','0','2','0'),
('47422','3','','10175','Connection state','vmware.hv.connectionstate[{$VMWARE.URL},{$VMWARE.HV.UUID}]','1m','31d','365d','0','3','','','','',NULL,'1233','','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware hypervisor connection state. One of the following:
- Connected;
- Disconnected;
- Not responding.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0e9fd4e6d6e446f08afe7b4b9431bc62','0','2','0'),
('47423','3','','10175','Number of broadcasts received','vmware.hv.network.in[{$VMWARE.URL},{$VMWARE.HV.UUID},broadcast]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware hypervisor network input statistics (broadcasts).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8f935e9718294cd4a67d02f4723a1713','0','2','0'),
('47424','3','','10175','Number of dropped received packets','vmware.hv.network.in[{$VMWARE.URL},{$VMWARE.HV.UUID},dropped]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware hypervisor network input statistics (packets dropped).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','720c58685828440bacda845bfd848d6a','0','2','0'),
('47425','3','','10175','Number of errors received','vmware.hv.network.in[{$VMWARE.URL},{$VMWARE.HV.UUID},errors]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware hypervisor network input statistics (errors).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0084eb8fd76241b8938bb1dad5a3f160','0','2','0'),
('47426','3','','10175','Number of broadcasts transmitted','vmware.hv.network.out[{$VMWARE.URL},{$VMWARE.HV.UUID},broadcast]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware hypervisor network output statistics (broadcasts).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','16496c407daa43b9863c05416b294992','0','2','0'),
('47427','3','','10175','Number of dropped transmitted packets','vmware.hv.network.out[{$VMWARE.URL},{$VMWARE.HV.UUID},dropped]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware hypervisor network output statistics (packets dropped).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f001256bbfc34cc0898c5eaef422973e','0','2','0'),
('47428','3','','10175','Number of errors transmitted','vmware.hv.network.out[{$VMWARE.URL},{$VMWARE.HV.UUID},errors]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'VMware hypervisor network output statistics (errors).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5f549d8708f24160b04a4a74db29042a','0','2','0'),
('47434','3','','10175','Network interface discovery','vmware.hv.net.if.discovery[{$VMWARE.URL},{$VMWARE.HV.UUID}]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','1',NULL,'Discovery of VMware hypervisor network interfaces.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','cabe1fbdd4e04ef396afaa5dfd1a3423','0','2','0'),
('47436','3','','10173','Average read IOPS of the datastore [{#DATASTORE}]','vmware.datastore.read[{$VMWARE.URL},{#DATASTORE},rps]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'IOPS for a read operation from the datastore (milliseconds).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','54c2631edeb04ef39701ad3bf03be1af','0','2','0'),
('47437','3','','10173','Average write IOPS of the datastore [{#DATASTORE}]','vmware.datastore.write[{$VMWARE.URL},{#DATASTORE},rps]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'IOPS for a write operation to the datastore (milliseconds).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0026edd933404faf992d08628c9ab364','0','2','0'),
('47438','3','','10175','Average read IOPS of the datastore [{#DATASTORE}]','vmware.hv.datastore.read[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},rps]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'Average IOPS for a read operation from the datastore.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1d7761e9ad0c48c1a3f6b1b48290c16b','0','2','0'),
('47439','3','','10175','Average write IOPS of the datastore [{#DATASTORE}]','vmware.hv.datastore.write[{$VMWARE.URL},{$VMWARE.HV.UUID},{#DATASTORE},rps]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'Average IOPS for a write operation to the datastore (milliseconds).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','4514c4ccf00142e48b243f69dee0b533','0','2','0'),
('47440','3','','10175','[{#IFNAME}] network interface speed','vmware.hv.network.linkspeed[{$VMWARE.URL},{$VMWARE.HV.UUID},{#IFNAME}]','1m','31d','365d','0','3','','bps','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'VMware hypervisor network interface speed.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','706acba4535e4135b824d53763868a5f','0','2','0'),
('47441','3','','10175','Serial number','vmware.hv.hw.serialnumber[{$VMWARE.URL},{#VMWARE.HV.UUID}]','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'VMware hypervisor serial number.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','fcd12a13f97848b78b610e86a24417b2','0','2','0'),
('47443','3','','10366','Get alarms','vmware.alarms.get[{$VMWARE.URL}]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','0',NULL,'Get alarm status.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b9e3684632314721aed3119df6a06976','0','2','0'),
('47444','21','','10366','Get Overall Health VC State','vmware.health.get','1m','0','0','0','4','','','','',NULL,NULL,'var Vcenter = {
	 params: {},
	 vmware_api_session_id: '''',
	 health_status: '''',
	 error_msg: '''',

	 setParams: function (params) {
		  [''url'', ''username'', ''password''].forEach(function (field) {
			  if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				  throw ''Required param is not set: '' + field + ''.'';
			  }
		  });

		  if (params[''url''].endsWith(''/'')) {
			   params[''url''] = params[''url''].slice(0,-1);
		  }
		  params[''url''] = params[''url''].replace(''/sdk'','''');

		  Vcenter.params = params;
	 },

	 isGtOrEqVersion: function (first_version, second_version) {
		  var first = first_version.split(''.'').map(Number),
			  second = second_version.split(''.'').map(Number);

		  if (first.length > second.length) {
			  const max_componens_length = first.length
		  }
		  else {
			  const max_componens_length = second.length
		  }

		  var num_components = first.length;
		  while (num_components < max_componens_length) {
			  first.push(0);
			  num_components = num_components +1;
		  }

		  var num_components = second.length;
		  while (num_components < max_componens_length) {
			  second.push(0);
			  num_components = num_components +1;
		  }

		  if (first[0] > second[0] ||
			  (first[0] === second[0] && first[1] > second[1]) ||
			  (first[0] === second[0] && first[1] === second[1] && first[2] >= second[2])) {
			  return true;
		  }

		  return false;
	  },

	 login: function () {
		  var response, request = new HttpRequest();
		  request.setHttpAuth(HTTPAUTH_BASIC, Vcenter.params.username, Vcenter.params.password);
		  request.addHeader(''Accept: application/json'');
		  request.addHeader(''Content-Type: application/json'');

		  response = request.post(Vcenter.params.url + ''/api/session'', '''');
		  if (request.getStatus() >= 200 && request.getStatus() < 300 && (!JSON.parse(response).error)) {
			   Vcenter.vmware_api_session_id = Vcenter.removeQuotes(response);
			   return true;
		  }

		  response = request.post(Vcenter.params.url + ''/rest/com/vmware/cis/session'', '''');
		  if (request.getStatus() >= 200 && request.getStatus() < 300) {
			   Vcenter.vmware_api_session_id = JSON.parse(response).value;
			   return true;
		  }

		  return false;
	 },

	 logout: function () {
		  path = ''/rest/com/vmware/cis/session'';
		  if (Vcenter.vmware_api_version && Vcenter.isGtOrEqVersion(Vcenter.vmware_api_version, ''7.0.2'')) {
			   path = ''/api/session'';
		  }

		  Vcenter.request(Vcenter.params.url + path, ''delete'');
	 },

	 get_version: function () {
		  path = ''/rest/appliance/system/version'';

		  try {
			   Vcenter.vmware_api_version = Vcenter.request(Vcenter.params.url + path, ''get'').version;
			   return true;
		  }
		  catch (error) {
			   return false;
		  }
	 },

	 removeQuotes: function (str){
		  if (str.startsWith(''"'') && str.endsWith(''"'')) {
			  return str.slice(1, -1);
		  }

		  return str;
	 },

	 getHealthStatus: function () {
		  path = ''/api/appliance/health/system'';
		  if (!Vcenter.isGtOrEqVersion(Vcenter.vmware_api_version, ''7.0.2'')) {
			   path = ''/rest/appliance/health/system'';
		  }

		  result = Vcenter.removeQuotes(Vcenter.request(Vcenter.params.url + path, ''get''));

		  const idx = [
			   ''green'',
			   ''yellow'',
			   ''orange'',
			   ''red'',
			   ''gray''
			   ].indexOf(result.toLowerCase());
		  Vcenter.health_status = idx !== -1 ? idx : 5;
	 },

	 request: function (url, method) {
		  var response, request = new HttpRequest();

		  if (typeof Vcenter.params.proxy !== ''undefined'' && Vcenter.params.proxy !== '''') {
			   request.setProxy(Vcenter.params.proxy);
		  }

		  request.setHttpAuth(HTTPAUTH_NONE);
		  request.addHeader("Cookie: vmware-api-session-id=" + Vcenter.vmware_api_session_id);

		  Zabbix.log(4, ''[ VMware vCenter ] Sending request: '' + url);

		  switch (method) {
			   case ''get'':
				   response = request.get(url);
				   break;

			   case ''post'':
				   response = request.post(url);
				   break;

			   case ''delete'':
					response = request.delete(url);
					break;

			   default:
				   throw ''Unsupported HTTP request method: '' + method;
		  }

		  Zabbix.log(4, ''[ VMware vCenter ] Received response with status code '' + request.getStatus() + '': '' + response);

		  if (request.getStatus() < 200 || request.getStatus() >= 300) {
			   throw ''Cannot connect to VMware vCenter. Check debug log for more information.'';
		  }

		  if (method !== ''delete'' && JSON.parse(response).value) {
			   return JSON.parse(response).value;
		  }
		  else {
			   return response;
		  }
	 }
};

try {
	 Vcenter.setParams(JSON.parse(value));
	 
	 if (Vcenter.login() && Vcenter.get_version() && Vcenter.isGtOrEqVersion(Vcenter.vmware_api_version, ''6.5.0'')) {
		  Vcenter.getHealthStatus();
	 }
	 else {
		  Vcenter.health_status = 6;
	 }

	 if (Vcenter.vmware_api_session_id) {
		  Vcenter.logout();
	 }
}
catch (error) {
	 Zabbix.log(3, ''[ VMware vCenter ] ERROR: '' + error);
	 Vcenter.error_msg = ''Failed to get data from API:'' + error;
}

return JSON.stringify({''health'': Vcenter.health_status, ''error'': Vcenter.error_msg});','','0','','','','','0',NULL,'Gets overall health of the system. This item works only with VMware vCenter versions above 6.5.','0','7d','0','',NULL,'10','','','','200','1','0','','','0','0','0','0','0','0','0','7445c01436234092ad5d093d872b0682','0','2','0'),
('47448','3','','10366','Average read IOPS of the datastore [{#DATASTORE}]','vmware.datastore.read[{$VMWARE.URL},{#DATASTORE},rps]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'IOPS for a read operation from the datastore (milliseconds).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c2687322c7914ec3b5519b73f1723aeb','0','2','0'),
('47449','3','','10366','Average write IOPS of the datastore [{#DATASTORE}]','vmware.datastore.write[{$VMWARE.URL},{#DATASTORE},rps]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','{$VMWARE.USERNAME}','{$VMWARE.PASSWORD}','','','2',NULL,'IOPS for a write operation to the datastore (milliseconds).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','a72c4a6247be4f968c1740de556732bd','0','2','0'),
('47451','5','','10048','Utilization of browser poller data collector processes, in %','zabbix[process,browser poller,avg,busy]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the browser poller processes have been busy for the last minute.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3ec67d79691b432c8a357fedfec77e6d','0','2','0'),
('47452','5','','10048','Utilization of internal poller data collector processes, in %','zabbix[process,internal poller,avg,busy]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the internal poller processes have been busy for the last minute.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','a1278ad64af9401a834cd09b0c2f5766','0','2','0'),
('47455','5','','10047','Utilization of browser poller data collector processes, in %','zabbix[process,browser poller,avg,busy]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the browser poller processes have been busy for the last minute.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','dd20332db0c64a63a82378c1e8b2685c','0','2','0'),
('47456','5','','10047','Utilization of configuration syncer worker internal processes, in %','zabbix[process,configuration syncer worker,avg,busy]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the configuration syncer worker processes have been busy for the last minute.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','dfb04028770e4e3e8a154304b82284ba','0','2','0'),
('47457','5','','10047','Utilization of internal poller data collector processes, in %','zabbix[process,internal poller,avg,busy]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the internal poller processes have been busy for the last minute.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','912dd7b55d244aa9bbc3af17ba168b13','0','2','0'),
('47458','5','','10047','Utilization of proxy group manager internal processes, in %','zabbix[process,proxy group manager,avg,busy]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the proxy group manager processes have been busy for the last minute.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','306334d48ce6427d93ca8fbe292b8a11','0','2','0'),
('47459','5','','10047','Zabbix proxy groups stats','zabbix[proxy group,discovery]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The master item of Zabbix proxy groups'' statistics.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','efba7193b9aa48c385e98c9babfaa689','0','2','0'),
('47485','21','','10632','Get Lambda alarms data','aws.lambda.get_alarms','0s;m/1','0','0','0','4','','','','',NULL,NULL,E'var AWS = {
	params: {},
	metadata: ''http://169.254.169.254/latest/'',

	getField: function (data, path) {
		var steps = path.split(''.'');
		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}

			data = data[step];
		}

		return data;
	},

	setParams: function (params) {
		AWS.params[''proxy''] = params.proxy;
		switch (AWS.getField(params, ''auth_type'')) {
			case ''role_base'':
				AWS.params[''auth_type''] = ''role_base'';
				var request = new HttpRequest();
				if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
					request.setProxy(AWS.params.proxy);
				}
				request.addHeader(''X-aws-ec2-metadata-token-ttl-seconds: 21600'');
				var token = request.put(AWS.metadata + ''api/token'');

				if (request.getStatus() !== 200 || token === null || token === '''') {
					throw ''Error getting IMDSv2 session token.'';
				}
				request.addHeader(''X-aws-ec2-metadata-token: '' + token);
				var IamRoleName = request.get(AWS.metadata + ''meta-data/iam/security-credentials'');

				if (request.getStatus() !== 200 || IamRoleName === null || IamRoleName === '''') {
					throw ''Error getting security credentials from instance metadata. Role not found.'';
				}

				credentials = request.get(AWS.metadata + ''meta-data/iam/security-credentials/'' + encodeURI(IamRoleName));

				if (request.getStatus() !== 200 || credentials === null || credentials === '''') {
					throw ''Error getting security credentials from instance metadata.'';
				}

				try {
					credentials = JSON.parse(credentials);
				}
				catch (error) {
					throw ''Failed to parse response received from instance metadata. Check debug log for more information.'';
				}

				[''AccessKeyId'', ''SecretAccessKey'', ''Token''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			case ''assume_role'':
				AWS.params[''auth_type''] = ''assume_role'';

				[''AccessKeyId'', ''SecretAccessKey'', ''sts_region'', ''role_arn''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});

				role_arn_regex = /role\\/(.+)$/;

				var payload = {
					''Action'': ''AssumeRole'',
					''Version'': ''2011-06-15'',
					''RoleArn'': AWS.params.role_arn,
					''RoleSessionName'': AWS.params.role_arn.match(role_arn_regex)[1] + ''Session'',
				};

				credentials = AWS.getField(AWS.request(''GET'', AWS.params.sts_region, ''sts'', AWS.prepareParams(payload), ''''), ''AssumeRoleResponse.AssumeRoleResult.Credentials'');

				[''AccessKeyId'', ''SecretAccessKey'', ''SessionToken''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			default:
				AWS.params[''auth_type''] = ''access_key'';
				[''AccessKeyId'', ''SecretAccessKey''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});
		}
		[''region'', ''name''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: "'' + field + ''".'';
			}
			AWS.params[field] = params[field];
		});
	},

	sign: function (key, message) {
		var hex = hmac(''sha256'', key, message);

		if ((hex.length % 2) === 1) {
			throw ''Invalid length of a hex string!'';
		}

		var result = new Int8Array(hex.length / 2);
		for (var i = 0, b = 0; i < hex.length; i += 2, b++) {
			result[b] = parseInt(hex.substring(i, i + 2), 16);
		}

		return result;
	},

	prepareParams: function (params) {
		var result = [];

		Object.keys(params).sort().forEach(function (key) {
			if (typeof params[key] !== ''object'') {
				result.push(key + ''='' + encodeURIComponent(params[key]));
			}
			else {
				result.push(prepareObject(key, params[key]));
			}
		});

		return result.join(''&'');
	},

	request: function (method, region, service, params, data) {
		if (typeof data === ''undefined'' || data === null) {
			data = '''';
		}

		var amzdate = (new Date()).toISOString().replace(/\\.\\d+Z/, ''Z'').replace(/[-:]/g, ''''),
			date = amzdate.replace(/T\\d+Z/, ''''),
			host = service + ''.'' + region + ''.amazonaws.com'',
			canonical_uri = ''/'',
			canonical_headers = ''content-encoding:amz-1.0\\n'' + ''host:'' + host + ''\\n'' + ''x-amz-date:'' + amzdate + ''\\n'',
			signed_headers = ''content-encoding;host;x-amz-date'',
			canonical_request = method + ''\\n'' + canonical_uri + ''\\n'' + params + ''\\n'' + canonical_headers + ''\\n'' + signed_headers + ''\\n'' + sha256(data),
			credential_scope = date + ''/'' + region + ''/'' + service + ''/'' + ''aws4_request'',
			request_string = ''AWS4-HMAC-SHA256'' + ''\\n'' + amzdate + ''\\n'' + credential_scope + ''\\n'' + sha256(canonical_request),
			key = AWS.sign(''AWS4'' + AWS.params.SecretAccessKey, date),
			key = AWS.sign(key, region),
			key = AWS.sign(key, service),
			key = AWS.sign(key, ''aws4_request''),
			request = new HttpRequest(),
			url = ''https://'' + host + canonical_uri + ''?'' + params;

		if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
			request.setProxy(AWS.params.proxy);
		}
		request.addHeader(''x-amz-date: '' + amzdate);
		request.addHeader(''Accept: application/json'');
		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Content-Encoding: amz-1.0'');
		request.addHeader(''Authorization: '' + ''AWS4-HMAC-SHA256 Credential='' + AWS.params.AccessKeyId + ''/'' + credential_scope + '', '' + ''SignedHeaders='' + signed_headers + '', '' + ''Signature='' + hmac(''sha256'', key, request_string));
		if (AWS.params.auth_type === ''role_base'' || (AWS.params.auth_type === ''assume_role'' & !params.includes(''AssumeRole''))) {
			request.addHeader(''X-Amz-Security-Token: '' + (AWS.params.auth_type === ''role_base'' ? AWS.params.Token : AWS.params.SessionToken));
		}

		Zabbix.log(4, ''[ AWS Lambda Alarms ] Sending request: '' + url);
		response = request.get(url);
		Zabbix.log(4, ''[ AWS Lambda Alarms ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			try {
				response = JSON.parse(XML.toJson(response));
			}
			catch (error) {
				throw ''Failed to parse response received from AWS CloudWatch API. Check debug log for more information.'';
			}
		}

		return response;
	},

	getAlarms: function () {
		var payload = {
			''Action'': ''DescribeAlarms'',
			''Version'': ''2010-08-01'',
			''MaxRecords'': 100
		},
			result = [];

		while (payload.NextToken !== '''') {
			var alarms = AWS.getField(AWS.request(''GET'', AWS.params.region, ''monitoring'', AWS.prepareParams(payload)), ''DescribeAlarmsResponse.DescribeAlarmsResult'');
			payload.NextToken = alarms.NextToken || '''';
			alarms_list = AWS.getField(alarms, ''MetricAlarms'');

			if (!Array.isArray(alarms_list))
				alarms_list = [alarms_list];
			alarms_list.forEach(function (alarm) {
				var dimensions = alarm.Dimensions;

				if (Array.isArray(alarm.Metrics)) {
					alarm.Metrics.forEach(function (metric) {
						if (typeof metric.MetricStat === ''object'' && metric.MetricStat !== null
							&& typeof metric.MetricStat.Metric === ''object'' && metric.MetricStat.Metric !== null
							&& Array.isArray(metric.MetricStat.Metric.Dimensions)) {
							dimensions = dimensions.concat(metric.MetricStat.Metric.Dimensions);
						}
					});
				}
				for (var i in dimensions) {
					if (dimensions[i].Name === ''FunctionName'' && dimensions[i].Value === AWS.params.name) {
						result.push(alarm);
						break;
					}
				}
			});
		}

		return result;
	}
};

try {
	AWS.setParams(JSON.parse(value));

	return JSON.stringify(AWS.getAlarms());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AWS Lambda Alarms ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'`DescribeAlarms` API method: https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarms.html','0','7d','0','',NULL,'{$AWS.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','c80b25e889004287b6131c00000a3ad7','0','2','0'),
('47486','21','','10632','Get metrics data','aws.lambda.get_metrics','0s;m/1','0','0','0','4','','','','',NULL,NULL,E'var AWS = {
	params: {},
	metadata: ''http://169.254.169.254/latest/'',
	request_period: 60,

	getField: function (data, path) {
		var steps = path.split(''.'');
		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}

			data = data[step];
		}

		return data;
	},

	setParams: function (params) {
		AWS.params[''proxy''] = params.proxy;
		switch (AWS.getField(params, ''auth_type'')) {
			case ''role_base'':
				AWS.params[''auth_type''] = ''role_base'';
				var request = new HttpRequest();
				if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
					request.setProxy(AWS.params.proxy);
				}
				request.addHeader(''X-aws-ec2-metadata-token-ttl-seconds: 21600'');
				var token = request.put(AWS.metadata + ''api/token'');

				if (request.getStatus() !== 200 || token === null || token === '''') {
					throw ''Error getting IMDSv2 session token.'';
				}
				request.addHeader(''X-aws-ec2-metadata-token: '' + token);
				var IamRoleName = request.get(AWS.metadata + ''meta-data/iam/security-credentials'');

				if (request.getStatus() !== 200 || IamRoleName === null || IamRoleName === '''') {
					throw ''Error getting security credentials from instance metadata. Role not found.'';
				}

				credentials = request.get(AWS.metadata + ''meta-data/iam/security-credentials/'' + encodeURI(IamRoleName));

				if (request.getStatus() !== 200 || credentials === null || credentials === '''') {
					throw ''Error getting security credentials from instance metadata.'';
				}

				try {
					credentials = JSON.parse(credentials);
				}
				catch (error) {
					throw ''Failed to parse response received from instance metadata. Check debug log for more information.'';
				}

				[''AccessKeyId'', ''SecretAccessKey'', ''Token''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			case ''assume_role'':
				AWS.params[''auth_type''] = ''assume_role'';

				[''AccessKeyId'', ''SecretAccessKey'', ''sts_region'', ''role_arn''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});

				role_arn_regex = /role\\/(.+)$/;

				var payload = {
					''Action'': ''AssumeRole'',
					''Version'': ''2011-06-15'',
					''RoleArn'': AWS.params.role_arn,
					''RoleSessionName'': AWS.params.role_arn.match(role_arn_regex)[1] + ''Session'',
				};

				credentials = AWS.getField(AWS.request(''POST'', AWS.params.sts_region, ''sts'', AWS.prepareParams(payload), ''''), ''AssumeRoleResponse.AssumeRoleResult.Credentials'');

				[''AccessKeyId'', ''SecretAccessKey'', ''SessionToken''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			default:
				AWS.params[''auth_type''] = ''access_key'';
				[''AccessKeyId'', ''SecretAccessKey''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});
		}
		[''region'', ''name''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: "'' + field + ''".'';
			}
			AWS.params[field] = params[field];
		});

	},

	sign: function (key, message) {
		var hex = hmac(''sha256'', key, message);

		if ((hex.length % 2) === 1) {
			throw ''Invalid length of a hex string!'';
		}

		var result = new Int8Array(hex.length / 2);
		for (var i = 0, b = 0; i < hex.length; i += 2, b++) {
			result[b] = parseInt(hex.substring(i, i + 2), 16);
		}

		return result;
	},

	prepareParams: function (params) {
		var result = [];

		Object.keys(params).sort().forEach(function (key) {
			if (typeof params[key] !== ''object'') {
				result.push(key + ''='' + encodeURIComponent(params[key]));
			}
			else {
				result.push(prepareObject(key, params[key]));
			}
		});

		return result.join(''&'');
	},

	renderMetricQuery: function (period, name) {
		var metrics_list = [
			''AsyncEventsReceived:Average'',
			''AsyncEventAge:Average'',
			''AsyncEventsDropped:Average'',
			''ConcurrentExecutions:Average'',
			''UnreservedConcurrentExecutions:Sum'',
			''Invocations:Sum'',
			''Errors:Sum'',
			''Throttles:Sum'',
			''Duration:Average''
		];

		var metric_payload = [];
		metrics_list.forEach(function (metric, index) {
			var parts = metric.split('':'', 2);
			metric_payload.push({
				''Id'': ''m'' + index,
				''MetricStat'': {
					''Metric'': {
						''MetricName'': parts[0],
						''Namespace'': ''AWS/Lambda'',
						''Dimensions'': [
							{
								''Name'': ''FunctionName'',
								''Value'': name,
							}
						]
					},
					''Period'': period,
					''Stat'': parts[1],
				}
			});
		});

		return metric_payload;
	},

	request: function (method, region, service, params, data) {
		if (typeof data === ''undefined'' || data === null) {
			data = JSON.stringify([]);
		}
		else {
			data = JSON.stringify(data)
		}
		var amzdate = (new Date()).toISOString().replace(/\\.\\d+Z/, ''Z'').replace(/[-:]/g, ''''),
			date = amzdate.replace(/T\\d+Z/, ''''),
			canonical_uri = ''/'',
			host = service + ''.'' + region + ''.amazonaws.com'',
			canonical_headers = ''content-encoding:amz-1.0\\n'' + ''host:'' + host + ''\\n'' + ''x-amz-date:'' + amzdate + ''\\n'',
			signed_headers = ''content-encoding;host;x-amz-date'',
			canonical_request = method + ''\\n'' + canonical_uri + ''\\n'' + params + ''\\n'' + canonical_headers + ''\\n'' + signed_headers + ''\\n'' + sha256(data),
			credential_scope = date + ''/'' + region + ''/'' + service + ''/'' + ''aws4_request'',
			request_string = ''AWS4-HMAC-SHA256'' + ''\\n'' + amzdate + ''\\n'' + credential_scope + ''\\n'' + sha256(canonical_request),
			key = AWS.sign(''AWS4'' + AWS.params.SecretAccessKey, date),
			key = AWS.sign(key, region),
			key = AWS.sign(key, service),
			key = AWS.sign(key, ''aws4_request''),
			request = new HttpRequest(),
			url = ''https://'' + host + canonical_uri + ''?'' + params;

		if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
			request.setProxy(AWS.params.proxy);
		}
		request.addHeader(''x-amz-date: '' + amzdate);
		request.addHeader(''x-amz-content-sha256:'' + sha256(data));
		request.addHeader(''X-Amz-Target: GraniteServiceVersion20100801.GetMetricData'')
		request.addHeader(''Accept: application/json'');
		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Content-Encoding: amz-1.0'');
		request.addHeader(''Authorization: '' + ''AWS4-HMAC-SHA256 Credential='' + AWS.params.AccessKeyId + ''/'' + credential_scope + '', '' + ''SignedHeaders='' + signed_headers + '', '' + ''Signature='' + hmac(''sha256'', key, request_string));
		if (AWS.params.auth_type === ''role_base'' || (AWS.params.auth_type === ''assume_role'' & !params.includes(''AssumeRole''))) {
			request.addHeader(''X-Amz-Security-Token: '' + (AWS.params.auth_type === ''role_base'' ? AWS.params.Token : AWS.params.SessionToken));
		}

		Zabbix.log(4, ''[ AWS Lambda Get metrics ] Sending request: '' + url);
		response = request.post(url, data);
		Zabbix.log(4, ''[ AWS Lambda Get metrics ] Received response with status code '' + request.getStatus() + '': '' + response);
		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		return JSON.parse(response);
	},

	getMetricsData: function () {
		var end_time = Math.floor((new Date().getTime()) / 1000),
			start_time = end_time - AWS.request_period * 60;
		payload = {
			''StartTime'': start_time,
			''EndTime'': end_time,
			''ScanBy'': ''TimestampDescending'',
			''MetricDataQueries'': AWS.renderMetricQuery(AWS.request_period, AWS.params.name)
		};

		return AWS.getField(AWS.request(''POST'', AWS.params.region, ''monitoring'', '''', payload), ''MetricDataResults'');
	}
};

try {
	AWS.setParams(JSON.parse(value));
	return JSON.stringify(AWS.getMetricsData());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AWS Lambda Get metrics ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get Lambda function metrics.
Full metrics list related to the Lambda function: https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics.html','0','7d','0','',NULL,'{$AWS.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','24c4972d090f4e72abc473752aac27d8','0','2','0'),
('47499','21','','10535','Lambda discovery','aws.lambda.discovery','12h','31d','365d','0','4','','','','',NULL,NULL,E'var AWS = {
	params: {},
	metadata: ''http://169.254.169.254/latest/'',

	getField: function (data, path) {
		var steps = path.split(''.'');
		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}

			data = data[step];
		}

		return data;
	},

	setParams: function (params) {
		AWS.params[''proxy''] = params.proxy;
		switch (AWS.getField(params, ''auth_type'')) {
			case ''role_base'':
				AWS.params[''auth_type''] = ''role_base'';
				var request = new HttpRequest();
				if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
					request.setProxy(AWS.params.proxy);
				}
				request.addHeader(''X-aws-ec2-metadata-token-ttl-seconds: 21600'');
				var token = request.put(AWS.metadata + ''api/token'');

				if (request.getStatus() !== 200 || token === null || token === '''') {
					throw ''Error getting IMDSv2 session token.'';
				}
				request.addHeader(''X-aws-ec2-metadata-token: '' + token);
				var IamRoleName = request.get(AWS.metadata + ''meta-data/iam/security-credentials'');

				if (request.getStatus() !== 200 || IamRoleName === null || IamRoleName === '''') {
					throw ''Error getting security credentials from instance metadata. Role not found.'';
				}

				credentials = request.get(AWS.metadata + ''meta-data/iam/security-credentials/'' + encodeURI(IamRoleName));

				if (request.getStatus() !== 200 || credentials === null || credentials === '''') {
					throw ''Error getting security credentials from instance metadata.'';
				}

				try {
					credentials = JSON.parse(credentials);
				}
				catch (error) {
					throw ''Failed to parse response received from instance metadata. Check debug log for more information.'';
				}

				[''AccessKeyId'', ''SecretAccessKey'', ''Token''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			case ''assume_role'':
				AWS.params[''auth_type''] = ''assume_role'';

				[''AccessKeyId'', ''SecretAccessKey'', ''sts_region'', ''role_arn''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});

				role_arn_regex = /role\\/(.+)$/;

				var payload = {
					''Action'': ''AssumeRole'',
					''Version'': ''2011-06-15'',
					''RoleArn'': AWS.params.role_arn,
					''RoleSessionName'': AWS.params.role_arn.match(role_arn_regex)[1] + ''Session'',
				};

				credentials = AWS.getField(AWS.request(''GET'', AWS.params.sts_region, ''sts'', AWS.prepareParams(payload), '''', ''''), ''AssumeRoleResponse.AssumeRoleResult.Credentials'');

				[''AccessKeyId'', ''SecretAccessKey'', ''SessionToken''].forEach(function (field) {
					if (typeof credentials !== ''object'' || typeof credentials[field] === ''undefined'' || credentials[field] === '''') {
						throw ''Required credentials are not set: "'' + field + ''".'';
					};
					AWS.params[field] = credentials[field];
				});
				break;
			default:
				AWS.params[''auth_type''] = ''access_key'';
				[''AccessKeyId'', ''SecretAccessKey''].forEach(function (field) {
					if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
						throw ''Required param is not set: "'' + field + ''".'';
					}
					AWS.params[field] = params[field];
				});
		}
		[''describe_region'', ''region_match'', ''region_not_match''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: "'' + field + ''".'';
			}
			AWS.params[field] = params[field];
		});
	},

	sign: function (key, message) {
		var hex = hmac(''sha256'', key, message);

		if ((hex.length % 2) === 1) {
			throw ''Invalid length of a hex string!'';
		}

		var result = new Int8Array(hex.length / 2);
		for (var i = 0, b = 0; i < hex.length; i += 2, b++) {
			result[b] = parseInt(hex.substring(i, i + 2), 16);
		}

		return result;
	},

	prepareParams: function (params) {
		var result = [];

		Object.keys(params).sort().forEach(function (key) {
			if (typeof params[key] !== ''object'') {
				result.push(key + ''='' + encodeURIComponent(params[key]));
			}
			else {
				result.push(prepareObject(key, params[key]));
			}
		});

		return result.join(''&'');
	},

	request: function (method, region, service, params, data, uri) {
		if (typeof data === ''undefined'' || data === null) {
			data = '''';
		}

		var amzdate = (new Date()).toISOString().replace(/\\.\\d+Z/, ''Z'').replace(/[-:]/g, ''''),
			date = amzdate.replace(/T\\d+Z/, ''''),
			canonical_uri = ''/'' + uri,
			host = service + ''.'' + region + ''.amazonaws.com'',
			canonical_headers = ''content-encoding:amz-1.0\\n'' + ''host:'' + host + ''\\n'' + ''x-amz-date:'' + amzdate + ''\\n'',
			signed_headers = ''content-encoding;host;x-amz-date'',
			canonical_request = method + ''\\n'' + canonical_uri + ''\\n'' + params + ''\\n'' + canonical_headers + ''\\n'' + signed_headers + ''\\n'' + sha256(data),
			credential_scope = date + ''/'' + region + ''/'' + service + ''/'' + ''aws4_request'',
			request_string = ''AWS4-HMAC-SHA256'' + ''\\n'' + amzdate + ''\\n'' + credential_scope + ''\\n'' + sha256(canonical_request),
			key = AWS.sign(''AWS4'' + AWS.params.SecretAccessKey, date),
			key = AWS.sign(key, region),
			key = AWS.sign(key, service),
			key = AWS.sign(key, ''aws4_request''),
			request = new HttpRequest(),
			url = ''https://'' + host + canonical_uri + ''?'' + params;

		if (typeof AWS.params.proxy !== ''undefined'' && AWS.params.proxy !== '''') {
			request.setProxy(AWS.params.proxy);
		}
		request.addHeader(''x-amz-date: '' + amzdate);
		request.addHeader(''x-amz-content-sha256:'' + sha256(data));
		request.addHeader(''Accept: application/json'');
		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Content-Encoding: amz-1.0'');
		request.addHeader(''Authorization: '' + ''AWS4-HMAC-SHA256 Credential='' + AWS.params.AccessKeyId + ''/'' + credential_scope + '', '' + ''SignedHeaders='' + signed_headers + '', '' + ''Signature='' + hmac(''sha256'', key, request_string));
		if (AWS.params.auth_type === ''role_base'' || (AWS.params.auth_type === ''assume_role'' & !params.includes(''AssumeRole''))) {
			request.addHeader(''X-Amz-Security-Token: '' + (AWS.params.auth_type === ''role_base'' ? AWS.params.Token : AWS.params.SessionToken));
		}

		Zabbix.log(4, ''[ AWS Lambda ] Sending request: '' + url);
		response = request.get(url);
		Zabbix.log(4, ''[ AWS Lambda ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			try {
				response = JSON.parse(XML.toJson(response));
			}
			catch (error) {
				throw ''Failed to parse response received from AWS API. Check debug log for more information.'';
			}
		}

		return response;
	},

	listRegions: function () {
		var payload = {
			''Action'': ''DescribeRegions'',
			''Version'': ''2016-11-15''
		};

		regions = AWS.getField(AWS.request(''GET'', AWS.params.describe_region, ''ec2'', AWS.prepareParams(payload), '''', ''''), ''DescribeRegionsResponse.regionInfo.item'');

		if (!Array.isArray(regions))
			regions = [regions]

		return regions
	},

	listFunctions: function () {
		var lldArray = [],
			regions = AWS.listRegions();
		payload = {
			''FunctionVersion'': ''ALL'',
			''MaxItems'': ''10000''
		};

		regions.forEach(function (region) {
			var region_name = AWS.getField(region, ''regionName'');
			if (region_name.match(AWS.params.region_match) === null ||
				region_name.match(AWS.params.region_not_match) !== null)
				return;
			lambdaFunction = AWS.getField(AWS.request(''GET'', region_name, ''lambda'', AWS.prepareParams(payload), '''', ''2015-03-31/functions''), ''Functions'');
			if (!Array.isArray(lambdaFunction))
				lambdaFunction = [lambdaFunction]

			lambdaFunction.forEach(function (lambdaFunction) {
				lldArray.push(
					{
						name: AWS.getField(lambdaFunction, ''FunctionName''),
						arn: AWS.getField(lambdaFunction, ''FunctionArn''),
						runtime: AWS.getField(lambdaFunction, ''Runtime''),
						version: AWS.getField(lambdaFunction, ''Version''),
						region: region_name
					}
				)
			});
		});

		return lldArray;
	}
};

try {
	AWS.setParams(JSON.parse(value));

	return JSON.stringify(AWS.listFunctions());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AWS Lambda ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','1',NULL,'Get Lambda functions.','0','7d','1','',NULL,'{$AWS.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','691d96408dbc4c5c9235932cdbe70648','0','2','0'),
('47504','21','','10634','Get data','azure.scaleset.data.get','1m','0','0','0','4','','','','',NULL,NULL,E'var Azure = {
	params: {},
	token: null,

	setParams: function (params) {
		[''app_id'', ''password'', ''tenant_id'', ''subscription_id'', ''resource_id''].forEach(function (field) {
			if (typeof params !== ''object'' || typeof params[field] === ''undefined'' || params[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Azure.params = params;
	},

	login: function () {
		var response, login = new HttpRequest();

		if (typeof Azure.params.proxy !== ''undefined'' && Azure.params.proxy !== '''') {
			login.setProxy(Azure.params.proxy);
		}

		login.addHeader(''Content-Type: application/x-www-form-urlencoded'');
		response = login.post(
			''https://login.microsoftonline.com/'' + encodeURIComponent(Azure.params.tenant_id) + ''/oauth2/token'',
			''grant_type=client_credentials&resource='' + encodeURIComponent(''https://management.azure.com/'') + ''&client_id='' + encodeURIComponent(Azure.params.app_id) + ''&client_secret='' + encodeURIComponent(Azure.params.password)
		);

		if (login.getStatus() !== 200) {
			throw ''Login failed with status code '' + login.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse login session response.'';
		}

		if (!response.hasOwnProperty(''access_token'')) {
			throw ''Authentication response does not contain access token.'';
		}

		Azure.token = response[''access_token''];
	},

	request: function (url) {
		var response, request = new HttpRequest();

		if (typeof Azure.params.proxy !== ''undefined'' && Azure.params.proxy !== '''') {
			request.setProxy(Azure.params.proxy);
		}

		if (!Azure.token) {
			throw ''Request does not contain access token.'';
		}

		request.addHeader(''Content-Type: application/json'');
		request.addHeader(''Authorization: Bearer '' + Azure.token);
		Zabbix.log(4, ''[ AzureVMSS ] request url: '' + url);

		response = request.get(url);

		if (request.getStatus() !== 200) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			return JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from API.'';
		}
	},

	getField: function (data, path) {
		var steps = path.split(''.'');

		for (var i = 0; i < steps.length; i++) {
			var step = steps[i];
			if (typeof data !== ''object'' || typeof data[step] === ''undefined'') {
				throw ''Required field was not found: '' + path;
			}
			data = data[step];
		}

		return data;
	},

	getMetricsData: function () {
		var data = {},
			metric_endpoints = {
				''main_metrics'': ''/providers/Microsoft.Insights/metrics?metricnames='' + encodeURIComponent(''Available Memory Bytes,CPU Credits Consumed,CPU Credits Remaining,Percentage CPU,Inbound Flows,Inbound Flows Maximum Creation Rate,Network In,Network In Total,Network Out,Network Out Total,Outbound Flows,Outbound Flows Maximum Creation Rate,VmAvailabilityMetric'') + ''&api-version=2021-05-01&timespan=PT1M'',
				''disks_metrics'': ''/providers/Microsoft.Insights/metrics?metricnames='' + encodeURIComponent(''Data Disk Bandwidth Consumed Percentage,Data Disk IOPS Consumed Percentage,Data Disk Max Burst Bandwidth,Data Disk Max Burst IOPS,Data Disk Queue Depth,Data Disk Read Bytes/sec,Data Disk Read Operations/Sec,Data Disk Target Bandwidth,Data Disk Target IOPS,Data Disk Used Burst BPS Credits Percentage,Data Disk Used Burst IO Credits Percentage,Data Disk Write Bytes/sec,Data Disk Write Operations/Sec,Disk Read Bytes,Disk Read Operations/Sec,Disk Write Bytes,Disk Write Operations/Sec'') + ''&api-version=2021-05-01&timespan=PT1M'',
				''os_disk_metrics'': ''/providers/Microsoft.Insights/metrics?metricnames='' + encodeURIComponent(''OS Disk Bandwidth Consumed Percentage,OS Disk IOPS Consumed Percentage,OS Disk Max Burst Bandwidth,OS Disk Max Burst IOPS,OS Disk Queue Depth,OS Disk Read Bytes/sec,OS Disk Read Operations/Sec,OS Disk Target Bandwidth,OS Disk Target IOPS,OS Disk Used Burst BPS Credits Percentage,OS Disk Used Burst IO Credits Percentage,OS Disk Write Bytes/sec,OS Disk Write Operations/Sec'') + ''&api-version=2021-05-01&timespan=PT1M'',
				''premium_and_vm_metrics'': ''/providers/Microsoft.Insights/metrics?metricnames='' + encodeURIComponent(''Premium Data Disk Cache Read Hit,Premium Data Disk Cache Read Miss,Premium OS Disk Cache Read Hit,Premium OS Disk Cache Read Miss,VM Cached Bandwidth Consumed Percentage,VM Cached IOPS Consumed Percentage,VM Local Used Burst BPS Credits Percentage,VM Local Used Burst IO Credits Percentage,VM Remote Used Burst BPS Credits Percentage,VM Remote Used Burst IO Credits Percentage,VM Uncached Bandwidth Consumed Percentage,VM Uncached IOPS Consumed Percentage'') + ''&api-version=2021-05-01&timespan=PT1M''
			};

		data.metrics = {};

		Object.keys(metric_endpoints).forEach(function (field) {
			metrics = Azure.getField(Azure.request(''https://management.azure.com'' + Azure.params.resource_id + metric_endpoints[field]), ''value'');
			for (k in metrics) {
				key = Azure.getField(metrics[k], ''name.value'').replace(/(\\s|\\/)+/g, '''');
				if (metrics[k].timeseries.length === 0) {
					metrics[k].timeseries.push({ ''data'': [''nodata''] })
				}
				data.metrics[key] = Azure.getField(metrics[k], ''timeseries.0.data.0'');
			}
		});

		data.capacity = Azure.getField(Azure.request(''https://management.azure.com'' + Azure.params.resource_id + ''?api-version=2024-03-01''), ''sku.capacity'');
		data.health = Azure.getField(Azure.request(''https://management.azure.com'' + Azure.params.resource_id + ''/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2020-05-01''), ''value.0.properties'');

		return data
	}
};

try {
	Azure.setParams(JSON.parse(value));
	Azure.login();
	return JSON.stringify(Azure.getMetricsData());
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(3, ''[ AzureVMSS ] ERROR: '' + error);
	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Gathers data of the virtual machine scale set.','0','7d','0','',NULL,'{$AZURE.DATA.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','f783d047862144f2baed76bb281cec5b','0','2','0'),
('47570','20','walk[1.3.6.1.4.1.34774.4.1.23.5.5.1.1,1.3.6.1.4.1.34774.4.1.23.5.5.1.2,1.3.6.1.4.1.34774.4.1.23.5.5.1.3,1.3.6.1.4.1.34774.4.1.23.5.5.1.4]','10636','BBU SNMP walk','huawei.oceanstor.v6.bbu.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device backup battery units.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b1b27fc308a643c080ca461aa43ac155','0','2','0'),
('47571','20','get[1.3.6.1.4.1.34774.4.1.1.5.0]','10636','Capacity total','huawei.oceanstor.v6.capacity.total','1m','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'Total capacity of a device.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5966b59ae96c4044a2c53d84728aa385','0','2','0'),
('47572','20','get[1.3.6.1.4.1.34774.4.1.1.4.0]','10636','Capacity used','huawei.oceanstor.v6.capacity.used','1m','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'Used capacity of a device.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0bb56fda578e44b28dfaca63e37c6026','0','2','0'),
('47573','20','walk[1.3.6.1.4.1.34774.4.1.23.5.2.1.1,1.3.6.1.4.1.34774.4.1.23.5.2.1.8,1.3.6.1.4.1.34774.4.1.23.5.2.1.9,1.3.6.1.4.1.34774.4.1.23.5.2.1.2,1.3.6.1.4.1.34774.4.1.23.5.2.1.3,1.3.6.1.4.1.34774.4.1.23.5.2.1.6]','10636','Controller SNMP walk','huawei.oceanstor.v6.controller.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device controllers.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','251875b1bf7f4aea800eebdf826c92cc','0','2','0'),
('47574','20','walk[1.3.6.1.4.1.34774.4.1.23.5.1.1.1,1.3.6.1.4.1.34774.4.1.23.5.1.1.12,1.3.6.1.4.1.34774.4.1.23.5.1.1.4,1.3.6.1.4.1.34774.4.1.23.5.1.1.2,1.3.6.1.4.1.34774.4.1.23.5.1.1.3,1.3.6.1.4.1.34774.4.1.23.5.1.1.11]','10636','Disk SNMP walk','huawei.oceanstor.v6.disk.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device disks.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','502c0446b3ac4c7c91fb81076e8fded0','0','2','0'),
('47575','20','walk[1.3.6.1.4.1.34774.4.1.23.5.6.1.2,1.3.6.1.4.1.34774.4.1.23.5.6.1.4,1.3.6.1.4.1.34774.4.1.23.5.6.1.5,1.3.6.1.4.1.34774.4.1.23.5.6.1.8]','10636','Enclosure SNMP walk','huawei.oceanstor.v6.enclosure.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device enclosures.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','dc3f094725ff4794844687d4037ea2c2','0','2','0'),
('47576','20','walk[1.3.6.1.4.1.34774.4.1.23.5.4.1.1,1.3.6.1.4.1.34774.4.1.23.5.4.1.2,1.3.6.1.4.1.34774.4.1.23.5.4.1.3,1.3.6.1.4.1.34774.4.1.23.5.4.1.4]','10636','Fan SNMP walk','huawei.oceanstor.v6.fan.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device fans.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','fe922a88992f49f9a6bf4ed080c880d7','0','2','0'),
('47577','20','walk[1.3.6.1.4.1.34774.4.1.19.9.4.1.2,1.3.6.1.4.1.34774.4.1.19.9.4.1.11,1.3.6.1.4.1.34774.4.1.21.4.1.13,1.3.6.1.4.1.34774.4.1.21.4.1.15,1.3.6.1.4.1.34774.4.1.21.4.1.16,1.3.6.1.4.1.34774.4.1.21.4.1.3,1.3.6.1.4.1.34774.4.1.21.4.1.4,1.3.6.1.4.1.34774.4.1.21.4.1.5,1.3.6.1.4.1.34774.4.1.21.4.1.6,1.3.6.1.4.1.34774.4.1.21.4.1.7,1.3.6.1.4.1.34774.4.1.21.4.1.8,1.3.6.1.4.1.34774.4.1.19.9.4.1.5]','10636','LUN SNMP walk','huawei.oceanstor.v6.lun.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device logical unit numbers.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','269a95fbb3ce4f1eb9dc684777875d87','0','2','0'),
('47578','20','walk[1.3.6.1.4.1.34774.4.1.21.3.1.1,1.3.6.1.4.1.34774.4.1.21.3.1.2,1.3.6.1.4.1.34774.4.1.21.3.1.5,1.3.6.1.4.1.34774.4.1.21.3.1.6,1.3.6.1.4.1.34774.4.1.21.3.1.7,1.3.6.1.4.1.34774.4.1.21.3.1.8,1.3.6.1.4.1.34774.4.1.21.3.1.9,1.3.6.1.4.1.34774.4.1.21.3.1.10]','10636','Node SNMP walk','huawei.oceanstor.v6.node.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device nodes.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2170d4e5ca684e579dd511e59e5e9828','0','2','0'),
('47579','20','walk[1.3.6.1.4.1.34774.4.1.23.4.2.1.2,1.3.6.1.4.1.34774.4.1.23.4.2.1.14,1.3.6.1.4.1.34774.4.1.23.4.2.1.5,1.3.6.1.4.1.34774.4.1.23.4.2.1.6,1.3.6.1.4.1.34774.4.1.23.4.2.1.7,1.3.6.1.4.1.34774.4.1.23.4.2.1.9]','10636','Storage pool SNMP walk','huawei.oceanstor.v6.pool.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of device storage pools.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5daf9372f493406c818b27f5149dcff3','0','2','0'),
('47580','20','get[1.3.6.1.4.1.34774.4.1.1.3.0]','10636','Status','huawei.oceanstor.v6.status','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'System status.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','4ad5a10227d74eaaaaf3678a6884b67d','0','2','0'),
('47581','20','get[1.3.6.1.4.1.34774.4.1.1.6.0]','10636','Version','huawei.oceanstor.v6.version','1m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The device version.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3ed972a612394bf285f816debcd8e89a','0','2','0'),
('47582','3','','10636','ICMP ping','icmpping','1m','31d','365d','0','3','','','','',NULL,'1243','','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','590714e7fb3f4d468c19385146f76433','0','2','0'),
('47583','3','','10636','ICMP loss','icmppingloss','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3bcc87c0fee74e64be9b66cc9080008e','0','2','0'),
('47584','3','','10636','ICMP response time','icmppingsec','1m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','137b8177ba0b4949a895be9dde23400c','0','2','0'),
('47585','17','','10636','SNMP traps (fallback)','snmptrap.fallback','0','31d','0','0','2','','','','hh:mm:sszyyyy/MM/dd',NULL,NULL,'','','0','','','','','0',NULL,'The item is used to collect all SNMP traps unmatched by other snmptrap items','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2959893b639d457abb18a2b7e9abda23','0','2','0'),
('47586','20','1.3.6.1.2.1.1.4.0','10636','System contact details','system.contact[sysContact.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
The textual identification of the contact person for this managed node, together with information on how to contact this person.  If no contact information is known, the value is the zero-length string.','23','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f80391019ebb4b18beb7a987c3a20830','0','2','0'),
('47587','20','1.3.6.1.2.1.1.1.0','10636','System description','system.descr[sysDescr.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
A textual description of the entity. This value should
include the full name and version identification of the system''s hardware type, software operating-system, and
networking software.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','e7ddfe4774ad4ed7959d2e2200b50e8f','0','2','0'),
('47588','20','1.3.6.1.2.1.25.1.1.0','10636','Uptime (hardware)','system.hw.uptime[hrSystemUptime.0]','30s','31d','0','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: HOST-RESOURCES-MIB
The amount of time since this host was last initialized. Note that this is different from sysUpTime in the SNMPv2-MIB [RFC1907] because sysUpTime is the uptime of the network management portion of the system.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','35b225e3dff343b0a0b82b8239d6bea3','0','2','0'),
('47589','20','1.3.6.1.2.1.1.6.0','10636','System location','system.location[sysLocation.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
Physical location of the node (e.g., `equipment room`, `3rd floor`). If not provided, the value is a zero-length string.','24','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f0fa4b45ea2b41d0b0f40630680fb532','0','2','0'),
('47590','20','1.3.6.1.2.1.1.5.0','10636','System name','system.name','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
An administratively-assigned name for this managed node.By convention, this is the node''s fully-qualified domain name.  If the name is unknown, the value is the zero-length string.','3','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','494d880ba7be4d9fb641b148597f805d','0','2','0'),
('47591','20','1.3.6.1.2.1.1.3.0','10636','Uptime (network)','system.net.uptime[sysUpTime.0]','30s','31d','0','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
Time (in hundredths of a second) since the network management portion of the system was last re-initialized.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','4371c836612f4456a6ce191af79a23a2','0','2','0'),
('47592','20','1.3.6.1.2.1.1.2.0','10636','System object ID','system.objectid[sysObjectID.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
The vendor''s authoritative identification of the network management subsystem contained in the entity.  This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining`what kind of box'' is being managed.  For example, if vendor`Flintstones, Inc.'' was assigned the subtree1.3.6.1.4.1.4242, it could assign the identifier 1.3.6.1.4.1.4242.1.1 to its `Fred Router''.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','634f6b6a4e724c158ba4726f063a1684','0','2','0'),
('47593','5','','10636','SNMP agent availability','zabbix[host,snmp,available]','1m','31d','365d','0','3','','','','',NULL,'1244','','','0','','','','','0',NULL,'Availability of SNMP checks on the host. The value of this item corresponds to availability icons in the host list.
Possible values:
0 - not available
1 - available
2 - unknown','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6816cad193a64edcbcf3f09d736eab9b','0','2','0'),
('47639','7','','10637','Service response time','net.tcp.service.perf[http,"{$APACHE.STATUS.HOST}","{$APACHE.STATUS.PORT}"]','1m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3ac09d338f0847288eda20732bf5aa10','0','2','0'),
('47640','7','','10637','Service ping','net.tcp.service[http,"{$APACHE.STATUS.HOST}","{$APACHE.STATUS.PORT}"]','1m','31d','365d','0','3','','','','',NULL,'1245','','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','e4252071d0864fd5bf7c60c4d6e4915d','0','2','0'),
('47641','7','','10637','Get processes summary','proc.get[{$APACHE.PROCESS.NAME.PARAMETER},,,summary]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The aggregated data of summary metrics for all processes.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','37f15f5a28364399aa66aad31d0acc08','0','2','0'),
('47642','7','','10637','Get status','web.page.get["{$APACHE.STATUS.SCHEME}://{$APACHE.STATUS.HOST}:{$APACHE.STATUS.PORT}/{$APACHE.STATUS.PATH}"]','1m','1h','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Getting data from a machine-readable version of the Apache status page.
For more information see Apache Module [mod_status](https://httpd.apache.org/docs/current/mod/mod_status.html).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','d103e519e5044dfd982d535a0981bc84','0','2','0'),
('47664','7','','10637','CPU utilization','proc.cpu.util[{#APACHE.NAME}]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'The percentage of the CPU utilization by a process {#APACHE.NAME}.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b1e48077179f4e439e2d3c3b918c9a03','0','2','0'),
('47676','7','','10638','Get','web.certificate.get[{$CERT.WEBSITE.HOSTNAME},{$CERT.WEBSITE.PORT},{$CERT.WEBSITE.IP}]','15m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Returns the JSON with attributes of a certificate of the requested site.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','cfc056393df34d3ab8f66f1d1bfc7c0b','0','2','0'),
('47689','7','','10639','Service response time','net.tcp.service.perf[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"]','1m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','09762f260f544f57afa5157c6bc632a3','0','2','0'),
('47690','7','','10639','Service status','net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"]','1m','31d','365d','0','3','','','','',NULL,'1246','','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b68e4123d7c9483c9f77bc9c27fd0e7c','0','2','0'),
('47691','7','','10639','Get processes summary','proc.get[{$NGINX.PROCESS.NAME.PARAMETER},,,summary]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The aggregated data of summary metrics for all processes.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','94bb17445cf14e909fede8b7060c0211','0','2','0'),
('47692','7','','10639','Get stub status page','web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]','1m','1h','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The following status information is provided:
`Active connections` - the current number of active client connections including waiting connections.
`Accepted` - the total number of accepted client connections.
`Handled` - the total number of handled connections. Generally, the parameter value is the same as for the accepted connections, unless some resource limits have been reached (for example, the `worker_connections` limit).
`Requests` - the total number of client requests.
`Reading` - the current number of connections where Nginx is reading the request header.
`Writing` - the current number of connections where Nginx is writing a response back to the client.
`Waiting` - the current number of idle client connections waiting for a request.

See also [Module ngx_http_stub_status_module](https://nginx.org/en/docs/http/ngx_http_stub_status_module.html).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','04ed4f82a84b4a81aa8d1682e7a70b5f','0','2','0'),
('47704','7','','10639','CPU utilization','proc.cpu.util[{#NGINX.NAME}]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'The percentage of the CPU utilization by a process {#NGINX.NAME}.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6045ce9aba4747f2a6a1475fc3f8b428','0','2','0'),
('47710','21','','10640','Get alert','nutanix.cluster.alert.get','1m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method'', ''target_uuid''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method + ''/'' + Nutanix.params.target_uuid + ''/alerts'',
		result = Nutanix.request(url);

	return JSON.stringify(Nutanix.deduplicateAlerts(result));
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get data about alerts.','0','7d','0','',NULL,'{$NUTANIX.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','3761d4da912749c7a84f11a5cfbcf761','0','2','0'),
('47711','21','','10640','Get metric','nutanix.cluster.metric.get','1m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method'', ''target_uuid''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method + ''/'' + Nutanix.params.target_uuid;
	var result = Nutanix.request(url);

	result.stats = Nutanix.cleanUnsupported(result.stats);

	return JSON.stringify(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get data about basic metrics.','0','7d','0','',NULL,'{$NUTANIX.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','95a5fd893da84a7098cba12ffa1743ca','0','2','0'),
('47712','21','','10641','Get alert','nutanix.host.alert.get','1m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method'', ''target_uuid''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method + ''/'' + Nutanix.params.target_uuid + ''/alerts'',
		result = Nutanix.request(url);

	return JSON.stringify(Nutanix.deduplicateAlerts(result));
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get data about alerts.','0','7d','0','',NULL,'{$NUTANIX.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','48c5f1f6ea454fd69756268cd613129e','0','2','0'),
('47713','21','','10641','Get disk','nutanix.host.disk.get','1m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method'', ''target_uuid''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method + ''?search_attribute_list=node_uuid&search_string='' + Nutanix.params.target_uuid,
		result = Nutanix.request(url);

	var output_data = {};
	for (var entity in result.entities) {
		output_data[result.entities[entity].id] = result.entities[entity]
	}

	return JSON.stringify(output_data);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get data about installed disks.','0','7d','0','',NULL,'{$NUTANIX.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','a3a11c42c9da4eecb0aefa20792d4514','0','2','0'),
('47714','21','','10641','Get metric','nutanix.host.metric.get','1m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method'', ''target_uuid''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method + ''/'' + Nutanix.params.target_uuid;
	var result = Nutanix.request(url);

	result.stats = Nutanix.cleanUnsupported(result.stats);

	return JSON.stringify(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get data about basic metrics.','0','7d','0','',NULL,'{$NUTANIX.TIMEOUT}','','','','200','1','0','','','0','0','0','0','0','0','0','30b4da75a8f54b5385310b43fa6a2a7a','0','2','0'),
('47715','21','','10642','Get cluster','nutanix.cluster.get','10m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method,
		result = Nutanix.request(url);

	return JSON.stringify(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get the available clusters.','0','7d','0','',NULL,'10s','','','','200','1','0','','','0','0','0','0','0','0','0','0c073836f90a4072be7acfc5d1a96b9e','0','2','0'),
('47716','21','','10642','Get host','nutanix.host.get','10m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method,
		result = Nutanix.request(url);

	return JSON.stringify(result);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get the available hosts.','0','7d','0','',NULL,'10s','','','','200','1','0','','','0','0','0','0','0','0','0','06ce8fe78e9642cfb2064ad2aa25b50e','0','2','0'),
('47717','21','','10642','Get storage container','nutanix.storage.container.get','10m','0','0','0','4','','','','',NULL,NULL,'var Nutanix = {
	params: {},

	setParams: function (requiredParams, allParams) {
		requiredParams.forEach(function (field) {
			if (typeof allParams !== ''object'' || typeof allParams[field] === ''undefined'' || allParams[field] === '''') {
				throw ''Required param is not set: '' + field + ''.'';
			}
		});

		Nutanix.params = params;
	},

	request: function (url) {

		var request = new HttpRequest();

		if (typeof Nutanix.params.proxy !== ''undefined'' && Nutanix.params.proxy !== '''') {
			request.setProxy(Nutanix.params.proxy);
		}

		request.setHttpAuth(HTTPAUTH_BASIC, Nutanix.params.username, Nutanix.params.password);

		Zabbix.log(4, ''[ Nutanix ] Sending request: '' + url);

		const response = request.get(url);

		Zabbix.log(4, ''[ Nutanix ] Received response with status code '' + request.getStatus() + '': '' + response);

		if (request.getStatus() < 200 || request.getStatus() >= 300) {
			throw ''Request failed with status code '' + request.getStatus() + '': '' + response;
		}

		try {
			response = JSON.parse(response);
		}
		catch (error) {
			throw ''Failed to parse response received from Nutanix PRISM API. Check debug log for more information.'';
		}

		return response;
	},

	deduplicateAlerts: function (full_data) {
		const severity_mapping = [
			''kinfo'',
			''kwarning'',
			''kcritical''
		]

		var output_data = {};
		for (var entity in full_data.entities) {
	
			if (Nutanix.params.api_method === ''clusters'') {
				if (result.entities[entity].node_uuid.split(''-'').length == 5) continue;
			}

			var severity = severity_mapping.indexOf(full_data.entities[entity].severity.toLowerCase()),
				message = full_data.entities[entity].message,
				title = full_data.entities[entity].alert_title;
	
			full_data.entities[entity].context_types.forEach(function(context, index) {
				message = message.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
				title = title.replace(''{'' + context + ''}'', full_data.entities[entity].context_values[index]);
			});
	
			key = md5(title + message);
			if (key in output_data) {
				if (full_data.entities[entity].created_time_stamp_in_usecs > output_data[key].created) {
					output_data[key].created = full_data.entities[entity].created_time_stamp_in_usecs;
					output_data[key].severity = severity !== -1 ? severity : 3;
					output_data[key].state = full_data.entities[entity].resolved ? 0 : 1;
					output_data[key].message = full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message;
					output_data[key].last_id = full_data.entities[entity].id;
				}
				output_data[key].count += 1;
			} else {
				output_data[key] = {
					"name": title + '' - '' + message,
					"title": title != '''' ? title : message,
					"created": full_data.entities[entity].created_time_stamp_in_usecs,
					"severity": severity !== -1 ? severity : 3,
					"state": full_data.entities[entity].resolved ? 0 : 1,
					"message": full_data.entities[entity].detailed_message != '''' ? full_data.entities[entity].detailed_message : message,
					"last_id": full_data.entities[entity].id,
					"count": 1
				}
			}
		}

		return output_data;
	},

	cleanUnsupported: function (full_stat) {
		var output_stat = {};
		for (var element in full_stat) {
			if (full_stat[element] !== ''-1'') {
				output_stat[element] = full_stat[element];
			}
		};
		
		return output_stat;
	}
};

try {
	const params = JSON.parse(value);
	Nutanix.setParams([''endpoint_host'', ''endpoint_port'', ''username'', ''password'', ''auth_type'', ''api_method''], params);

	const url = ''https://'' + Nutanix.params.endpoint_host + '':'' + Nutanix.params.endpoint_port + ''/PrismGateway/services/rest/v2.0/'' + Nutanix.params.api_method,
		result = Nutanix.request(url);

	var output_data = {};
	for (var entity in result.entities) {
		output_data[result.entities[entity].storage_container_uuid] = result.entities[entity]
	}

	return JSON.stringify(output_data);
}
catch (error) {
	error += (String(error).endsWith(''.'')) ? '''' : ''.'';
	Zabbix.log(4, ''[ Nutanix ] ERROR: '' + error);

	return JSON.stringify({ ''error'': error });
}','','0','','','','','0',NULL,'Get the available storage containers.','0','7d','0','',NULL,'10s','','','','200','1','0','','','0','0','0','0','0','0','0','10cd43e73f1146cf8eb4bffd33978344','0','2','0'),
('47959','15','','10645','Queue usage','php-fpm.listen_queue_usage','1m','31d','365d','0','0','','%','','',NULL,NULL,'last(//php-fpm.listen_queue)/(last(//php-fpm.listen_queue_len)+(last(//php-fpm.listen_queue_len)=0))*100','','0','','','','','0',NULL,'The utilization of the queue.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','bea3630fd88448228cd3e6b5808bac5f','0','2','0'),
('47960','7','','10645','Get processes summary','proc.get[{$PHP_FPM.PROCESS.NAME.PARAMETER},,,summary]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The aggregated data of summary metrics for all processes.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2e72b191ec3b481f800e100e69a85691','0','2','0'),
('47961','7','','10645','php-fpm_ping','web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.PING.PAGE}","{$PHP_FPM.PORT}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ca300d24e4434dd8bc5e86ea859eb9f6','0','2','0'),
('47962','7','','10645','Get status page','web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','de356fd730494b27a701cb900cd5c9b1','0','2','0'),
('47980','7','','10645','CPU utilization','proc.cpu.util[{#PHP_FPM.NAME}]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'The percentage of the CPU utilization by a process `{#PHP_FPM.NAME}`.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','65c8bd5634d84552b401c15237b74de8','0','2','0'),
('47988','15','','10646','Buffer pool efficiency','mysql.buffer_pool_efficiency','1m','31d','365d','0','0','','%','','',NULL,NULL,'last(//mysql.innodb_buffer_pool_reads) / 
( last(//mysql.innodb_buffer_pool_read_requests) + 
( last(//mysql.innodb_buffer_pool_read_requests) = 0 ) ) * 100 * 
( last(//mysql.innodb_buffer_pool_read_requests) > 0 )','','0','','','','','0',NULL,'The item shows how effectively the buffer pool is serving reads.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','82d31eef03914d4abde2448691d89a7a','0','2','0'),
('47989','15','','10646','Buffer pool utilization','mysql.buffer_pool_utilization','1m','31d','365d','0','0','','%','','',NULL,NULL,'( last(//mysql.innodb_buffer_pool_pages_total) - 
last(//mysql.innodb_buffer_pool_pages_free) ) / 
( last(//mysql.innodb_buffer_pool_pages_total) + 
( last(//mysql.innodb_buffer_pool_pages_total) = 0 ) ) * 100 * 
( last(//mysql.innodb_buffer_pool_pages_total) > 0 )','','0','','','','','0',NULL,'Ratio of used to total pages in the buffer pool.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','9fa2d2ebecaa4ff4bf2ec01a68cdf2a2','0','2','0'),
('47990','7','','10646','Get status variables','mysql.get_status_variables["{$MYSQL.DSN}","{$MYSQL.USER}","{$MYSQL.PASSWORD}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Gets server global status information.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b942938fd6564e3cbcc37c11f59b2bed','0','2','0'),
('47991','15','','10646','Calculated value of innodb_log_file_size','mysql.innodb_log_file_size','1m','31d','365d','0','0','','','','',NULL,NULL,'(last(//mysql.innodb_os_log_written) - last(//mysql.innodb_os_log_written,#1:now-1h)) / {$MYSQL.INNODB_LOG_FILES}','','0','','','','','0',NULL,'`Innodb_log_file_size` is calculated as: (`innodb_os_log_written`-`innodb_os_log_written`(time shift -1h))/`{$MYSQL.INNODB_LOG_FILES}`. `Innodb_log_file_size` is the size in bytes of the each InnoDB redo log file in the log group. The combined size can be no more than 512 GB. Larger values mean less disk I/O due to less flushing checkpoint activity, but also slower recovery from a crash.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c9e2183fde7d4fff96bd837c362c43e6','0','2','0'),
('47992','7','','10646','Status','mysql.ping["{$MYSQL.DSN}","{$MYSQL.USER}","{$MYSQL.PASSWORD}"]','1m','31d','365d','0','3','','','','',NULL,'1260','','','0','','','','','0',NULL,'MySQL server status.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','338507e500574423915f798234c7f239','0','2','0'),
('47993','7','','10646','Version','mysql.version["{$MYSQL.DSN}","{$MYSQL.USER}","{$MYSQL.PASSWORD}"]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MySQL server version.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','674df57b5295448c89a7265902cc94ec','0','2','0'),
('48036','7','','10646','Database discovery','mysql.db.discovery["{$MYSQL.DSN}","{$MYSQL.USER}","{$MYSQL.PASSWORD}"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Scanning databases in DBMS.','0','7d','1','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1d8d7069e0064521b52b388e0c6bc0a7','0','2','0'),
('48038','7','','10646','Replication discovery','mysql.replication.discovery["{$MYSQL.DSN}","{$MYSQL.USER}","{$MYSQL.PASSWORD}"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'If "show slave status" returns Master_Host, "Replication: *" items are created.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','aaf6d2423fb34bef850be2d1be3fc36a','0','2','0'),
('48039','7','','10646','Size of database {#DATABASE}','mysql.db.size["{$MYSQL.DSN}","{$MYSQL.USER}","{$MYSQL.PASSWORD}","{#DATABASE}"]','5m','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'Database size.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f69eb8da26de4abb92cec75161e703f3','0','2','0'),
('48040','7','','10646','Replication Slave status {#MASTER_HOST}','mysql.replication.get_slave_status["{$MYSQL.DSN}","{$MYSQL.USER}","{$MYSQL.PASSWORD}","{#MASTER_HOST}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The item gets status information on the essential parameters of the slave threads.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6284876731214fb8bf51f09dd40cf5fe','0','2','0'),
('48050','15','','10647','Buffer pool efficiency','mysql.buffer_pool_efficiency','1m','31d','365d','0','0','','%','','',NULL,NULL,'last(//mysql.innodb_buffer_pool_reads) / 
( last(//mysql.innodb_buffer_pool_read_requests) + 
( last(//mysql.innodb_buffer_pool_read_requests) = 0 ) ) * 100 * 
( last(//mysql.innodb_buffer_pool_read_requests) > 0 )','','0','','','','','0',NULL,'The item shows how effectively the buffer pool is serving reads.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6179105b341e41e892398649eec227bb','0','2','0'),
('48051','15','','10647','Buffer pool utilization','mysql.buffer_pool_utilization','1m','31d','365d','0','0','','%','','',NULL,NULL,'( last(//mysql.innodb_buffer_pool_pages_total) - 
last(//mysql.innodb_buffer_pool_pages_free) ) / 
( last(//mysql.innodb_buffer_pool_pages_total) + 
( last(//mysql.innodb_buffer_pool_pages_total) = 0 ) ) * 100 * 
( last(//mysql.innodb_buffer_pool_pages_total) > 0 )','','0','','','','','0',NULL,'Ratio of used to total pages in the buffer pool.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','427ee34312ca4fb595b71db9a350b1fc','0','2','0'),
('48052','7','','10647','Get status variables','mysql.get_status_variables["{$MYSQL.HOST}","{$MYSQL.PORT}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Gets server global status information.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','202cc1174b7f4b63a8c90bdc54ec2bb2','0','2','0'),
('48053','15','','10647','Calculated value of innodb_log_file_size','mysql.innodb_log_file_size','1m','31d','365d','0','0','','','','',NULL,NULL,'(last(//mysql.innodb_os_log_written) - last(//mysql.innodb_os_log_written,#1:now-1h)) / {$MYSQL.INNODB_LOG_FILES}','','0','','','','','0',NULL,'`Innodb_log_file_size` is calculated as: (`innodb_os_log_written`-`innodb_os_log_written`(time shift -1h))/`{$MYSQL.INNODB_LOG_FILES}`. `Innodb_log_file_size` is the size in bytes of the each InnoDB redo log file in the log group. The combined size can be no more than 512 GB. Larger values mean less disk I/O due to less flushing checkpoint activity, but also slower recovery from a crash.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8ce62d571e854df187d201bd4a7ccce1','0','2','0'),
('48054','7','','10647','Status','mysql.ping["{$MYSQL.HOST}","{$MYSQL.PORT}"]','1m','31d','365d','0','3','','','','',NULL,'1261','','','0','','','','','0',NULL,'MySQL server status.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ca43acd282a8435884b33af454b207fb','0','2','0'),
('48055','7','','10647','Version','mysql.version["{$MYSQL.HOST}","{$MYSQL.PORT}"]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MySQL server version.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2071500ce5ac486fa322fbab8acac046','0','2','0'),
('48098','7','','10647','Database discovery','mysql.db.discovery["{$MYSQL.HOST}","{$MYSQL.PORT}"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Scanning databases in DBMS.','0','7d','1','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5f6d9b9473494b6d8a9bd0f75211ffac','0','2','0'),
('48100','7','','10647','Replication discovery','mysql.replication.discovery["{$MYSQL.HOST}","{$MYSQL.PORT}"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'If "show slave status" returns Master_Host, "Replication: *" items are created.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','af8c7f2a0fe7405194887397ee722e47','0','2','0'),
('48101','7','','10647','Size of database {#DBNAME}','mysql.dbsize["{$MYSQL.HOST}","{$MYSQL.PORT}","{#DBNAME}"]','5m','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'Database size.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','def6d1e8f3584454b70fb11d99cb30d0','0','2','0'),
('48102','7','','10647','Replication Slave status {#MASTER_HOST}','mysql.slave_status["{$MYSQL.HOST}","{$MYSQL.PORT}","{#MASTER_HOST}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The item gets status information on the essential parameters of the slave threads.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2a9a2449f0b945afb2b16a1f744ffaef','0','2','0'),
('48112','7','','10648','Get archive','pgsql.archive["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect archive status metrics.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','218b03c8bfb84b07ae0ec9ba0932fff3','0','2','0'),
('48113','7','','10648','Count of autovacuum workers','pgsql.autovacuum.count["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of autovacuum workers.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','bc14c8544eed47ce9510a803be5708d7','0','2','0'),
('48114','7','','10648','Get bgwriter','pgsql.bgwriter["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_stat_bgwriter:
https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-BGWRITER-VIEW','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8d0dd45f06974d6b8be9cc11404ac1c3','0','2','0'),
('48115','15','','10648','Cache hit ratio, %','pgsql.cache.hit','1m','31d','365d','0','0','','%','','',NULL,NULL,'last(//pgsql.dbstat.sum.blks_hit.rate) * 100 / (last(//pgsql.dbstat.sum.blks_hit.rate) + last(//pgsql.dbstat.sum.blks_read.rate))','','0','','','','','0',NULL,'Cache hit ratio.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7b701ad8f20a44958956a6cbfd4e5da2','0','2','0'),
('48116','7','','10648','Get connections sum','pgsql.connections["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_stat_activity:
https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','52d9d2342b9c40a2b279dcbe4bcff023','0','2','0'),
('48117','7','','10648','Custom queries','pgsql.custom.query["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}",""]','1m','1h','0','1','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Execute custom queries from file *.sql (check for option Plugins.Postgres.CustomQueriesPath at agent configuration).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','defcba230619484db1a7d6faace8b33d','0','2','0'),
('48118','7','','10648','Get dbstat sum','pgsql.dbstat.sum["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_stat_database as sums for all databases:
https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-DATABASE-VIEW','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8d84c4ec8d05427f9da4b9a1904a0af4','0','2','0'),
('48119','7','','10648','Get dbstat','pgsql.dbstat["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_stat_database per database:
https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-DATABASE-VIEW','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','e36f2b3e33e2435d9b95472a7844a1a4','0','2','0'),
('48120','7','','10648','Get locks','pgsql.locks["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_locks per database:
https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-TABLES','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','df19db910015411996e25ea5b48f0742','0','2','0'),
('48121','7','','10648','Age of oldest xid','pgsql.oldest.xid["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Age of oldest xid.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1a32b0308496460b83ad2698edb21420','0','2','0'),
('48122','7','','10648','Ping','pgsql.ping["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','','','',NULL,'1265','','','0','','','','','0',NULL,'Used to test a connection to see if it is alive. It is set to 0 if the query is unsuccessful.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','52edd592df6f49df9bf46b5e93689a1a','0','2','0'),
('48123','7','','10648','Get queries','pgsql.queries["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}","{$PG.QUERY_ETIME.MAX.WARN}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics by query execution time.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','060c0efaf60944538bf5fb6ca2828dc6','0','2','0'),
('48124','7','','10648','Replication: Standby count','pgsql.replication.count["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of standby servers.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f15d0758764c4bd6b607335d9d57b76b','0','2','0'),
('48125','7','','10648','Replication: Lag in bytes','pgsql.replication.lag.b["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'Replication lag with master, in bytes.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','a3297ef8198145848d4e3b16b7b8eb8b','0','2','0'),
('48126','7','','10648','Replication: Lag in seconds','pgsql.replication.lag.sec["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'Replication lag with master, in seconds.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','142e93b332e24ecfbd50465bb4af91e7','0','2','0'),
('48127','7','','10648','Get replication','pgsql.replication.process["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect metrics from the pg_stat_replication, which contains information about the WAL sender process, showing statistics about replication to that sender''s connected standby server.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','aa03fb9cabd8459ea5f5efb90c9e1051','0','2','0'),
('48128','7','','10648','Replication: Recovery role','pgsql.replication.recovery_role["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','','','',NULL,'1263','','','0','','','','','0',NULL,'Replication role: 1 — recovery is still in progress (standby mode), 0 — master mode.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','226bcc226ffc487ba90d998a03692404','0','2','0'),
('48129','7','','10648','Replication: Status','pgsql.replication.status["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','','','',NULL,'1264','','','0','','','','','0',NULL,'Replication status: 0 — streaming is down, 1 — streaming is up, 2 — master mode.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ef2ac5eaf73c40e09af41bba03b4fac8','0','2','0'),
('48130','7','','10648','Uptime','pgsql.uptime["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'Time since the server started.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','46b53fcf97a74619a03c2490fe9b71ea','0','2','0'),
('48131','7','','10648','Version','pgsql.version["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'PostgreSQL version.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7a96feee8118450e83e994be87bc5eea','0','2','0'),
('48132','7','','10648','Get WAL','pgsql.wal.stat["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','5m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect write-ahead log (WAL) metrics.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','cb2a0f990a39411e9d3c7d95cc7504ee','0','2','0'),
('48177','7','','10648','Database discovery','pgsql.db.discovery["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovers databases (DB) in the database management system (DBMS), except:
- templates;
- DBs that do not allow connections.','0','7d','1','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c5a95125be304bbeba407ce926ad7816','0','2','0'),
('48178','7','','10648','Replication discovery','pgsql.replication.process.discovery["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','15m','31d','365d','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovers replication lag metrics.','0','7d','1','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','92ba6c1b038a454d8d8d40399d0967d8','0','2','0'),
('48179','7','','10648','DB [{#DBNAME}]: Database age','pgsql.db.age["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]','10m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Database age.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7df48c3384b14356903c38b3b0e1c435','0','2','0'),
('48180','7','','10648','DB [{#DBNAME}]: Bloating tables','pgsql.db.bloating_tables["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Number of bloating tables.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','cd5516d8ea994a9e86aff2081d611176','0','2','0'),
('48181','7','','10648','DB [{#DBNAME}]: Database size','pgsql.db.size["{$PG.CONNSTRING.AGENT2}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]','5m','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'Database size.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f2d58306483d4bb4a215e245f133b4ad','0','2','0'),
('48224','7','','10649','Get bgwriter','pgsql.bgwriter["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','1h','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_stat_bgwriter:
https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-BGWRITER-VIEW','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','08043026cea14053a0addd4bdb7b7b8d','0','2','0'),
('48225','7','','10649','Cache hit ratio, %','pgsql.cache.hit["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Cache hit ratio.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','934e6647557f41cba46532a5a5c5d2ea','0','2','0'),
('48226','7','','10649','Config hash','pgsql.config.hash["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','15m','31d','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'PostgreSQL configuration hash.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2d028578428949da8fa05d1f62f9f615','0','2','0'),
('48227','7','','10649','Get connections sum','pgsql.connections.sum["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_stat_activity:
https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','13cce1cb170f4c9db977cb49fc603f79','0','2','0'),
('48228','7','','10649','Get dbstat','pgsql.dbstat["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_stat_database per database:
https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-DATABASE-VIEW','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','bea2e947b16b4a3dac660e664a505904','0','2','0'),
('48229','7','','10649','Get locks','pgsql.locks["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics from pg_locks per database:
https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-TABLES','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','e5adbe1c2fc74943926cf45ff5efbff3','0','2','0'),
('48230','7','','10649','Ping time','pgsql.ping.time["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'Used to get the `SELECT 1` query execution time.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2ab77e9548014233b0945bdeb9c134bd','0','2','0'),
('48231','7','','10649','Ping','pgsql.ping["{$PG.HOST}","{$PG.PORT}"]','1m','31d','365d','0','3','','','','',NULL,'1268','','','0','','','','','0',NULL,'Used to test a connection to see if it is alive. It is set to 0 if the instance doesn''t accept the connections.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','058b3cd8308b4692a5cb3e89a47886bd','0','2','0'),
('48232','7','','10649','Get queries','pgsql.queries["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}","{$PG.QUERY_ETIME.MAX.WARN}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect all metrics by query execution time.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2a4de36d7b434260b264a63ab444a430','0','2','0'),
('48233','7','','10649','Replication: Standby count','pgsql.replication.count["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of standby servers.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','401331b4eab0439ca954551bce2f0c2e','0','2','0'),
('48234','7','','10649','Replication: Lag in seconds','pgsql.replication.lag.sec["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'Replication lag with master, in seconds.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2005dff88ab64458b3970a40e5bf0aff','0','2','0'),
('48235','7','','10649','Replication: Recovery role','pgsql.replication.recovery_role["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','','','',NULL,'1266','','','0','','','','','0',NULL,'Replication role: 1 — recovery is still in progress (standby mode), 0 — master mode.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','808f71865b934ac68512a3d6fa8b4aab','0','2','0'),
('48236','7','','10649','Replication: Status','pgsql.replication.status["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','','','',NULL,'1267','','','0','','','','','0',NULL,'Replication status: 0 — streaming is down, 1 — streaming is up, 2 — master mode.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5c4061c4081d41fa86741a296378d031','0','2','0'),
('48237','7','','10649','Get transactions','pgsql.transactions["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect metrics by transaction execution time.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b22ed1707bd84c4faa010803b2c594fa','0','2','0'),
('48238','7','','10649','Uptime','pgsql.uptime["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1m','31d','365d','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'Time since the server started.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','d310b47d3e38466a980494fb0f9dfb01','0','2','0'),
('48239','7','','10649','Version','pgsql.version["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'PostgreSQL version.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','9798496e21914a8cbdee1cd85decf3e8','0','2','0'),
('48240','7','','10649','Get WAL','pgsql.wal.stat["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','5m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Collect write-ahead log (WAL) metrics.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','9ca8653ea8304b5392d1c39111381751','0','2','0'),
('48264','7','','10649','Database discovery','pgsql.discovery.db["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}"]','1h','31d','365d','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovers databases (DB) in the database management system (DBMS), except:
- templates;
- default "postgres" DB;
- DBs that do not allow connections.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','d9625ea888804a8b82d395e1e002c6cd','0','2','0'),
('48265','7','','10649','DB [{#DBNAME}]: Database size','pgsql.db.size["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}","{#DBNAME}"]','15m','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'Database size.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f8d430b69f4f4f2aa04e2906cc4ab3cd','0','2','0'),
('48266','7','','10649','DB [{#DBNAME}]: Get frozen XID','pgsql.frozenxid["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2e0e02f98b3c45d195f93e1ed8ec343d','0','2','0'),
('48267','7','','10649','DB [{#DBNAME}]: Get scans','pgsql.scans["{$PG.HOST}","{$PG.PORT}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Number of scans done for table/index in this database.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8ee891f2e0ae4c74a24ebffc67380f01','0','2','0'),
('48297','0','','10074','CPU spin time','system.cpu.util[,spin]','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has spent spinning on a lock.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','636b16908e3746039cf0bc5edf5ef3c6','0','2','0'),
('48298','7','','10650','Number of devices','nvml.device.count','1h','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves the number of compute devices in the system. A compute device is a single GPU.
For all Nvidia products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','efdffab0b401430388a5cb21a789978d','0','2','0'),
('48299','7','','10650','Get devices','nvml.device.get','1h','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves list of Nvidia devices in the system.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6ea9f80195af4c7b89c1f7220fc71df7','0','2','0'),
('48300','7','','10650','Driver version','nvml.system.driver.version','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves the version of the system''s graphics driver.
For all Nvidia products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','424bce7a262144d0a2bc33bc0b5ee98a','0','2','0'),
('48301','7','','10650','NVML library version','nvml.version','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves the version of the NVML library.
For all Nvidia products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1566ad71d26a474a858c12ff1cf438fb','0','2','0'),
('48303','7','','10650','[{#UUID}]: Decoder utilization','nvml.device.decoder.utilization["{#UUID}"]','1m','31d','365d','0','3','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current utilization for the Decoder.
For Nvidia Kepler or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0355d8799fb44e6b8ad144b389641d01','0','2','0'),
('48304','7','','10650','[{#UUID}]: Encoder stats','nvml.device.encoder.stats.get["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current encoder statistics for a given device.
For Nvidia Maxwell or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','52c3a8fc63fc47e88c976d8d8436a3a5','0','2','0'),
('48305','7','','10650','[{#UUID}]: Encoder utilization','nvml.device.encoder.utilization["{#UUID}"]','1m','31d','365d','0','3','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current utilization for the Encoder.
For Nvidia Kepler or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ae76d66eed7b42fb95b13cfcc1e633d1','0','2','0'),
('48306','7','','10650','[{#UUID}]: Energy consumption','nvml.device.energy.consumption["{#UUID}"]','1m','31d','365d','0','0','','J','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves total energy consumption for this GPU in joules (J) since the driver was last reloaded.
For Nvidia Volta or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','79928bb18ccc4a4e9d1ed46aa20d5434','0','2','0'),
('48307','7','','10650','[{#UUID}]: Memory ECC errors, get','nvml.device.errors.memory["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the GPU device memory error counters for the device.
For Nvidia Fermi or newer fully supported devices.
Requires NVML_INFOROM_ECC version 2.0 or higher to report aggregate location-based memory error counts. Requires NVML_INFOROM_ECC version 1.0 or higher to report all other memory error counts.
Only applicable to devices with ECC.
Requires ECC Mode to be enabled.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','e79e45b1625742fea796f14d26c52e6f','0','2','0'),
('48308','7','','10650','[{#UUID}]: Register file errors, get','nvml.device.errors.register["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the GPU register file error counters for the device.
For Nvidia Fermi or newer fully supported devices.
Requires NVML_INFOROM_ECC version 2.0 or higher to report aggregate location-based memory error counts. Requires NVML_INFOROM_ECC version 1.0 or higher to report all other memory error counts.
Only applicable to devices with ECC.
Requires ECC Mode to be enabled.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3b19ff5ab2ae48049aed8403ab18ebf3','0','2','0'),
('48309','7','','10650','[{#UUID}]: Fan speed','nvml.device.fan.speed.avg["{#UUID}"]','1m','31d','365d','0','3','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the intended operating speed of the device''s specified fan.
Note: The reported speed is the intended fan speed. If the fan is physically blocked and unable to spin, the output will not match the actual fan speed.
For all Nvidia discrete products with dedicated fans.
The fan speed is expressed as a percentage of the product''s maximum noise tolerance fan speed. This value may exceed 100% in certain cases.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ece478c8ff5f40dcb3bcb7a4b6d65124','0','2','0'),
('48310','7','','10650','[{#UUID}]: Graphics frequency','nvml.device.graphics.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current graphics clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c9609ab9041a4f7584bed04b436315c0','0','2','0'),
('48311','7','','10650','[{#UUID}]: BAR1 memory, get','nvml.device.memory.bar1.get["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Gets Total, Available and Used size of BAR1 memory.
BAR1 is used to map the FB (device memory) so that it can be directly accessed by the CPU or by 3rd party devices (peer-to-peer on the PCIE bus).
For Nvidia Kepler or newer fully supported devices','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8836f8d00eb44a5180c8ced82494c1ba','0','2','0'),
('48312','7','','10650','[{#UUID}]: FB memory, get','nvml.device.memory.fb.get["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the amount of used, free, reserved and total memory available on the device.
For all Nvidia products.
Enabling ECC reduces the amount of total available memory, due to the extra required parity bits. Under WDDM most device memory is allocated and managed on startup by Windows.
Under Linux and Windows TCC, the reported amount of used memory is equal to the sum of memory allocated by all active channels on the device.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1f48f586a4ec49ffbe8080bac5df66f8','0','2','0'),
('48313','7','','10650','[{#UUID}]: Memory frequency','nvml.device.memory.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current memory clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b3ec856b4b7f42d9ba76c2ff47752bd7','0','2','0'),
('48314','7','','10650','[{#UUID}]: PCIe utilization, get','nvml.device.pci.utilization["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieve PCIe utilization information.
For Maxwell or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','3270b9cf246b4b0abf60bb73f2c64c39','0','2','0'),
('48315','7','','10650','[{#UUID}]: Performance state','nvml.device.performance.state["{#UUID}"]','1m','31d','365d','0','3','','','','',NULL,'1269','','','0','','','','','2',NULL,'Retrieves the current performance state for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1ac19949ec11456896562f63525dcb8c','0','2','0'),
('48316','7','','10650','[{#UUID}]: Power limit','nvml.device.power.limit["{#UUID}"]','1h','31d','365d','0','0','','watts','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the power management limit associated with this device.
For Nvidia Fermi or newer fully supported devices.
The power limit defines the upper boundary for the card''s power draw. If the card''s total power draw reaches this limit the power management algorithm kicks in.
This reading is only available if power management mode is supported.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7f4e87102f8042a8802088f842356522','0','2','0'),
('48317','7','','10650','[{#UUID}]: Power usage','nvml.device.power.usage["{#UUID}"]','1m','31d','365d','0','0','','watts','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves power usage for this GPU in watts and its associated circuitry (e.g. memory).
For Nvidia Fermi or newer fully supported devices.
On Fermi and Kepler GPUs the reading is accurate to within +/- 5% of current power draw. On Ampere (except GA100) or newer GPUs, the API returns power averaged over 1 sec interval. On GA100 and older architectures, instantaneous power is returned.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','601901906c634f64a94831a9b44ad59e','0','2','0'),
('48318','7','','10650','[{#UUID}]: Serial number','nvml.device.serial["{#UUID}"]','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the globally unique board serial number associated with this device''s board.
For all products with an inforom.
This number matches the serial number tag that is physically attached to the board.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','707c859524164a348d142f193fb464d6','0','2','0'),
('48319','7','','10650','[{#UUID}]: SM frequency','nvml.device.sm.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current SM clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c64fafdc18654ad8adb984673142b614','0','2','0'),
('48320','7','','10650','[{#UUID}]: Temperature','nvml.device.temperature["{#UUID}"]','1m','31d','365d','0','3','','C','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current temperature readings for the device, in degrees C.
For Nvidia all products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','513cab732c7648ccb71a7401ebcaebc5','0','2','0'),
('48321','7','','10650','[{#UUID}]: Device utilization, get','nvml.device.utilization["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current utilization rates for the device''s major subsystems.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','a573c6926e2b438ba124c824268bacc4','0','2','0'),
('48322','7','','10650','[{#UUID}]: Video frequency','nvml.device.video.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current video encoder/decoder clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2cdebc61528440e58cd0df9a43851988','0','2','0'),
('48341','0','','10651','Number of devices','nvml.device.count','1h','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves the number of compute devices in the system. A compute device is a single GPU.
For all Nvidia products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ac18129f78a54a2e95d1d48630e0eab2','0','2','0'),
('48342','0','','10651','Get devices','nvml.device.get','1h','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves list of Nvidia devices in the system.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','afe2ea47c42f4992851f02b31efd8225','0','2','0'),
('48343','0','','10651','Driver version','nvml.system.driver.version','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves the version of the system''s graphics driver.
For all Nvidia products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','824a7555809f4e23b2f7fa72aff28a0c','0','2','0'),
('48344','0','','10651','NVML library version','nvml.version','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Retrieves the version of the NVML library.
For all Nvidia products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8e54cc700a9147baa5f18aa286c47205','0','2','0'),
('48346','0','','10651','[{#UUID}]: Decoder utilization','nvml.device.decoder.utilization["{#UUID}"]','1m','31d','365d','0','3','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current utilization for the Decoder.
For Nvidia Kepler or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','cf631ee2b8d9494e81eef3e9e0bddf80','0','2','0'),
('48347','0','','10651','[{#UUID}]: Encoder stats','nvml.device.encoder.stats.get["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current encoder statistics for a given device.
For Nvidia Maxwell or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','cc4ff50ff1ed4c6d92ccb24f205b65c5','0','2','0'),
('48348','0','','10651','[{#UUID}]: Encoder utilization','nvml.device.encoder.utilization["{#UUID}"]','1m','31d','365d','0','3','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current utilization for the Encoder.
For Nvidia Kepler or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6cf65da338f64f6c9087f8699c2d71dc','0','2','0'),
('48349','0','','10651','[{#UUID}]: Energy consumption','nvml.device.energy.consumption["{#UUID}"]','1m','31d','365d','0','0','','J','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves total energy consumption for this GPU in joules (J) since the driver was last reloaded.
For Nvidia Volta or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8f992f3cffcc42d5a0f4cac878781457','0','2','0'),
('48350','0','','10651','[{#UUID}]: Memory ECC errors, get','nvml.device.errors.memory["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the GPU device memory error counters for the device.
For Nvidia Fermi or newer fully supported devices.
Requires NVML_INFOROM_ECC version 2.0 or higher to report aggregate location-based memory error counts. Requires NVML_INFOROM_ECC version 1.0 or higher to report all other memory error counts.
Only applicable to devices with ECC.
Requires ECC Mode to be enabled.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','e97eacb1bef64fdaa7b55883fc37a4a9','0','2','0'),
('48351','0','','10651','[{#UUID}]: Register file errors, get','nvml.device.errors.register["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the GPU register file error counters for the device.
For Nvidia Fermi or newer fully supported devices.
Requires NVML_INFOROM_ECC version 2.0 or higher to report aggregate location-based memory error counts. Requires NVML_INFOROM_ECC version 1.0 or higher to report all other memory error counts.
Only applicable to devices with ECC.
Requires ECC Mode to be enabled.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','07ea4aec260f4850b0c2a59610f703de','0','2','0'),
('48352','0','','10651','[{#UUID}]: Fan speed','nvml.device.fan.speed.avg["{#UUID}"]','1m','31d','365d','0','3','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the intended operating speed of the device''s specified fan.
Note: The reported speed is the intended fan speed. If the fan is physically blocked and unable to spin, the output will not match the actual fan speed.
For all Nvidia discrete products with dedicated fans.
The fan speed is expressed as a percentage of the product''s maximum noise tolerance fan speed. This value may exceed 100% in certain cases.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','49283334edaa4aeb9d63d8f2794c23d7','0','2','0'),
('48353','0','','10651','[{#UUID}]: Graphics frequency','nvml.device.graphics.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current graphics clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','77bce39e010f4d4ab5fc347aebd7e61b','0','2','0'),
('48354','0','','10651','[{#UUID}]: BAR1 memory, get','nvml.device.memory.bar1.get["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Gets Total, Available and Used size of BAR1 memory.
BAR1 is used to map the FB (device memory) so that it can be directly accessed by the CPU or by 3rd party devices (peer-to-peer on the PCIE bus).
For Nvidia Kepler or newer fully supported devices','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','da9f4e0ce0af45af9cb414b34932df70','0','2','0'),
('48355','0','','10651','[{#UUID}]: FB memory, get','nvml.device.memory.fb.get["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the amount of used, free, reserved and total memory available on the device.
For all Nvidia products.
Enabling ECC reduces the amount of total available memory, due to the extra required parity bits. Under WDDM most device memory is allocated and managed on startup by Windows.
Under Linux and Windows TCC, the reported amount of used memory is equal to the sum of memory allocated by all active channels on the device.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','cad7ac51204847e2a00a8a594a7ffecc','0','2','0'),
('48356','0','','10651','[{#UUID}]: Memory frequency','nvml.device.memory.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current memory clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','78918ce1cbae45bdb3a0773f3bf9bd14','0','2','0'),
('48357','0','','10651','[{#UUID}]: PCIe utilization, get','nvml.device.pci.utilization["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieve PCIe utilization information.
For Maxwell or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','35d9d7075294487f9bd2f47f4be66dea','0','2','0'),
('48358','0','','10651','[{#UUID}]: Performance state','nvml.device.performance.state["{#UUID}"]','1m','31d','365d','0','3','','','','',NULL,'1270','','','0','','','','','2',NULL,'Retrieves the current performance state for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','5a97162894064078ad8913d647dbf76e','0','2','0'),
('48359','0','','10651','[{#UUID}]: Power limit','nvml.device.power.limit["{#UUID}"]','1h','31d','365d','0','0','','watts','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the power management limit associated with this device.
For Nvidia Fermi or newer fully supported devices.
The power limit defines the upper boundary for the card''s power draw. If the card''s total power draw reaches this limit the power management algorithm kicks in.
This reading is only available if power management mode is supported.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6b99a9e1c5b841059f0e62b04001c82d','0','2','0'),
('48360','0','','10651','[{#UUID}]: Power usage','nvml.device.power.usage["{#UUID}"]','1m','31d','365d','0','0','','watts','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves power usage for this GPU in watts and its associated circuitry (e.g. memory).
For Nvidia Fermi or newer fully supported devices.
On Fermi and Kepler GPUs the reading is accurate to within +/- 5% of current power draw. On Ampere (except GA100) or newer GPUs, the API returns power averaged over 1 sec interval. On GA100 and older architectures, instantaneous power is returned.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','bb1c7aee478f4ba4b108491532ccd737','0','2','0'),
('48361','0','','10651','[{#UUID}]: Serial number','nvml.device.serial["{#UUID}"]','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the globally unique board serial number associated with this device''s board.
For all products with an inforom.
This number matches the serial number tag that is physically attached to the board.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','94c121b6588d424f9573f6e1352b5cd4','0','2','0'),
('48362','0','','10651','[{#UUID}]: SM frequency','nvml.device.sm.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current SM clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','6e149695990a46f294361c047f288b80','0','2','0'),
('48363','0','','10651','[{#UUID}]: Temperature','nvml.device.temperature["{#UUID}"]','1m','31d','365d','0','3','','C','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current temperature readings for the device, in degrees C.
For Nvidia all products.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f47e1eed64354c7cb010dea8570c067b','0','2','0'),
('48364','0','','10651','[{#UUID}]: Device utilization, get','nvml.device.utilization["{#UUID}"]','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current utilization rates for the device''s major subsystems.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','9a3e4972de4d4149bf14512be108179f','0','2','0'),
('48365','0','','10651','[{#UUID}]: Video frequency','nvml.device.video.frequency["{#UUID}"]','1m','31d','365d','0','3','','Hz','','',NULL,NULL,'','','0','','','','','2',NULL,'Retrieves the current video encoder/decoder clock speed for the device.
For Nvidia Fermi or newer fully supported devices.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','91fc19e1784846b7afb982f7ae87439e','0','2','0'),
('48384','3','','10652','ICMP ping','icmpping','1m','31d','365d','0','3','','','','',NULL,'1281','','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','2af50dac1b3245a9b6c350c1096209b6','0','2','0'),
('48385','3','','10652','ICMP loss','icmppingloss','1m','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','250e30e7298444df8208e15c6a32a1c5','0','2','0'),
('48386','3','','10652','ICMP response time','icmppingsec','1m','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8b40a9b8da8546e2a0b593e7dbb72537','0','2','0'),
('48387','20','walk[ 1.3.6.1.4.1.2636.5.1.1.2.1.1.1.3, 1.3.6.1.4.1.2636.5.1.1.2.4.1.1.1, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.2, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.7, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.8, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.10, 1.3.6.1.4.1.2636.5.1.1.2.1.1.1.2, 1.3.6.1.4.1.2636.5.1.1.2.1.1.1.11, 1.3.6.1.4.1.2636.5.1.1.2.1.1.1.14, 1.3.6.1.4.1.2636.5.1.1.2.1.1.1.13]','10652','SNMP walk BGP Peer','juniper.mx.bgp.peer.data.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Scanning `BGP4-V2-MIB-JUNIPER::jnxBgpM2PeerData` for BGP Peer Data.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','0335221808684100bd1e062a730a909d','0','2','0'),
('48388','20','walk[ 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.1, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.2, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.7, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.8, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.9, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.10, 1.3.6.1.4.1.2636.5.1.1.2.6.2.1.11]','10652','SNMP walk BGP Prefix Counters','juniper.mx.bgp.prefix.counters.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Scanning `BGP4-V2-MIB-JUNIPER::jnxBgpM2PrefixCountersTable` for Prefix Counters.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','a6bab1f7b7bd45cf9dcfbb309957cf91','0','2','0'),
('48389','20','walk[1.3.6.1.4.1.2636.3.60.1.2.1.1.1, 1.3.6.1.4.1.2636.3.60.1.2.1.1.2, 1.3.6.1.4.1.2636.3.60.1.2.1.1.4, 1.3.6.1.4.1.2636.3.60.1.2.1.1.6, 1.3.6.1.4.1.2636.3.60.1.2.1.1.8, 1.3.6.1.4.1.2636.3.60.1.2.1.1.9, 1.3.6.1.4.1.2636.3.60.1.1.1.1.8, 1.3.6.1.4.1.2636.3.60.1.1.1.1.30, 1.3.6.1.2.1.2.2.1.8, 1.3.6.1.2.1.2.2.1.7, 1.3.6.1.2.1.31.1.1.1.18, 1.3.6.1.2.1.31.1.1.1.1, 1.3.6.1.2.1.2.2.1.2, 1.3.6.1.2.1.2.2.1.3]','10652','SNMP walk Multi-lane digital optical monitoring','juniper.mx.dom.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Scanning `JUNIPER-DOM-MIB::jnxDomModuleLaneTable` for multi-lane digital optical monitoring.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','9d7d94b8c0d046d2a1a6426e89128719','0','2','0'),
('48390','20','walk[1.3.6.1.2.1.10.7.2.1.19,1.3.6.1.2.1.2.2.1.8,1.3.6.1.2.1.31.1.1.1.18,1.3.6.1.2.1.31.1.1.1.1,1.3.6.1.2.1.2.2.1.2]','10652','SNMP walk EtherLike-MIB interfaces','juniper.mx.net.if.duplex.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of interfaces from IF-MIB and EtherLike-MIB. Interfaces with operational status `up(1)` are discovered.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7ddc368f670e40d1b5770e0a4428ce45','0','2','0'),
('48391','20','walk[1.3.6.1.2.1.2.2.1.8, 1.3.6.1.2.1.2.2.1.2, 1.3.6.1.2.1.2.2.1.3, 1.3.6.1.2.1.2.2.1.7, 1.3.6.1.2.1.2.2.1.13, 1.3.6.1.2.1.2.2.1.14, 1.3.6.1.2.1.2.2.1.19, 1.3.6.1.2.1.2.2.1.20, 1.3.6.1.2.1.31.1.1.1.1, 1.3.6.1.2.1.31.1.1.1.6, 1.3.6.1.2.1.31.1.1.1.10, 1.3.6.1.2.1.31.1.1.1.15, 1.3.6.1.2.1.31.1.1.1.18]','10652','SNMP walk Network interfaces','juniper.mx.net.if.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Discovery of interfaces from IF-MIB.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b11839f1bddd4781b23111511db1615a','0','2','0'),
('48392','20','walk[1.3.6.1.4.1.2636.3.1.13.1.5, 1.3.6.1.4.1.2636.3.1.13.1.7, 1.3.6.1.4.1.2636.3.1.13.1.8, 1.3.6.1.4.1.2636.3.1.13.1.5.2, 1.3.6.1.4.1.2636.3.1.13.1.5.4, 1.3.6.1.4.1.2636.3.1.13.1.6.4, 1.3.6.1.4.1.2636.3.1.13.1.6.2, 1.3.6.1.4.1.2636.3.1.13.1.11]','10652','SNMP walk Operating Table','juniper.mx.operating.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Scanning `JUNIPER-MIB::jnxOperatingTable` for CPU, Memory, Temperature, and Fans.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','f42152e7c0504aa4bfa611725f365afc','0','2','0'),
('48393','20','walk[ 1.3.6.1.2.1.14.10.1.1, 1.3.6.1.2.1.14.10.1.3, 1.3.6.1.2.1.14.10.1.5, 1.3.6.1.2.1.14.10.1.6, 1.3.6.1.2.1.14.10.1.7, 1.3.6.1.2.1.14.10.1.11]','10652','SNMP walk OSPF Neighbors','juniper.mx.ospf.nbr.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Scanning `OSPF-MIB::ospfNbrTable` for OSPF Neighbors.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','80f06a9c2725450e9b5a16377b2cf7af','0','2','0'),
('48394','20','walk[ 1.3.6.1.4.1.2636.5.4.1.1.9.1.5, 1.3.6.1.4.1.2636.5.4.1.1.9.1.7, 1.3.6.1.4.1.2636.5.4.1.1.9.1.8, 1.3.6.1.4.1.2636.5.4.1.1.9.1.9, 1.3.6.1.4.1.2636.5.4.1.1.9.1.11]','10652','SNMP walk OSPFv3 Neighbors','juniper.mx.ospfv3.nbr.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Scanning `OSPFV3-MIB-JUNIPER::jnxOspfv3NbrTable` for OSPFv3 Neighbors.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','4f3115a33a6a43b6bf0ab2be3eeec995','0','2','0'),
('48395','20','walk[1.3.6.1.4.1.2636.3.1.14.1.5, 1.3.6.1.4.1.2636.3.1.14.1.6, 1.3.6.1.4.1.2636.3.1.14.1.10, 1.3.6.1.4.1.2636.3.1.14.1.16, 1.3.6.1.4.1.2636.3.1.14.1.7]','10652','SNMP walk Redundancy Table','juniper.mx.redundancy.table.snmp.walk','1m','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Scanning `JUNIPER-MIB::jnxRedundancyTable` for Router Redundancy.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','d72814c5b9c64f4e843a04137b99dad6','0','2','0'),
('48396','20','1.3.6.1.2.1.1.4.0','10652','System contact details','juniper.mx.system.contact[sysContact.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
Name and contact information of the contact person for the node. If not provided, the value is a zero-length string.','23','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','b9b7da53c32a4b48958c313ed45870b1','0','2','0'),
('48397','20','1.3.6.1.2.1.1.1.0','10652','System description','juniper.mx.system.descr[sysDescr.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
A textual description of the entity. This value should include the full name and version identification of the system''s hardware type, software operating system, and networking software.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','092dbc3c0da648449e69047d3f83b2ba','0','2','0'),
('48398','20','1.3.6.1.4.1.2636.3.1.2.0','10652','Hardware model name','juniper.mx.system.hw.model','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: JUNIPER-MIB
The name, model, or detailed description of the device, indicating which product it represents, for example, `M40`.','29','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','e101a0bd30ae45f6bff0b2b8c914f95b','0','2','0'),
('48399','20','1.3.6.1.4.1.2636.3.1.3.0','10652','Hardware serial number','juniper.mx.system.hw.serialnumber','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: JUNIPER-MIB
The serial number of this subject, blank if unknown or unavailable.','8','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','7fbc5fa8ef084cf585d5a617812b2d70','0','2','0'),
('48400','20','1.3.6.1.2.1.25.1.1.0','10652','Uptime (hardware)','juniper.mx.system.hw.uptime[hrSystemUptime.0]','30s','31d','0','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: HOST-RESOURCES-MIB
The amount of time since this host was last initialized. Note that this is different from `sysUpTime` in the SNMPv2-MIB [RFC1907] because `sysUpTime` is the uptime of the network management portion of the system.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','c2bcb74f5afe4659af6a614ea98dbf51','0','2','0'),
('48401','20','1.3.6.1.2.1.1.6.0','10652','System location','juniper.mx.system.location[sysLocation.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
Physical location of the node (e.g., `equipment room`, `3rd floor`). If not provided, the value is a zero-length string.','24','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','ef6895d078204d17b7f3ba142c2075bf','0','2','0'),
('48402','20','1.3.6.1.2.1.1.5.0','10652','System name','juniper.mx.system.name','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
An administratively-assigned name for this managed node. By convention, this is the node''s fully-qualified domain name. If the name is unknown, the value is a zero-length string.','3','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','1a80dba9043e43edb4c073f397e471c9','0','2','0'),
('48403','20','1.3.6.1.2.1.1.3.0','10652','Uptime (network)','juniper.mx.system.net.uptime[sysUpTime.0]','30s','31d','0','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
Time (in hundredths of a second) since the network management portion of the system was last re-initialized.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','33b048b47db542d6bc304a0048e4b743','0','2','0'),
('48404','20','1.3.6.1.2.1.1.2.0','10652','System object ID','juniper.mx.system.objectid[sysObjectID.0]','15m','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB
The vendor''s authoritative identification of the entity as part of the vendor''s SMI enterprises subtree with the prefix 1.3.6.1.4.1 (e.g., a vendor with the identifier 1.3.6.1.4.1.4242 might assign a system object with the OID 1.3.6.1.4.1.4242.1.1).','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','832ad6d2465e4c20813c194114d2655b','0','2','0'),
('48405','20','1.3.6.1.2.1.1.1.0','10652','Operating system','juniper.mx.system.sw.os[sysDescr.0]','1h','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'MIB: SNMPv2-MIB','5','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8f743934b3364cadbef2f178cc5aabb1','0','2','0'),
('48406','17','','10652','SNMP traps (fallback)','snmptrap.fallback','0','31d','0','0','2','','','','hh:mm:sszyyyy/MM/dd',NULL,NULL,'','','0','','','','','0',NULL,'The item is used to collect all SNMP traps unmatched by other `snmptrap` items.','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','d2d0f8b19fc3474880ce2decd2880ce8','0','2','0'),
('48407','5','','10652','SNMP agent availability','zabbix[host,snmp,available]','1m','31d','365d','0','3','','','','',NULL,'1282','','','0','','','','','0',NULL,'Availability of SNMP checks on the host. The value of this item corresponds to availability icons in the host list.
Possible values:
0 - not available
1 - available
2 - unknown','0','7d','0','',NULL,'','','','','200','1','0','','','0','0','0','0','0','0','0','8223b49a0d1f4467a5f79e423a4bf862','0','2','0');
INSERT INTO items (itemid,type,snmp_oid,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,formula,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,evaltype,jmx_endpoint,master_itemid,timeout,url,query_fields,posts,status_codes,follow_redirects,post_type,http_proxy,headers,retrieve_mode,request_method,output_format,verify_peer,verify_host,allow_traps,discover,uuid,lifetime_type,enabled_lifetime_type,enabled_lifetime) VALUES ('22867','18','','10074','Mounted filesystem discovery','vfs.fs.dependent.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The discovery of mounted filesystems with different types.','0','7d','1','','44447','','','','','200','1','0','','','0','0','0','0','0','0','0','feb02c707aa64b91a3b340aa5ef23de9','0','2','0'),
('22907','18','','10075','Mounted filesystem discovery','vfs.fs.dependent.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The discovery of mounted filesystems with different types.','0','7d','1','','44430','','','','','200','1','0','','','0','0','0','0','0','0','0','4fd60a606c6343e9a7d7808d1d1f6008','0','2','0'),
('22947','18','','10076','Mounted filesystem discovery','vfs.fs.dependent.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The discovery of mounted filesystems with different types.','0','7d','1','','44427','','','','','200','1','0','','','0','0','0','0','0','0','0','4a0b17decdf1449d9463cf00720a843d','0','2','0'),
('22987','18','','10077','Mounted filesystem discovery','vfs.fs.dependent.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The discovery of mounted filesystems with different types.','0','7d','1','','44433','','','','','200','1','0','','','0','0','0','0','0','0','0','883b3a5efab34685b9e6c9a84a6bec84','0','2','0'),
('23027','18','','10078','Mounted filesystem discovery','vfs.fs.dependent.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The discovery of mounted filesystems with different types.','0','7d','1','','44450','','','','','200','1','0','','','0','0','0','0','0','0','0','3abf31160b404cf095daca79f2a03188','0','2','0'),
('23067','18','','10079','Mounted filesystem discovery','vfs.fs.dependent.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The discovery of mounted filesystems with different types. Note that the option to exclude dmg software images from discovery is available only with Zabbix agents 6.4 and higher.','0','7d','1','','44445','','','','','200','1','0','','','0','0','0','0','0','0','0','c537fbe006d7434dab08add1dcf87537','0','2','0'),
('27901','18','','10233','CPU discovery','hrProcessorLoad.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'HOST-RESOURCES-MIB::hrProcessorTable discovery.','0','7d','0','','45473','','','','','200','1','0','','','0','0','0','0','0','0','0','fb2a399dbdb54484a9f58ae2437c32fb','0','2','0'),
('27902','18','','10233','Temperature CPU discovery','mtxrHlProcessorTemperature.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'MIKROTIK-MIB::mtxrHlProcessorTemperature
Since temperature of CPU is not available on all Mikrotik hardware, this is done to avoid unsupported items.','0','7d','0','','45475','','','','','200','1','0','','','0','0','0','0','0','0','0','9a4ae5c2a50d4414ab0eed2c70bcd9c3','0','2','0'),
('27903','18','','10233','Storage discovery','storage.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'HOST-RESOURCES-MIB::hrStorage discovery with storage filter.','0','7d','2','','45472','','','','','200','1','0','','','0','0','0','0','0','0','0','6bb65981928d40378a95ee74aff82cc5','0','2','0'),
('27904','18','','10233','#{#SNMPINDEX}: CPU utilization','system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'MIB: HOST-RESOURCES-MIB
The average, over the last minute, of the percentage of time that this processor was not idle. Implementations may approximate this one minute smoothing period if necessary.','0','30d','0','','45473','','','','','200','1','0','','','0','0','0','0','0','0','0','560173245c8245128bc7071b8201fe12','0','2','0'),
('27905','18','','10233','CPU: Temperature','sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}]','0','31d','365d','0','0','','°C','','',NULL,NULL,'','','0','','','','','2',NULL,'MIB: MIKROTIK-MIB
mtxrHlProcessorTemperature Processor temperature in Celsius (degrees C).
Might be missing in entry models (RB750, RB450G..).','0','30d','0','','45475','','','','','200','1','0','','','0','0','0','0','0','0','0','ad101c676b5243eca67eb68d879f5212','0','2','0'),
('27907','18','','10233','Disk-{#SNMPINDEX}: Total space','vfs.fs.total[hrStorageSize.{#SNMPINDEX}]','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'MIB: HOST-RESOURCES-MIB
The size of the storage represented by this entry, in
units of hrStorageAllocationUnits. This object is
writable to allow remote configuration of the size of
the storage area in those cases where such an
operation makes sense and is possible on the
underlying system. For example, the amount of main
memory allocated to a buffer pool might be modified or
the amount of disk space allocated to virtual memory
might be modified.','0','30d','0','','45472','','','','','200','1','0','','','0','0','0','0','0','0','0','64747345083e4b38b0e963ccd0b8271b','0','2','0'),
('27908','18','','10233','Disk-{#SNMPINDEX}: Used space','vfs.fs.used[hrStorageSize.{#SNMPINDEX}]','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'MIB: HOST-RESOURCES-MIB
The amount of the storage represented by this entry that is allocated, in units of hrStorageAllocationUnits.','0','30d','0','','45472','','','','','200','1','0','','','0','0','0','0','0','0','0','35034472b281453bbfbcf65b5d60dd7e','0','2','0'),
('28001','18','','10236','CPU Discovery','cpu.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovering TPLINK-SYSMONITOR-MIB::tpSysMonitorCpuTable, displays the CPU utilization of all UNITs.','0','7d','0','','45479','','','','','200','1','0','','','0','0','0','0','0','0','0','5325de505855448a8c785066374ba201','0','2','0'),
('28002','18','','10236','Memory Discovery','memory.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovering TPLINK-SYSMONITOR-MIB::tpSysMonitorMemoryTable, displays the memory utilization of all UNITs.','0','7d','0','','45478','','','','','200','1','0','','','0','0','0','0','0','0','0','7a3144453fc644b3bd42dec4ba843bef','0','2','0'),
('28003','18','','10236','#{#SNMPVALUE}: CPU utilization','system.cpu.util[tpSysMonitorCpu1Minute.{#SNMPINDEX}]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'MIB: TPLINK-SYSMONITOR-MIB
Displays the CPU utilization in 1 minute.
Reference: http://www.tp-link.com/faq-1330.html','0','30d','0','','45479','','','','','200','1','0','','','0','0','0','0','0','0','0','84929a905e144746b047a20bbfb7ae40','0','2','0'),
('28306','18','','10254','Temperature discovery','temp.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'ENTITY-SENSORS-MIB::EntitySensorDataType discovery with temperature filter','0','7d','1','','33181','','','','','200','1','0','','','0','0','0','0','0','0','0','50d834b15d7f4755b1ff89ddba90fa4d','0','2','0'),
('28307','18','','10254','Fan discovery','fan.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'ENTITY-SENSORS-MIB::EntitySensorDataType discovery with rpm filter','0','7d','2','','33181','','','','','200','1','0','','','0','0','0','0','0','0','0','c78a9f82601847338d687ed01577e958','0','2','0'),
('28542','18','','10261','History index cache, % used','wcache.index.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache. The percentage of used history index buffer.
The history index cache is used to index values stored in the history cache.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','b1add70210a44b668f06cc3e062173ad','0','2','0'),
('28543','18','','10261','Configuration cache, % used','rcache.buffer.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The availability statistics of Zabbix configuration cache. The percentage of used data buffer.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','750964513e1d44d7b138980d6cac2188','0','2','0'),
('28544','18','','10261','Value cache, % used','vcache.buffer.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The availability statistics of Zabbix value cache. The percentage of used data buffer.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','9f9d8d1fcd08498698e37b5889502b47','0','2','0'),
('28545','18','','10261','Value cache hits','vcache.cache.hits','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The effectiveness statistics of Zabbix value cache. The number of cache hits (history values taken from the cache).','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','9bd0079126974bf2a61f552de2cdf880','0','2','0'),
('28546','18','','10261','Value cache misses','vcache.cache.misses','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The effectiveness statistics of Zabbix value cache. The number of cache misses (history values taken from the database).','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','e8c372778d4e434e98d3fba5ea603a50','0','2','0'),
('28547','18','','10261','Value cache operating mode','vcache.cache.mode','0','31d','365d','0','3','','!vps','','',NULL,'56','','','0','','','','','0',NULL,'The operating mode of the value cache.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','1a1daeb7267f4ed4bf75c70699d487b6','0','2','0'),
('28548','18','','10261','VMware cache, % used','vmware.buffer.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The availability statistics of Zabbix vmware cache. The percentage of used data buffer.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','9e2b2133916e4ce29ed4e9ca07c74123','0','2','0'),
('28549','18','','10261','History write cache, % used','wcache.history.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache. The percentage of used history buffer.
The history cache is used to store item values. A high number indicates performance problems on the database side.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','98f47a07e2ba4294a9eb2aa1df2ba9f3','0','2','0'),
('28550','18','','10261','Number of processed values per second','wcache.values','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The total number of values processed by Zabbix server or Zabbix proxy, except unsupported items.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','34fe014843974248a98a45596ce43e1a','0','2','0'),
('28551','18','','10261','Trend write cache, % used','wcache.trend.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache. The percentage of used trend buffer.
The trend cache stores the aggregate of all items that have received data for the current hour.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','1f79208bb2ec4e4eb26e6e1b95c3635e','0','2','0'),
('28552','18','','10261','Utilization of unreachable poller data collector processes, in %','process.unreachable_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the unreachable poller processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','8d43954f6b9843009353c560a4f84157','0','2','0'),
('28553','18','','10261','Number of processed numeric (float) values per second','wcache.values.float','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed numeric (float) values.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','206f4fcb1e6d4e468a172e330f56b8aa','0','2','0'),
('28554','18','','10261','Number of processed log values per second','wcache.values.log','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed log values.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','e2f3dc320d54446b80862eabe6fa0be5','0','2','0'),
('28555','18','','10261','Number of processed not supported values per second','wcache.values.not_supported','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of times the item processing resulted in an item becoming unsupported or keeping that state.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','82e088caf6e14c1cab700ad7fcc96263','0','2','0'),
('28556','18','','10261','Number of processed character values per second','wcache.values.str','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed character values.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','99415cd1920a4e7f8b99f3c71e7eba97','0','2','0'),
('28557','18','','10261','Number of processed text values per second','wcache.values.text','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed text values.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','7172378f31a44a36a095a2c2afed763b','0','2','0'),
('28558','18','','10261','Number of processed numeric (unsigned) values per second','wcache.values.uint','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed numeric (unsigned) values.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','7865ba7a928945f4a148acf623b72537','0','2','0'),
('28559','18','','10261','Utilization of vmware collector data collector processes, in %','process.vmware_collector.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the vmware collector processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','9f02a181362b42b882d869353fae93ce','0','2','0'),
('28560','18','','10261','Preprocessing queue','preprocessing_queue','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of values enqueued in the preprocessing queue.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','9881f258f69d459195b5a19c56c523a8','0','2','0'),
('28561','18','','10261','Utilization of alerter internal processes, in %','process.alerter.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the alerter processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','d8071d9c280c468cb70b19be50c756a5','0','2','0'),
('28562','18','','10261','Utilization of ipmi manager internal processes, in %','process.ipmi_manager.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the ipmi manager processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','52a05106bc5e4e05b04142827f394662','0','2','0'),
('28563','18','','10261','Utilization of alert manager internal processes, in %','process.alert_manager.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the alert manager processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','14347f8309934849a2ac13974e4b66d1','0','2','0'),
('28564','18','','10261','Utilization of configuration syncer internal processes, in %','process.configuration_syncer.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the configuration syncer processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','439e81aed41e4fd7ba7f2e4a97ca1a91','0','2','0'),
('28566','18','','10261','Utilization of escalator internal processes, in %','process.escalator.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the escalator processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','d8110a23217142b9b10f2eda00a96f39','0','2','0'),
('28567','18','','10261','Utilization of history syncer internal processes, in %','process.history_syncer.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the history syncer processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','2b651866c6f04880888a770e9a08a167','0','2','0'),
('28568','18','','10261','Utilization of housekeeper internal processes, in %','process.housekeeper.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the housekeeper processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','8eb5b40740a349fbb14ed39dd840fc85','0','2','0'),
('28569','18','','10261','Utilization of http poller data collector processes, in %','process.http_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the http poller processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','02371dc53214403dbf34ff9e970408ef','0','2','0'),
('28570','18','','10261','Utilization of icmp pinger data collector processes, in %','process.icmp_pinger.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the icmp pinger processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','3a2dfedfac164b69a01105137eefd5e9','0','2','0'),
('28571','18','','10261','Utilization of ipmi poller data collector processes, in %','process.ipmi_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the ipmi poller processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','849f8b11cc984c758c4947fe256e3310','0','2','0'),
('28572','18','','10261','Utilization of timer internal processes, in %','process.timer.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the timer processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','105eae2d56d34d91b540f93009a575aa','0','2','0'),
('28573','18','','10261','Utilization of java poller data collector processes, in %','process.java_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the java poller processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','e55654715f8143c597c858d7eb522e31','0','2','0'),
('28574','18','','10261','Utilization of poller data collector processes, in %','process.poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the poller processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','61df12fa054b46f4b50596807dbc90c3','0','2','0'),
('28575','18','','10261','Utilization of preprocessing manager internal processes, in %','process.preprocessing_manager.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the preprocessing manager processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','42e9efb8e5e54b26b84372dc53e823b3','0','2','0'),
('28576','18','','10261','Utilization of preprocessing worker internal processes, in %','process.preprocessing_worker.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the preprocessing worker processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','90bd4b46d63845b98a2c430aac157ea5','0','2','0'),
('28577','18','','10261','Utilization of proxy poller data collector processes, in %','process.proxy_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the proxy poller processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','4c5eb5acc8a447afa47d732988dafbd9','0','2','0'),
('28578','18','','10261','Utilization of self-monitoring internal processes, in %','process.self-monitoring.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the self-monitoring processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','044bb995bcae42568979fd958383fc60','0','2','0'),
('28579','18','','10261','Utilization of snmp trapper data collector processes, in %','process.snmp_trapper.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the snmp trapper processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','643036d74a10414f94dc357efbbd42b2','0','2','0'),
('28580','18','','10261','Utilization of task manager internal processes, in %','process.task_manager.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the task manager processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','7fad0515db154228b5baabb51d647a9f','0','2','0'),
('28581','18','','10261','Utilization of trapper data collector processes, in %','process.trapper.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the trapper processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','9c90b3a087e1495caa17a00bebb70145','0','2','0'),
('28582','18','','10261','Utilization of LLD manager internal processes, in %','process.lld_manager.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the LLD manager processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','b8504e03317649399dabfffc2758d77c','0','2','0'),
('28583','18','','10261','Utilization of LLD worker internal processes, in %','process.lld_worker.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the LLD worker processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','c4d708a59d314de6814f4936ec6b0a99','0','2','0'),
('28584','18','','10261','LLD queue','lld_queue','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of values enqueued in the low-level discovery processing queue.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','adcf44e5179644b0bee34103d3d3688e','0','2','0'),
('28588','18','','10262','Utilization of vmware collector data collector processes, in %','process.vmware_collector.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the vmware collector processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','54d7e2578b594022ad406b40c9dd57fe','0','2','0'),
('28589','18','','10262','Number of processed numeric (unsigned) values per second','wcache.values.uint','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed numeric (unsigned) values.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','c53f480b861249c4a1ca12571faa4487','0','2','0'),
('28590','18','','10262','Number of processed text values per second','wcache.values.text','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed text values.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','35b053f8ce89430b989387eb3075b582','0','2','0'),
('28591','18','','10262','Number of processed character values per second','wcache.values.str','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed character values.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','334584cfea704011b8ae70436e47e2ff','0','2','0'),
('28592','18','','10262','Number of processed not supported values per second','wcache.values.not_supported','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of times the item processing resulted in an item becoming unsupported or keeping that state.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','927b1387d969466eba000855837887c7','0','2','0'),
('28593','18','','10262','Number of processed log values per second','wcache.values.log','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed log values.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','b20b00f97a424b8e9c69ebb749a94d65','0','2','0'),
('28594','18','','10262','Number of processed numeric (float) values per second','wcache.values.float','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The number of processed numeric (float) values.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','f20ff449693a479895b7f3b450b93787','0','2','0'),
('28595','18','','10262','Number of processed values per second','wcache.values','0','31d','365d','0','0','','!vps','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache.
The total number of values processed by Zabbix server or Zabbix proxy, except unsupported items.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','0238a93001a3438988b9b5cc4cbcc68e','0','2','0'),
('28596','18','','10262','History index cache, % used','wcache.index.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache. The percentage of used history index buffer.
The history index cache is used to index values stored in the history cache.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','a907ff2d6d8e4389b116eb3ec01dacfe','0','2','0'),
('28597','18','','10262','History write cache, % used','wcache.history.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The statistics and availability of Zabbix write cache. The percentage of used history buffer.
The history cache is used to store item values. A high number indicates performance problems on the database side.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','2abf18f2a9c9412ca81d615f45d4ca5f','0','2','0'),
('28598','18','','10262','VMware cache, % used','vmware.buffer.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The availability statistics of Zabbix vmware cache. The percentage of used data buffer.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','7e6ffd55fe6842219f6e0d3c81ffa309','0','2','0'),
('28599','18','','10262','Configuration cache, % used','rcache.buffer.pused','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The availability statistics of Zabbix configuration cache. The percentage of used data buffer.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','72dd891d7ced4cefb7de988dadf81f3b','0','2','0'),
('28600','18','','10262','Utilization of configuration syncer internal processes, in %','process.configuration_syncer.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the configuration syncer processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','457a086236ab40eda5c9758eabacb73d','0','2','0'),
('28601','18','','10262','Utilization of data sender internal processes, in %','process.data_sender.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the data sender processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','ff9c1cb7fb234ad2b793c4f296b79834','0','2','0'),
('28602','18','','10262','Utilization of trapper data collector processes, in %','process.trapper.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the trapper processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','d37a6ebb128d4221a34c8d78736ea90b','0','2','0'),
('28603','18','','10262','Utilization of task manager internal processes, in %','process.task_manager.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the task manager processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','48ab13daaf0541bdbf317226c753472c','0','2','0'),
('28604','18','','10262','Utilization of snmp trapper data collector processes, in %','process.snmp_trapper.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the snmp trapper processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','3c06aed8f9ca4790b23132498e32701f','0','2','0'),
('28605','18','','10262','Utilization of self-monitoring internal processes, in %','process.self-monitoring.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the self-monitoring processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','fbfe2a05b2914c9d8b1b39aa7320aaf3','0','2','0'),
('28606','18','','10262','Utilization of poller data collector processes, in %','process.poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the poller processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','e44b8cc43d5c49c5a81ed33c5cc44c82','0','2','0'),
('28607','18','','10262','Utilization of java poller data collector processes, in %','process.java_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the java poller processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','c37b027a671449dca92cfbf1b15e711f','0','2','0'),
('28608','18','','10262','Utilization of ipmi poller data collector processes, in %','process.ipmi_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the ipmi poller processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','c4ff983246e7450f96af03da274df151','0','2','0'),
('28609','18','','10262','Utilization of ipmi manager internal processes, in %','process.ipmi_manager.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the ipmi manager processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','fb560cce51714f9c8b5164f7587930e5','0','2','0'),
('28610','18','','10262','Utilization of icmp pinger data collector processes, in %','process.icmp_pinger.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the icmp pinger processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','f03927fd354a490e95521e5922a19ad3','0','2','0'),
('28611','18','','10262','Utilization of http poller data collector processes, in %','process.http_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the http poller processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','4f335477bd654368a7870dc5cd21e114','0','2','0'),
('28612','18','','10262','Utilization of housekeeper internal processes, in %','process.housekeeper.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the housekeeper processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','50c3587febc14c118ca2868c24e42770','0','2','0'),
('28613','18','','10262','Utilization of history syncer internal processes, in %','process.history_syncer.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the history syncer processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','c710e445710b4d98bd4ebcd5770c7d5a','0','2','0'),
('28616','18','','10262','Utilization of unreachable poller data collector processes, in %','process.unreachable_poller.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the unreachable poller processes have been busy for the last minute.','0','30d','0','','28585','','','','','200','1','0','','','0','0','0','0','0','0','0','a0c56d8570eb4cb39e119fc61d7092d1','0','2','0'),
('28778','18','','10265','Workers starting up','apache.workers.starting','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in starting state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','ae21ea113e8840349aff81ab582d92b4','0','2','0'),
('28779','18','','10265','Workers slot with no current process','apache.workers.slot','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of slots with no current process.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','1c90055e02a244fc8d18e73b23daa0f1','0','2','0'),
('28780','18','','10265','Workers sending reply','apache.workers.sending','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in sending state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','379ac66397b94463ad17b24fbd20c615','0','2','0'),
('28781','18','','10265','Workers reading request','apache.workers.reading','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in reading state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','78b0bd7d8bec49549fc003d460af9177','0','2','0'),
('28782','18','','10265','Workers logging','apache.workers.logging','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in logging state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','7fc0002a279b4541af569a03c1aca2ac','0','2','0'),
('28783','18','','10265','Workers keepalive (read)','apache.workers.keepalive','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in `keepalive` state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','cb81a6a77395444283bc5e065fcbfc2e','0','2','0'),
('28784','18','','10265','Workers idle cleanup','apache.workers.cleanup','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in cleanup state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','f74ffb92e30e48958b5b82f7dfbe5147','0','2','0'),
('28785','18','','10265','Workers finishing','apache.workers.finishing','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in finishing state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','fcf771f2a9b64a81a37db679f0494ed3','0','2','0'),
('28786','18','','10265','Workers closing connection','apache.workers.closing','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in closing state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','d664bee9a330480bbaee7273b871a8d3','0','2','0'),
('28787','18','','10265','Workers DNS lookup','apache.workers.dnslookup','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in `dnslookup` state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','a6fb3444585749be998ec840cd8e4511','0','2','0'),
('28788','18','','10265','Total workers idle','apache.workers_total.idle','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of idle worker threads/processes.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','b1b1c86a12964ae2813c63481e464ec7','0','2','0'),
('28789','18','','10265','Total workers busy','apache.workers_total.busy','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of busy worker threads/processes.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','1752b9bcf7b34abbaf105f5261638271','0','2','0'),
('28790','18','','10265','Version','apache.version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The Apache service version.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','fe0de2eb1478482f99b38c13bd20564c','0','2','0'),
('28791','18','','10265','Uptime','apache.uptime','0','31d','365d','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'The service uptime expressed in seconds.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','3dd8ba505d584b028c7ac08d8b959eb3','0','2','0'),
('28792','18','','10265','Total requests','apache.requests','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of the Apache server accesses.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','5fb5101de70a43fab50d55f418462255','0','2','0'),
('28793','18','','10265','Requests per second','apache.requests.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'It is calculated as a rate of change for the "Total requests" statistics.
`ReqPerSec` is not used, as it counts the average since the last Apache server start.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','ee15f4958040459da53251cc3561ed39','0','2','0'),
('28794','18','','10265','Bytes per second','apache.bytes.rate','0','31d','365d','0','0','','Bps','','',NULL,NULL,'','','0','','','','','0',NULL,'It is calculated as a rate of change for total bytes statistics.
`BytesPerSec` is not used, as it counts the average since the last Apache server start.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','b36010be10874cf188eeacc81f2c366f','0','2','0'),
('28795','18','','10265','Total bytes','apache.bytes','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The total bytes served.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','b9fe6f0bbe174e9f81af84a3bc0b0e7c','0','2','0'),
('28796','18','','10265','Workers waiting for connection','apache.workers.waiting','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of workers in waiting state.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','be1a05a6eab84b64ac4d51c966ea91e8','0','2','0'),
('28797','18','','10265','Event MPM discovery','apache.mpm.event.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The discovery of additional metrics if the event Multi-Processing Module (MPM) is used.
For more details see [Apache MPM event](https://httpd.apache.org/docs/current/mod/event.html).','0','7d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','eee8abd3174d426092e8bca9b3ba982e','0','2','0'),
('28798','18','','10265','Connections async closing','apache.connections[async_closing{#SINGLETON}]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The number of asynchronous connections in closing state (applicable only to the event MPM).','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','062d7c941f0c468d8b63fa76ae0610f6','0','2','0'),
('28799','18','','10265','Connections async keepalive','apache.connections[async_keep_alive{#SINGLETON}]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The number of asynchronous connections in keepalive state (applicable only to the event MPM).','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','6cb8b255ad8343a48e622912bc298366','0','2','0'),
('28800','18','','10265','Connections async writing','apache.connections[async_writing{#SINGLETON}]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The number of asynchronous connections in writing state (applicable only to the event MPM).','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','997b3452aac24ad6afbad775d649c727','0','2','0'),
('28801','18','','10265','Connections total','apache.connections[total{#SINGLETON}]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The number of total connections.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','31cb044eed904ca19150921fe36f3285','0','2','0'),
('28802','18','','10265','Bytes per request','apache.bytes[per_request{#SINGLETON}]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'The average number of client requests per second.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','f52700379f9a4ee8b378a2eb9caea070','0','2','0'),
('28803','18','','10265','Number of async processes','apache.process[num{#SINGLETON}]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The number of asynchronous processes.','0','30d','0','','28775','','','','','200','1','0','','','0','0','0','0','0','0','0','34555340f3ad4b878504df188f54a9c9','0','2','0'),
('28811','18','','10266','Connections waiting','nginx.connections.waiting','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of idle client connections waiting for a request.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','d6cfa828ba344ffe948d8d985b849316','0','2','0'),
('28812','18','','10266','Connections writing','nginx.connections.writing','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of connections where Nginx is writing a response back to the client.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','c038a572f73f4a418ddcc5aeb8b0a547','0','2','0'),
('28813','18','','10266','Connections active','nginx.connections.active','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of active client connections including waiting connections.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','436f2dc87cda418eb8f19ed6910c7bd0','0','2','0'),
('28814','18','','10266','Connections reading','nginx.connections.reading','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of connections where Nginx is reading the request header.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','f5925c78389143c7924432483a5c716c','0','2','0'),
('28815','18','','10266','Connections handled per second','nginx.connections.handled.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of handled connections. Generally, the parameter value is the same as for the accepted connections, unless some resource limits have been reached (for example, the `worker_connections limit`).','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','06191636a7104e1bb40d197493b80958','0','2','0'),
('28816','18','','10266','Connections dropped per second','nginx.connections.dropped.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of dropped client connections.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','4027e6db5e024aff98056faa2d4b43cd','0','2','0'),
('28817','18','','10266','Connections accepted per second','nginx.connections.accepted.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of accepted client connections.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','9e2be446ac79491c8be1bcd789392066','0','2','0'),
('28818','18','','10266','Requests per second','nginx.requests.total.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of client requests.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','2600a696278f490f86cadd8c8836f269','0','2','0'),
('28819','18','','10266','Requests total','nginx.requests.total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of client requests.','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','b28444fb9b834d03a72036882c80b921','0','2','0'),
('28820','18','','10266','Version','nginx.version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','28804','','','','','200','1','0','','','0','0','0','0','0','0','0','3dcc81006977478f92be6dd040d66eb5','0','2','0'),
('28824','18','','10267','Requests total','nginx.requests.total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of client requests.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','071b3d77324740a59045be19da231d76','0','2','0'),
('28825','18','','10267','Requests per second','nginx.requests.total.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of client requests.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','81b17056ec664f9f926a74ee390ab9c1','0','2','0'),
('28826','18','','10267','Connections accepted per second','nginx.connections.accepted.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of accepted client connections.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','e054b58ebbbe4b45961ba697b468ab9e','0','2','0'),
('28827','18','','10267','Connections dropped per second','nginx.connections.dropped.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of dropped client connections.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','eecc0e887a744627be7f3b01cec6d46e','0','2','0'),
('28828','18','','10267','Connections handled per second','nginx.connections.handled.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of handled connections. Generally, the parameter value is the same as for the accepted connections, unless some resource limits have been reached (for example, the `worker_connections limit`).','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','a53cf4f2d2ad4a84a70ff57df6299adc','0','2','0'),
('28829','18','','10267','Connections active','nginx.connections.active','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of active client connections including waiting connections.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','2e4b049ab60947d9a05165f67388e531','0','2','0'),
('28830','18','','10267','Connections reading','nginx.connections.reading','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of connections where Nginx is reading the request header.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','73493cbf8508419a8fed3abff8cc5851','0','2','0'),
('28831','18','','10267','Connections waiting','nginx.connections.waiting','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of idle client connections waiting for a request.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','cf393814511a48b498da8aab94d7ca00','0','2','0'),
('28832','18','','10267','Connections writing','nginx.connections.writing','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The current number of connections where Nginx is writing a response back to the client.','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','b0d63efb16984042945fe42e192f7d4e','0','2','0'),
('28833','18','','10267','Version','nginx.version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','28821','','','','','200','1','0','','','0','0','0','0','0','0','0','716b627d6d894ac2af3ae8c4aeaa8c0c','0','2','0'),
('29398','18','','10285','System local time','system.localtime[node_exporter]','0','31d','365d','0','0','','unixtime','','',NULL,NULL,'','','0','','','','','0',NULL,'The local system time of the host.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','9fcb3dd70dc244f2b2ff86560b37ec7e','0','2','0'),
('29399','18','','10285','CPU steal time','system.cpu.steal[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The amount of "stolen" CPU from this virtual machine by the hypervisor for other tasks, such as running another virtual machine.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','2ee5885c4de646c0926f0c1a48890e68','0','2','0'),
('29400','18','','10285','Free swap space','system.swap.free[node_exporter]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The free space of the swap volume/file expressed in bytes.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','ccc3c4d69fef412aa53c6a7320ef44fb','0','2','0'),
('29401','18','','10285','Total swap space','system.swap.total[node_exporter]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'Total space of the swap volume/file expressed in bytes.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','d0c1ef0a679546d780df30a02a27df44','0','2','0'),
('29402','18','','10285','Available memory','vm.memory.available[node_exporter]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The available memory:
- in Linux - available = free + buffers + cache;
- on other platforms calculation may vary.

See also Appendixes in Zabbix Documentation about parameters of the `vm.memory.size` item.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','70a75efafbc84cbebd1bb262ec797523','0','2','0'),
('29403','18','','10285','Total memory','vm.memory.total[node_exporter]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'Total memory expressed in bytes.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','e3ad296f16084e9caa923b449d8c725f','0','2','0'),
('29404','18','','10285','System boot time','system.boottime[node_exporter]','0','31d','365d','0','0','','unixtime','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','75afcb39d2d7496e9490cd14f1431600','0','2','0'),
('29405','18','','10285','Context switches per second','system.cpu.switches[node_exporter]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The combined rate at which all processors on the computer are switched from one thread to another.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','b873e0d178d144fca3597d617fc119e7','0','2','0'),
('29406','18','','10285','Interrupts per second','system.cpu.intr[node_exporter]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of interrupts processed.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','76206cf435fd4a979dbbf74807b532de','0','2','0'),
('29407','18','','10285','CPU guest nice time','system.cpu.guest_nice[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The time spent on running a niced guest (a virtual CPU for guest operating systems under the control of the Linux kernel).','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','759809ee6c9e43cf8ff44f987221a90e','0','2','0'),
('29408','18','','10285','CPU guest time','system.cpu.guest[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time spent on running a virtual CPU for a guest operating system.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','a732c4df8af047fbb874e1fb363b5e9e','0','2','0'),
('29409','18','','10285','CPU interrupt time','system.cpu.interrupt[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has spent servicing hardware interrupts.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','4d3f64c79c684d55bcde14ca5bf3022a','0','2','0'),
('29410','18','','10285','CPU iowait time','system.cpu.iowait[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has been waiting for I/O to complete.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','6a727e148a2c4956bcfb6de0a3486c2d','0','2','0'),
('29411','18','','10285','CPU nice time','system.cpu.nice[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has spent running users'' processes that have been niced.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','86de794832794f57ba428cca31031005','0','2','0'),
('29412','18','','10285','CPU softirq time','system.cpu.softirq[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has spent servicing software interrupts.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','cf3cd5840b91477d8e9254820896b978','0','2','0'),
('29413','18','','10285','CPU user time','system.cpu.user[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has spent running users'' processes that are not niced.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','832698e707d14bad8171ca71a2533350','0','2','0'),
('29414','18','','10285','System name','system.name[node_exporter]','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The host name of the system.','3','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','c70cfa2ad5754089935883c5b3172656','0','2','0'),
('29415','18','','10285','Version of node_exporter running','agent.version[node_exporter]','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','9a60d1e53caa4049a33aa52f3f55ad75','0','2','0'),
('29416','18','','10285','CPU idle time','system.cpu.idle[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has spent doing nothing.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','7bb99c606c6b497aaef279663b60829b','0','2','0'),
('29417','18','','10285','Number of CPUs','system.cpu.num[node_exporter]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','d7db65cfeaac4541bd98d06dc35f89e2','0','2','0'),
('29418','18','','10285','Load average (15m avg)','system.cpu.load.avg15[node_exporter]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Calculated as the system CPU load divided by the number of CPU cores.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','35fb0319c599403bbea0e616c9066e27','0','2','0'),
('29419','18','','10285','Load average (5m avg)','system.cpu.load.avg5[node_exporter]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Calculated as the system CPU load divided by the number of CPU cores.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','7fc62b26b9ff43429632f1985dc07851','0','2','0'),
('29420','18','','10285','Load average (1m avg)','system.cpu.load.avg1[node_exporter]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Calculated as the system CPU load divided by the number of CPU cores.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','78fb393fe3d64cd7bf79be5427715add','0','2','0'),
('29421','18','','10285','System uptime','system.uptime[node_exporter]','0','31d','0','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'The system uptime expressed in the following format: "N days, hh:mm:ss".','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','7eeabdb6bf44483bab91faaab8bb24d5','0','2','0'),
('29422','18','','10285','Operating system architecture','system.sw.arch[node_exporter]','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','ce4bb6c485cc4b739dce31b631634790','0','2','0'),
('29423','18','','10285','Number of open file descriptors','fd.open[node_exporter]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','d3631bd7effc4cd1bc45c991b3c3038f','0','2','0'),
('29424','18','','10285','Maximum number of open file descriptors','kernel.maxfiles[node_exporter]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'May be increased by using `sysctl` utility or modifying the file `/etc/sysctl.conf`.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','a8b78e776e1d4011bbcb6dd54e32b40b','0','2','0'),
('29425','18','','10285','System description','system.descr[node_exporter]','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Labeled system information as provided by the uname system call.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','c47995760ef3458eb6237e434ef4eef8','0','2','0'),
('29426','18','','10285','CPU system time','system.cpu.system[node_exporter]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'Time the CPU has spent running the kernel and its processes.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','e296be976c5944b19a7178304ed6140c','0','2','0'),
('29429','18','','10285','Network interface discovery','net.if.discovery[node_exporter]','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovery of network interfaces. Requires node_exporter v0.18 and up.','0','7d','1','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','91531a7a68564860976096df6899fe88','0','2','0'),
('29430','18','','10285','Mounted filesystem discovery','vfs.fs.discovery[node_exporter]','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovery of file systems of different types.','0','7d','1','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','85d047920c1342b992fa1905eb489a44','0','2','0'),
('29431','18','','10285','Block devices discovery','vfs.dev.discovery[node_exporter]','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'','0','7d','1','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','920f367e232945b8992d0f32e6f9324d','0','2','0'),
('29432','18','','10285','FS [{#FSNAME}]: Space: Used','vfs.fs.used[node_exporter,"{#FSNAME}"]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'Used storage expressed in bytes.
Reserverd space is not counted in.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','89e559a7ff364dd78b638454896692c5','0','2','0'),
('29433','18','','10285','FS [{#FSNAME}]: Space: Used, in %','vfs.fs.pused[node_exporter,"{#FSNAME}"]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Calculated as the percentage of currently used space compared to the maximum available space.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','89afe41bb0d74c579a9cff8b036d30dc','0','2','0'),
('29436','18','','10285','Interface {#IFNAME}({#IFALIAS}): Bits received','net.if.in[node_exporter,"{#IFNAME}"]','0','31d','365d','0','0','','bps','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','eea37c3779994ac5b35bb3b125429340','0','2','0'),
('29437','18','','10285','Interface {#IFNAME}({#IFALIAS}): Bits sent','net.if.out[node_exporter,"{#IFNAME}"]','0','31d','365d','0','0','','bps','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','ddc4111fefec473e8d8b079f6eb50c05','0','2','0'),
('29438','18','','10285','Interface {#IFNAME}({#IFALIAS}): Outbound packets with errors','net.if.out.errors[node_exporter"{#IFNAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','4ffe74b94eb14a4ea61c0df790d0920f','0','2','0'),
('29439','18','','10285','Interface {#IFNAME}({#IFALIAS}): Inbound packets with errors','net.if.in.errors[node_exporter,"{#IFNAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','f6b39f743bb6438d876236ae651f68ee','0','2','0'),
('29440','18','','10285','Interface {#IFNAME}({#IFALIAS}): Inbound packets discarded','net.if.in.discards[node_exporter,"{#IFNAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','ee28aff27b4f40eaa8e903ce3fab8555','0','2','0'),
('29441','18','','10285','Interface {#IFNAME}({#IFALIAS}): Outbound packets discarded','net.if.out.discards[node_exporter,"{#IFNAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','aec995b7fe724823bdb41f134594b648','0','2','0'),
('29442','18','','10285','Interface {#IFNAME}({#IFALIAS}): Speed','net.if.speed[node_exporter,"{#IFNAME}"]','0','31d','0','0','3','','bps','','',NULL,NULL,'','','0','','','','','2',NULL,'Sets value to "0" if metric is missing in `node_exporter` output.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','51f9a39ad6d940ae914cd0a350d83dab','0','2','0'),
('29443','18','','10285','Interface {#IFNAME}({#IFALIAS}): Interface type','net.if.type[node_exporter,"{#IFNAME}"]','0','31d','0','0','3','','','','',NULL,'128','','','0','','','','','2',NULL,'node_network_protocol_type protocol_type value of /sys/class/net/<iface>.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','ce9cfd9880c44aaea18cfa2ab2fdf0e1','0','2','0'),
('29444','18','','10285','Interface {#IFNAME}({#IFALIAS}): Operational status','net.if.status[node_exporter,"{#IFNAME}"]','0','31d','0','0','3','','','','',NULL,'64','','','0','','','','','2',NULL,'Reference: https://www.kernel.org/doc/Documentation/networking/operstates.txt','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','4097f76d86cd417db586c5973e1da90b','0','2','0'),
('29445','18','','10285','FS [{#FSNAME}]: Space: Available','vfs.fs.free[node_exporter,"{#FSNAME}"]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'Available storage space expressed in bytes.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','3a3edb8bf5a74a63baa27c64d1a44493','0','2','0'),
('29446','18','','10285','FS [{#FSNAME}]: Space: Total','vfs.fs.total[node_exporter,"{#FSNAME}"]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'Total space expressed in bytes.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','acb3d42ae23b48cbacd0e99c27697798','0','2','0'),
('29447','18','','10285','FS [{#FSNAME}]: Inodes: Free, in %','vfs.fs.inode.pfree[node_exporter,"{#FSNAME}"]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'Free metadata space expressed as a percentage.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','ee1dad3677214561baafa6d930358ee0','0','2','0'),
('29448','18','','10285','{#DEVNAME}: Disk read rate','vfs.dev.read.rate[node_exporter,"{#DEVNAME}"]','0','31d','365d','0','0','','!r/s','','',NULL,NULL,'','','0','','','','','2',NULL,'r/s. The number (after merges) of read requests completed per second for the device.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','dcd6f61ffb2f491ba78845514654a8cf','0','2','0'),
('29449','18','','10285','{#DEVNAME}: Disk write rate','vfs.dev.write.rate[node_exporter,"{#DEVNAME}"]','0','31d','365d','0','0','','!w/s','','',NULL,NULL,'','','0','','','','','2',NULL,'w/s. The number (after merges) of write requests completed per second for the device.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','806ba0a56fab4b5094008c98bb817e2b','0','2','0'),
('29450','18','','10285','{#DEVNAME}: Disk read time (rate)','vfs.dev.read.time.rate[node_exporter,"{#DEVNAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Rate of total read time counter. Used in `r_await` calculation.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','73940f30ea2b4b88b0047e54b773b747','0','2','0'),
('29451','18','','10285','{#DEVNAME}: Disk write time (rate)','vfs.dev.write.time.rate[node_exporter,"{#DEVNAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Rate of total write time counter. Used in `w_await` calculation.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','601cc30457934b7f8f050b2cea13ccea','0','2','0'),
('29452','18','','10285','{#DEVNAME}: Disk average queue size (avgqu-sz)','vfs.dev.queue_size[node_exporter,"{#DEVNAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'The current average disk queue; the number of requests outstanding on the disk while the performance data is being collected.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','0a0949bcdf754fbe82e772ffbd69b5ba','0','2','0'),
('29453','18','','10285','{#DEVNAME}: Disk utilization','vfs.dev.util[node_exporter,"{#DEVNAME}"]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'This item is the percentage of elapsed time during which the selected disk drive was busy while servicing read or write requests.','0','30d','0','','29395','','','','','200','1','0','','','0','0','0','0','0','0','0','d087a0525500450c9a307ff21f58482a','0','2','0'),
('29687','18','','10301','Memory used','rabbitmq.node.mem_used','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The memory usage expressed in bytes.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','d6a01ec409a6449986c5c0a81ffaf914','0','2','0'),
('29688','18','','10301','Disk free alarm','rabbitmq.node.disk_free_alarm','0','31d','365d','0','3','','','','',NULL,'136','','','0','','','','','0',NULL,'It checks whether the node has a disk alarm or not.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','d8de1eb13f024ce99388fc4bb68d6ad0','0','2','0'),
('29691','18','','10301','Used file descriptors','rabbitmq.node.fd_used','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The descriptors of the used file.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','09aeab86c69846eb82d27c2f82f46d2b','0','2','0'),
('29692','18','','10301','Uptime','rabbitmq.node.uptime','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'Uptime expressed in milliseconds.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','a28b6c8cca5544b79c2d9946c1978c7e','0','2','0'),
('29693','18','','10301','Memory alarm','rabbitmq.node.mem_alarm','0','31d','365d','0','3','','','','',NULL,'136','','','0','','','','','0',NULL,'It checks whether the host has a memory alarm or not.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','e059b278ba384133a72dc723c2b2c40b','0','2','0'),
('29694','18','','10301','Memory limit','rabbitmq.node.mem_limit','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The memory usage with high watermark properties expressed in bytes.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','54bd4a47d635444e8e2e955325dbb976','0','2','0'),
('29695','18','','10301','Is running','rabbitmq.node.running','0','31d','365d','0','3','','','','',NULL,'17','','','0','','','','','0',NULL,'It "sees" whether the node is running or not.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','087fcb3992ef4e35bacd4b6e69ef93d3','0','2','0'),
('29696','18','','10301','Number of network partitions','rabbitmq.node.partitions','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of network partitions, which this node "sees".','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','5e8c1ed0b073461eb14477edac3c756a','0','2','0'),
('29697','18','','10301','Sockets available','rabbitmq.node.sockets_total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The file descriptors available for use as sockets.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','3aa508520f224150a05a7ebb64d22c5e','0','2','0'),
('29698','18','','10301','Free disk space','rabbitmq.node.disk_free','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The current free disk space.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','7dad79be93bd46bba7a2540b38080b06','0','2','0'),
('29699','18','','10301','Runtime run queue','rabbitmq.node.run_queue','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The average number of Erlang processes waiting to run.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','1ae6f429e99d4ddaa54aa6adab6b8100','0','2','0'),
('29700','18','','10301','Disk free limit','rabbitmq.node.disk_free_limit','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The free space limit of a disk expressed in bytes.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','4e62b476bd11497f9190d1f720f22f75','0','2','0'),
('29701','18','','10301','Sockets used','rabbitmq.node.sockets_used','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of file descriptors used as sockets.','0','30d','0','','29654','','','','','200','1','0','','','0','0','0','0','0','0','0','de2cbe02ff6c47d78b6c7105709f4805','0','2','0'),
('29703','18','','10301','Queues discovery','rabbitmq.queues.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The metrics for an individual queue.','0','7d','1','','29661','','','','','200','1','0','','','0','0','0','0','0','0','0','d1d32fc6ae1f445a98144a31214ca825','0','2','0'),
('29746','18','','10302','Messages returned redeliver','rabbitmq.overview.messages.redeliver','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of subset of messages in the `deliver_get`, which had the `redelivered` flag set.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','6c0d428069a84443affba5b1a7f886bc','0','2','0'),
('29747','18','','10302','Messages returned unroutable per second','rabbitmq.overview.messages.return_unroutable.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) returned to a publisher as unroutable.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','e2983b5d27294b92b658070e0ef0a2ca','0','2','0'),
('29748','18','','10302','Messages returned unroutable','rabbitmq.overview.messages.return_unroutable','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of messages returned to a publisher as unroutable.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','70ab0718b7784a8280c99b6af21d909a','0','2','0'),
('29749','18','','10302','Messages publish_out per second','rabbitmq.overview.messages.publish_out.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) published from this overview into queues.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','c1a7ca5a475449b4b4d916693acd515b','0','2','0'),
('29750','18','','10302','Messages publish_out','rabbitmq.overview.messages.publish_out','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of messages published from this overview into queues.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','8d5523cd5120462f903af9b67e2abb10','0','2','0'),
('29751','18','','10302','Messages publish_in per second','rabbitmq.overview.messages.publish_in.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) published from the channels into this overview.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','8078d1269b0f4650b2a2c8d0f7de8bfd','0','2','0'),
('29752','18','','10302','Messages publish_in','rabbitmq.overview.messages.publish_in','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of messages published from the channels into this overview.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','ebe18f0f04fe4c098283cfeab6ebb716','0','2','0'),
('29753','18','','10302','Messages published per second','rabbitmq.overview.messages.publish.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages published per second.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','e386d202d87c442c94ea6151af8f1c45','0','2','0'),
('29754','18','','10302','Messages published','rabbitmq.overview.messages.publish','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of published messages.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','af401642e23241f38b453ce65439a3fb','0','2','0'),
('29755','18','','10302','Messages delivered per second','rabbitmq.overview.messages.deliver_get.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of the sum of messages (per second) delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','483b3ccd192a4f7a8142da5fc3303d63','0','2','0'),
('29756','18','','10302','Messages delivered','rabbitmq.overview.messages.deliver_get','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','fa4dcdd9a76c47fb8b3e0e238077f591','0','2','0'),
('29757','18','','10302','Messages confirmed per second','rabbitmq.overview.messages.confirm.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages confirmed per second.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','302caaded1ec40a984c13c3eab6f7509','0','2','0'),
('29758','18','','10302','Messages confirmed','rabbitmq.overview.messages.confirm','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of confirmed messages.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','5f2ae9a4ca0643c6b3d3e7b1ed36f3e4','0','2','0'),
('29759','18','','10302','Messages acknowledged per second','rabbitmq.overview.messages.ack.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) delivered to clients and acknowledged.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','b7c9ca566af64e62bc450752d5cd7777','0','2','0'),
('29760','18','','10302','Messages acknowledged','rabbitmq.overview.messages.ack','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of messages delivered to clients and acknowledged.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','94ffc83030e84d93a2bcafc9fc1b307b','0','2','0'),
('29761','18','','10302','Messages unacknowledged','rabbitmq.overview.queue_totals.messages.unacknowledged','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of unacknowledged messages.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','3403648d6b964edd8c390e2c175b068a','0','2','0'),
('29762','18','','10302','Messages ready for delivery','rabbitmq.overview.queue_totals.messages.ready','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of messages ready for delivery.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','7c7e5c4111ff464b913a43b59fcb2e9b','0','2','0'),
('29763','18','','10302','Messages total','rabbitmq.overview.queue_totals.messages','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of messages (ready, plus unacknowledged).','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','c9bc0b0a61be4412bfc31cb725bbe837','0','2','0'),
('29764','18','','10302','Exchanges total','rabbitmq.overview.object_totals.exchanges','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of exchanges.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','1b98a03a243c4b698faa93228cb9cfb0','0','2','0'),
('29765','18','','10302','Consumers total','rabbitmq.overview.object_totals.consumers','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of consumers.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','4b02b27b8091430eb80e6451935848d8','0','2','0'),
('29766','18','','10302','Queues total','rabbitmq.overview.object_totals.queues','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of queues.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','011491d6f5954cf3bf37ee45a62a4d86','0','2','0'),
('29767','18','','10302','Channels total','rabbitmq.overview.object_totals.channels','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of channels.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','787ea966afd741b99bbdce665aebf15a','0','2','0'),
('29768','18','','10302','Connections total','rabbitmq.overview.object_totals.connections','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of connections.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','3b488cdb79ac4b95abe55ddec9f74dd1','0','2','0'),
('29769','18','','10302','Messages returned redeliver per second','rabbitmq.overview.messages.redeliver.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of subset of messages (per second) in the `deliver_get`, which had the `redelivered` flag set.','0','30d','0','','29738','','','','','200','1','0','','','0','0','0','0','0','0','0','7d239c3cb6604521b1291bce0dbdf10c','0','2','0'),
('29771','18','','10303','Number of network partitions','rabbitmq.node.partitions','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of network partitions, which this node "sees".','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','ac9282c012bd4249a096a462d21dcf62','0','2','0'),
('29772','18','','10303','Uptime','rabbitmq.node.uptime','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'Uptime expressed in milliseconds.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','65a2fd59ddfe413b9259c547338f3351','0','2','0'),
('29773','18','','10303','Disk free alarm','rabbitmq.node.disk_free_alarm','0','31d','365d','0','3','','','','',NULL,'137','','','0','','','','','0',NULL,'It checks whether the node has a disk alarm or not.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','38099990b854421ca39f178b9c9be016','0','2','0'),
('29774','18','','10303','Memory alarm','rabbitmq.node.mem_alarm','0','31d','365d','0','3','','','','',NULL,'137','','','0','','','','','0',NULL,'It checks whether the host has a memory alarm or not.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','70ec112fc828476e96a469e0f94fc415','0','2','0'),
('29775','18','','10303','Is running','rabbitmq.node.running','0','31d','365d','0','3','','','','',NULL,'18','','','0','','','','','0',NULL,'It "sees" whether the node is running or not.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','5f819282c32b49039a2dae56b9be23cd','0','2','0'),
('29776','18','','10303','Sockets used','rabbitmq.node.sockets_used','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of file descriptors used as sockets.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','31455694c0994c9d9eaa8af048e88e95','0','2','0'),
('29777','18','','10303','Sockets available','rabbitmq.node.sockets_total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The file descriptors available for use as sockets.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','16f4f6a6d8f14980a6edcc2d84b0cd8d','0','2','0'),
('29779','18','','10303','Runtime run queue','rabbitmq.node.run_queue','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The average number of Erlang processes waiting to run.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','ddc906d9a969401ebf520490e62f4086','0','2','0'),
('29780','18','','10303','Memory used','rabbitmq.node.mem_used','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The memory usage expressed in bytes.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','9e4f2c0cb6604364ab0a2b4def7466e2','0','2','0'),
('29781','18','','10303','Disk free limit','rabbitmq.node.disk_free_limit','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The free space limit of a disk expressed in bytes.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','ce9f4b99c77545fb8acd596d72725898','0','2','0'),
('29782','18','','10303','Free disk space','rabbitmq.node.disk_free','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The current free disk space.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','8cb8f380645f4d7f8250b110acd47d1c','0','2','0'),
('29783','18','','10303','Used file descriptors','rabbitmq.node.fd_used','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The descriptors of the used file.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','fae24c176bd34b81b0f578883c5c2760','0','2','0'),
('29784','18','','10303','Memory limit','rabbitmq.node.mem_limit','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'The memory usage with high watermark properties expressed in bytes.','0','30d','0','','29741','','','','','200','1','0','','','0','0','0','0','0','0','0','2445b494bf0648248b333d6f0afd95a2','0','2','0'),
('29785','18','','10302','Exchanges discovery','rabbitmq.exchanges.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The metrics for an individual exchange.','0','7d','1','','29739','','','','','200','1','0','','','0','0','0','0','0','0','0','689cf8096c0c49099e2b56c5b639d3c6','0','2','0'),
('29786','18','','10303','Queues discovery','rabbitmq.queues.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The metrics for an individual queue.','0','7d','1','','29745','','','','','200','1','0','','','0','0','0','0','0','0','0','cc1d85b6045b44b38f588cd9a4c6c62d','0','2','0'),
('29821','18','','10261','Utilization of alert syncer internal processes, in %','process.alert_syncer.avg.busy','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','0',NULL,'The average percentage of the time during which the alert syncer processes have been busy for the last minute.','0','30d','0','','28539','','','','','200','1','0','','','0','0','0','0','0','0','0','236699e6400c4ae3a20868c79fd35027','0','2','0'),
('30000','18','','10300','Messages returned redeliver','rabbitmq.overview.messages.redeliver','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of subset of messages in the `deliver_get`, which had the `redelivered` flag set.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','650d6a94e381477299c62cfb2a2252cf','0','2','0'),
('30001','18','','10300','Messages returned unroutable per second','rabbitmq.overview.messages.return_unroutable.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) returned to a publisher as unroutable.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','72267cce69cf490ea626ff3ae17b6362','0','2','0'),
('30002','18','','10300','Messages returned unroutable','rabbitmq.overview.messages.return_unroutable','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of messages returned to a publisher as unroutable.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','e3faec09ae0a4d7aa8aab50d71de7bb3','0','2','0'),
('30003','18','','10300','Messages publish_out per second','rabbitmq.overview.messages.publish_out.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) published from this overview into queues.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','05e4c745be95412995749c352ec0f925','0','2','0'),
('30004','18','','10300','Messages publish_out','rabbitmq.overview.messages.publish_out','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of messages published from this overview into queues.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','23dcb85dd9bc4fefb1a9682956181c2e','0','2','0'),
('30005','18','','10300','Messages publish_in per second','rabbitmq.overview.messages.publish_in.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) published from the channels into this overview.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','db511bf1cd6c465f8fe1ae6b5fa08660','0','2','0'),
('30006','18','','10300','Messages publish_in','rabbitmq.overview.messages.publish_in','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of messages published from the channels into this overview.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','bb068ac7c6094fb8a59cd1a003e88c39','0','2','0'),
('30007','18','','10300','Messages published per second','rabbitmq.overview.messages.publish.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages published per second.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','cfadadb681474c7eb0512d1f4d223ff6','0','2','0'),
('30008','18','','10300','Messages published','rabbitmq.overview.messages.publish','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of published messages.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','4215bdf87f0e426f85bd79434a0fb0bb','0','2','0'),
('30009','18','','10300','Messages delivered per second','rabbitmq.overview.messages.deliver_get.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of the sum of messages (per second) delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','c00a84c8676544dcbdd74fec13881063','0','2','0'),
('30010','18','','10300','Messages delivered','rabbitmq.overview.messages.deliver_get','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','004da545af4a4f61bd2167281bb9a02b','0','2','0'),
('30011','18','','10300','Messages confirmed per second','rabbitmq.overview.messages.confirm.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages confirmed per second.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','bc85a070e1e9451b953d85bb519ed63d','0','2','0'),
('30012','18','','10300','Messages confirmed','rabbitmq.overview.messages.confirm','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The count of confirmed messages.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','45cf9b5cf5cd4b13b0e140383233799f','0','2','0'),
('30013','18','','10300','Messages acknowledged per second','rabbitmq.overview.messages.ack.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of messages (per second) delivered to clients and acknowledged.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','f78fabbd7e3f44dc81b1cf9c90b26f2e','0','2','0'),
('30014','18','','10300','Messages acknowledged','rabbitmq.overview.messages.ack','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of messages delivered to clients and acknowledged.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','31908a8287be442681a0ded564977ff2','0','2','0'),
('30015','18','','10300','Messages unacknowledged','rabbitmq.overview.queue_totals.messages.unacknowledged','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of unacknowledged messages.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','6cf09ed9d244464288c8050b10622e3a','0','2','0'),
('30016','18','','10300','Messages ready for delivery','rabbitmq.overview.queue_totals.messages.ready','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The number of messages ready for delivery.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','efaabe175e5f4fffa8a810ea35753475','0','2','0'),
('30017','18','','10300','Messages total','rabbitmq.overview.queue_totals.messages','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of messages (ready, plus unacknowledged).','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','c98b2b3dd2bd4fec9e7c571bc631167b','0','2','0'),
('30018','18','','10300','Exchanges total','rabbitmq.overview.object_totals.exchanges','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of exchanges.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','be0b952e5d08409aa2c65fe143a9193c','0','2','0'),
('30019','18','','10300','Consumers total','rabbitmq.overview.object_totals.consumers','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of consumers.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','c39007dbd4374bee943d61b7e90c0f01','0','2','0'),
('30020','18','','10300','Queues total','rabbitmq.overview.object_totals.queues','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of queues.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','d7c86b4921f54924af1b72cd2493da1c','0','2','0'),
('30021','18','','10300','Channels total','rabbitmq.overview.object_totals.channels','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of channels.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','2b03117e863348ee84d94acfe877ef7f','0','2','0'),
('30022','18','','10300','Connections total','rabbitmq.overview.object_totals.connections','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total number of connections.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','b3cdd6739a964447b524df4fdd726434','0','2','0'),
('30023','18','','10300','Messages returned redeliver per second','rabbitmq.overview.messages.redeliver.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The rate of subset of messages (per second) in the `deliver_get`, which had the `redelivered` flag set.','0','30d','0','','29998','','','','','200','1','0','','','0','0','0','0','0','0','0','6d7eb8880bca4c6e92f65f8a32911599','0','2','0'),
('30024','18','','10301','Management plugin version','rabbitmq.node.overview.management_version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The version of the management plugin in use.','0','30d','0','','29653','','','','','200','1','0','','','0','0','0','0','0','0','0','db91f84a5ad7412c959fbfe4e3b6df88','0','2','0'),
('30025','18','','10301','RabbitMQ version','rabbitmq.node.overview.rabbitmq_version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The version of the RabbitMQ on the node, which processed this request.','0','30d','0','','29653','','','','','200','1','0','','','0','0','0','0','0','0','0','52a0be5049ee40748761d301a644315b','0','2','0'),
('30026','18','','10300','Exchanges discovery','rabbitmq.exchanges.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'The metrics for an individual exchange.','0','7d','1','','29999','','','','','200','1','0','','','0','0','0','0','0','0','0','e28b4491721d4dbf8eded86a5caeabc2','0','2','0'),
('30044','18','','10303','Management plugin version','rabbitmq.node.overview.management_version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The version of the management plugin in use.','0','30d','0','','30043','','','','','200','1','0','','','0','0','0','0','0','0','0','129026dd49124ff2ba4f0bcc7f1fa9de','0','2','0'),
('30045','18','','10303','RabbitMQ version','rabbitmq.node.overview.rabbitmq_version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The version of the RabbitMQ on the node, which processed this request.','0','30d','0','','30043','','','','','200','1','0','','','0','0','0','0','0','0','0','d63d8001d5134e2590d3e7ca8b62958c','0','2','0'),
('30131','18','','10236','#{#SNMPVALUE}: Memory utilization','vm.memory.util[tpSysMonitorMemoryUtilization.{#SNMPINDEX}]','0','31d','365d','0','0','','%','','',NULL,NULL,'','','0','','','','','2',NULL,'MIB: TPLINK-SYSMONITOR-MIB
Displays the memory utilization.
Reference: http://www.tp-link.com/faq-1330.html','0','30d','0','','45478','','','','','200','1','0','','','0','0','0','0','0','0','0','5800682fc8f8439eb404707f995ec9a6','0','2','0'),
('30191','18','','10308','Uptime','haproxy.uptime','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30190','','','','','200','1','0','','','0','0','0','0','0','0','0','29381f1e0bdc4628a82ef1b7724f2e6f','0','2','0'),
('30192','18','','10308','Version','haproxy.version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30190','','','','','200','1','0','','','0','0','0','0','0','0','0','e930e70fb1b44d9cbe673f35133c6e77','0','2','0'),
('30234','18','','10309','Uptime','haproxy.uptime','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30231','','','','','200','1','0','','','0','0','0','0','0','0','0','06a33ebaed3148889c19eba2de859d70','0','2','0'),
('30235','18','','10309','Version','haproxy.version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30231','','','','','200','1','0','','','0','0','0','0','0','0','0','a2cd747feaaf4c278972ac7adbd9015a','0','2','0'),
('30311','18','','10310','Cluster enabled','redis.cluster.enabled','0','31d','365d','0','3','','','','',NULL,'144','','','0','','','','','0',NULL,'Indicate Redis cluster is enabled','0','30d','0','','30276','','','','','200','1','0','','','0','0','0','0','0','0','0','74f9fe26bdaf4a7bb86214bd7d500363','0','2','0'),
('30312','18','','10310','Max clients','redis.config.maxclients','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Max number of connected clients at the same time.
Once the limit is reached Redis will close all the new connections sending an error "max number of clients reached".','0','30d','0','','30275','','','','','200','1','0','','','0','0','0','0','0','0','0','066486e3be25406185e624611eeb167a','0','2','0'),
('30436','18','','10316','InnoDB buffer pool reads','mysql.innodb_buffer_pool_reads','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical reads that InnoDB could not satisfy from the buffer pool and had to read directly from the disk.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','7738a4480f69427a96d46a9ca5b38d77','0','2','0'),
('30437','18','','10316','InnoDB buffer pool reads per second','mysql.innodb_buffer_pool_reads.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical reads per second that InnoDB could not satisfy from the buffer pool and had to read directly from the disk.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','1704fe0bf8de4882a6a16ebd75c4c3bf','0','2','0'),
('30438','18','','10316','InnoDB row lock time','mysql.innodb_row_lock_time','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'The total time spent in acquiring row locks for InnoDB tables, in milliseconds.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','3811018fdfaf4d92a5b8ff5d631d0047','0','2','0'),
('30439','18','','10316','InnoDB row lock time max','mysql.innodb_row_lock_time_max','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'The maximum time to acquire a row lock for InnoDB tables, in milliseconds.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','579c1ad7680349a3b6a25dd12322fc14','0','2','0'),
('30440','18','','10316','InnoDB row lock waits','mysql.innodb_row_lock_waits','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of times operations on InnoDB tables had to wait for a row lock.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','a4618dd9ed1d4ff19f34bc82f41dbbbb','0','2','0'),
('30441','18','','10316','Max used connections','mysql.max_used_connections','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The maximum number of connections that have been in use simultaneously since the server start.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','e207dc3c0fe84928a36e643594d8cee5','0','2','0'),
('30442','18','','10316','Queries per second','mysql.queries.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of statements executed by the server. This variable includes statements executed within stored programs, unlike the `Questions` variable.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','c11b8c8ec3e843cea63f6cc1d8309ccd','0','2','0'),
('30443','18','','10316','InnoDB buffer pool read requests','mysql.innodb_buffer_pool_read_requests','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical read requests.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','598dcdb7eeec42c78484be70c814cd8a','0','2','0'),
('30444','18','','10316','Questions per second','mysql.questions.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of statements executed by the server. This includes only statements sent to the server by clients and not statements executed within stored programs, unlike the `Queries` variable.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','cd7c5c4e262f4a73975d46d06ed903f9','0','2','0'),
('30445','18','','10316','Slow queries per second','mysql.slow_queries.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of queries that have taken more than `long_query_time` seconds.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','a1cfc616f23648e9946f408c7146df0a','0','2','0'),
('30446','18','','10316','Threads cached','mysql.threads_cached','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of threads in the thread cache.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','a9ce1d75a97d4740876fad7b5d569211','0','2','0'),
('30447','18','','10316','Threads connected','mysql.threads_connected','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of currently open connections.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','a0079f5ffbdc40cc89b35a8b6170c32b','0','2','0'),
('30449','18','','10316','Threads running','mysql.threads_running','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of threads that are not sleeping.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','255c00a984ba462e84ba46a7430f21c9','0','2','0'),
('30450','18','','10316','Uptime','mysql.uptime','0','31d','365d','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of seconds that the server has been up.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','6ffa704603014f0f9f765590955fb01c','0','2','0'),
('30451','18','','10316','InnoDB buffer pool read requests per second','mysql.innodb_buffer_pool_read_requests.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical read requests per second.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','3ed432f4e0c949debaed9d60c5d13810','0','2','0'),
('30452','18','','10316','InnoDB buffer pool pages total','mysql.innodb_buffer_pool_pages_total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total size of the InnoDB buffer pool, in pages.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','efb2450fe30c4ec78b954a35595b7ac7','0','2','0'),
('30453','18','','10316','Bytes received','mysql.bytes_received.rate','0','31d','365d','0','0','','Bps','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of bytes received from all clients.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','56512a1e89d34826ad261ab27119e80d','0','2','0'),
('30454','18','','10316','Connection errors max connections per second','mysql.connection_errors_max_connections.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of refused connections due to the `max_connections` limit being reached.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','3cbc55fc7b764a61baceb11e98fd454c','0','2','0'),
('30455','18','','10316','Bytes sent','mysql.bytes_sent.rate','0','31d','365d','0','0','','Bps','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of bytes sent to all clients.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','c4cea16e3dbe4d328d9a50e113f3b904','0','2','0'),
('30456','18','','10316','Command Delete per second','mysql.com_delete.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_delete` counter variable indicates the number of times the `DELETE` statement has been executed.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','24ab8f0bd32a45f591c676ef839876df','0','2','0'),
('30457','18','','10316','Command Insert per second','mysql.com_insert.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_insert` counter variable indicates the number of times the `INSERT` statement has been executed.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','e48c67c893e5494fb00ea31222bd2caf','0','2','0'),
('30458','18','','10316','Command Select per second','mysql.com_select.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_select` counter variable indicates the number of times the `SELECT` statement has been executed.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','718c3af61f2645e8ab7d3496d6639c79','0','2','0'),
('30459','18','','10316','Command Update per second','mysql.com_update.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_update` counter variable indicates the number of times the `UPDATE` statement has been executed.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','e2c3ea26dd34472c9e5f0e48a67da6dd','0','2','0'),
('30460','18','','10316','Connection errors accept per second','mysql.connection_errors_accept.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of errors that occurred during calls to `accept()` on the listening port.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','dc963a1250ab453cb090af0154d745c3','0','2','0'),
('30461','18','','10316','Connection errors internal per second','mysql.connection_errors_internal.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of refused connections due to internal server errors, for example, out of memory errors, or failed thread starts.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','4cff4caf382f4f00b534651212132bd2','0','2','0'),
('30462','18','','10316','Connection errors peer address per second','mysql.connection_errors_peer_address.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of errors while searching for the connecting client''s IP address.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','e577b4b6c553401bbb831b7278dbbcb7','0','2','0'),
('30463','18','','10316','InnoDB buffer pool pages free','mysql.innodb_buffer_pool_pages_free','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total size of the InnoDB buffer pool, in pages.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','a9b965a07b504fa1b4e90acae0156221','0','2','0'),
('30464','18','','10316','Connection errors select per second','mysql.connection_errors_select.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of errors during calls to `select()` or `poll()` on the listening port. The client would not necessarily have been rejected in these cases.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','228aaf5333ce4958aa3a07e0898add63','0','2','0'),
('30465','18','','10316','Connection errors tcpwrap per second','mysql.connection_errors_tcpwrap.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of connections the libwrap library has refused.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','a7632124b2b648bfa80a2e8a0381f4d2','0','2','0'),
('30466','18','','10316','Connections per second','mysql.connections.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of connection attempts (successful or not) to the MySQL server.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','bcf8a21aacc54a79a958604b278f9617','0','2','0'),
('30470','18','','10316','Aborted connections per second','mysql.aborted_connects.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of failed attempts to connect to the MySQL server.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','d33a03e48f6d45dca04a505bab07a860','0','2','0'),
('30471','18','','10316','Aborted clients per second','mysql.aborted_clients.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of connections that were aborted because the client died without closing the connection properly.','0','30d','0','','30433','','','','','200','1','0','','','0','0','0','0','0','0','0','b463e01655bf4dec81d5208f7a75766b','0','2','0'),
('30476','18','','10316','Replication Seconds Behind Master {#MASTER_HOST}','mysql.seconds_behind_master["{#MASTER_HOST}"]','0','31d','365d','0','3','','s','','',NULL,NULL,'','','0','','','','','2',NULL,'The number of seconds that the slave SQL thread is behind processing the master binary log.
A high number (or an increasing one) can indicate that the slave is unable to handle events
from the master in a timely fashion.','0','30d','0','','30475','','','','','200','1','0','','','0','0','0','0','0','0','0','48555d71074f4cd4a61dca6187c8b29a','0','2','0'),
('30477','18','','10316','Replication Slave IO Running {#MASTER_HOST}','mysql.slave_io_running["{#MASTER_HOST}"]','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Whether the I/O thread for reading the master''s binary log is running.
Normally, you want this to be Yes unless you have not yet started replication or have
explicitly stopped it with STOP SLAVE.','0','30d','0','','30475','','','','','200','1','0','','','0','0','0','0','0','0','0','1c075f4785604d92a33a868e213070d8','0','2','0'),
('30478','18','','10316','Replication Slave SQL Running {#MASTER_HOST}','mysql.slave_sql_running["{#MASTER_HOST}"]','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Whether the SQL thread for executing events in the relay log is running.
As with the I/O thread, this should normally be Yes.','0','30d','0','','30475','','','','','200','1','0','','','0','0','0','0','0','0','0','967c6fd13cc04562a9fea174bd90b8c4','0','2','0'),
('30484','18','','10317','InnoDB row lock waits','mysql.innodb_row_lock_waits','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of times operations on InnoDB tables had to wait for a row lock.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','17c4270927a74d8388da8c25d9065556','0','2','0'),
('30485','18','','10317','InnoDB buffer pool read requests','mysql.innodb_buffer_pool_read_requests','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical read requests.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','0a1775a7de33464e9ce8134950527021','0','2','0'),
('30486','18','','10317','InnoDB buffer pool read requests per second','mysql.innodb_buffer_pool_read_requests.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical read requests per second.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','98684abf32e642bd8784e68e64357dc9','0','2','0'),
('30487','18','','10317','InnoDB buffer pool reads','mysql.innodb_buffer_pool_reads','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical reads that InnoDB could not satisfy from the buffer pool and had to read directly from the disk.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','441b718148974e289db93299f869feba','0','2','0'),
('30488','18','','10317','InnoDB buffer pool reads per second','mysql.innodb_buffer_pool_reads.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of logical reads per second that InnoDB could not satisfy from the buffer pool and had to read directly from the disk.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','22ae5946fc2548cf8eee39a57ce8512b','0','2','0'),
('30489','18','','10317','InnoDB row lock time','mysql.innodb_row_lock_time','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'The total time spent in acquiring row locks for InnoDB tables, in milliseconds.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','a62951afcfbd44e595a4d294b24056e5','0','2','0'),
('30490','18','','10317','InnoDB row lock time max','mysql.innodb_row_lock_time_max','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','0',NULL,'The maximum time to acquire a row lock for InnoDB tables, in milliseconds.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','22277695b7154c019a76ca730e68e833','0','2','0'),
('30491','18','','10317','Queries per second','mysql.queries.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of statements executed by the server. This variable includes statements executed within stored programs, unlike the `Questions` variable.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','2f0ced88c4524455bf790b3bc6512d04','0','2','0'),
('30492','18','','10317','Max used connections','mysql.max_used_connections','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The maximum number of connections that have been in use simultaneously since the server start.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','6106ebf4cae842c1a5acc2f13518de4f','0','2','0'),
('30493','18','','10317','InnoDB buffer pool pages free','mysql.innodb_buffer_pool_pages_free','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total size of the InnoDB buffer pool, in pages.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','e31f66bbc32b404c92debc4d9367162d','0','2','0'),
('30494','18','','10317','Questions per second','mysql.questions.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of statements executed by the server. This includes only statements sent to the server by clients and not statements executed within stored programs, unlike the `Queries` variable.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','8d0fc2eb0be94d68966e09fca88e8deb','0','2','0'),
('30495','18','','10317','Slow queries per second','mysql.slow_queries.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of queries that have taken more than `long_query_time` seconds.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','b0227399437f4219b65ab1511d5e67c6','0','2','0'),
('30496','18','','10317','Threads cached','mysql.threads_cached','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of threads in the thread cache.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','b675fd71138a4845965309dc5d6428d9','0','2','0'),
('30497','18','','10317','Threads connected','mysql.threads_connected','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of currently open connections.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','af56c636c8b94e4f9976d0d6cf60fcbb','0','2','0'),
('30499','18','','10317','Threads running','mysql.threads_running','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of threads that are not sleeping.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','c41afa83f6a94efda34d7b41c95c89ac','0','2','0'),
('30500','18','','10317','InnoDB buffer pool pages total','mysql.innodb_buffer_pool_pages_total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The total size of the InnoDB buffer pool, in pages.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','41019c084618404db183326c215d71f6','0','2','0'),
('30503','18','','10317','Command Select per second','mysql.com_select.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_select` counter variable indicates the number of times the `SELECT` statement has been executed.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','31e6372d1249442ab3ebdd993f397e26','0','2','0'),
('30504','18','','10317','Aborted clients per second','mysql.aborted_clients.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of connections that were aborted because the client died without closing the connection properly.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','73235748ba4742c0aa3c4f29509a162d','0','2','0'),
('30505','18','','10317','Aborted connections per second','mysql.aborted_connects.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of failed attempts to connect to the MySQL server.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','b6185e79abd744f78ce579a83381ba87','0','2','0'),
('30506','18','','10317','Bytes received','mysql.bytes_received.rate','0','31d','365d','0','0','','Bps','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of bytes received from all clients.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','f05d592e6ae74e64bc54c649418761a6','0','2','0'),
('30507','18','','10317','Bytes sent','mysql.bytes_sent.rate','0','31d','365d','0','0','','Bps','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of bytes sent to all clients.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','ce737bc186f24014a70c75da2386986d','0','2','0'),
('30508','18','','10317','Command Delete per second','mysql.com_delete.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_delete` counter variable indicates the number of times the `DELETE` statement has been executed.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','a43ec23dad9345a5a1b0ff8bda12ed77','0','2','0'),
('30509','18','','10317','Command Insert per second','mysql.com_insert.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_insert` counter variable indicates the number of times the `INSERT` statement has been executed.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','cd924e3b51074b3baf642a7aa1eeb474','0','2','0'),
('30510','18','','10317','Command Update per second','mysql.com_update.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'The `Com_update` counter variable indicates the number of times the `UPDATE` statement has been executed.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','0f5f638777284093bcdc5f2dacc8e951','0','2','0'),
('30512','18','','10317','Connection errors accept per second','mysql.connection_errors_accept.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of errors that occurred during calls to `accept()` on the listening port.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','4b67e0e6291b4e0c841334ac052d7253','0','2','0'),
('30513','18','','10317','Connection errors internal per second','mysql.connection_errors_internal.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of refused connections due to internal server errors, for example, out of memory errors, or failed thread starts.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','76ad3a39e89e44daad08cc00174d4918','0','2','0'),
('30514','18','','10317','Connection errors max connections per second','mysql.connection_errors_max_connections.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of refused connections due to the `max_connections` limit being reached.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','83dfb916c7674e1fbd300be444241e25','0','2','0'),
('30515','18','','10317','Connection errors peer address per second','mysql.connection_errors_peer_address.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of errors while searching for the connecting client''s IP address.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','9be4cb9e209344d0869a56082d16ec53','0','2','0'),
('30516','18','','10317','Connection errors select per second','mysql.connection_errors_select.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of errors during calls to `select()` or `poll()` on the listening port. The client would not necessarily have been rejected in these cases.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','e50b9fea89cc440abc0155dc25346f05','0','2','0'),
('30517','18','','10317','Connection errors tcpwrap per second','mysql.connection_errors_tcpwrap.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of connections the libwrap library has refused.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','a82a7ada012141c6bdff63bc8d615786','0','2','0'),
('30518','18','','10317','Connections per second','mysql.connections.rate','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of connection attempts (successful or not) to the MySQL server.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','fad5f4e1885341d1958f653afb85ff07','0','2','0'),
('30519','18','','10317','Uptime','mysql.uptime','0','31d','365d','0','3','','uptime','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of seconds that the server has been up.','0','30d','0','','30479','','','','','200','1','0','','','0','0','0','0','0','0','0','8fbad224ebdf46e7b25a0be015f21972','0','2','0'),
('30520','18','','10317','Database discovery','mysql.database.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Used for the discovery of the databases.','0','7d','1','','46958','','','','','200','1','0','','','0','0','0','0','0','0','0','0987fb6afdae4587bc32864fa42728f2','0','2','0'),
('30521','18','','10317','Replication discovery','mysql.replication.discovery','0','90d','0','0','4','','','','',NULL,NULL,'','','0','','','','','1',NULL,'Discovery of the replication.','0','7d','0','','46959','','','','','200','1','0','','','0','0','0','0','0','0','0','d0a235c0267c48e28bc6ecb99fb2380d','0','2','0'),
('30523','18','','10317','Replication Slave status {#MASTER_HOST}','mysql.slave_status["{#MASTER_HOST}"]','0','0','0','0','4','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Gets status information on the essential parameters of the slave threads.','0','30d','0','','46959','','','','','200','1','0','','','0','0','0','0','0','0','0','d88f65c4bee84e74bb6e00061ab27f0c','0','2','0'),
('30532','18','','10318','Architecture','docker.architecture','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','1d77b27beba04822a67bdedac22ec522','0','2','0'),
('30533','18','','10318','Live restore enabled','docker.live_restore.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','671cd65ddae046f5ba9b0f83241976ac','0','2','0'),
('30534','18','','10318','Logging driver','docker.logging_driver','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','be0cb2d07d12497b8b411e094fed6087','0','2','0'),
('30535','18','','10318','Memory limit enabled','docker.mem_limit.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','b08c91f28e094c4faa3e004d3fb3057d','0','2','0'),
('30536','18','','10318','Memory total','docker.mem.total','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','e0da86d370a049e3a2d6a82e49ea1f37','0','2','0'),
('30537','18','','10318','Name','docker.name','0','1h','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','812a6b9902a44dd7a803c7218555afe7','0','2','0'),
('30538','18','','10318','NCPU','docker.ncpu','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','5e4999067e6948f893dc465f8e5a2b5f','0','2','0'),
('30539','18','','10318','Nfd','docker.nfd','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of used File Descriptors.','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','ce025599e68d447f9a1f5c076502e2f2','0','2','0'),
('30540','18','','10318','NEvents listener','docker.nevents_listener','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','f64919a3a5dc4f429f2992eb7ae5223c','0','2','0'),
('30541','18','','10318','Kernel version','docker.kernel_version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','d645713e25c74686a47cf859725e655f','0','2','0'),
('30542','18','','10318','OomKill disabled','docker.oomkill.disabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','e164279251ce471abaae599bf1885bbb','0','2','0'),
('30543','18','','10318','Operating system','docker.operating_system','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','78a5af9aa6a741d4ac976d0949414b68','0','2','0'),
('30544','18','','10318','OS type','docker.os_type','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','3acc93aa0fe64696a5560adcb3dd5acc','0','2','0'),
('30545','18','','10318','Pids limit enabled','docker.pids_limit.enabled','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','58ecaf4ae7f04316b6bf019cabadfd3e','0','2','0'),
('30546','18','','10318','Docker root dir','docker.root_dir','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','864eae0a62374f729143d6efc4f1655a','0','2','0'),
('30547','18','','10318','Server version','docker.server_version','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','a7e5441fe4d64848a7c5e374ea99ad54','0','2','0'),
('30548','18','','10318','Swap limit enabled','docker.swap_limit.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','fcbe64ee979a4787a4b0f06836b258bd','0','2','0'),
('30549','18','','10318','Layers size','docker.layers_size','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30527','','','','','200','1','0','','','0','0','0','0','0','0','0','2f512e64ba414e86806f19c0be803a3e','0','2','0'),
('30550','18','','10318','IPv4 Forwarding enabled','docker.ipv4_forwarding.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','3545c86b7db9494c94dcda09386ac827','0','2','0'),
('30551','18','','10318','Kernel memory enabled','docker.kernel_mem.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','cb1e486a170b4d668a77d0918f22e51c','0','2','0'),
('30552','18','','10318','CPU Set enabled','docker.cpu_set.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','ceddc2b06f4a4cb4acec3dc74c02ce3f','0','2','0'),
('30553','18','','10318','Containers size','docker.containers_size','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30527','','','','','200','1','0','','','0','0','0','0','0','0','0','4d116791a88d4d4e8dd4a9013f9bc39f','0','2','0'),
('30554','18','','10318','Containers paused','docker.containers.paused','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Total number of containers paused on this host.','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','75f55b1f18c54af6ad0b3045cb230bd3','0','2','0'),
('30555','18','','10318','Containers running','docker.containers.running','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Total number of containers running on this host.','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','976bf10901404fd290b6628af437e8e4','0','2','0'),
('30556','18','','10318','Containers stopped','docker.containers.stopped','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Total number of containers stopped on this host.','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','40179a84ffd14742b9df87f48a2eaa90','0','2','0'),
('30557','18','','10318','Containers total','docker.containers.total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Total number of containers on this host.','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','cacbbf17fd0144c79ecdcbf9e3ef9290','0','2','0'),
('30558','18','','10318','CPU CFS Period enabled','docker.cpu_cfs_period.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','fcf42585b871488f91a92d04b0cc748d','0','2','0'),
('30559','18','','10318','CPU CFS Quota enabled','docker.cpu_cfs_quota.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','54d3fa0099f24f75a6a414b7caf1b85a','0','2','0'),
('30560','18','','10318','CPU Shares enabled','docker.cpu_shares.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','2ad923020baf48c5a43f6c875ad45561','0','2','0'),
('30561','18','','10318','Kernel memory TCP enabled','docker.kernel_mem_tcp.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','77a61a63d6ed4583a0c39ce377b11d4f','0','2','0'),
('30562','18','','10318','Debug enabled','docker.debug.enabled','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','0a258c42f6aa4eeeb355fec491710764','0','2','0'),
('30563','18','','10318','Default runtime','docker.default_runtime','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','edb61f5ce3504f57bf32ddf2e50e4e3d','0','2','0'),
('30564','18','','10318','Storage driver','docker.driver','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Docker storage driver.
https://docs.docker.com/storage/storagedriver/','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','1ce2471ca651487288ad1aef9286da5f','0','2','0'),
('30565','18','','10318','Goroutines','docker.goroutines','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of goroutines.','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','14a7686d3bd74533aa8406297d419dfd','0','2','0'),
('30566','18','','10318','Images size','docker.images_size','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30527','','','','','200','1','0','','','0','0','0','0','0','0','0','bf4f531b727c47f0aa30de14d4b41b49','0','2','0'),
('30567','18','','10318','Images available','docker.images.top_level','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of top-level images.','0','30d','0','','30531','','','','','200','1','0','','','0','0','0','0','0','0','0','ab4a4d92e4c04ff685b687cf14414b06','0','2','0'),
('30568','18','','10318','Images total','docker.images.total','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','0',NULL,'Number of images with intermediate image layers.','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','d83337b0ea2c4f16be4b5b9c3a48755b','0','2','0'),
('30569','18','','10318','Cgroup driver','docker.cgroup_driver','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30529','','','','','200','1','0','','','0','0','0','0','0','0','0','32c441b73b90400fa0e6972798ae1f4c','0','2','0'),
('30570','18','','10318','Volumes size','docker.volumes_size','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','0',NULL,'','0','30d','0','','30527','','','','','200','1','0','','','0','0','0','0','0','0','0','6c81479dba77465ebcd335a5f3d08e19','0','2','0'),
('30575','18','','10318','Container {#NAME}: Online CPUs','docker.container_stats.online_cpus["{#NAME}"]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','a5999dfeccca44ca8679ef71876da773','0','2','0'),
('30576','18','','10318','Container {#NAME}: Memory commit bytes','docker.container_stats.memory.commit_bytes["{#NAME}"]','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','bd57aed03daa47e68acc4dc38a1697b7','0','2','0'),
('30577','18','','10318','Container {#NAME}: Memory commit peak bytes','docker.container_stats.memory.commit_peak_bytes["{#NAME}"]','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','1e110d4d78e74ca8b12a1923f73543f1','0','2','0'),
('30578','18','','10318','Container {#NAME}: Memory maximum usage','docker.container_stats.memory.max_usage["{#NAME}"]','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','b463f79d6c0644a394c3c0ba8f1d29d1','0','2','0'),
('30579','18','','10318','Container {#NAME}: Memory private working set','docker.container_stats.memory.private_working_set["{#NAME}"]','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','763c8878d2c74d069567cbcd1d53544c','0','2','0'),
('30580','18','','10318','Container {#NAME}: Memory usage','docker.container_stats.memory.usage["{#NAME}"]','0','31d','365d','0','3','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','6f39422b278b4a4398bfbd993f247fd0','0','2','0'),
('30581','18','','10318','Container {#NAME}: Created','docker.container_info.created["{#NAME}"]','0','31d','365d','0','3','','unixtime','','',NULL,'1084','','','0','','','','','2',NULL,'','0','30d','0','','30574','','','','','200','1','0','','','0','0','0','0','0','0','0','2c5d0902f43343ef85a9067cf3d59cfd','0','2','0'),
('30582','18','','10318','Container {#NAME}: CPU total usage per second','docker.container_stats.cpu_usage.total.rate["{#NAME}"]','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','2c21d9b3968c43e68231ddc5b2d05808','0','2','0'),
('30583','18','','10318','Container {#NAME}: Networks bytes received per second','docker.networks.rx_bytes["{#NAME}"]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','4ab3f13ab7714367b971eada3f01c611','0','2','0'),
('30584','18','','10318','Container {#NAME}: Networks incoming packets dropped per second','docker.networks.rx_dropped["{#NAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','cf4517565e3f4fc49e7d6d411302a732','0','2','0'),
('30585','18','','10318','Container {#NAME}: Networks errors received per second','docker.networks.rx_errors["{#NAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','9d139e59dc1b46d39832ca668d5a6ce1','0','2','0'),
('30586','18','','10318','Container {#NAME}: Networks packets received per second','docker.networks.rx_packets["{#NAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','13fb8c2c3843481492af82c3308e1257','0','2','0'),
('30587','18','','10318','Container {#NAME}: Networks bytes sent per second','docker.networks.tx_bytes["{#NAME}"]','0','31d','365d','0','0','','B','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','da4bf99b26e540fdafc0ee99d50e1c6c','0','2','0'),
('30588','18','','10318','Container {#NAME}: Networks outgoing packets dropped per second','docker.networks.tx_dropped["{#NAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','1f4d7848ecfd44ae958cc1bd64d61078','0','2','0'),
('30589','18','','10318','Container {#NAME}: Networks errors sent per second','docker.networks.tx_errors["{#NAME}"]','0','31d','365d','0','0','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','bc7273bd3a7d4c9d9d6d6b3a019af947','0','2','0'),
('30590','18','','10318','Container {#NAME}: CPU usermode usage per second','docker.container_stats.cpu_usage.user.rate["{#NAME}"]','0','31d','365d','0','0','','s','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','801467fe7cbe48b8b05c5005680b934a','0','2','0'),
('30591','18','','10318','Container {#NAME}: Throttling periods','docker.container_stats.cpu_usage.throttling_periods["{#NAME}"]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'Number of periods with throttling active.','0','30d','0','','30573','','','','','200','1','0','','','0','0','0','0','0','0','0','151f2f36bfb2429b8c8e500067489694','0','2','0'),
('30592','18','','10318','Container {#NAME}: Finished at','docker.container_info.finished["{#NAME}"]','0','31d','365d','0','0','','unixtime','','',NULL,'1084','','','0','','','','','2',NULL,'Time at which the container last terminated.','0','30d','0','','30574','','','','','200','1','0','','','0','0','0','0','0','0','0','1c481ac2b05e4b53b85b7fd37a39bc4a','0','2','0'),
('30593','18','','10318','Container {#NAME}: OOMKilled','docker.container_info.state.oomkilled["{#NAME}"]','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','2',NULL,'','0','30d','0','','30574','','','','','200','1','0','','','0','0','0','0','0','0','0','69381dd6116f4b0d9d957dd1e768748b','0','2','0'),
('30594','18','','10318','Container {#NAME}: Image','docker.container_info.image["{#NAME}"]','0','31d','0','0','1','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30528','','','','','200','1','0','','','0','0','0','0','0','0','0','ee9da156a6134760af1762236d08e566','0','2','0'),
('30595','18','','10318','Container {#NAME}: Restart count','docker.container_info.restart_count["{#NAME}"]','0','31d','365d','0','3','','','','',NULL,NULL,'','','0','','','','','2',NULL,'','0','30d','0','','30574','','','','','200','1','0','','','0','0','0','0','0','0','0','72de0e4e056a4d3799d61cb3ac19a306','0','2','0'),
('30596','18','','10318','Container {#NAME}: Started at','docker.container_info.started["{#NAME}"]','0','31d','365d','0','0','','unixtime','','',NULL,'1084','','','0','','','','','2',NULL,'','0','30d','0','','30574','','','','','200','1','0','','','0','0','0','0','0','0','0','0b6ce9bd73244e79bc9c4e00f56c2465','0','2','0'),
('30597','18','','10318','Container {#NAME}: Dead','docker.container_info.state.dead["{#NAME}"]','0','31d','365d','0','3','','','','',NULL,'147','','','0','','','','','2',NULL,'','0','30d','0','','30574','','','','','200','1','0','','','0','0','0','0','0','0','0','fd9d315125fb40738c00bab16c145255','0','2','0'),
