Scale Your Moogsoft Onprem Implementation
Moogsoft Onprem supports several options to help you scale your implementation to meet your performance needs. Monitor and Troubleshoot Moogsoft Onprem to monitor your system for signs that it is time to scale.
For information on the performance tuning capabilities of individual Moogsoft Onprem components, see Monitor Component Performance.
Horizontal Scaling
Moogsoft Onprem currently supports horizontal scaling at the integration (LAM) and visualization (Ngnix + Tomcat) layers.
You can add more LAMs, either on additional servers or on the same server, to achieve higher event rates. In this case, you have the option to configure event sources to send to the parallel LAMs separately or to implement a load balancer in front of the LAMs.
You can add Nginx/Tomcat UI "stacks" behind a load balancer to increase performance for UI users. Adding UI stacks does not always provide better performance. It can degrade performance by adding more connection pressure to the database.
The following are typical horizontal scaling scenarios:
You can add an additional LAM to process incoming events if you see that, despite attempts to tune the number of threads for an individual LAM, its event rate hits a plateau. This is a sign that the LAM is the bottleneck, so adding other instances of the LAM behind a load balancer will allow a higher event processing rate.
You can add an additional UI stack if database pool diagnostics for Tomcat suggest that all or most of the database connections are constantly busy with long running connections, but the database itself is performing fine.
The data processing layer (moogfarmd) is not currently well suited to horizontal scaling. Moolets of the same type cannot currently share processing. Adding more Moolets like the AlertBuilder in an attempt to increase the event processing rate is likely to lead to database problems.
Vertical Scaling
All Moogsoft Onprem components ultimately benefit from being run on the best available hardware, but the data processing layer (moogfarmd) benefits most from this approach. Depending on the number and complexity of Moolets in your configuration, you will see performance benefits in data processing on servers having the fastest CPUs with numerous cores and a large amount of memory. This enables you to increase the number of threads for moogfarmd to improve processing speed. You should also locate the database on the most feasibly powerful server (clock speed, number of cores and memory) with the biggest/fastest disk.
Distributed Installations
In some cases you distribute Moogsoft Onprem components among different hosts to gain performance because it reduces resource contention on a single server. The most common distribution is to install the database on a separate server, ideally within the same fast network to minimize risk of latency. An additional benefit of this move is that it allows you to run a clustered or primary/secondary database for redundancy.
Another common distribution is to install the UI stack (Nnginx) on a separate server within the same fast network.
Some integrations (LAMs) benefit from being closer to the source so are candidates for distribution.
See Server Roles and Fully Distributed HA Installation for more information.