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!

Splunk AI Assistant for SPL | Key Use Cases to Unlock the Power of SPL

Splunk AI Assistant for SPL | Key Use Cases to Unlock the Power of SPL  The Splunk AI Assistant for SPL ...

Buttercup Games: Further Dashboarding Techniques (Part 5)

This series of blogs assumes you have already completed the Splunk Enterprise Search Tutorial as it uses the ...

Customers Increasingly Choose Splunk for Observability

For the second year in a row, Splunk was recognized as a Leader in the 2024 Gartner® Magic Quadrant™ for ...