<?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>Troubleshooting &#8211; GLU Global</title>
	<atom:link href="https://glu.global/article-categories/troubleshooting/feed/" rel="self" type="application/rss+xml" />
	<link>https://glu.global</link>
	<description>Innovation at Speed</description>
	<lastBuildDate>Fri, 17 May 2024 08:05:46 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://glu.global/wp-content/uploads/2022/01/cropped-favicon-1-32x32.png</url>
	<title>Troubleshooting &#8211; GLU Global</title>
	<link>https://glu.global</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Build Manager Errors</title>
		<link>https://glu.global/glu-guide/glu-console-build-manger-errors/</link>
		
		<dc:creator><![CDATA[Carol Whyte]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 09:05:14 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4275</guid>

					<description><![CDATA[The Build Manager provides an additional layer or &#8216;error&#8217; assistance. At build time the Build Manager will present a pop-up with the list of &#8216;Warnings&#8217;. See screenshot below. The &#8216;Go to Configuration&#8217; button will take the User directly to the relevant Integration to enable the User to address the Warnings prior to re-attempting the &#8216;Build&#8217; [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>The Build Manager provides an additional layer or &#8216;error&#8217; assistance. At build time the Build Manager will present a pop-up with the list of &#8216;Warnings&#8217;. See screenshot below.<br><br></p>



<p>The &#8216;Go to Configuration&#8217; button will take the User directly to the relevant Integration to enable the User to address the Warnings prior to re-attempting the &#8216;Build&#8217; process.<br><br></p>



<p>There are times when some warnings may not be of material concern to the User. For example if the warnings relate to a transaction that is not the primary focus at that point in time or it may still be under configuration &#8230; whereas other transactions in the Build are not throwing any warnings. In this case the option to &#8216;Proceed&#8217; can be used to create the GLU.Engine Build not-withstanding the &#8216;Warnings&#8217;. In this way the User can proceed with testing the &#8216;working&#8217; transactions within the Build but those associated with the &#8216;accepted&#8217; &#8220;Warnings&#8217; will likely fail.<br><br></p>



<p>It must also be noted that some warnings relating to Environments, Connectors, Auth Collections or Static / Reusable Parameter Collections may impact all transactions within a GLU.Engine. Some of these warnings will prevent a build from occurring. As such proceeding with building a GLU.Engine that is flagging &#8216;warnings&#8217; is generally not advised as there is no certainty that any transactions will actually work.<br><br></p>



<p>In other words &#8211; if there are &#8216;Warnings&#8217; &#8211; &#8216;Proceed&#8217; with your Build with caution.<br><br></p>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" src="https://glu.global/wp-content/uploads/2023/02/image-5.png" alt="" class="wp-image-4276" width="699" height="662" srcset="https://glu.global/wp-content/uploads/2023/02/image-5.png 699w, https://glu.global/wp-content/uploads/2023/02/image-5-300x284.png 300w, https://glu.global/wp-content/uploads/2023/02/image-5-50x47.png 50w" sizes="(max-width: 699px) 100vw, 699px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GLU.Console Configuration Errors</title>
		<link>https://glu.global/glu-guide/configuration-errors/</link>
		
		<dc:creator><![CDATA[Carol Whyte]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 08:56:31 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4262</guid>

					<description><![CDATA[Integration Builder Validations Throughout the GLU.Console &#8211; validation logic has been added to enable configuration errors to be &#8216;flagged&#8217; to the user. These &#8216;flags&#8217; are reflected as &#8216;Warnings&#8217;, a summary of all &#8216;Warnings&#8217; can be seen by using the &#8216;Warnings&#8217; button within the tool options at the top of the Configuration screens. See example in [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading has-medium-font-size"><strong>Integration Builder Validations</strong></h1>



<p>Throughout the GLU.Console &#8211; validation logic has been added to enable configuration errors to be <strong>&#8216;flagged&#8217;</strong> to the user. These <strong>&#8216;flags&#8217;</strong> are reflected as<strong> &#8216;Warnings&#8217;</strong>, a summary of all <strong>&#8216;Warnings&#8217;</strong> can be seen by using the <strong>&#8216;Warnings&#8217;</strong> button within the tool options at the top of the Configuration screens. See example in the screenshot below:</p>



<p></p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img decoding="async" width="552" height="302" src="https://glu.global/wp-content/uploads/2023/02/image-3.png" alt="" class="wp-image-4269" style="width:552px;height:302px" srcset="https://glu.global/wp-content/uploads/2023/02/image-3.png 552w, https://glu.global/wp-content/uploads/2023/02/image-3-300x164.png 300w, https://glu.global/wp-content/uploads/2023/02/image-3-50x27.png 50w" sizes="(max-width: 552px) 100vw, 552px" /><figcaption class="wp-element-caption"><br></figcaption></figure></div>


<p>Warnings are generated in near real-time i.e. as configurations are added, warnings will pop-up to guide the user. In the example below, the Parameter Name is flagged as &#8216;mandatory&#8217; due to the * &#8230; the warning shows up to prompt the user to add the mandatory field:</p>



<p></p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img decoding="async" width="493" height="473" src="https://glu.global/wp-content/uploads/2023/02/image-4.png" alt="" class="wp-image-4271" style="width:493px;height:473px" srcset="https://glu.global/wp-content/uploads/2023/02/image-4.png 493w, https://glu.global/wp-content/uploads/2023/02/image-4-300x288.png 300w, https://glu.global/wp-content/uploads/2023/02/image-4-50x48.png 50w" sizes="(max-width: 493px) 100vw, 493px" /></figure></div>


<p></p>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Build Manager Validations</strong></h1>



<p>Where errors that have not been addressed in the Configuration will be highlighted and listed prior to allowing a &#8216;Build&#8217; to proceed. Additionally, any errors during the actual &#8216;Build&#8217; process will be displayed after a build fails (these errors will be visible in the <strong>&#8216;Build History&#8217;</strong> &#8211; see sample below &#8211; for later reference).</p>



<p></p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="139" src="https://glu.global/wp-content/uploads/2023/02/image-2-1024x139.png" alt="" class="wp-image-4254" srcset="https://glu.global/wp-content/uploads/2023/02/image-2-1024x139.png 1024w, https://glu.global/wp-content/uploads/2023/02/image-2-300x41.png 300w, https://glu.global/wp-content/uploads/2023/02/image-2-768x104.png 768w, https://glu.global/wp-content/uploads/2023/02/image-2-50x7.png 50w, https://glu.global/wp-content/uploads/2023/02/image-2-1536x209.png 1536w, https://glu.global/wp-content/uploads/2023/02/image-2.png 1735w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>


<p class="has-medium-font-size"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>INFO Level Log Enrichment</title>
		<link>https://glu.global/glu-guide/info-level-log-enrichment/</link>
		
		<dc:creator><![CDATA[Richard Price]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 08:56:24 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4263</guid>

					<description><![CDATA[Overview The GLU.Console provides the capability to configure in the INFO request and response logs a tag which can be used to trace transactions as they occur. These tags can consist of both hardcoded text labels and/or variables generated in the running GLU.Engine. In the example below we show how 3 tags have been setup [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading has-medium-font-size"><strong>Overview</strong></h1>



<p>The GLU.Console provides the capability to configure in the INFO request and response logs a<strong> <em>tag</em> </strong>which can be used to trace transactions as they occur. These <em><strong>tags</strong></em> can consist of both hardcoded text labels and/or variables generated in the running GLU.Engine. <br><br></p>



<p>In the example below we show how 3 tags have been setup for each API. In the log below we can see how the tags are reflected in the logs:<br><br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="421" src="https://glu.global/wp-content/uploads/2023/02/filter1-1024x421.png" alt="" class="wp-image-4357" srcset="https://glu.global/wp-content/uploads/2023/02/filter1-1024x421.png 1024w, https://glu.global/wp-content/uploads/2023/02/filter1-300x123.png 300w, https://glu.global/wp-content/uploads/2023/02/filter1-768x316.png 768w, https://glu.global/wp-content/uploads/2023/02/filter1-50x21.png 50w, https://glu.global/wp-content/uploads/2023/02/filter1.png 1372w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="427" src="https://glu.global/wp-content/uploads/2023/02/filter2-1024x427.png" alt="" class="wp-image-4358" srcset="https://glu.global/wp-content/uploads/2023/02/filter2-1024x427.png 1024w, https://glu.global/wp-content/uploads/2023/02/filter2-300x125.png 300w, https://glu.global/wp-content/uploads/2023/02/filter2-768x320.png 768w, https://glu.global/wp-content/uploads/2023/02/filter2-50x21.png 50w, https://glu.global/wp-content/uploads/2023/02/filter2.png 1370w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="427" src="https://glu.global/wp-content/uploads/2023/02/filter3-1024x427.png" alt="" class="wp-image-4359" srcset="https://glu.global/wp-content/uploads/2023/02/filter3-1024x427.png 1024w, https://glu.global/wp-content/uploads/2023/02/filter3-300x125.png 300w, https://glu.global/wp-content/uploads/2023/02/filter3-768x320.png 768w, https://glu.global/wp-content/uploads/2023/02/filter3-50x21.png 50w, https://glu.global/wp-content/uploads/2023/02/filter3.png 1373w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="572" src="https://glu.global/wp-content/uploads/2023/02/example-log-Enriched-1024x572.png" alt="" class="wp-image-4360" srcset="https://glu.global/wp-content/uploads/2023/02/example-log-Enriched-1024x572.png 1024w, https://glu.global/wp-content/uploads/2023/02/example-log-Enriched-300x168.png 300w, https://glu.global/wp-content/uploads/2023/02/example-log-Enriched-768x429.png 768w, https://glu.global/wp-content/uploads/2023/02/example-log-Enriched-50x28.png 50w, https://glu.global/wp-content/uploads/2023/02/example-log-Enriched.png 1385w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>As can be seen  tags appear on each INFO line after the TraceID.<br><br></p>



<p>Also note the first 2 transactions in the log. These show values for the<strong> &#8220;<em>responseCode</em>&#8220;</strong> as this contains a value at this point in the transaction execution. The log filter is set as below for this API:</p>



<p></p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>get light: ${responseCode}</em></td></tr></tbody></table></figure>



<p>These tags and values are associated with all INFO Level logs for each unique transaction.<br><br></p>



<p>This enables the payloads of Inbound and Outbound Connectors to be included in the INFO Level Logs. By selecting the checkbox to &#8216;Add to INFO Logs&#8217; within the Request / Response Manager Panels, this data can be controlled to be included or not in the INFO logs. </p>



<p></p>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Considerations</strong></h1>



<p>Writing additional data to logs does have a performance impact  which must be kept in consideration.&nbsp;Performance testing following such changes is advised.<br><br></p>



<p>Sensitive data that is flagged to be excluded or masked from the logs by unchecking of the &#8216;Make visible in logs&#8217; setting will apply to the tags.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GLU.Console Sessions and Timeouts</title>
		<link>https://glu.global/glu-guide/glu-console-sessions-and-timeouts/</link>
		
		<dc:creator><![CDATA[Carol Whyte]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 08:37:52 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4258</guid>

					<description><![CDATA[Session timeouts occur when a user remains inactive on the GLU.Console for a specified interval. The timeout duration varies depending on the tool being used: 30 minutes for Integration Builder and USSD Menu Builder tools, and 2 minutes for all other tools. When a session timeout occurs, the user&#8217;s session status is changed to &#8216;invalid&#8217; [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><br>Session timeouts occur when a user remains inactive on the GLU.Console for a specified interval. The timeout duration varies depending on the tool being used: 30 minutes for Integration Builder and USSD Menu Builder tools, and 2 minutes for all other tools. When a session timeout occurs, the user&#8217;s session status is changed to &#8216;invalid&#8217; on the server side, and the web server is instructed to terminate it, resulting in the deletion of all unsaved data.</p>



<p></p>



<p></p>



<p>To alert users before their session expires, a pop-up notification with a countdown timer (20 seconds) appears as the inactivity time approaches the timeout interval. Users have the option to stay connected, refreshing their session, or to log out. If there is no response from the user, the session is terminated, and they are automatically logged out.</p>



<p></p>



<p></p>



<p><strong>Note:</strong> Any configuration changes not saved will be lost. It is important to regularly save configuration changes that you want to keep to avoid potentially losing configuration work that you may be busy with.</p>



<p></p>



<p></p>



<p>If you encounter an error on the login page stating &#8220;User is currently logged in&#8221; when trying to log back in after a session timeout, you can resolve this by forcing your user to be logged out using the following URL: <a href="https://www.console.glu.global/glu-console/logout">https://www.console.glu.global/glu-console/logout</a>.</p>



<p><br></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GLU.Engine start up errors</title>
		<link>https://glu.global/glu-guide/glu-engine-start-up-errors/</link>
		
		<dc:creator><![CDATA[Richard Price]]></dc:creator>
		<pubDate>Wed, 01 Feb 2023 08:05:38 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4234</guid>

					<description><![CDATA[Occasionally you may face challenges starting up your GLU.Engine. Below we outline a few of the Errors you might encounter and how to deal with them. Startup Warning If your engine starts up, but there is a warning which looks like this: WARN o.a.c.i.c.AnnotationTypeConverterLoader &#8211; Ignoring converter type: org.apache.camel.component.cxf.converter.CxfConverter as a dependent class could not [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Occasionally you may face challenges starting up your GLU.Engine. Below we outline a few of the Errors you might encounter and how to deal with them.</p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Startup Warning</strong></h1>



<p>If your engine starts up, but there is a warning which looks like this:</p>



<p></p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>WARN o.a.c.i.c.AnnotationTypeConverterLoader &#8211; Ignoring converter type: org.apache.camel.component.cxf.converter.CxfConverter as a dependent class could not be found: java.lang.NoClassDefFoundError: javax/xml/soap/SOAPMessage java.lang.NoClassDefFoundError: javax/xml/soap/SOAPMessage at java.base/java.lang.Class.getDeclaredMethods0(Native Method) at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166)</em></td></tr></tbody></table></figure>



<p>This is likely to be linked to the wrong java version running. Please see here <a href="https://glu.global/glu-guide/glu-engine-server-specifications/" data-type="ht_kb" data-id="3022" target="_blank" rel="noreferrer noopener">GLU.Engine Server Specifications</a> for the correct java version. </p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Startup Error</strong></h1>



<p>This error will occur if the port value is missing in the database connector. See below screen shot from the connector screen:</p>



<p></p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="765" height="358" src="https://glu.global/wp-content/uploads/2023/02/Screenshot-2023-02-06-at-13.28.22.png" alt="" class="wp-image-4755" srcset="https://glu.global/wp-content/uploads/2023/02/Screenshot-2023-02-06-at-13.28.22.png 765w, https://glu.global/wp-content/uploads/2023/02/Screenshot-2023-02-06-at-13.28.22-300x140.png 300w, https://glu.global/wp-content/uploads/2023/02/Screenshot-2023-02-06-at-13.28.22-50x23.png 50w" sizes="auto, (max-width: 765px) 100vw, 765px" /></figure></div>


<p><br>You will see this error in the Database logs:</p>



<p></p>



<p></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="90" src="https://glu.global/wp-content/uploads/2023/02/image-186.png" alt="" class="wp-image-5661" srcset="https://glu.global/wp-content/uploads/2023/02/image-186.png 800w, https://glu.global/wp-content/uploads/2023/02/image-186-300x34.png 300w, https://glu.global/wp-content/uploads/2023/02/image-186-768x86.png 768w, https://glu.global/wp-content/uploads/2023/02/image-186-50x6.png 50w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>&#8212; error &#8212; com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: &#8216;java.lang.NumberFormatException: For input string: &#8220;null&#8221;&#8216;.</em></td></tr></tbody></table></figure>



<p>To resolve, simply update your Connector configuration to include the Port</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GLU.Engine Logging Levels</title>
		<link>https://glu.global/glu-guide/glu-engine-logging-levels/</link>
		
		<dc:creator><![CDATA[Richard Price]]></dc:creator>
		<pubDate>Tue, 31 Jan 2023 14:43:49 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=4198</guid>

					<description><![CDATA[How to Change GLU.Engine Logging Level The logging level of a GLU.Engine can be altered through three mechanisms. The first method involves using the Application Settings within the GLU.Console, however, this requires a complete rebuild and redeployment of the GLU.Engine. The second method allows for the logging level to be altered without the need for [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading has-medium-font-size"><strong>How to Change GLU.Engine Logging Level</strong></h1>



<p>The logging level of a GLU.Engine can be altered through three mechanisms.<br><br>The first method involves using the Application Settings within the GLU.Console, however, this requires a complete rebuild and redeployment of the GLU.Engine.<br><br>The second method allows for the logging level to be altered without the need for a rebuild and redeployment. This is done through the use of the <em><strong>&#8220;changelogginglevel.sh&#8221;</strong></em> script located in the GLU.Engine deployment directory:</p>



<p></p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>./changelogginglevel.sh DEBUG</em></td></tr></tbody></table></figure>



<p>This shell script actually makes use of one of the <a href="https://glu.global/glu-guide/glu-engine-apis/" data-type="ht_kb" data-id="3619">GLU.Engine APIs</a> to make the change. <br><br>This is the third method, which is to call the JMX APIs directly on the server port. This method should be used when using a docker container to run the GLU.Engine. </p>



<p></p>



<p><br><br><strong>Changing Log Level via the GLU.Console</strong><br><br>In <strong>Build Manager</strong>, Select GLU.Engine Settings: </p>



<p></p>



<p></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="229" height="61" src="https://glu.global/wp-content/uploads/2023/02/image-38.png" alt="" class="wp-image-4944" srcset="https://glu.global/wp-content/uploads/2023/02/image-38.png 229w, https://glu.global/wp-content/uploads/2023/02/image-38-50x13.png 50w" sizes="auto, (max-width: 229px) 100vw, 229px" /></figure>



<p><br>Edit <strong>&#8220;logging&#8221;</strong> to the desired level:</p>



<p></p>



<p></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="521" height="402" src="https://glu.global/wp-content/uploads/2023/02/image-39.png" alt="" class="wp-image-4947" srcset="https://glu.global/wp-content/uploads/2023/02/image-39.png 521w, https://glu.global/wp-content/uploads/2023/02/image-39-300x231.png 300w, https://glu.global/wp-content/uploads/2023/02/image-39-50x39.png 50w" sizes="auto, (max-width: 521px) 100vw, 521px" /></figure>



<p>The <strong>&#8220;<em>Path</em>&#8220;</strong> and <strong>&#8220;<em>Name</em>&#8221; </strong>of the GLU.Engine logs can be altered to meet specific requirements. To specify the log path as the root directory of the GLU.Engine folder, utilise a full stop <strong><em>&#8220;.&#8221; </em></strong>in the relevant configuration setting <strong>&#8220;<em>Path</em>&#8220;</strong>. </p>



<p></p>



<p><br><br><strong>Why have different Log Levels?</strong><br><br>The logging framework utilised by GLU, the de-facto standard in the Java world, classifies log messages into five categories: </p>



<p></p>



<p></p>



<ul class="wp-block-list">
<li><strong>ERROR</strong></li>



<li><strong>WARN</strong></li>



<li><strong>INFO</strong></li>



<li><strong>DEBUG</strong></li>



<li><strong>TRACE</strong></li>
</ul>



<p></p>



<p>These log levels are assigned based on the urgency of the log message, allowing log filtering by level of importance.<br><br>In a production environment, it is crucial to have an efficient filtering mechanism for log messages to quickly identify urgent issues leading to potential losses. Mixing urgent log messages with non-urgent ones which hampers efficient log analysis.<br><br>It is important to understand when to categorise log messages into each level of urgency.</p>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>ERROR</strong></h1>



<p>The ERROR level should only be used when the application really is in trouble. Users are being affected without having a way to work around the issue.</p>



<p></p>



<p>Someone must be alerted to fix it immediately, even if it’s in the middle of the night. There must be some kind of alerting in place for ERROR log events in the production environment. Often, the only use for the ERROR level within a certain application is when a valuable business use case cannot be completed due to technical issues or a bug.</p>



<p></p>



<p>Take care not to use this logging level too generously because that would add too much noise to the logs and reduce the significance of a single ERROR event. You wouldn’t want to be woken in the middle of the night due to something that could have waited until the next morning, would you?</p>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>WARN</strong></h1>



<p>The WARN level should be used when something bad happened, but the application still has the chance to heal itself or the issue can wait a day or two to be fixed.</p>



<p></p>



<p>Like ERROR events, WARN events should be attended to by a dev or ops person, so there must be some kind of alerting in place for the production environment.</p>



<p></p>



<p>A concrete example for a WARN message is when a system failed to connect to an external resource but will try again automatically. It might ultimately result in an ERROR log message when the retry-mechanism also fails. The WARN level is the level that should be active in production systems by default, so that only WARN and ERROR messages are being reported, thus saving storage capacity and performance.</p>



<p></p>



<p>If storage and performance are not a problem and our log server provides good search capabilities we can actually report even INFO and DEBUG events and just filter them out when we’re only interested in the important stuff.</p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>INFO</strong></h1>



<p>The INFO level should be used to document state changes in the application or some entity within the application. This information can be helpful during development and sometimes even in production to track what is actually happening in the system.</p>



<p></p>



<p>Concrete examples for using the INFO level are:</p>



<p></p>



<ul class="wp-block-list">
<li>the application has started with configuration parameter x having the value y</li>



<li>a new entity (e.g. a user) has been created or changed its state</li>



<li>the state of a certain business process (e.g. an order) has changed from “open” to “processed”</li>



<li>a regularly scheduled batch job has finished and processed z items.</li>
</ul>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>DEBUG</strong></h1>



<p>DEBUG level logging shows the detail of every transactions.<br><br>Including:</p>



<p></p>



<ul class="wp-block-list">
<li>error messages when an incoming HTTP request was malformed, resulting in a 4xx HTTP status</li>



<li>variable values in business logic.</li>



<li>Transaction details<br></li>
</ul>



<p>Due to performance implications DEBUG mode should be used in Production environments sparingly. Sparingly means 2-3 hours in a controlled test, and switched back to INFO or higher straight after.</p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>TRACE</strong></h1>



<p>Compared to DEBUG, it’s pretty easy to define what to log on TRACE. As the name suggests, we want to log all information that helps us to trace the processing of an incoming request through our application.<br><br>This includes:</p>



<ul class="wp-block-list">
<li>start or end of a method, possibly including the processing duration</li>



<li>URLs of the endpoints of our application that have been called</li>



<li>start and end of the processing of an incoming request or scheduled job.<br></li>
</ul>



<h1 class="wp-block-heading has-medium-font-size"><strong>Log File Settings &amp; Limits</strong></h1>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="375" src="https://glu.global/wp-content/uploads/2023/02/image-185-1024x375.png" alt="" class="wp-image-5657" style="width:768px;height:281px" srcset="https://glu.global/wp-content/uploads/2023/02/image-185-1024x375.png 1024w, https://glu.global/wp-content/uploads/2023/02/image-185-300x110.png 300w, https://glu.global/wp-content/uploads/2023/02/image-185-768x282.png 768w, https://glu.global/wp-content/uploads/2023/02/image-185-50x18.png 50w, https://glu.global/wp-content/uploads/2023/02/image-185.png 1173w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GLU.Engine Logs</title>
		<link>https://glu.global/glu-guide/glu-engine-logs/</link>
		
		<dc:creator><![CDATA[Richard Price]]></dc:creator>
		<pubDate>Mon, 30 Jan 2023 10:59:33 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=3666</guid>

					<description><![CDATA[Overview Multiple methods are available for modifying the logging settings within the GLU.Engine: It is important to note that changes to log levels within the GLU.Engine can have a significant impact on system performance. As such, it is recommended to only run the GLU.Engine in DEBUG mode during periods of low traffic, or to increase [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading has-medium-font-size"><strong>Overview</strong></h1>



<p>Multiple methods are available for modifying the logging settings within the GLU.Engine:</p>



<p></p>



<ul class="wp-block-list">
<li>All settings can be set through the console when building through the &nbsp;<a href="https://glu.global/glu-guide/application-settings/" data-type="ht_kb" data-id="4147" target="_blank" rel="noreferrer noopener">GLU.Engine Settings</a>.</li>



<li>A subset of settings can be configured in the <em>applicationSettings.yml</em> file.</li>



<li>A further subset can be set through the <a href="https://glu.global/glu-guide/glu-engine-apis/" data-type="ht_kb" data-id="3619" target="_blank" rel="noreferrer noopener">GLU.Engine APIs</a>.</li>
</ul>



<p></p>



<p>It is important to note that changes to log levels within the GLU.Engine can have a significant impact on system performance. As such, it is recommended to only run the GLU.Engine in DEBUG mode during periods of low traffic, or to increase system resource allocations to compensate for the increased logging output. The utilisation of the DEBUG mode will result in the generation of substantial log files, which can rapidly consume the allotted log storage space. Given these considerations, it is not advisable to operate the GLU.Engine in a production environment under heavy load for extended durations.</p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Log file Settings</strong></h1>



<p>The GLU.Engine generates a single log file, with historical data being transferred to older log files. The attributes of the file, including the naming convention, can be regulated. <br><br>The dynamic name, can be customised in the <a rel="noreferrer noopener" href="https://glu.global/glu-guide/application-settings/" data-type="ht_kb" data-id="4147" target="_blank">Application Settings</a> file. <br><br>The log file is capable of being processed by any log management tool that can handle text-based log files. GLU has ratified the consumption of GLU.Ware logs through the use of the Elastic Stack, Dynatrace, and AWS Cloudwatch.<br><br>See <a rel="noreferrer noopener" href="https://glu.global/glu-guide/glu-analytics-deployment-guidelines/" type="ht_kb" id="3839" target="_blank" class="broken_link">GLU.Analytics Deployment Guidelines</a> for an example of how to integrate to Elastic Stack.<br><br>The integration screens provide the capability to configure response payloads to be displayed in the logs as a single line. This enhances the readability of the text-based log files.<br><br>See&nbsp;&nbsp;<a rel="noreferrer noopener" href="https://glu.global/glu-guide/masking-sensitive-data-parameters-in-logs-2/" data-type="ht_kb" data-id="4072" target="_blank">Masking Sensitive Data/Parameters in Logs</a> section for detail on how to hide any sensitive data from your Logs.</p>



<h1 class="wp-block-heading has-medium-font-size"><strong>ISO8583 &#8211; Q2 Logs</strong></h1>



<p>GLU uses the Q2 component to generate ISO8583 logs to provide more detailed information about the processing of ISO8583 messages than is available in the standard GLU.Engine logs. The Q2 logs contain information such as the message type, message format, message fields, and any errors that occurred during processing.<br><br>Q2 logs are useful for troubleshooting issues with ISO8583 integrations using the Q2 protocol. They can be used to identify errors in message construction, data formatting, or other issues that may be causing problems with the integration.<br><br><strong>The appSettings.yml file</strong></p>



<p>It is possible to configure the various settings in a file which is include with the GLU.Engine.<br><br>The file can be found here:</p>



<p></p>



<pre class="wp-block-code"><code><em>../engine/config/applicationSettings.yml </em></code></pre>



<p></p>



<p>If this is changed then this will require the GLU.Engine to be restarted for settings to be applied. The table below describes the parameters which can be changed in the file. </p>



<p><br></p>



<figure class="wp-block-table"><table><thead><tr><th><strong>Console Dialogue label</strong></th><th><strong>Description</strong></th><th><strong>appSettings.yml parameter name</strong></th><th><strong>Sample Value</strong></th></tr></thead><tbody><tr><td>Path</td><td>Path to the log file</td><td>logging.path</td><td>/var/log</td></tr><tr><td>File</td><td>Name of the log file, &#8220;.log&#8221;will be concatenated to the end of the log file.</td><td>logging.file</td><td>gluware</td></tr><tr><td>Level</td><td>The Logging level. for changing the logging levels see&nbsp;<a href="https://glu.global/glu-guide/glu-engine-logging-levels/" data-type="ht_kb" data-id="4198" target="_blank" rel="noreferrer noopener">GLU.Engine Logging Levels</a></td><td>logging.level.global.glu</td><td>INFO</td></tr><tr><td>Management Endpoint Shutdown Enabled</td><td>It is possible to change the logging levels in real time, with out starting and stopping the GLU.Engine. To allow this to happen this field must be set too false. See&nbsp;<a href="https://glu.global/glu-guide/glu-engine-logging-levels/" data-type="ht_kb" data-id="4198" target="_blank" rel="noreferrer noopener">GLU.Engine Logging Levels</a>&nbsp;to change the settings.</td><td>management.security.enabled</td><td>false</td></tr><tr><td>Max File Size</td><td>As the log file grows when its size exceeds this value (in MB), it will save this file with a unique identity and create a new file to write the logs to.</td><td>Not in appSettings.yml file.</td><td>1000</td></tr><tr><td>Max History</td><td>In the directory/folder which the logs are being written to, there can only be this number of log files. If the number is exceeded then the oldest file will be deleted.</td><td>Not in appSettings.yml file.</td><td>30</td></tr><tr><td>Total Size Cap</td><td>For the directory/folder which the logs are being written to, the size of the directory/folder can not exceed this value (in MB), if it does then the oldest file will be deleted.</td><td>Not in appSettings.yml file.</td><td>50000</td></tr><tr><td>FileName Pattern</td><td>Format of mask which will be concatenated to the log file name. i.e. gluware.2021-07-29.1.log, where gluware is the&nbsp;<em>file</em>, 2021-07-29 is the&nbsp;<strong>FileName Pattern</strong>, 1 is the sequence number given by GLU and .log the extension.</td><td>Not in appSettings.yml file.</td><td>yyyy-MM-dd</td></tr><tr><td>Pattern File</td><td>This is the header which is written on each log line.</td><td>Not in appSettings.yml file.</td><td>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]&nbsp;%-5level %logger{36} &#8211; %msg%n</td></tr></tbody></table></figure>



<h1 class="wp-block-heading has-medium-font-size"><strong>Log file Detail</strong></h1>



<p>The GLU.Engines produce 1 types of log file.&nbsp;</p>



<figure class="wp-block-table"><table><tbody><tr><th>Type</th><th>Log Name</th><th>Description</th></tr><tr><td>GLU</td><td>gluware.log</td><td>(logging.level.global.glu)</td></tr></tbody></table></figure>



<h1 class="wp-block-heading has-medium-font-size"><strong>GLUware.log</strong></h1>



<p>The Initial lines in the log file will contain the information in the table below. Once the GLU.Engine is running it is also possible to pull the same information through a GLU API request see <a rel="noreferrer noopener" href="https://glu.global/glu-guide/glu-engine-apis/#transaction-name-2-glu-engine-api-description-api-actuator-info" data-type="ht_kb" data-id="3619" target="_blank">Engine Info</a>.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<figure class="wp-block-table has-small-font-size"><table><thead><tr><th>#</th><th><strong>Name</strong></th><th><strong>Example</strong></th><th><strong>Description</strong></th></tr></thead><tbody><tr><td>1</td><td>Process settings</td><td>2018-12-12 08:48:47 [main] INFO global.glu.ware.GluWareApplication -Starting GluWareApplication v1.0-SNAPSHOT on ip-172-31-13-254&nbsp;with PID 17022 (/home/ec2-user/test/TestApp-1.0-SNAPSHOT/engine/TestApp-1.0</td><td>Datetimestamp LOG Level and GLU DetailsStarting Application NameInternal IP Application starts onProcess ID Application running under (PID)Path the Application on the server the process runs from.&nbsp;</td></tr><tr><td>2</td><td>Profile</td><td>2018-12-12 08:48:47 [main] INFO global.glu.ware.GluWareApplication -No active profile set, falling back to default profiles: default</td><td>Datetimestamp LOG Level and GLU DetailsDetails of the profile which is used to run the engine</td></tr><tr><td>3</td><td>StartingTomcat</td><td>2018-12-12 08:48:55 [main] INFO o.a.catalina.core.StandardService -Starting service [Tomcat]</td><td>Process ID Application running under (PID)Warning Tomcat Starting for Engine</td></tr><tr><td>4</td><td>Starting Servlet</td><td>2018-12-12 08:48:55 [main] INFO o.a.catalina.core.StandardEngine -Starting Servlet Engine: Apache Tomcat/8.5.31</td><td>Process ID Application running under (PID)Warning Servlet starting</td></tr><tr><td>5</td><td>Initializing Spring</td><td>2018-12-12 08:48:56 [localhost-startStop-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] -Initializing Spring embedded WebApplicationContext</td><td>Process ID Application running under (PID)Warning Spring starting</td></tr><tr><td>6</td><td>Route Policy</td><td>2018-12-12 08:48:57 [main] INFO o.a.c.s.boot.CamelAutoConfiguration -Using custom RoutePolicyFactory with id: metricsRoutePolicyFactory and implementation: org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicyFactory@75e91545</td><td>Process ID Application running under (PID)Route Policy</td></tr><tr><td>7</td><td>Type converters</td><td>2018-12-12 08:48:58 [main] INFO o.a.c.i.c.DefaultTypeConverter -Type converters loaded (core: 193, classpath: 30)</td><td>Process ID Application running under (PID)Details on the Type converters.</td></tr><tr><td>8</td><td>Integration Path</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Integration Config Path :/home/ec2-user/test/TestApp-1.0-SNAPSHOT/engine/config/flows.json</td><td>Process ID Application running under (PID)Path to flows.json file with configuration of the engine defined.</td></tr><tr><td>9</td><td>Application</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Application :FlashApp</td><td>Process ID Application running under (PID)Application name.</td></tr><tr><td>10</td><td>Code</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Client :Flash CODE&nbsp;: [17194]</td><td>Process ID Application running under (PID)GLU Client Name Unique Code reference.&nbsp;</td></tr><tr><td>11</td><td>Version</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Version :1.0-SNAPSHOT</td><td>Process ID Application running under (PID)Version of the Application being run.&nbsp;</td></tr><tr><td>12</td><td>Spec</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Integeration Spec Name :Integration Spec.[V.1.0]</td><td>Process ID Application running under (PID)Name of the Integration being run.&nbsp;</td></tr><tr><td>13</td><td>Menu builder details</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Menu :There is NO Menu Builder</td><td>Process ID Application running under (PID)Name of the Menu Builder if it is included in the Application.</td></tr><tr><td>14</td><td>Build Date &amp; Time</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Date built / Release :Wed, 12 Dec 2018 10:45:31 +0200</td><td>Process ID Application running under (PID)Date the Application was built.&nbsp;</td></tr><tr><td>15</td><td>Build EnvironmentConnector details</td><td>2018-12-12 08:48:58 [main] INFO g.glu.ware.platform.utils.GluLogging -Build Environment :GLUEN3 Conn To STUBSENV</td><td>Process ID Application running under (PID)the environment the Build was triggered from.</td></tr></tbody></table></figure>
</div>
</div>



<h1 class="wp-block-heading has-medium-font-size"><strong>Log Levels</strong></h1>



<p>See the <a href="https://glu.global/glu-guide/glu-engine-logging-levels/" target="_blank" rel="noreferrer noopener">GLU.Engine Log Levels page</a> for details. </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GLU.Engine Troubleshooting Checklist</title>
		<link>https://glu.global/glu-guide/glu-engine-devops-troubleshooting-checklist/</link>
		
		<dc:creator><![CDATA[Richard Price]]></dc:creator>
		<pubDate>Mon, 30 Jan 2023 09:15:34 +0000</pubDate>
				<guid isPermaLink="false">https://glu.global/?post_type=ht_kb&#038;p=3615</guid>

					<description><![CDATA[Generic Troubleshooting Steps As an integration expert, these are the steps I would follow to troubleshoot an integration: Diagnostic Tools Here are some diagnostic tools that you can use to troubleshoot system integration issues: By using these diagnostic tools, you can effectively troubleshoot system integration issues and resolve them in a timely and efficient manner. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading has-medium-font-size"><strong>Generic Troubleshooting Steps</strong></h1>



<p>As an integration expert, these are the steps I would follow to troubleshoot an integration:</p>



<p></p>



<p></p>



<ol class="wp-block-list">
<li><strong>Gather Information: </strong>The first step is to gather as much information as possible about the problem. This includes:


<ul class="wp-block-list">
<li>GLU.Engine configuration and build version details.</li>



<li>GLU.Engine logs in DEBUG mode, for ISO8583 be sure to gather the Q2 logs too. </li>
</ul>



<ul class="wp-block-list">
<li>Postman Test Pack with sample messages to enable the issue to be repeated in a test environment.</li>



<li>Collect information about the transaction that is causing the issue, the message format, the communication channel used, and any error messages that are generated.</li>



<li>If errant payloads have elements that are encrypted, one should get those sample messaged decrypted to enable parameter values to be understood. Sometimes a failure may be caused by a parameter value that breaks a validation rule. </li>



<li>Documentation such as API Specs, solution design diagrams, Sequence diagrams etc.</li>



<li>Time of day may also be relevant, is there any unusual system behaviour happening at the time the issue is observed (e.g. peak load or perhaps system maintenance activities).</li>
</ul>
</li>



<li><strong>Analyse the Data:</strong> The next step is to analyse the data that was gathered in step one. This includes reviewing the message payloads and checking for any inconsistencies or errors. It is important to understand how the message was constructed, what data was sent, and what data was received.</li>



<li><strong>Check the Network Connection:</strong> The third step is to check the network connection between the two systems. This includes reviewing network logs, checking for packet loss, and testing the connection to ensure that it is stable and reliable.</li>



<li><strong>Verify the Message Format: </strong>The fourth step is to verify that the message format is correct. This includes checking the message structure, message type, message class, and other relevant parameters / fields. If you are experiencing protocol-related issues, such as incorrect message formats or sequencing, TCPdump is a command-line packet analyser that can help you identify the source of the problem. By capturing and analysing the network traffic, you can determine if the issue is related to the protocol itself or to the specific implementation of the protocol in your system.</li>



<li><strong>Check the Configuration: </strong>The fifth step is to check the configuration of both systems. This includes reviewing system settings, ensuring that the correct protocols and ports are being used, and verifying that the necessary libraries and drivers are installed. Check that the message format, data elements, and fields are correctly configured.</li>



<li><strong>Perform functional testing:</strong> Conduct functional testing to identify any issues in the message flow. Verify that the message is being sent and received correctly and that the message content is correct.</li>



<li><strong>Collaborate with Stakeholders: </strong>The sixth step is to collaborate with stakeholders, including developers, system administrators, and end-users. This includes sharing information, discussing possible solutions, and determining the best course of action to resolve the issue.</li>



<li><strong>Test the Solution: </strong>The seventh and final step is to test the proposed solution to ensure that the issue has been resolved. This includes verifying that the message is now being processed correctly and that all data is being transmitted and received as expected.</li>



<li><strong>Document findings: </strong>Document your findings and the steps taken to resolve the issue. This documentation can be used as a reference for future troubleshooting efforts.</li>
</ol>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Diagnostic Tools</strong></h1>



<p>Here are some diagnostic tools that you can use to troubleshoot system integration issues:</p>



<p></p>



<p></p>



<ol class="wp-block-list">
<li><strong>Wireshark: </strong>Wireshark is a popular network protocol analyser that can capture and analyse network traffic in real-time. You can use it to analyse the message flow and identify any issues with the message format, data elements, and fields.</li>



<li><strong>Log analysis tools:</strong> There are many log analysis tools available, such as Splunk, ELK Stack, and Logstash. These tools can help you analyse the system logs and identify any errors or exceptions that may have occurred during the transaction.</li>



<li><strong>Performance monitoring tools:</strong> Performance monitoring tools such as Nagios, Zabbix, and Prometheus can help you monitor system performance and identify any issues that may be affecting system performance.</li>



<li><strong>Network monitoring tools: </strong>Network monitoring tools such as PRTG, SolarWinds, and Nagios can help you monitor network performance and identify any issues that may be affecting network performance. TCPdump is a command-line packet analyser that is used to capture and analyse network traffic. If you suspect that there is a problem with the network connectivity between systems, TCPdump can help you identify the source of the problem. By capturing and analysing the network traffic between systems, you can determine if packets are being dropped, delayed, or corrupted, and then take the appropriate corrective action.</li>
</ol>



<p>By using these diagnostic tools, you can effectively troubleshoot system integration issues and resolve them in a timely and efficient manner.</p>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Timeout Troubleshooting</strong></h1>



<p>When troubleshooting integration issues where timeout errors are suspected, the following steps and tools can be used to assist the troubleshooting process:</p>



<p></p>



<p></p>



<ol class="wp-block-list">
<li><strong>Identify the Symptoms: </strong>Identify the symptoms of the timeout error. This can include slow response times, failed requests, or error messages related to timeouts. It is important to understand the nature of the issue and the specific symptoms that are being experienced.</li>



<li><strong>Check Network Connectivity: </strong>Check the network connectivity between the systems. This can include checking for packet loss, latency, or other network issues. Tools such as ping, traceroute, or network diagnostic tools can be used to identify and diagnose network connectivity issues.</li>



<li><strong>Review System Logs:</strong> Review system logs to identify any errors or warning messages related to the integration. This can include logs from both the sending and receiving systems as well as the GLU.Engine logs. It is important to identify any errors or warning messages that may be related to the timeout issue.</li>



<li><strong>Check Timeout Settings: </strong>This can include both the sending and receiving systems, as well as any middleware or other components that may be involved in the integration. It is important to ensure that timeout settings are configured appropriately and are not set too low.</li>



<li><strong>Assess System Performance:</strong> Performance assessing an integration is not a trivial exercise as it can include setting up a dedicated performance testing environment to monitor CPU usage, memory usage, and disk I/O when to simulated high volumes of traffic are being processed. Load testing tools can be used to simulate various load scenarios and identify any performance or scalability issues that may be causing the timeout errors.Performance monitoring tools can be used to identify any bottlenecks or performance issues that may be causing the timeout errors. There is more detail on how to performance test your GLU.Engines <a href="https://glu.global/glu-guide/glu-engine-performance-related-support/" target="_blank" rel="noreferrer noopener">here</a> and <a href="https://glu.global/glu-guide/performance-benchmark/" target="_blank" rel="noreferrer noopener">here</a>.</li>



<li><strong>Work with Vendors: </strong>The final step is to work with vendors or service providers to identify and resolve any issues related to the integration. This may involve working with the vendor&#8217;s support team or development team to identify and resolve any issues that may be causing the timeout errors.</li>
</ol>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>ISO8583 Troubleshooting</strong></h1>



<p>Here are some diagnostic tools that you can use to troubleshoot ISO8583 system integration issues:</p>



<p></p>



<p></p>



<p><strong>ISO8583 message viewer:</strong> <strong>An ISO8583 </strong>message viewer is a tool that can help you view and decode ISO8583 messages. It can help you understand the message content and identify any errors in the message flow. Here are some ISO8583 message viewer tools:</p>



<p></p>



<p></p>



<ol class="wp-block-list">
<li><strong>ISO8583 Message Decoder by Sarel: </strong>This is a free web-based tool that allows you to decode and view ISO8583 messages in various formats such as HEX, ASCII, and BINARY. It supports a wide range of ISO8583 message versions and can display detailed information about each field.</li>



<li><strong>MessageWare ISO8583 Analyser: </strong>This is a paid software tool that provides a user-friendly interface for analysing ISO8583 messages. It can decode and display the message content, perform field validation, and highlight any errors or issues in the message.</li>



<li><strong>ISO8583 Message Editor by Sarel:</strong> This is a free web-based tool that allows you to create, edit, and send ISO8583 messages. It supports a wide range of ISO8583 message versions and can generate messages in various formats such as HEX, ASCII, and BINARY.</li>



<li><strong>ISO8583 Toolkit by Proxymitron: </strong>This is a paid software tool that provides a comprehensive set of ISO8583 tools for message creation, editing, and analysis. It includes a message editor, message analyser, message simulator, and message validation tool.</li>



<li><strong>ISO8583 Message Viewer by Pantor: </strong>This is a free and open-source software tool that allows you to view and analyse ISO8583 messages. It supports a wide range of ISO8583 message versions and can display detailed information about each field.</li>



<li>TCPdump can be used to capture and verify the integrity of the binary messages being sent and received as ISO8583 messages. By analysing the binary data in the captured packets, you can ensure that the messages are being transmitted correctly and are not being altered in transit.</li>
</ol>



<p><strong>ISO8583 simulator: An ISO8583</strong> simulator can help you simulate transactions and test the message flow. It can help you identify any issues with message routing, message format, and message content.</p>



<p></p>



<p></p>



<p>There are several <strong>ISO8583 simulator</strong> tools available, each with their own unique features and capabilities. Here are some popular ISO8583 simulator tools that you can consider:</p>



<p></p>



<p></p>



<ol class="wp-block-list">
<li><strong>Postman: </strong>Postman is a popular API development tool that can also be used as an ISO8583 simulator. It allows users to create and send ISO8583 messages using its API testing capabilities.</li>



<li><strong>JPOS:</strong> JPOS is a Java-based framework that provides ISO8583 message processing capabilities. It also includes a simulator tool that allows users to create, send, and receive ISO8583 messages.</li>



<li><strong>ISO8583 Simulator:</strong> ISO8583 Simulator is a standalone simulator tool that can be used to create, send, and receive ISO8583 messages. It supports various message types and can be configured to simulate different network scenarios.</li>



<li><strong>M365 ISO8583 Simulator:</strong> M365 ISO8583 Simulator is a web-based simulator tool that can be used to test ISO8583 message processing. It supports various message types and can be customised to simulate different network scenarios.</li>



<li><strong>Paragon Testing Tool: </strong>Paragon Testing Tool is a comprehensive testing tool that includes ISO8583 message processing capabilities. It allows users to create, send, and receive ISO8583 messages and also includes advanced testing features such as load testing and stress testing.</li>
</ol>



<p>These are just a few of the many ISO8583 simulator tools available. It&#8217;s important to evaluate your specific requirements and choose a simulator tool that best fits your needs.</p>



<p></p>



<p></p>



<h2 class="wp-block-heading has-medium-font-size"><strong>ISO8583 Packager Issues</strong></h2>



<p>If a sending system uses a different packager than the receiving system, there may be issues with the encoding and decoding of the message. The receiving system may not be able to properly interpret the message because the fields may be in a different order, have different lengths, or be missing altogether.</p>



<p></p>



<p>This can result in errors or rejected transactions, which could cause delays or even financial losses. In some cases, the receiving system may be able to detect the issue and reject the message outright, while in other cases, the message may be processed incorrectly, leading to further issues down the line.</p>



<p></p>



<p>To prevent such issues, it is important to ensure that both the sending and receiving systems use compatible packagers that adhere to the same version of the ISO 8583 standard. This can be achieved by using standardised libraries or tools that are commonly used in the financial industry, or by ensuring that both systems are properly configured to communicate with each other.</p>



<p></p>



<p>Unmatched or corrupt ISO8583 packagers used by sending or receiving systems or by your GLU.Engine, this can result in various issues, including:</p>



<p></p>



<p></p>



<ol class="wp-block-list">
<li><strong>Message Rejection: </strong>The receiver system may reject the ISO8583 messages sent by the sender system because the message format is not correct. This can lead to communication failures between the systems, causing delays and errors in the transaction processing.</li>



<li><strong>Data Corruption: </strong>If the packager is not configured correctly, it may incorrectly process or interpret the message data, leading to data corruption. This can cause errors in the transaction processing or result in incorrect transaction data being recorded.</li>



<li><strong>Misinterpretation of Message Fields: </strong>If the packager is not configured correctly, it may misinterpret the message fields, leading to incorrect data being recorded or processed.</li>
</ol>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>SOAP Troubleshooting</strong></h1>



<p>Prior to launching the GLU.Engines, ensure that the SOAP connectors are operational. The startup process for the GLU.Engine will pause at each SOAP connector until a connection has been established. In the event that a connection is unavailable, the startup process will be terminated.</p>



<p></p>



<p></p>



<p class="has-medium-font-size">Non-sensical log error:</p>



<p></p>



<p>If you see this error in the logs:</p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>ERROR in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@2094777811 &#8211; totalSizeCap of [4 GB] is smaller than maxFileSize [9 GB].</em></td></tr></tbody></table></figure>



<p>or something similar, this means you have incorrect settings in the&nbsp;<a href="https://glu.global/glu-guide/glu-engine-settings/" data-type="ht_kb" data-id="4147" target="_blank" rel="noreferrer noopener">Application Settings</a>, see Logging level tab &#8211; Max file Size, Max History or Total Size Cap.</p>



<p></p>



<p></p>



<h1 class="wp-block-heading has-medium-font-size"><strong>Performance Troubleshooting</strong></h1>



<h2 class="wp-block-heading has-medium-font-size"><strong>Extracting thread dumps</strong></h2>



<p>You will need to install the developers version for the JDK to get jstack &amp; jcmd, use this command on linux environments with yum, or something similar.</p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>sudo yum install java-1.8.0-openjdk-devel</em> (soon to be deprecated)<br>OR <br><em>sudo yum install java-17-openjdk-devel</em></td></tr></tbody></table></figure>



<p></p>



<p><strong><em>&#8220;jstack&#8221; </em></strong>is an effective command line tool to capture thread dumps.<br><br>The <strong>Jstack tool</strong> is included in JDK since Java 5. If you are running in older version of java, consider using other options. The&nbsp;jstack tool is shipped in: <em><strong>&#8220;JDK_HOME\bin&#8221; </strong>folder. </em></p>



<p></p>



<p>Here is the command that you need to issue to capture a thread dump:</p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>jstack -l &lt;pid&gt; &gt; &lt;file-path&gt;</em></td></tr></tbody></table></figure>



<p>Where: </p>



<ul class="wp-block-list">
<li><strong><em>pid</em> </strong>: is the Process Id of the application, whose thread dump should be captured.</li>



<li><strong><em>file-path</em> </strong>: is the file path where thread dump will be written in to.</li>
</ul>



<p>For example:</p>



<p></p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>jstack -l 37320 &gt; /opt/tmp/threadDump.txt</em></td></tr></tbody></table></figure>



<p>As per the example the thread dump process would generate a file here: </p>



<p></p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td>/<em>opt/tmp/threadDump.txt</em></td></tr></tbody></table></figure>



<p></p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Capturing Heap Dumps</strong></h2>



<p><strong>&#8220;<em>jmap</em>&#8220;</strong> is a tool to print statistics about memory in a running JVM. We can use it for local or remote processes. To capture a heap dump using jmap we need to use the&nbsp;dump&nbsp;option:</p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>jmap -dump:[live],format=b,file=&lt;file-path&gt; &lt;pid&gt;</em> </td></tr></tbody></table></figure>



<p>Along with that option, we should specify several parameters:</p>



<p></p>



<ul class="wp-block-list">
<li><em><strong>live</strong></em> : if set it only prints objects which have active references and discards the ones that are ready to be garbage collected. This parameter is optional.</li>



<li><strong><em>format=b</em> </strong>: specifies that the dump file will be in binary format. If not set the result is the same. </li>



<li><strong><em>file</em> </strong>: the file where the dump will be written to.</li>



<li><strong><em>pid</em> </strong>: id of the Java process.</li>
</ul>



<p>An example would be like this:</p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>jmap -dump:live,format=b,file=/tmp/dump.hprof 12587</em></td></tr></tbody></table></figure>



<p>Remember that you can easily get the&nbsp;pid&nbsp;of a Java process by using the&nbsp;jps&nbsp;command, o</p>



<p></p>



<figure class="wp-block-table"><table><tbody><tr><td><em>ps -afe | grep java </em> </td></tr></tbody></table></figure>



<p>Keep in mind that&nbsp;jmap was introduced in the JDK as an experimental tool and it&#8217;s unsupported.&nbsp;Therefore, in some cases, it may be preferable to use other tools instead.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
