<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Real Server Monitors &#8211; Edgenexus Knowledge Base</title>
	<atom:link href="https://kb.edgenexus.io/kb/category/healthchecking/feed/" rel="self" type="application/rss+xml" />
	<link>https://kb.edgenexus.io</link>
	<description></description>
	<lastBuildDate>Fri, 27 Sep 2024 10:27:11 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://kb.edgenexus.io/wp-content/uploads/2024/09/cropped-Edgenexus-KB-Icon-3webp-32x32.png</url>
	<title>Real Server Monitors &#8211; Edgenexus Knowledge Base</title>
	<link>https://kb.edgenexus.io</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Tuning EdgeADC Server Health Monitoring</title>
		<link>https://kb.edgenexus.io/kb/tuning-edgeadc-server-health-monitoring/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Fri, 27 Sep 2024 10:27:11 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=541</guid>

					<description><![CDATA[A key feature of a load balancer is to identify and remove broken application servers from your cluster in the fastest way possible but is fastest always best? Generally, we want to provide the best possible service to our users. Meaning that we want to remove broken servers as soon as possible and add them [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A key feature of a load balancer is to identify and remove broken application servers from your cluster in the fastest way possible but is fastest always best?</p>
<p>Generally, we want to provide the best possible service to our users. Meaning that we want to remove broken servers as soon as possible and add them back when they are better as soon as possible.</p>
<p>To do this we need to understand the application and how it behaves, especially under stress.</p>
<p>The reason why this is important is that the reality of monitoring is a tradeoff between responsiveness vs false positives leading to bouncing.</p>
<p>If we make the health checking too fast, then a busy server may not have the time to respond and therefore it might be removed from the cluster meaning the other servers have more load in already a potentially busy time.</p>
<p>There are several dials to turn to get optimal health checking and this is how to set them.</p>
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1545" height="557" src="https://kb.edgenexus.io/wp-content/uploads/2024/09/image.png" alt="" class="wp-image-543" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/09/image.png 1545w, https://kb.edgenexus.io/wp-content/uploads/2024/09/image-300x108.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/09/image-1024x369.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/09/image-768x277.png 768w, https://kb.edgenexus.io/wp-content/uploads/2024/09/image-1536x554.png 1536w" sizes="(max-width: 1545px) 100vw, 1545px" /></figure>
<h3 class="wp-block-heading">Monitoring timeout</h3>
<p>How long should we wait to try to connect before we give up and mark it as down?</p>
<p>If you are using a fast-monitoring method such as TCP connect then this can be fairly low 1s</p>
<p>However, if you are using application-level monitoring such as HTTP get or custom monitoring this would need to be longer.</p>
<p>A busy web server could take up to 60s to respond, however you probably want to fail it if it is running this slowly.</p>
<h3 class="wp-block-heading">Monitoring interval</h3>
<p>How long should we wait between monitoring attempts?</p>
<p>Firstly, we need to make sure this is set to longer values than the monitoring timeout value or the monitoring agents will start to overlap which will lead to more complexity to interpret behaviors.</p>
<p>The next thing to consider is the impact of monitoring frequency changes.</p>
<p>What is the impact of the monitoring on the application server? For example, if you have 10 VIPS using a full HTTP monitor every second you create an additional 600 requests per minute on the server. This may be a lot depending on the server’s capacity to handle these.</p>
<p>For low resource monitoring such as TCP it is not such an issue.</p>
<h3 class="wp-block-heading">Monitoring In Count and Out Count</h3>
<p>This feature helps to prevent servers from bouncing in and out of service.</p>
<p>It is possible your application server could have a temporary “glitch” and fail a single check but it&#8217;s not severe enough to want to remove the whole server from the cluster.</p>
<p>Conversely once a server is removed, we want to be confident it can provide a good service before we add it back.</p>
<p>Generally, we suggest Out Count of 1-2, meaning it has to fail the test 1-2 times, and an In Count setting of 3 meaning it needs to pass 3 successful tests before it&#8217;s added back.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My Real Servers run out of resources due to the EdgeADC continuously performing status checks. What can I do?</title>
		<link>https://kb.edgenexus.io/kb/my-real-servers-run-out-of-resources-due-to-the-edgeadc-continuously-performing-status-checks-what-can-i-do/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Fri, 24 May 2024 09:39:38 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=520</guid>

					<description><![CDATA[This problem is due to the health check monitors performing too often. This can be adjusted int he EdgeADC for each service. Please navigate to the Real Servers > Advanced properties for the Virtual Service in question and adjust the timings we needed.]]></description>
										<content:encoded><![CDATA[<p>This problem is due to the health check monitors performing too often. This can be adjusted int he EdgeADC for each service.</p>
<p>Please navigate to the Real Servers > Advanced properties for the Virtual Service in question and adjust the timings we needed.</p>
<figure data-wp-context="{&quot;imageId&quot;:&quot;68aae76d40fc3&quot;}" data-wp-interactive="core/image" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="1479" height="686" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://kb.edgenexus.io/wp-content/uploads/2024/05/image-2.png" alt="" class="wp-image-522" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/05/image-2.png 1479w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-2-300x139.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-2-1024x475.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-2-768x356.png 768w" sizes="(max-width: 1479px) 100vw, 1479px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on-async--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How do I write my own Real Server Monitors?</title>
		<link>https://kb.edgenexus.io/kb/how-do-i-write-my-own-real-server-monitors/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Fri, 24 May 2024 09:32:17 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=516</guid>

					<description><![CDATA[Writing your own Real Server Monitors is not difficult. The EdgeADC provides for the import of custom written monitors. Custom authored monitors need to be written using the PERL languange, and Edgenexus provides a template in the admin guide found here: https://www.edgenexus.io/documentation. When writing a monitor, you need to be aware of some STRICT Variables [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Writing your own Real Server Monitors is not difficult. The EdgeADC provides for the import of custom written monitors.</p>
<p>Custom authored monitors need to be written using the PERL languange, and Edgenexus provides a template in the admin guide found here: <a href="https://www.edgenexus.io/documentation">https://www.edgenexus.io/documentation</a>.</p>
<p>When writing a monitor, you need to be aware of some STRICT Variables that are used. These are listed below.</p>
<pre class="wp-block-code"><code># my $host = $_&#91;0]; - This uses the “Address” from IP Services--Real Server section
# my $port = $_&#91;1]; - This uses the “Port” from IP Services--Real Server section
# my $content = $_&#91;2]; - This uses the “Required Content” value from the Library--Real Server Monitoring section
# my $notes = $_&#91;3]; - This uses the “Notes” column in Real Server section of IP Services
# my $page = $_&#91;4]; - This uses the “Page Location” values from Library--Real Server Monitor section
# my $user = $_&#91;5]; - This uses the “User” value from the Library--Real Server Monitor section
# my $password = $_&#91;6]; - This uses the “Password” value from the Library--Real Server Monitor section</code></pre>
<p>The monitor code must return the result as:</p>
<ul class="wp-block-list">
<li>1 for Success</li>
<li>2 for Failure</li>
</ul>
<p>An example monitor code is shown below.</p>
<div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<pre class="wp-block-code"><code>#Monitor-Name: Edgenexus-Agfa-Status-Health-Check
use strict;
use warnings;
########################################################################################################
# Edgenexus custom health checking Copyright Edgenexus 2023
########################################################################################################
#
#
# This is a Perl script for Edgenexus customer health checking
# The monitor name as above is displayed in the dropdown of Available health checks
# There are 3 value passed to this script
#
# I am using:
# _&#91;0] IP address of the server to be health checked
# _&#91;2] Required content - 200OK
# _&#91;4] Page - Location and Port to use
# my $host = $_&#91;0]; - This uses the “Address” from IP Services--Real Server section
# my $port = $_&#91;1]; - This uses the “Port” from IP Services--Real Server section
# my $content = $_&#91;2]; - This uses the “Required Content” value from the Library--Real Server Monitoring section
# my $notes = $_&#91;3]; - This uses the “Notes” column in Real Server section of IP Services
# my $page = $_&#91;4]; - This uses the “Page Location” values from Library--Real Server Monitor section
# my $user = $_&#91;5]; - This uses the “User” value from the Library--Real Server Monitor section
# my $password = $_&#91;6]; - This uses the “Password” value from the Library--Real Server Monitor section
#
# The script will return the following values
# 1 is the test is successful
# 2 if the test is unsuccessful
#
sub monitor
{
my $host = $_&#91;0]; ### Host IP or name
my $content = $_&#91;2]; ### Required Response
my $cvar = $_&#91;4]; ### Path to be checked (Path, Port, prefix)
my ($page, $port, $prefix) = split(/,\s*/, $cvar);
$host = "$host:$port";
my @lines = `/usr/bin/wget -q -S --tries=1 --timeout=1 --no-check-certificate --output-document=- $prefix://$host$page 2>&amp;1`;
if (join("",@lines))
{
print "$prefix://$host$page looking for - $content - Healhcheck check successful\n";
return(1);
}
else
{
print "$prefix://$host$page looking for - $content - Healhcheck check failed.\n";
return(2)
}
}
monitor(@ARGV);</code></pre>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How do I create a Real Server Monitor</title>
		<link>https://kb.edgenexus.io/kb/how-do-i-create-a-real-server-monitor/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Wed, 22 May 2024 15:43:52 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=508</guid>

					<description><![CDATA[Creating a Real Server Monitor in the EdgeADC is extremely simple to do. The main method used for common monitors is to use the GUI. You can see an example of how to utilise the built-in methods in the example video below, and of course in the current user guides on the Edgenexus website.]]></description>
										<content:encoded><![CDATA[<p>Creating a Real Server Monitor in the EdgeADC is extremely simple to do.</p>
<p>The main method used for common monitors is to use the GUI.</p>
<p>You can see an example of how to utilise the built-in methods in the example video below, and of course in the current user guides on the Edgenexus <a href="https://www.edgenexus.io/documentation/" data-type="link" data-id="https://www.edgenexus.io/documentation/" target="_blank" rel="noreferrer noopener">website</a>.</p>
<figure class="wp-block-video"><video controls src="https://kb.edgenexus.io/wp-content/uploads/2024/05/KB_RSM_Create.mp4"></video></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Does the EdgeADC provide any pre-written Real Server Monitors?</title>
		<link>https://kb.edgenexus.io/kb/does-the-edgeadc-provide-any-pre-written-real-server-monitors/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Tue, 21 May 2024 14:20:29 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=504</guid>

					<description><![CDATA[The EdgeADC is equipped with a number of pre-written Real Server Monitors. These are: Used to check the availability and responsiveness of servers. It operates by sending Internet Control Message Protocol (ICMP) echo request packets, commonly known as &#8220;pings,&#8221; to the target server. If the server is operational, it responds with an ICMP echo reply. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The EdgeADC is equipped with a number of pre-written Real Server Monitors. These are:</p>
<p>Used to check the availability and responsiveness of servers. It operates by sending Internet Control Message Protocol (ICMP) echo request packets, commonly known as &#8220;pings,&#8221; to the target server. If the server is operational, it responds with an ICMP echo reply. The monitor measures the round-trip time for the ping and assesses the server&#8217;s availability based on whether the response is received within a predefined time frame. This method is straightforward and efficient for verifying servers&#8217; basic connectivity and responsiveness, making it an essential component in network monitoring and load-balancing setups to ensure continuous service availability.</p>
<p><strong>TCP Connection<br></strong>A TCP connection real server monitor checks the health and responsiveness of backend servers by establishing TCP connections to specified ports. This type of monitor periodically attempts to open a TCP connection to a server to verify its availability and network reachability. If the server completes the handshake and responds within an acceptable timeframe, it is deemed healthy and capable of handling client requests. Conversely, if the server fails to respond, is slow to connect, or rejects the connection, the monitor flags it as unhealthy. This allows the load balancer to reroute traffic away from the problematic server, ensuring continuous and reliable service delivery by directing traffic only to servers confirmed to be operational.</p>
<p><strong>ICMP Unreachable<br></strong>An ICMP Unreachable real server monitor uses Internet Control Message Protocol (ICMP) messages to determine the availability and responsiveness of backend servers. Specifically, it sends ICMP echo requests (pings) to the target server and waits for a response. If the server is unreachable or fails to respond within a specified time frame, the monitor flags it as down or unhealthy. This type of monitoring is crucial for quickly detecting network issues or server outages, ensuring that traffic is only directed to accessible servers and capable of handling requests, thereby maintaining high availability and performance of the application.</p>
<p><strong>RDP</strong><br>An RDP (Remote Desktop Protocol) real server monitor continuously assesses the availability and responsiveness of servers that provide remote desktop services. This monitor performs regular health checks by attempting to establish RDP sessions with the servers to ensure they can accept and handle remote desktop connections. By doing so, it verifies that the servers are not only operational but also performing efficiently under load. If a server fails to respond or exhibits poor performance, the monitor flags it as unhealthy, triggering the load balancer to reroute connections to healthier servers. This ensures uninterrupted remote desktop access for users, maintains service reliability, and helps in promptly identifying and addressing any issues affecting the remote desktop services.</p>
<p><strong>200OK</strong><br>A 200OK real server monitor is used in load balancing to verify the operational status of backend servers by ensuring they return a standard HTTP 200 OK response. This monitor sends periodic HTTP GET requests to the servers and expects a 200 OK response, indicating that the server is functioning correctly and can handle client requests. If a server fails to return a 200 OK response, it is marked as unhealthy, and the load balancer stops directing traffic to it until it recovers. This type of monitoring is crucial for maintaining high availability and reliability of web applications, as it ensures only healthy servers are included in the load balancing pool, thereby enhancing user experience and minimizing downtime.</p>
<p><strong>DICOM</strong><br>A DICOM real server monitor ensures the availability and performance of servers that handle Digital Imaging and Communications in Medicine (DICOM) data, which is critical in healthcare environments for managing medical imaging information. This monitor continuously performs health checks on DICOM servers by sending DICOM C-ECHO requests and evaluating the server&#8217;s responses. If a server fails to respond appropriately or within the expected timeframe, the monitor flags it as unhealthy, enabling automatic failover mechanisms to reroute traffic to functioning servers. This ensures uninterrupted access to vital medical imaging data, supporting timely diagnostics and patient care by maintaining the seamless operation of DICOM services.</p>
<figure data-wp-context="{&quot;imageId&quot;:&quot;68aae76d42b7a&quot;}" data-wp-interactive="core/image" class="wp-block-image size-full wp-lightbox-container"><img decoding="async" width="2253" height="719" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1.png" alt="" class="wp-image-506" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1.png 2253w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1-300x96.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1-1024x327.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1-768x245.png 768w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1-1536x490.png 1536w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1-2048x654.png 2048w" sizes="(max-width: 2253px) 100vw, 2253px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on-async--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why should I use Real Server Monitors?</title>
		<link>https://kb.edgenexus.io/kb/why-should-i-use-real-server-monitors/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Tue, 21 May 2024 13:57:56 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=501</guid>

					<description><![CDATA[Using real server monitors when defining a virtual service for load balancing your application servers is essential for maintaining high service reliability and performance. These monitors actively and continuously check the health and status of each backend server by performing various health checks, such as HTTP requests, TCP connections, or ICMP pings. By doing so, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Using real server monitors when defining a virtual service for load balancing your application servers is essential for maintaining high service reliability and performance. These monitors actively and continuously check the health and status of each backend server by performing various health checks, such as HTTP requests, TCP connections, or ICMP pings. By doing so, they can accurately determine if a server is capable of handling client requests.</p>
<p>When a server fails a health check, the load balancer is immediately informed and can stop directing traffic to that server, preventing potential service disruptions. This dynamic traffic management ensures that only healthy servers receive incoming requests, thereby avoiding overloading any single server and ensuring a smooth and uninterrupted user experience.</p>
<p>Additionally, real server monitors help in identifying performance bottlenecks and server failures quickly, allowing for prompt corrective actions. This proactive approach minimizes downtime, enhances fault tolerance, and maintains high availability of the application, which is critical for meeting service level agreements (SLAs) and ensuring user satisfaction.</p>
<p>Incorporating real server monitors in your load-balancing strategy ensures that your application remains robust, responsive, and reliable by dynamically adapting to the real-time health status of your servers.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What are Real Server Monitors?</title>
		<link>https://kb.edgenexus.io/kb/what-are-real-server-monitors/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Tue, 21 May 2024 13:31:08 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=498</guid>

					<description><![CDATA[A real-server monitor, also known as a server health check monitor in an Application Delivery Controller (ADC), is a feature provided to continuously assess the availability and performance of backend servers within a network. This monitoring system performs periodic health checks by sending various types of probes—such as HTTP requests, ICMP pings, or TCP connections. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A real-server monitor, also known as a server health check monitor in an Application Delivery Controller (ADC), is a feature provided to continuously assess the availability and performance of backend servers within a network. This monitoring system performs periodic health checks by sending various types of probes—such as HTTP requests, ICMP pings, or TCP connections. It is also capable of logging into applications to they are operational and can handle client requests effectively. If a server fails to respond correctly or within the expected time frame, the monitor flags it as unhealthy and can trigger automatic failover mechanisms to route traffic away from the affected server to maintain seamless service delivery and minimize downtime.</p>
<p>The EdgeADC has a variety of pre-built health check monitors, and the capability for you to configure custom ones using the GUI. In addition to this you can also write specific custom ones using PERL and upload them to the EdgeADC.</p>
<figure data-wp-context="{&quot;imageId&quot;:&quot;68aae76d43b4e&quot;}" data-wp-interactive="core/image" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="2220" height="831" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://kb.edgenexus.io/wp-content/uploads/2024/05/image.png" alt="" class="wp-image-499" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/05/image.png 2220w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-300x112.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1024x383.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-768x287.png 768w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-1536x575.png 1536w, https://kb.edgenexus.io/wp-content/uploads/2024/05/image-2048x767.png 2048w" sizes="auto, (max-width: 2220px) 100vw, 2220px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on-async--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Does the EdgeADC support DSR, or Direct Server Return?</title>
		<link>https://kb.edgenexus.io/kb/does-the-edgeadc-support-dsr-or-direct-server-return/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 10:09:35 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=342</guid>

					<description><![CDATA[Yes, the EdgeADC does support DSR, aka Direct Server Return. Direct Server Return or DSR also known DR – Direct Routing, allows the server behind the load balancer to respond directly to the client bypassing the ADC on the response. DSR is only suitable for use with Layer 4 load balancing. Therefore, Caching and Compression [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Yes, the EdgeADC does support DSR, aka Direct Server Return.</p>
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1587" height="609" src="https://kb.edgenexus.io/wp-content/uploads/2024/04/image-6.png" alt="" class="wp-image-343" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/04/image-6.png 1587w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-6-300x115.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-6-1024x393.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-6-768x295.png 768w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-6-1536x589.png 1536w" sizes="auto, (max-width: 1587px) 100vw, 1587px" /></figure>
<p>Direct Server Return or DSR also known DR – Direct Routing, allows the server behind the load balancer to respond directly to the client bypassing the ADC on the response. DSR is only suitable for use with Layer 4 load balancing. Therefore, Caching and Compression are not available with this option chosen.&nbsp;</p>
<p class="has-vivid-red-color has-text-color has-link-color wp-elements-f6b9e83c2aba1176fc835854dd0870e5"><strong>This mode can only be used with TCP, UDP, and TCP/UDP service types.</strong></p>
<p class="has-vivid-red-color has-text-color has-link-color wp-elements-be73c8a5f195eb5c231aaecc8be16431"><strong>Load balancing persistence policies are also restricted to Least Connections, Shared IP List Based, Round Robin and IP List Based.</strong></p>
<p>Using DSR also requires Real Server changes to be done. Please refer to the Real Server Changes section in the Administrator guide.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How do I write my own custom server health monitor?</title>
		<link>https://kb.edgenexus.io/kb/how-do-i-write-my-own-custom-server-health-monitor/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 16:25:01 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=325</guid>

					<description><![CDATA[You can write a custom health monitor specific to your needs using PERL. The #Monitor-Name: command is the name used for the Perl Script stored on the ADC. If you do not include this line, then your script will not be found! The following are mandatory: The Perl scripts are run in a CHROOTED environment. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>You can write a custom health monitor specific to your needs using PERL.</p>
<p>The #Monitor-Name: command is the name used for the Perl Script stored on the ADC. If you do not include this line, then your script will not be found!</p>
<p>The following are mandatory:</p>
<ul class="wp-block-list">
<li>#Monitor-Name</li>
<li>use strict;</li>
<li>use warning;</li>
</ul>
<p>The Perl scripts are run in a <strong>CHROOTED</strong> environment. They often call another application such as WGET or CURL. Sometimes these need to be updated for a specific features, such as SNI.</p>
<h3 class="wp-block-heading">Dynamic Values</h3>
<ul class="wp-block-list">
<li>my $host = $_[0]; &#8211; This uses the “Address” from IP Services&#8211;Real Server section</li>
<li>my $port = $_[1]; &#8211; This uses the “Port” from IP Services&#8211;Real Server section</li>
<li>my $content = $_[2]; &#8211; This uses the “Required Content” value from the Library&#8211;Real Server Monitoring section</li>
<li>my $notes = $_[3]; &#8211; This uses the “Notes” column in Real Server section of IP Services</li>
<li>my $page = $_[4]; &#8211; This uses the “Page Location” values from Library&#8211;Real Server Monitor section</li>
<li>my $user = $_[5]; &#8211; This uses the “User” value from the Library&#8211;Real Server Monitor section</li>
<li>my $password = $_[6]; &#8211; This uses the “Password” value from the Library&#8211;Real Server Monitor section</li>
</ul>
<p>See below images that show where the Dynamic Values are obtained from:</p>
<figure data-wp-context="{&quot;imageId&quot;:&quot;68aae76d4563f&quot;}" data-wp-interactive="core/image" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="2240" height="618" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1.png" alt="" class="wp-image-326" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1.png 2240w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1-300x83.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1-1024x283.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1-768x212.png 768w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1-1536x424.png 1536w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1-2048x565.png 2048w" sizes="auto, (max-width: 2240px) 100vw, 2240px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on-async--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
<figure data-wp-context="{&quot;imageId&quot;:&quot;68aae76d458ec&quot;}" data-wp-interactive="core/image" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="2221" height="830" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2.png" alt="" class="wp-image-327" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2.png 2221w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2-300x112.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2-1024x383.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2-768x287.png 768w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2-1536x574.png 1536w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2-2048x765.png 2048w" sizes="auto, (max-width: 2221px) 100vw, 2221px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on-async--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
<p>Custom Health Checks have two outcomes:</p>
<ul class="wp-block-list">
<li>Successful<br><em>Return Value 1<br>Print a success message to Syslog<br>Mark the Real Server Online (provided IN COUNT match)</em></li>
<li>Unsuccessful<br><em>Return Value 2<br>Print a message saying Unsuccessful to Syslog<br>Mark the Real Server Offline (provided OUT Count match)</em></li>
</ul>
<h3 class="wp-block-heading">An Example Custom Monitor</h3>
<pre class="wp-block-code"><code>#Monitor-Name: Edgenexus-Agfa-Status-Health-Check
use strict;
use warnings;
########################################################################################################
# Edgenexus custom health checking Copyright Edgenexus 2023
########################################################################################################
#
#
# This is a Perl script for Edgenexus customer health checking
# The monitor name as above is displayed in the dropdown of Available health checks
# There are 3 value passed to this script
#
# I am using:
# _&#91;0] IP address of the server to be health checked
# _&#91;2] Required content - 200OK
# _&#91;4] Page - Location and Port to use
# my $host = $_&#91;0]; - This uses the “Address” from IP Services--Real Server section
# my $port = $_&#91;1]; - This uses the “Port” from IP Services--Real Server section
# my $content = $_&#91;2]; - This uses the “Required Content” value from the Library--Real Server Monitoring section
# my $notes = $_&#91;3]; - This uses the “Notes” column in Real Server section of IP Services
# my $page = $_&#91;4]; - This uses the “Page Location” values from Library--Real Server Monitor section
# my $user = $_&#91;5]; - This uses the “User” value from the Library--Real Server Monitor section
# my $password = $_&#91;6]; - This uses the “Password” value from the Library--Real Server Monitor section
#
# The script will return the following values
# 1 is the test is successful
# 2 if the test is unsuccessful
#
sub monitor
{
  my $host = $_&#91;0]; ### Host IP or name
  my $content = $_&#91;2]; ### Required Response
  my $cvar = $_&#91;4]; ### Path to be checked (Path, Port, prefix)
  my ($page, $port, $prefix) = split(/,\s*/, $cvar);
  $host = "$host:$port";
  my @lines = `/usr/bin/wget -q -S --tries=1 --timeout=1 --no-check-certificate --output-document=- $prefix://$host$page 2>&amp;1`;
  if (join("",@lines))
  {
    print "$prefix://$host$page looking for - $content - Healhcheck check successful\n";
    return(1);
  }
else
  {
    print "$prefix://$host$page looking for - $content - Healhcheck check failed.\n";
    return(2)
  }
}
monitor(@ARGV);</code></pre>
<p class="has-vivid-red-color has-text-color has-link-color wp-elements-88c4851a71fcf368d624f05a6c1435c7"><em><strong>NOTE: </strong></em></p>
<p><em><strong>Custom Monitoring – Use of global variables is not possible. Use local variables only – variables defined inside functions</strong></em></p>
<p><em><strong>Use of RegEx &#8211; All regular expressions must use a Perl-compatible statement syntax.</strong></em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Does the EdgeADC support server health monitoring?</title>
		<link>https://kb.edgenexus.io/kb/does-the-edgeadc-support-server-health-monitoring/</link>
		
		<dc:creator><![CDATA[jsavoor@edgenexus.io]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 15:52:10 +0000</pubDate>
				<guid isPermaLink="false">https://kb.edgenexus.io/?post_type=epkb_post_type_1&#038;p=321</guid>

					<description><![CDATA[Yes. In the EdgeADC, this is called Real Server Monitoring, and it is located in the Library section within the Navigation panel. The EdgeADC is equipped with a few commonly used monitoring methods by default, but it is very simple to construct your own server monitor using the provided elements. Alongside the default monitors, 200OK [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Yes. In the EdgeADC, this is called Real Server Monitoring, and it is located in the Library section within the Navigation panel.</p>
<p>The EdgeADC is equipped with a few commonly used monitoring methods by default, but it is very simple to construct your own server monitor using the provided elements.</p>
<figure data-wp-context="{&quot;imageId&quot;:&quot;68aae76d467cf&quot;}" data-wp-interactive="core/image" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="2220" height="830" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on-async--click="actions.showLightbox" data-wp-on-async--load="callbacks.setButtonStyles" data-wp-on-async-window--resize="callbacks.setButtonStyles" src="https://kb.edgenexus.io/wp-content/uploads/2024/04/image.png" alt="" class="wp-image-322" srcset="https://kb.edgenexus.io/wp-content/uploads/2024/04/image.png 2220w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-300x112.png 300w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1024x383.png 1024w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-768x287.png 768w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-1536x574.png 1536w, https://kb.edgenexus.io/wp-content/uploads/2024/04/image-2048x766.png 2048w" sizes="auto, (max-width: 2220px) 100vw, 2220px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on-async--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
<p>Alongside the default monitors, 200OK and DICOM present within the Monitoring manager, there are also additional preset monitors available under the Real Server Monitor menu within the Basic Tab. These are:</p>
<ul class="wp-block-list">
<li>Ping/ICMP Echo</li>
<li>TCP Connection</li>
<li>ICMP Unreachable</li>
<li>RDP (Remote Desktop Protocol)</li>
</ul>
<p>Using the Monitoring Manager, you can create monitors that best suit your needs. The EdgeADC Administrator Guide describes how to create a monitor in full.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
