Find error origin from node-red log

Hello,

My node-red server display regularly the following info:

20 Feb 13:36:51 - [info] [exec:e6ac59f1.d21818] error:Error: Command failed: nc -w 2 -zv 192.168.193.1 22
nc: connect to 192.168.193.1 port 22 (tcp) timed out: Operation now in progress

20 Feb 13:36:54 - [info] [exec:e6ac59f1.d21818] error:Error: Command failed: nc -w 2 -zv 192.168.193.1 22

My project is fairly large, and I'm not sure from what flow this error occured. (I have a lot of exec nodes that connect in ssh to 192.168.193.1)
I interpreted this number "e6ac59f1.d21818" as a flow id.
However when I use the API GET/flows with this id, I get an error 404.

Isn't it a flow id? Any suggestion in how to I could investigate the issue?

Thanks

Use the search / find option - ctrl- or cmd- f - then enter that exec node id - it should then show you it in the list and you can then click on that to jump to it.

Unfortunately, no flow appears in th esearch menu when I search using by Id.

For the first problem, I eventually loacte the issue manually.
But this is a reccurent problem, now I have the following message, and fail to find its origin:

27 Feb 10:44:11 - [info] [exec:b6ecca19.86f668] error:Error: spawn /bin/sh EMFILE
27 Feb 10:44:11 - [info] [exec:b6ecca19.86f668] error:Error: spawn /bin/sh EMFILE
27 Feb 10:44:11 - [info] [exec:b6ecca19.86f668] error:Error: spawn /bin/sh EMFILE

Could it be that the search function only check flow, and not subflow in use ?

If the node logging the error is inside a subflow, the id in the log will be the internally generated id of that particular instance of the node. That makes it impossible for you to map it back to exactly which node logged it.

There are already some improvements coming in 1.0.4 on identifying nodes inside subflows - but this is not a case that is currently handled. I will look to see if we can include more info in the log message (without making it unnecessarily long) to help identify the logging node.

1 Like

Hey guys, I find a trick allowing you to spot the issue.

First enable "trace" log in settings.js, by default it should be at "info".
Then restart your node-red instance.

At start up, it will load all flows, subflow and nodes associated. I believe it allocated id to each at this time too.
For example you will find:

27 Feb 16:07:28 - [trace] [subflow:1a9af2cb.7ca92d] start subflow
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d] start subflow
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d] ------------------|--------------|-----------------
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d]  id               | type         | alias
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d] ------------------|--------------|-----------------
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d]  65189990.44f078  | exec         | 891a91c.4e9097
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d]  33a321ea.be465e  | delay        | 708d0759.b45fc
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d]  272118d1.586dd8  | function     | e202fd4d.a3a128
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d]  249e6e5f.5d35d2  | function     | f9172701.196208
27 Feb 16:07:28 - [trace] [subflow:a3c9aed3.eef0d]  189a1227.4aa1de  | function     | f43958a7.054988

All error will give you the id of the node in question, however as Knolleary said you can search by this id, if the node is in a subflow.
The trick is to use the idea in the error message:

27 Feb 16:08:20 - [info] [exec:65189990.44f078] error:Error: spawn /bin/sh EMFILE

Check the alias matching that id, in the example:

exec:65189990.44f078 => 891a91c.4e9097

Then use node-red search functionality with the alias (cf dceejay)
And it will work.
:smile:

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.