Application Performance Monitoring
Table of Contents:
Catalyst Application Performance Monitoring (APM) is a service that provides valuable and in-depth insights about the executions of the functions in your Catalyst application. APM enables you to monitor the standards of your functions, obtain critical statistics and reports of their executions, review and analyze that data to identify bugs and issues, and fix them instantaneously without comprising on app quality.
While Catalyst Logs enables you to perform function logging and access the written logs of all function invocations, APM acts an enhancement to the standard logs and offers a multifaceted and informative view on function performances.
APM performs automatic monitoring of all five types of functions(Basic I/O, Advanced I/O, Cron, Event, and Integration) in both programming environments (Java and Node.js) in your Catalyst application.
You can obtain the following comprehensive analytics for your functions, based on several performance monitoring metrics:
- Function-specific graphs on the number of invocations and errors, as well as the response time of each execution for a selected period of time
- An aggregated report on the response times of all functions grouped together, for better insights
- A list of the top hundred slowest function calls for a selected period of time, for easier identification of problem areas
- A list of all function invocations with essential meta data and response details
- Drilled down component usage information, such as the component calls made by the functions, the slowest performing components, detailed component usage trace, and other related data, in a cohesive visual format
After you enable APM for your project, this information will be pushed to the Catalyst servers and you will be able to access them from the Catalyst console. You can also disable APM any time if you do not require Catalyst to track function executions, and re-enable it when needed.
- Instant, Contextual, and Discernable Insights into Function Characteristics
APM provides both a bird's-eye glance and detailed reports of all the performance and dynamic aspects of your functions, in a well structured and organized manner. The information conveyed is presented in a user-friendly layout that makes it easy for you to pinpoint the exact or potential problematic parts of your application, understand the areas that can be improved, and fix performance issues before they impact the end users of your applications.
- Improved Application Testing and Diagnostics
APM enhances the application building process by speeding up application testing. Since the process of fetching key data about your application's performance is completely automated and handled by Catalyst, it makes your job easier as you need not implement trace and monitoring services manually. You can detect, diagnose, and resolve failures in your microservices as and when they occur, enabling you to deliver value through your service. APM helps you provide curated, seamless user experiences, and associate a refined application performance with successful business outcomes.
- Fine-Grained Component Usage Trace
APM provides a ready-to-use component usage trace that is highly beneficial in identifying specific configuration issues in the Catalyst components invoked by the functions in your application. You can obtain fundamental, drilled-down performance reports of the dependent component instances incorporated using the SDKs in your functions, which capture the application context in depth. You can pick out the components that execute the slowest or the longest function run times, and work on their core problems. You can also identify issues that occur user-wise, and build solutions for them.
- Ease of Access
Catalyst eliminates the need for you to perform any actions to integrate APM in your applications. All you would need to do is enable APM in the console with the click of a button. Catalyst will work in the background to fetch data from the servers and produce it in APM in the console. You can access updated information and monitor your functions live, any time you need.
Enable Application Performance Monitoring
To enable Catalyst to begin tracking the performance of the functions in your Catalyst application, you must enable Application Performance Monitoring for your project.
You must remember these points about APM tracking function performance:
- Catalyst will track and log your function performances only when APM is enabled.
- Enabling APM will not cost you any charges in the Development environment. In the Production environment, fetching each category of data from the Catalyst servers entails one read call. In other words, the price for fetching one graph or table is one credit. Refer to the Pricing page for more details.
- If you disable APM in the console, you will not be able to obtain the function performance data of the functions that execute during the time the APM is disabled. You will therefore not be charged for fetching the function performance reports in the Production environment during this period.
- Catalyst keeps a record of all performance reports of your functions for a maximum period of 30 days. You can therefore find performance reports and execution details of the last 30 days, at any given point of time in APM.
- If you re-enable APM after having disabled it, Catalyst will still show you data of the last 30 days, excluding the data of the time period of when it was disabled.
To enable Application Performance Monitoring for your Catalyst application from the console:
- Navigate to Add-on Services under Discover, then click Get Started in the Application Performance Monitoring window.
- Click Enable Now in the APM feature page.
- Click Proceed in the confirmation window.
APM is now enabled for your Catalyst project. allowing you to view the APM Dashboard. The performances of the functions in your application will now be logged, and the data will be displayed in APM.
The Dashboard section presents a quick overview of several categories of performance data for each function, over a specific period of time.
You must select the function and the time period from the dropdown lists in the section, to view populated graphs.
You must first select the type of function.
This will list all functions of that type that have been deployed to the console in your project. Select a function.
You can select one of the following time periods:
|Time Period Value||Range|
|Last 24 hours||Fetches and displays data of each hour, from an exact 24 hour window.|
For example, if you click on Last 24 Hours at 16:03:24, the data fetched will be from 16:03:24 of the previous day. However, the graphs will appear to display the data from the beginning of the hour, i.e., from 16:00:00 hours of the previous day, for a simpler visual presentation.
|Last 7 days||Fetches and displays an overall report of each day, of the last 7 days|
This includes the present day until the current second, and the previous 6 days starting at 12:00:00 AM on the first day.
|Last 15 days||Fetches and displays an overall report of each day, of the last 15 days|
This includes the present day until the current second, and the previous 14 days starting at 12:00:00 AM on the first day.
|Last 30 days||Fetches and displays an overall report of each day, of the last 30 days|
This includes the present day until the current second, and the previous 29 days starting at 12:00:00 AM on the first day.
This section displays the following graphs:
- Invocation/Error: This graph provides details about the total number of invocations and error invocations of the function on each day or hour, based on the selected time period.Note: If the function execution evokes any response over status 400, the execution will be considered a failure.
- Response Time: This graph provides the average response time of the function on each day or hour, based on the selected time period.
- Function Count: This graph presents the correlation between the invocation count and execution time of the function on each day or hour, based on the selected time period.
The executions are grouped into an appropriate execution time category. Each cell represents the number of times the function executed in that corresponding execution time category, for a day or hour. The intensity of the color represents the density of executions.
The Dashboard section also displays a list of the Top 100 Slowest Calls, sorted in a descending order of response time.
The table displays the top hundred slowest calls of all functions of the type and time period you select from the dropdown lists on the top. It does not list the executions of a specific function.
The table also shows other metadata of the execution, as seen in the picture, such as the response time in milliseconds, the number of times it was called remotely, and the User ID of the end-user who invoked the function.
You can choose the number of rows to display per page from the dropdown list below.
You can click on a function to navigate to the function's details page.
The Functions section displays a list of all function executions by default in the last 30 days, irrespective of their type. The list is sorted in a descending manner of the time of execution. In other words, the most recent execution is displayed first.
The table provides several details about each execution as seen in the picture, such as the type of function, response time, the number of remote calls made to it, and more.
You can choose the number of rows to display per page from the dropdown list below.
You can use filters to enable Catalyst to list functions based on specific criteria in this section. Click Filters on the top right corner of this section to open the filters menu.
The following filters are available:
- User ID: You can filter the executed functions list by a specific user who invoked the functions. You can obtain the User IDs of all application users from the Users tab in Catalyst Authentication.
- Request Method: You can filter the functions that executed with a particular request method from the dropdown list. You can choose from GET, POST, PUT, DELETE, or PATCH.
- Response Type: You can filter the functions list by specifying a particular response code received for the executions
- Function Name: You can list the executions of a specific function by entering its name in the filter.
- Component: You can list the executions of any one type of function: Basic I/O, Advanced I/O, Event, or Cron.
- Execution Time: You can choose a particular day or a period of days, and select a time interval from the calendar given there. Function executions from the last 30 days alone will be available. Click Apply after selecting the time interval. The functions that executed during the selected period will be listed.
- Remote Calls: You can filter the list of functions based on the number of remote calls made by a function execution. You can select one of the criteria as shown below, and enter the number.
- Response Time: You can list the function executions based on the response time. Select one of the criteria, similar to remote calls, and specify the response time in milliseconds.
After you select the required filters, click Apply Filter to view the list of functions that match the criteria. You can click on a function name in the list to navigate to the function's details page.
The function details page provides extensive information on the component usage of a particular function's specific execution. The specific execution is chosen from the Functions section or from the Top 100 Slowest Calls list in the Dashboard section, as mentioned previously.
The component usage here indicates the Catalyst components that were called or used using the Catalyst SDKs in the function. For example, if a function was coded to insert a key-value pair into a cache segment using the Java SDK for cache, that would account for a call to the cache component in the project.
This page provides necessary details about all the components that were called in the function execution. Other functions called by the executing function are also included in the components. The top of the page contains specifics such as the data and time interval of the execution, the execution duration, and more.
- The calls made to Catalyst components using Catalyst APIs in the function execution will not be accounted for in this report.
- The function URL, the HTTP method, and the response code displayed apply only to the Basic I/O and Advanced I/O functions. For a Cron or Event function, the top of the page will only contain the function's execution status as "Success" or "Failure".
The Summary section displays the following graphs:
- Overall Calls: This graph provides details of the total number of component calls made, broken down into the number of successful calls and failed calls in that execution, in the time interval displayed on top of the page.
- Component Usage: This graph displays the component usage in that execution, in the time interval displayed on top of the page. All Catalyst components that can be called using the SDKs are accounted for.
The Summary section also displays a list of the slowest component calls, sorted in a descending order of average duration. The average duration is the average invocation time of a particular component, based on the total number of calls made to it.
The usage percentage is the percentage of each component used in the execution, relative to one another. This is calculated based on the count or the total number of calls made to each particular component.
The Trace section provides a comprehensive and detailed graph of the component usage trace in that function execution.
The graph displays the details of each component usage individually, along with some informative metadata. As mentioned earlier, only the components that were called using the Catalyst SDKs will be included here.
The graph presents a timeline of the components that were called during the duration of the function execution. For example, in the picture shown above, the function executed for a total of 146 ms. The Data Store component was invoked from 0 ms to 91 ms time interval, an Advanced I/O function was invoked next from 7 ms to 70 ms time interval, followed by Cron from 21 ms to 22 ms, and so on.
You can click on a particular component invocation to view its details in an aggregate manner on the right panel. The panel will show the start time and end time of that particular component invocation, along with the duration, request type, and response code of that invocation.
Disable Application Performance Monitoring
You can disable APM for your Catalyst project any time you require. You will not be able to view any function execution data, after you disable it.
To disable APM for your Catalyst project:
- Click the ellipsis icon at the top of the APM page, then click Disable.
- Type "DISABLE" in the confirmation pop-up window, then click Confirm.
APM will now be disabled. You can re-enable it again, if you want to view function execution data.