<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<formatVersion>4</formatVersion>
	<description></description>
	<events>
		<event id="100023">
			<name>zzz_Low_Space_Specific_Threshold_Critical</name>
			<guid>71ddc7bf-42ca-6742-884e-4050f488b62c</guid>
			<code>100023</code>
			<severity>4</severity>
			<flags>1</flags>
			<message>zzz_Low_Space_Specific_Threshold_Critical reached %1 %2 %3 %4</message>
			<description>zzz_Specific_Threshold_Critical reached %1 %2 %3 %4</description>
		</event>
		<event id="100022">
			<name>zzz_Low_Space_Specific_Threshold_Warning</name>
			<guid>7cba7446-c7fd-124f-bd0e-abe86c76d7ef</guid>
			<code>100022</code>
			<severity>1</severity>
			<flags>1</flags>
			<message>zzz_Low_Space_Specific_Threshold_Warning reached %1 %2 %3 %4</message>
			<description>zzz_Specific_Threshold_Warning reached %1 %2 %3 %4</description>
		</event>
		<event id="100025">
			<name>zzz_Low_Space_Specific_Threshold_reset</name>
			<guid>c7170ae7-2926-c24b-8304-8ee4bd5363f8</guid>
			<code>100025</code>
			<severity>0</severity>
			<flags>1</flags>
			<message>zzz_Low_SPace_Specific_Threshold_reset</message>
			<description>zzz_Specific_Threshold_reset %m %1 %2 %3 %4 %5&#x0D;&#x0A;</description>
		</event>
		<event id="100024">
			<name>zzz_Low_Space_Specific_Threshold_Error reached</name>
			<guid>b418d687-115e-dc47-a744-4b0bd9d07cf7</guid>
			<code>100024</code>
			<severity>3</severity>
			<flags>1</flags>
			<message>zzz_Low_Space_Specific_Threshold_Error reached %1 %2 %3 %4</message>
			<description>zzz_Specific_Threshold_Error reached %1 %2 %3 %4</description>
		</event>
	</events>
	<templates>
		<template id="1124">
			<guid>b0fd63e8-621f-3942-a730-b1da718cc6ea</guid>
			<name>Windows via SNMP</name>
			<flags>1</flags>
			<path>
				<element id="1">Operating Systems</element>
				<element id="2">Windows</element>
			</path>
			<dataCollection>
				<dci id="2457">
					<guid>c93e7e3a-7bc8-554e-a84a-4a1e06199120</guid>
					<name>.1.3.6.1.2.1.1.3.0</name>
					<description>sysUpTime in Days</description>
					<dataType>4</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>36000</interval>
					<retention>0</retention>
					<instance></instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>2048</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>0</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation>transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null)&#x0D;&#x0A;{&#x0D;&#x0A;  trace(1,&quot;Snmp transport error on &quot;.$node-&gt;ipAddr);&#x0D;&#x0A;  return -1;&#x0D;&#x0A;}&#x0D;&#x0A;&#x0D;&#x0A;uptime = SNMPGetValue(transport, &quot;.1.3.6.1.2.1.1.3.0&quot;); &#x0D;&#x0A;if (uptime != null)&#x0D;&#x0A;{&#x0D;&#x0A;  // return uptime/100; // in seconds as float&#x0D;&#x0A;  // return uptime/8640000 // in days as float&#x0D;&#x0A;  return SecondsToUptime(uptime/100); // readable format&#x0D;&#x0A;}&#x0D;&#x0A;else&#x0D;&#x0A;{&#x0D;&#x0A;  trace(1,&quot;Could not read uptime value for &quot;.$node-&gt;ipAddr);&#x0D;&#x0A;  return -1;&#x0D;&#x0A;}</transformation>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;false&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;0.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;1&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;&lt;/title&gt;&#x0A;   &lt;name&gt;&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;false&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData></instanceDiscoveryData>
					<instanceFilter></instanceFilter>
				</dci>
				<dci id="2549">
					<guid>2ed712e4-5bf4-5541-b579-c04b891e11b8</guid>
					<name>.1.3.6.1.2.1.1.3.0</name>
					<description>sysUpTime in Days numeric</description>
					<dataType>5</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>36000</interval>
					<retention>0</retention>
					<instance></instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>2048</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>0</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation>transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null)&#x0D;&#x0A;{&#x0D;&#x0A;  trace(1,&quot;Snmp transport error on &quot;.$node-&gt;ipAddr);&#x0D;&#x0A;  return -1;&#x0D;&#x0A;}&#x0D;&#x0A;&#x0D;&#x0A;uptime = SNMPGetValue(transport, &quot;.1.3.6.1.2.1.1.3.0&quot;); &#x0D;&#x0A;if (uptime != null)&#x0D;&#x0A;{&#x0D;&#x0A;  // return uptime/100; // in seconds as float&#x0D;&#x0A;  return uptime/8640000; // in days as float&#x0D;&#x0A;  //return SecondsToUptime(uptime/100); // readable format&#x0D;&#x0A;}&#x0D;&#x0A;else&#x0D;&#x0A;{&#x0D;&#x0A;  trace(1,&quot;Could not read uptime value for &quot;.$node-&gt;ipAddr);&#x0D;&#x0A;  return -1;&#x0D;&#x0A;}</transformation>
					<thresholds>
						<threshold id="1">
							<function>0</function>
							<condition>4</condition>
							<value>120</value>
							<activationEvent>SYS_THRESHOLD_REACHED</activationEvent>
							<deactivationEvent>SYS_THRESHOLD_REARMED</deactivationEvent>
							<sampleCount>1</sampleCount>
							<repeatInterval>-1</repeatInterval>
							<script></script>
						</threshold>
					</thresholds>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;false&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;0.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;1&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;&lt;/title&gt;&#x0A;   &lt;name&gt;&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;false&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData></instanceDiscoveryData>
					<instanceFilter></instanceFilter>
				</dci>
				<dci id="3045">
					<guid>a6683825-0835-ae41-800e-2cab5330d6cc</guid>
					<name>.1.3.6.1.2.1.25.1.7.0</name>
					<description>Windows - SNMP CPU busy (%)</description>
					<dataType>0</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>60</interval>
					<retention>365</retention>
					<instance></instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>2048</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>0</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation>snmp = CreateSNMPTransport($node);&#x0D;&#x0A;if (snmp == null)&#x0D;&#x0A;&#x09;return null;&#x0D;&#x0A;&#x0D;&#x0A;varbinds = SNMPWalk(snmp, &quot;.1.3.6.1.2.1.25.3.3.1.2&quot;);&#x0D;&#x0A;if (varbinds == null)&#x0D;&#x0A;&#x09;return null;&#x0D;&#x0A;&#x09;&#x0D;&#x0A;count = 0;&#x0D;&#x0A;total = 0;&#x0D;&#x0A;for(v : varbinds)&#x0D;&#x0A;{&#x0D;&#x0A;&#x09;count++;&#x0D;&#x0A;&#x09;total += v-&gt;value;&#x0D;&#x0A;}&#x0D;&#x0A;&#x0D;&#x0A;return total / count;</transformation>
					<thresholds>
						<threshold id="1">
							<function>0</function>
							<condition>4</condition>
							<value>90</value>
							<activationEvent>SYS_THRESHOLD_REACHED</activationEvent>
							<deactivationEvent>SYS_THRESHOLD_REARMED</deactivationEvent>
							<sampleCount>2</sampleCount>
							<repeatInterval>-1</repeatInterval>
							<script></script>
						</threshold>
					</thresholds>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;true&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;0.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;1&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;&lt;/title&gt;&#x0A;   &lt;name&gt;&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;false&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData></instanceDiscoveryData>
					<instanceFilter></instanceFilter>
				</dci>
				<dci id="316">
					<guid>4df7e4fa-e9f5-2c49-b2c4-c3db52affcc0</guid>
					<name>.1.3.6.1.2.1.25.2.3.1.5.{instance}</name>
					<description>Windows - File System - {instance-name} - Volume Size (Bytes)</description>
					<dataType>3</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>600</interval>
					<retention>0</retention>
					<instance></instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>0</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>4</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation>// Storing original value, as $1 will be replaced as part of a match clause later.&#x0D;&#x0A;$originalValue = $1;&#x0D;&#x0A;&#x0D;&#x0A;// Obtain the actual instance we&apos;re after. The last octet in the OID. Result will be stored in $1.&#x0D;&#x0A;$dci-&gt;name match &quot;^.*\.([0-9]+)$&quot;;&#x0D;&#x0A;// Build OID to use to obtain storage allocation units&#x0D;&#x0A;oid = &quot;.1.3.6.1.2.1.25.2.3.1.4.&quot; .$1;&#x0D;&#x0A;&#x0D;&#x0A;// Connect to node via SNMP&#x0D;&#x0A;transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null) return false;&#x0D;&#x0A;&#x0D;&#x0A;// Obtain matching storage allocation units to calculate actual size in Bytes&#x0D;&#x0A;allocationUnits = SNMPGetValue(transport, oid);&#x0D;&#x0A;if (allocationUnits == null) return false;&#x0D;&#x0A;&#x0D;&#x0A;return $originalValue * int64(allocationUnits);</transformation>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;false&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;1.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;1&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;&lt;/title&gt;&#x0A;   &lt;name&gt;&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;false&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData>.1.3.6.1.2.1.25.2.3.1.1</instanceDiscoveryData>
					<instanceFilter>transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null)&#x0D;&#x0A;&#x09;return false;&#x0D;&#x0A;&#x0D;&#x0A;mountPoint = SNMPGet(transport, &quot;.1.3.6.1.2.1.25.2.3.1.3.&quot; .$1);&#x0D;&#x0A;if (mountPoint == null) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^Y:(*.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/dev(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/tmp(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/sys(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/run(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/usr/share/cagefs-skeleton(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/mnt/snapshot(/.*)?&quot; ) return false;&#x0D;&#x0A;// DATTO specific exclusions&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;.*/.zfs/.*&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/datto(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/home/agents$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/var/log/datto/memory$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/home/configBackup$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-file$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-mft$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-ransomware$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-verification$&quot; ) return false;&#x0D;&#x0A;&#x0D;&#x0A;&#x0D;&#x0A;return %(true, $1, mountPoint-&gt;value);</instanceFilter>
				</dci>
				<dci id="317">
					<guid>34f026f8-0906-1d45-b6c1-21880a0def9d</guid>
					<name>.1.3.6.1.2.1.25.2.3.1.5.{instance}</name>
					<description>Windows - File System - {instance-name} - Volume Space Used (%)</description>
					<dataType>5</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>600</interval>
					<retention>365</retention>
					<instance>{instance}</instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>2058</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>4</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation>// We are originally querying the actual volume size. This is required for&#x0D;&#x0A;// calculation and to have an instance to work with.&#x0D;&#x0A;volumeSize = $1;&#x0D;&#x0A;&#x0D;&#x0A;// Obtain the actual instance we&apos;re after. The last octet in the OID. Result will be stored in $1.&#x0D;&#x0A;$dci-&gt;name match &quot;^.*\.([0-9]+)$&quot;;&#x0D;&#x0A;// Build OID to use to obtain space used&#x0D;&#x0A;oid = &quot;.1.3.6.1.2.1.25.2.3.1.6.&quot; .$1;&#x0D;&#x0A;&#x0D;&#x0A;// Connect to node via SNMP&#x0D;&#x0A;transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null) return false;&#x0D;&#x0A;&#x0D;&#x0A;// Obtain matching used space to calculate usage in %, which we can actually alert on.&#x0D;&#x0A;volumeUsed = SNMPGetValue(transport, oid);&#x0D;&#x0A;if (volumeUsed == null) return false;&#x0D;&#x0A;&#x0D;&#x0A;return format(int64(volumeUsed) / volumeSize * 100,1,2);</transformation>
					<thresholds>
						<threshold id="1">
							<function>6</function>
							<condition>0</condition>
							<value>1</value>
							<activationEvent>zzz_Low_Space_Specific_Threshold_Critical</activationEvent>
							<deactivationEvent>zzz_Low_Space_Specific_Threshold_reset</deactivationEvent>
							<sampleCount>1</sampleCount>
							<repeatInterval>900</repeatInterval>
							<script>if ( left($dci-&gt;instance,3) != NULL ) { shortdci = left($dci-&gt;instance,3); }&#x0D;&#x0A;if ( GetCustomAttribute($node,&quot;fileSystem_Critical_&quot;.shortdci) != NULL ) { threshold = GetCustomAttribute($node,&quot;fileSystem_Critical_&quot;.shortdci); }&#x0D;&#x0A;else if ( GetCustomAttribute($node,&quot;fileSystem_Critical&quot;) != NULL ) {&#x09;threshold = GetCustomAttribute($node,&quot;fileSystem_Critical&quot;); }&#x0D;&#x0A;else if ( ReadPersistentStorage(&quot;fileSystem_Critical_&quot;.shortdci) != &quot;&quot; ) { threshold = ReadPersistentStorage(&quot;fileSystem_Critical_&quot;.shortdci); }&#x0D;&#x0A;else { threshold = ReadPersistentStorage(&quot;fileSystem_Critical&quot;); }&#x0D;&#x0A;if ( ( threshold == null ) || ( threshold == &quot;&quot; ) ) { return null; }&#x0D;&#x0A;if ( $1 &gt;= threshold ) return 1;&#x0D;&#x0A;else return 0;</script>
						</threshold>
						<threshold id="2">
							<function>6</function>
							<condition>0</condition>
							<value>1</value>
							<activationEvent>zzz_Low_Space_Specific_Threshold_Error reached</activationEvent>
							<deactivationEvent>SYS_THRESHOLD_REARMED</deactivationEvent>
							<sampleCount>1</sampleCount>
							<repeatInterval>900</repeatInterval>
							<script>if ( left($dci-&gt;instance,3) != NULL ) { shortdci = left($dci-&gt;instance,3); }&#x0D;&#x0A;if ( GetCustomAttribute($node,&quot;fileSystem_Error_&quot;.shortdci) != NULL ) { threshold = GetCustomAttribute($node,&quot;fileSystem_Error_&quot;.shortdci); }&#x0D;&#x0A;else if ( GetCustomAttribute($node,&quot;fileSystem_Error&quot;) != NULL ) {&#x09;threshold = GetCustomAttribute($node,&quot;fileSystem_Error&quot;); }&#x0D;&#x0A;else if ( ReadPersistentStorage(&quot;fileSystem_Error_&quot;.shortdci) != &quot;&quot; ) { threshold = ReadPersistentStorage(&quot;fileSystem_Error_&quot;.shortdci); }&#x0D;&#x0A;else { threshold = ReadPersistentStorage(&quot;fileSystem_Error&quot;); }&#x0D;&#x0A;if ( ( threshold == null ) || ( threshold == &quot;&quot; ) ) { return null; }&#x0D;&#x0A;if ( $1 &gt;= threshold ) return 1;&#x0D;&#x0A;else return 0;</script>
						</threshold>
						<threshold id="3">
							<function>6</function>
							<condition>0</condition>
							<value>1</value>
							<activationEvent>zzz_Low_Space_Specific_Threshold_Warning</activationEvent>
							<deactivationEvent>zzz_Low_Space_Specific_Threshold_reset</deactivationEvent>
							<sampleCount>1</sampleCount>
							<repeatInterval>900</repeatInterval>
							<script>if ( left($dci-&gt;instance,3) != NULL ) { shortdci = left($dci-&gt;instance,3); }&#x0D;&#x0A;if ( GetCustomAttribute($node,&quot;fileSystem_Warning_&quot;.shortdci) != NULL ) { threshold = GetCustomAttribute($node,&quot;fileSystem_Warning_&quot;.shortdci); }&#x0D;&#x0A;else if ( GetCustomAttribute($node,&quot;fileSystem_Warning&quot;) != NULL ) {&#x09;threshold = GetCustomAttribute($node,&quot;fileSystem_Warning&quot;); }&#x0D;&#x0A;else if ( ReadPersistentStorage(&quot;fileSystem_Warning_&quot;.shortdci) != &quot;&quot; ) { threshold = ReadPersistentStorage(&quot;fileSystem_Warning_&quot;.shortdci); }&#x0D;&#x0A;else { threshold = ReadPersistentStorage(&quot;fileSystem_Warning&quot;); }&#x0D;&#x0A;if ( ( threshold == null ) || ( threshold == &quot;&quot; ) ) { return null; }&#x0D;&#x0A;if ( $1 &gt;= threshold ) return 1;&#x0D;&#x0A;else return 0;</script>
						</threshold>
					</thresholds>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;true&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;1.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;2&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;{instance} % used&lt;/title&gt;&#x0A;   &lt;name&gt;Percent Used&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;true&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;{instance}&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData>.1.3.6.1.2.1.25.2.3.1.1</instanceDiscoveryData>
					<instanceFilter>transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null)&#x0D;&#x0A;&#x09;return false;&#x0D;&#x0A;&#x0D;&#x0A;mountPoint = SNMPGet(transport, &quot;.1.3.6.1.2.1.25.2.3.1.3.&quot; .$1);&#x0D;&#x0A;if (mountPoint == null) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/dev(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^Y:(*.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/tmp(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/sys(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/run(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/usr/share/cagefs-skeleton(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/mnt/snapshot(/.*)?&quot; ) return false;&#x0D;&#x0A;// DATTO specific exclusions&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;.*/.zfs/.*&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/datto(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/home/agents$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/var/log/datto/memory$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/home/configBackup$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-file$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-mft$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-ransomware$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-verification$&quot; ) return false;&#x0D;&#x0A;&#x0D;&#x0A;$driveAlertCustom = GetCustomAttribute($node, &quot;driveAlertCustom&quot;);&#x0D;&#x0A;if ( $driveAlertCustom == NULL ) return %(true, $1, mountPoint-&gt;value);&#x0D;&#x0A;&#x0D;&#x0A;$mountPoints = SplitString($driveAlertCustom,&quot;,&quot;);&#x0D;&#x0A;foreach ( $m:$mountPoints ) {&#x0D;&#x0A;&#x09;if ( $m == mountPoint-&gt;value ) return false;&#x0D;&#x0A;}&#x0D;&#x0A;&#x0D;&#x0A;return %(true, $1, mountPoint-&gt;value);</instanceFilter>
				</dci>
				<dci id="318">
					<guid>46187694-8aaf-3b4c-833e-b0de598b17f9</guid>
					<name>.1.3.6.1.2.1.25.2.3.1.6.{instance}</name>
					<description>Windows - File System - {instance-name} - Volume Space Used (Bytes)</description>
					<dataType>3</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>600</interval>
					<retention>0</retention>
					<instance></instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>0</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>4</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation>// Storing original value, as $1 will be replaced as part of a match clause later.&#x0D;&#x0A;$originalValue = $1;&#x0D;&#x0A;&#x0D;&#x0A;// Obtain the actual instance we&apos;re after. The last octet in the OID. Result will be stored in $1.&#x0D;&#x0A;$dci-&gt;name match &quot;^.*\.([0-9]+)$&quot;;&#x0D;&#x0A;// Build OID to use to obtain storage allocation units&#x0D;&#x0A;oid = &quot;.1.3.6.1.2.1.25.2.3.1.4.&quot; .$1;&#x0D;&#x0A;&#x0D;&#x0A;// Connect to node via SNMP&#x0D;&#x0A;transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null) return false;&#x0D;&#x0A;&#x0D;&#x0A;// Obtain matching storage allocation units to calculate actual size in Bytes&#x0D;&#x0A;allocationUnits = SNMPGetValue(transport, oid);&#x0D;&#x0A;if (allocationUnits == null) return false;&#x0D;&#x0A;&#x0D;&#x0A;return $originalValue * int64(allocationUnits);</transformation>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;false&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;1.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;1&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;&lt;/title&gt;&#x0A;   &lt;name&gt;&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;false&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData>.1.3.6.1.2.1.25.2.3.1.1</instanceDiscoveryData>
					<instanceFilter>transport = CreateSNMPTransport($node);&#x0D;&#x0A;if (transport == null)&#x0D;&#x0A;&#x09;return false;&#x0D;&#x0A;&#x0D;&#x0A;mountPoint = SNMPGet(transport, &quot;.1.3.6.1.2.1.25.2.3.1.3.&quot; .$1);&#x0D;&#x0A;if (mountPoint == null) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^Y:(*.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/dev(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/tmp(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/sys(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/run(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/usr/share/cagefs-skeleton(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/mnt/snapshot(/.*)?&quot; ) return false;&#x0D;&#x0A;// DATTO specific exclusions&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;.*/.zfs/.*&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/datto(/.*)?&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/home/agents$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/var/log/datto/memory$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/home/configBackup$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-file$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-mft$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-ransomware$&quot; ) return false;&#x0D;&#x0A;if (mountPoint-&gt;value ~= &quot;^/homePool/.*-verification$&quot; ) return false;&#x0D;&#x0A;&#x0D;&#x0A;return %(true, $1, mountPoint-&gt;value);</instanceFilter>
				</dci>
				<dci id="3266">
					<guid>b17fdef4-97cf-3e45-b60e-896f0d2c631e</guid>
					<name>.1.3.6.1.2.1.25.3.3.1.2.{instance}</name>
					<description>Windows - SNMP - CPU Load per CPU - CPU {instance}</description>
					<dataType>0</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>0</interval>
					<retention>0</retention>
					<instance></instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>0</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>4</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation></transformation>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;false&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;0.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;1&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;&lt;/title&gt;&#x0A;   &lt;name&gt;&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;false&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData>.1.3.6.1.2.1.25.3.3.1.2</instanceDiscoveryData>
					<instanceFilter></instanceFilter>
				</dci>
				<dci id="3366">
					<guid>e04b35bd-28e0-3949-81da-2b1357ca350d</guid>
					<name>.1.3.6.1.2.1.25.1.7.0</name>
					<description>Windows - SNMP - Number of CPU&apos;s</description>
					<dataType>0</dataType>
					<samples>0</samples>
					<origin>2</origin>
					<interval>36000</interval>
					<retention>0</retention>
					<instance></instance>
					<systemTag></systemTag>
					<delta>0</delta>
					<flags>0</flags>
					<snmpRawValueType>0</snmpRawValueType>
					<snmpPort>0</snmpPort>
					<instanceDiscoveryMethod>0</instanceDiscoveryMethod>
					<instanceRetentionTime>-1</instanceRetentionTime>
					<transformation>snmp = CreateSNMPTransport($node);&#x0D;&#x0A;if (snmp == null)&#x0D;&#x0A;&#x09;return null;&#x0D;&#x0A;&#x0D;&#x0A;varbinds = SNMPWalk(snmp, &quot;.1.3.6.1.2.1.25.3.3.1.2&quot;);&#x0D;&#x0A;if (varbinds == null)&#x0D;&#x0A;&#x09;return null;&#x0D;&#x0A;&#x09;&#x0D;&#x0A;count = 0;&#x0D;&#x0A;total = 0;&#x0D;&#x0A;for(v : varbinds)&#x0D;&#x0A;{&#x0D;&#x0A;&#x09;count++;&#x0D;&#x0A;&#x09;total += v-&gt;value;&#x0D;&#x0A;}&#x0D;&#x0A;&#x0D;&#x0A;return count;</transformation>
					<perfTabSettings>&lt;config&gt;&#x0A;   &lt;enabled&gt;false&lt;/enabled&gt;&#x0A;   &lt;autoScale&gt;true&lt;/autoScale&gt;&#x0A;   &lt;logScaleEnabled&gt;false&lt;/logScaleEnabled&gt;&#x0A;   &lt;stacked&gt;false&lt;/stacked&gt;&#x0A;   &lt;showLegendAlways&gt;false&lt;/showLegendAlways&gt;&#x0A;   &lt;extendedLegend&gt;true&lt;/extendedLegend&gt;&#x0A;   &lt;minYScaleValue&gt;0.0&lt;/minYScaleValue&gt;&#x0A;   &lt;maxYScaleValue&gt;100.0&lt;/maxYScaleValue&gt;&#x0A;   &lt;timeRange&gt;1&lt;/timeRange&gt;&#x0A;   &lt;timeUnits&gt;1&lt;/timeUnits&gt;&#x0A;   &lt;type&gt;0&lt;/type&gt;&#x0A;   &lt;color&gt;49152&lt;/color&gt;&#x0A;   &lt;title&gt;&lt;/title&gt;&#x0A;   &lt;name&gt;&lt;/name&gt;&#x0A;   &lt;showThresholds&gt;false&lt;/showThresholds&gt;&#x0A;   &lt;groupName&gt;&lt;/groupName&gt;&#x0A;   &lt;order&gt;100&lt;/order&gt;&#x0A;   &lt;parentDciId&gt;0&lt;/parentDciId&gt;&#x0A;   &lt;modifyYBase&gt;false&lt;/modifyYBase&gt;&#x0A;   &lt;invertedValues&gt;false&lt;/invertedValues&gt;&#x0A;&lt;/config&gt;</perfTabSettings>
					<instanceDiscoveryData></instanceDiscoveryData>
					<instanceFilter></instanceFilter>
				</dci>
			</dataCollection>
			<filter>return $node-&gt;sysDescription like &quot;*Windows*&quot;;</filter>
		</template>
	</templates>
	<traps>
	</traps>
	<rules>
	</rules>
	<scripts>
	</scripts>
	<objectTools>
	</objectTools>
	<dciSummaryTables>
	</dciSummaryTables>
	<actions>
	</actions>
</configuration>
