At Microsoft, we are committed to enabling great experiences for developers building and running Node.js apps on Azure. Today, we are announcing the general availability of the Azure Application Insights SDK for Node.js 1.0, the culmination of many successful iterations and built on listening to customer feedback.
Application Insights is an Application Performance Management tool that monitors your apps, services and components in production, after you deploy them, to help you discover and rapidly diagnose performance bottlenecks and other issues. The 1.0 release primarily brings performance, reliability and stability improvements to the Application Insights SDK for Node.js.
The Application Insights SDK for Node.js is an open source project hosted on GitHub.
If you are new to Azure Applications Insights, check out the detailed getting started guide that walks you through a step-by-step process of setting up a monitoring for your Node.js application or service. You can use Application Insights regardless of where your Node.js apps is running: Virtual Machines on Azure or on-premises, containers, Web Apps on Linux, and even on Internet-of-Things devices and Electron desktop apps. All you need to do is insert a few lines of code in your application to start getting usage telemetry and data to help diagnose issues in production.
Application Map is a visual layout of the dependency relationships of your application components. Each component shows KPIs such as load, performance, failures, and alerts, to help you discover any component causing a performance issue or failure. You can navigate through from any component to more detailed diagnostics, such as Application Insights events. If your app uses Azure services, you can also click through to Azure diagnostics and recommendations, such as those provided by SQL Database Advisor. The 1.0 release of the Application Insights SDK for Node.js brings some enhancements in this space, helping you to easily identify dependencies by showing the icons for third-party products and services, including Redis, MongoDB, PostgreSQL, and more.
Try out this feature and let us know what else you would like to see in the Application Map to better serve your needs.
Improved NPM module support
The popularity of Node.js stems from its third-party module ecosystem, with hundreds of thousands of packages on NPM. Today, Node.js applications are using NPM packages more than ever, and it is often necessary to get insights from these modules to be able to truly diagnose complex problems. Application Insights aims to offer a great diagnostic experience out of the box, providing deep and actionable diagnostics information from your entire application, including its dependencies. With the 1.0 release of the Application Insights SDK for Node.js, we have added automatic instrumentation to two additional modules. PostgreSQL and the winston logging framework have joined the growing list of NPM packages that we support out-of-the-box, along with bunyan, console, mongodb, mongodb-core, mysql, redis, and pg-pool.
Breaking changes in this release
Breaking changes are always a hard decision, and we don’t take it lightly. But to bring consistency with other Application Insights SDKs and to allow future extensibility, this release also includes some breaking changes across the APIs. Please review the README on the GitHub project page for new method and property names, as well as for migration instructions. Additionally, the default configuration in this SDK has been changed by turning on, by default, storage of telemetry to disk when your app is offline.
Try it out
We invite you all to try out Application Insights for Node.js and start monitoring your Node.js apps and services today.
We will continue to enhance our customers’ experience by automatically instrumenting more third-party modules and improving Application Map integration and context tracking, based on customer feedback.
We are eager to hear what you think: if you have any question or are experiencing problems with the Application Insights SDK for Node.js, please open an issue on the project page on GitHub.