Splunk AppDynamics

Can't see nodejs call stack

CommunityUser
Splunk Employee
Splunk Employee

We're on a trial account, trying to identify some performance issues, but we're missing a lot of important information.

We're using node 7.6

Our snapshots do not show anything for the callstack, it's completely empty when I click on Call Graph.

Our DB queries list is incomplete. Those queries that are present are missing some important variables, eg

WHERE ?.? = ? LIMIT ?;

I can understand the right side of the query being anonymised, but the left?

In addition, I tried to submit a support request for this, and got an access denied error trying to reach the support ticket page.

This is not leaving the best of tastes for our first user experience of app dynamics.

Labels (1)
0 Karma
1 Solution

Kyle_Furlong
Contributor

Hi Chris,

I'm sorry to hear that you've been having some issues with our solution. I believe I can answer each of them and hopefully get you to a better place. First though, you've definitely found the right place to receive support for a self service trial. Our full support system is only available for customers who already have paid licenses. Hopefully that explains the access denied message. It could definitely be clearer.

On the tech: If you take a look at the snapshot list, there will be an icon on the left hand side the looks somewhat like a page. This indicates whether the snapshot has call graph data or not. If you have the blue icon, it should have the full data—grey icon, possibly less. In either case, the BT Snapshot will have a link to the full Process Snapshot in the Summary pane of the BT Snapshot drill down. This full Process Snapshot will have all the call graph data from the full process, not the particular request encoded in the BT Snapshot. This is important because of the nature of Node.js, with all execution happening on one thread with async callbacks and scheduling. Many times, as you've already found, our algorithm for tracing the request's callbacks through the scheduler is not able to capture the convolutions, or the timing of enabling the profiler isn't able to catch the first entries of a callback chain. This can lead to the empty BT Snapshot call graph. In these cases, our best-effort data will always be in the linked Process Snapshot. Many times we find this Node.js limitation is less impactful than you might guess, as Node.js apps tend to have more issues with IO being slow (downstream services in particular), than they do with processing time or code errors. In any case, you can really dig into the code running in your app for any issues with our flame graph feature, on a longer manual Process Snapshot: https://docs.appdynamics.com/display/PRO44/Event+Loop+Blocking+in+Node.js

For the SQL filtering, I believe we're extra cautious give GDPR and other security concerns. In case you do need to disable filtering, that should be possible by setting the capture-raw-sql node property for the tier: https://docs.appdynamics.com/display/PRO44/App+Agent+Node+Properties

Please let me know if you have any other questions or concerns.

Regards,

Kyle

View solution in original post

0 Karma

Kyle_Furlong
Contributor

Hi Chris,

I'm sorry to hear that you've been having some issues with our solution. I believe I can answer each of them and hopefully get you to a better place. First though, you've definitely found the right place to receive support for a self service trial. Our full support system is only available for customers who already have paid licenses. Hopefully that explains the access denied message. It could definitely be clearer.

On the tech: If you take a look at the snapshot list, there will be an icon on the left hand side the looks somewhat like a page. This indicates whether the snapshot has call graph data or not. If you have the blue icon, it should have the full data—grey icon, possibly less. In either case, the BT Snapshot will have a link to the full Process Snapshot in the Summary pane of the BT Snapshot drill down. This full Process Snapshot will have all the call graph data from the full process, not the particular request encoded in the BT Snapshot. This is important because of the nature of Node.js, with all execution happening on one thread with async callbacks and scheduling. Many times, as you've already found, our algorithm for tracing the request's callbacks through the scheduler is not able to capture the convolutions, or the timing of enabling the profiler isn't able to catch the first entries of a callback chain. This can lead to the empty BT Snapshot call graph. In these cases, our best-effort data will always be in the linked Process Snapshot. Many times we find this Node.js limitation is less impactful than you might guess, as Node.js apps tend to have more issues with IO being slow (downstream services in particular), than they do with processing time or code errors. In any case, you can really dig into the code running in your app for any issues with our flame graph feature, on a longer manual Process Snapshot: https://docs.appdynamics.com/display/PRO44/Event+Loop+Blocking+in+Node.js

For the SQL filtering, I believe we're extra cautious give GDPR and other security concerns. In case you do need to disable filtering, that should be possible by setting the capture-raw-sql node property for the tier: https://docs.appdynamics.com/display/PRO44/App+Agent+Node+Properties

Please let me know if you have any other questions or concerns.

Regards,

Kyle

0 Karma
Get Updates on the Splunk Community!

Uncovering Multi-Account Fraud with Splunk Banking Analytics

Last month, I met with a Senior Fraud Analyst at a nationally recognized bank to discuss their recent success ...

Secure Your Future: A Deep Dive into the Compliance and Security Enhancements for the ...

What has been announced?  In the blog, “Preparing your Splunk Environment for OpensSSL3,”we announced the ...

New This Month in Splunk Observability Cloud - Synthetic Monitoring updates, UI ...

This month, we’re delivering several platform, infrastructure, application and digital experience monitoring ...