APM vs NPM
This article was last updated on: July 24, 2024 am
overview
APM: Short for Application Performance Monitoring, that is, Application Performance Monitoring.
NPM: Short for Network Performance Monitoring, that is, Network Performance Monitoring.
Technical implementation
- APM: Install the agent on the application server
- NPM: Switch network traffic mirroring
deploy
- APM: Each application server requires an agent to be installed
- NPM: The application of interest, i.e. IP plus port, must all mirror the switch traffic through which it passes
Supported technologies
- APM: All apply Java .NET PHP nodejs frameworks
- NPM: http, TCP and other network protocols
Monitor the magnitude
- APM: All internal application call procedures, memory objects and threads are resolved on the application server.
- NPM: Only involves the request of the protocol, such as the URL, and cannot be called in depth. It is also impossible to automate full tandem tracking of transactions; But there will be network performance of network devices.
shortcoming
NPM
- Traffic that does not go through the switch, such as virtual machines on the same host, cannot be monitored
- Monitoring is limited to the network level and does not provide insight into applications and code
- If the network protocol is encrypted, the private key may be required for decryption, or it cannot be decrypted, or the decryption process performance consumption is large.
- Data outside the data center cannot be monitored
APM
- It mainly supports monitoring of JAVA/.Net and other languages, and cannot be monitored by specific languages (such as C) and specific application servers (such as Tuxedo).
- Commercial APM is billed per node, which is difficult to achieve full coverage
- Data center, if the technology stack does not support it, it cannot be fully monitored
- Intrusive deployment
merit
NPM
- Full data center coverage (of course, it is also conditional, but it is easier to achieve than APM)
- Through the monitoring of relevant network protocols, the effect of customer attention can be achieved more widely
- Complete and proven solutions for banking transactions (e.g. Tiandan BPC)
- Deploy non-intrusive
APM
- Can monitor data outside the data center (in fact, RUM is required for Real User Monitoring)
- In-depth tracing of application performance issues (specific to methods/thread snapshots/memory snapshots/exceptions/logs/synchronous asynchronous calls, etc.)
- User experience management (user operation/mobile app/browser) (also via RUM)
Applicable scenarios
APM
- Focus more on application performance
- Development/middleware O&M
- Key application/middleware metrics need to be monitored and alerted
- The system architecture is JAVA/.NET/php/node.js… (No C without tuxedo), automatic transaction correlation can be carried out, and the monitoring granularity will be very fine.
- It is necessary to monitor the user experience outside the data center (such as user click operation data/mobile APP/browser-side data).
NPM
- Business monitoring (typically e.g. number of bank transactions)
- Pay more attention to network performance issues
- The system architecture contains non-.NET/JAVA systems, such as Tuxedo
- Intrusive deployments are not acceptable
- Banks (with complete solutions, such as Tiandan BPC)
APM vs NPM
https://e-whisper.com/posts/1746/