New Relic
Transact supports New Relic, a widely used third-party monitoring tool, that allows you to gather data based on custom events in Transact. You can use custom events to measure and monitor the following information:
- The number of documents processed.
- The number of pages processed per minute.
- The average size of the documents being processed.
Prerequisites
To use New Relic with Transact, you must have a New Relic account
If you do not have a New Relic account, you can sign up for a free trial on the New Relic site.
Feature overview
New Relic is an observability platform that allows you to bring in data from any digital source so that you can fully understand your system and how to improve it. Data is reported in the form of events that have multiple attributes (key-value pairs). Event data is reported to your New Relic platform, where you can query to retrieve data.
The following actions are posted as New Relic custom events:
-
User logging into Transact. The following user login types are tracked:
-
AD
-
LDAP
-
SAML-based SSO
-
Default Tomcat authentication
-
-
Batch is picked up for processing. Processing through the following ingestion methods are tracked:
-
Upload Batch page
-
Web Scanner
-
Email Import
-
UNC Folder
-
CMIS Import
-
-
Batch arrives at the review state
-
Batch arrives at the validation state
-
Batch processes successfully
-
Batch fails to process
Using these events, you can query for the following information:
-
Number of documents processed during a specific time period.
-
Pages processed per minute.
-
Average size of documents being processed.
New Relic startup configuration
The following steps outline how to configure New Relic for on-premises Transact licenses.
-
Download the latest version of the newrelic-java.zip file from New Relic.
-
Extract the ZIP file.
-
Update the newrelic.yml file.
-
Locate the following line: license_key: '<%= license_key %>'.
-
Replace '<%= license_key %>' with your New Relic license key.
-
Locate the following line: app_name: My Application.
-
Replace the line "My Application" with the name of your application.
-
-
Copy the New Relic folder to [Ephesoft Transact_Directory]\JavaAppServer on the Transact server.
-
Go to [Ephesoft Transact_Directory]\JavaAppServer\bin.
-
Right-click EphesoftTransact.exe and select Run as administrator.
-
Click the Java tab and add the following parameter:
-javaagent:C:\Ephesoft\JavaAppServer\newrelic\newrelic.jar
-
Restart the Transact service.
To access your data, go to one.newrelic.com and click the query your data icon.
New Relic custom events - batch events
This topic covers the custom batch events that are supported for New Relic.
Batch picked up
When a batch is picked up for processing, a custom event is sent to New Relic containing the following information:
EventName: BATCH_PICKED_UP_EVENT {
appId: <type number> (assigned by New Relic),
appName: <type String> "(app_name Defined in New Relic configuration file(newrelic.yml)),
batchClassIdentifier: <type String> ,
batchClassName: <type String> ,
batchInstanceIdentifier: <type String> ,
batchName: <type String> ,
batchStartTime: <type number> (Epoch Unix Time Stamp),
batchStatus: <type String> ,
entityGuid: <type String> (assigned by New Relic),
host: <type String> ,
realAgentId: <type number> (assigned by New Relic),
timestamp: <type number> (assigned by New Relic)
}
Sample query
SELECT * from BATCH_PICKED_UP_EVENT SINCE 30 days ago
A query can be raised against appName, for example:
SELECT * from BATCH_PICKED_UP_EVENT where appName = 'APPLICATION-NAME' SINCE 30 days ago
SELECT * from BATCH_PICKED_UP_EVENT where appName ='APPLICATION-NAME' and batchInstanceIdentifier = 'BATCH
IDENTIFIER' SINCE 30 days ago
Batch Ready For Review
When a batch is in Review, a custom event is sent to New Relic containing the following information:
EventName: BATCH_READY_FOR_REVIEW_EVENT
{
appId:<type number>(assigned by New Relic),
appName:<type String>"(app_name Defined in New Relic configuration file(newrelic.yml)),
batchClassIdentifier:<type String>,
batchClassName:<type String>,
batchDocumentsSize:<type number>(In Bytes),
batchInstanceIdentifier:<type String>,
batchName:<type String>,
batchProcessingTime:<type number>(millisecond),
batchSource:<type String>,
batchStartTime:<type number>(Epoch Unix Time Stamp),
batchStatus:<type String>,
entityGuid:<type String>(assigned by New Relic),
host:<type String>,
numDocuments:<type number>,
numPages:<type number>,
numSourceDocuments:<type number>,
realAgentId:<type number>(assigned by New Relic),
timestamp:<type number>(assigned by New Relic)
}
Sample query
Find all batches that entered the READY_FOR_REVIEW state in the last 30 days:
SELECT * from BATCH_READY_FOR_REVIEW_EVENT SINCE 30 days ago
Find all batches that entered the READY_FOR_REVIEW state in the last 30 days for a specific Transact Instance:
SELECT * from BATCH_READY_FOR_REVIEW_EVENT where appName = 'APPLICATION-NAME' SINCE 30 days ago
Find whether a specific batch entered the READY_FOR_REVIEW state in the last 30 days:
SELECT * from BATCH_READY_FOR_REVIEW_EVENT where appName ='APPLICATION-NAME' and batchInstanceIdentifier = 'BATCH
IDENTIFIER' SINCE 30 days ago
Batch ready for validation
When a batch is in Validation, a custom event is sent to New Relic containing the following information:
EventName: BATCH_READY_FOR_VALIDATION_EVENT
{
appId:<type number>(assigned by New Relic),
appName:<type String>"(app_name Defined in New Relic configuration file(newrelic.yml)),
batchClassIdentifier:<type String>,
batchClassName:<type String>,
batchDocumentsSize:<type number>(In Bytes),
batchInstanceIdentifier:<type String>,
batchName:<type String>,
batchProcessingTime:<type number>(millisecond),
batchSource:<type String>,
batchStartTime:<type number>(Epoch Unix Time Stamp),
batchStatus:<type String>,
entityGuid:<type String>(assigned by New Relic),
host:<type String>,
numDocuments:<type number>,
numPages:<type number>,
numSourceDocuments:<type number>,
realAgentId:<type number>(assigned by New Relic),
timestamp:<type number>(assigned by New Relic)
}
Batch finished
When a batch finishes successfully, a custom event is sent to New Relic containing the following information:
EventName: BATCH_FINISHED_EVENT
{
appId:<type number>(assigned by New Relic),
appName:<type String>"(app_name Defined in New Relic configuration file(newrelic.yml)),
batchClassIdentifier:<type String>,
batchClassName:<type String>,
batchDocumentsSize:<type number>(In Bytes),
batchFinishTime: <type number>(Epoch Unix Time Stamp),,
batchInstanceIdentifier:<type String>,
batchName:<type String>,
batchProcessingTime:<type number>(millisecond),
batchSource:<type String>,
batchStartTime:<type number>(Epoch Unix Time Stamp),
batchStatus:<type String>,
entityGuid:<type String>(assigned by New Relic),
host:<type String>,
numDocuments:<type number>,
numPages:<type number>,
numSourceDocuments:<type number>,
realAgentId:<type number>(assigned by New Relic),
timestamp:<type number>(assigned by New Relic)
}
Sample Query
SELECT * from BATCH_FINISHED_EVENT SINCE 30 days ago
SELECT * from BATCH_FINISHED_EVENT where appName = 'APPLICATION-NAME' SINCE 30 days ago
SELECT * from BATCH_FINISHED_EVENT where appName ='APPLICATION-NAME' and batchInstanceIdentifier = 'BATCH IDENTIFIER'
SINCE 30 days ago
The number of ingested documents number documents processed (classified documents):
SELECT numSourceDocuments,numDocuments from BATCH_FINISHED_EVENT where appName ='APPLICATION-NAME' and
batchInstanceIdentifier = 'BATCH IDENTIFIER' SINCE 30 days ago
The number of documents processed against the given duration:
SELECT count(numDocuments) from BATCH_FINISHED_EVENT where appName ='APPLICATION-NAME' SINCE 30 days ago
The number of documents processed against batch class within a given duration:
SELECT count(numDocuments) from BATCH_FINISHED_EVENT where appName ='APPLICATION-NAME' FACET batchClassName SINCE 30 days
ago
Pages per minute (PPM) processed:
SELECT sum(numPages)/((max(batchFinishTime) - min(batchStartTime))/60) FROM BATCH_FINISHED_EVENT where appName
='APPLICATION-NAME' limit 2 Since 1 hours ago
Batch failed
When batch processing fails, a custom event is sent to New Relic containing the following information:
EventName: BATCH_FAILED_EVENT
{
appId:<type number>(assigned by New Relic),
appName:<type String>"(app_name Defined in New Relic configuration file(newrelic.yml)),
batchClassIdentifier:<type String>,
batchClassName:<type String>,
batchDocumentsSize:<type number>(In Bytes),
batchInstanceIdentifier:<type String>,
batchName:<type String>,
batchProcessingTime:<type number>(millisecond),
batchSource:<type String>,
batchStartTime:<type number>(Epoch Unix Time Stamp),
batchStatus:<type String>,
entityGuid:<type String>(assigned by New Relic),
host:<type String>,
numDocuments:<type number>,
numPages:<type number>,
numSourceDocuments:<type number>,
realAgentId:<type number>(assigned by New Relic),
timestamp:<type number>(assigned by New Relic)
}
Sample query
SELECT * from BATCH_FAILED_EVENT SINCE 30 days ago
SELECT * from BATCH_FAILED_EVENT where appName = 'APPLICATION-NAME' SINCE 30 days ago
SELECT * from BATCH_FAILED_EVENT where appName ='APPLICATION-NAME' and batchInstanceIdentifier = 'BATCH IDENTIFIER' SINCE
30 days ago
Events can be queried using the sending event name. For example, to query the record for the finished batch.
SELECT host,appName,batchClassIdentifier,batchSource,numDocuments FROM BATCH_FINISHED_EVENT Since 30 days ago
The number of documents processed against the host/app name can be queried as:
SELECT sum(numDocuments) as 'documents processed' FROM BATCH_FINISHED_EVENT FACET host Since 30 days ago
The number of documents processed against host and batch source can be queried as:
SELECT sum(numDocuments) as 'documents processed' FROM BATCH_FINISHED_EVENT FACET host,batchSource Since 30 days ago
New Relic custom events - User events
When you log in, a custom event is sent to New Relic containing the following information. The AD, LDAP, SSO, and Tomcat (default) login methods are counted.
EventName: USER_LOGIN_EVENT
{
appId:<type number>(assigned by New Relic),
appName:<type String>"(app_name Defined in New Relic configuration file(newrelic.yml)),
entityGuid:<type String>(assigned by New Relic),
host:<type String>,
userRoles:<String>,
realAgentId:<type number>(assigned by New Relic),
timestamp:<type number>(assigned by New Relic),
userName:<String>
}
Example: AD instance
EventName: USER_LOGIN_EVENT
{
"appId": 123456789,
"appName": "APPLICATION-NAME",
"entityGuid": "67e03f59c9b54d3988818cdfd47f09f6",
"host": "A1BC23DEF",
"userRoles": ["Tax Digital Transformation SecG1"],
"realAgentId": 123456789,
"timestamp": 1600343402576,
"userName": "engineering"
}
Example: SSO instance
EventName: USER_LOGIN_EVENT
{
"appId": 123456789,
"appName": APPLICATION-NAME,
"entityGuid": "67e03f59c9b54d3988818cdfd47f09f6",
"host": "A1BC23DEF",
"realAgentId": 123456789,
"timestamp": 1600970940583,
"userName": "ephesoft",
"userRoles":"["CAPTURE-Administrator","CAPTURE-SystemAdministrator","CAPTURE-User","Administrator"]"
}
Example: Tomcat instance
EventName: USER_LOGIN_EVENT
{
"appId": 123456789,
"appName": "APPLICATION-NAME",
"entityGuid": "67e03f59c9b54d3988818cdfd47f09f6",
"host": "A1BC23DEF
"realAgentId": 123456789,
"timestamp": 1600972596106,
"userName": "ephesoft",
"userRoles": "engineering"
}
The number of users logged in against the host/app name can be queried as:
SELECT count(*) as nummber_of_users_logged_in from USER_LOGIN_EVENT where appName = <Your Application Name> SINCE 30
days ago