Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Add node name to the log lines #7328

Merged
44 commits merged into from
Oct 21, 2020
Merged

Add node name to the log lines #7328

44 commits merged into from
Oct 21, 2020

Conversation

cecton
Copy link
Contributor

@cecton cecton commented Oct 15, 2020

Related to paritytech/cumulus#149

polkadot companion: paritytech/polkadot#1825

cecton added 6 commits October 7, 2020 13:14
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
@github-actions github-actions bot added the A3-in_progress Pull request is in progress. No review needed at this stage. label Oct 15, 2020
Forked at: d67fc4c
Parent branch: origin/master
@bkchr
Copy link
Member

bkchr commented Oct 15, 2020

Can you please explain on what your idea here is? I don't see the connection to the ticket and what we spoke about.

Forked at: d67fc4c
Parent branch: origin/master
@cecton
Copy link
Contributor Author

cecton commented Oct 15, 2020

Yes it's more related to paritytech/cumulus#154 actually.

This change already prefixes the logs with the node name. Example here on substrate:

2020-10-15 13:32:49  Substrate Node    
2020-10-15 13:32:49  ✌️  version 2.0.0-a55ccf09b-x86_64-linux-gnu    
2020-10-15 13:32:49  ❤️  by Parity Technologies <[email protected]>, 2017-2020    
2020-10-15 13:32:49  📋 Chain specification: Flaming Fir    
2020-10-15 13:32:49  🏷 Node name: wry-wren-1666    
2020-10-15 13:32:49  👤 Role: FULL    
2020-10-15 13:32:49  💾 Database: RocksDb at /tmp/substrateHXzOtQ/chains/flamingfir8/db    
2020-10-15 13:32:49  ⛓  Native runtime: node-259 (substrate-node-1.tx1.au10)    
2020-10-15 13:32:50  🔨 Initializing Genesis block/state (state: 0x89b8…d3e7, header-hash: 0xe40f…ed39)    
2020-10-15 13:32:50  👴 Loading GRANDPA authority set from genesis on what appears to be first startup.    
2020-10-15 13:32:50  ⏱  Loaded block-time = 3000 milliseconds from genesis on first-launch    
2020-10-15 13:32:50  👶 Creating empty BABE epoch changes on what appears to be first startup.    
2020-10-15 13:32:50  🏷 Local node identity is: 12D3KooWSQXLEGL2Ho2Qq8djLTXysTDhoTjFAUYvvEjbfW1kSd4F    
2020-10-15 13:32:50  [wry-wren-1666] substrate-node: 📦 Highest known block at #0    
2020-10-15 13:32:50  [wry-wren-1666] substrate-node: 〽️ Prometheus server started at 127.0.0.1:9615    
2020-10-15 13:32:50  [wry-wren-1666] substrate-node: Listening for new connections on 127.0.0.1:9944.    
2020-10-15 13:32:51  🔍 Discovered new external address for our node: /ip4/91.181.156.13/tcp/30333/p2p/12D3KooWSQXLEGL2Ho2Qq8djLTXysTDhoTjFAUYvvEjbfW1kSd4F    
2020-10-15 13:32:55  [wry-wren-1666] substrate-node: 💤 Idle (0 peers), best: #0 (0xe40f…ed39), finalized #0 (0xe40f…ed39), ⬇ 2.7kiB/s ⬆ 2.4kiB/s    
2020-10-15 13:33:00  [wry-wren-1666] substrate-node: 💤 Idle (0 peers), best: #0 (0xe40f…ed39), finalized #0 (0xe40f…ed39), ⬇ 67 B/s ⬆ 58 B/s    
2020-10-15 13:33:05  [wry-wren-1666] substrate-node: 💤 Idle (0 peers), best: #0 (0xe40f…ed39), finalized #0 (0xe40f…ed39), ⬇ 0 ⬆ 0    

On cumulus we will get the node name of the parachain and the relaychain depending on which node is the log. We could also customize this instead of using the node name (it's not done but it's doable easily if you want).

The way this is done is by using a span from tracing which includes the node name.

I still need to figure out for separating the telemetry.

Forked at: d67fc4c
Parent branch: origin/master
@bkchr
Copy link
Member

bkchr commented Oct 15, 2020

This should be an optional feature and we actually want to have [Parachain] or [Relaychain] being printed as we already do it in some places.

And why are still some lines without any prefix in your example output?

Regarding telemetry, as I said, we should pass this object around like prometheus.

@cecton
Copy link
Contributor Author

cecton commented Oct 15, 2020

This should be an optional feature and we actually want to have [Parachain] or [Relaychain] being printed as we already do it in some places.

Yes, I don't see any blocker for that. No worry.

And why are still some lines without any prefix in your example output?

Some are definitely outside the span (the span is created in client/service/src/builder.rs fn spawn_tasks().

Some I'm not sure I'm investigating.

Regarding telemetry, as I said, we should pass this object around like prometheus.

Tbh I'm still not 100% to understand how telemetry works. I'm still investigating.

@bkchr
Copy link
Member

bkchr commented Oct 15, 2020

Tbh I'm still not 100% to understand how telemetry works. I'm still investigating.

We just call a macro that aggregates the data and sends it as json to the server. But that is not important at all. Important is that we replace the singleton with an instance that is passed everywhere and we pass this instance to these macros.

But this is clearly now part of another pr!

Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
@cecton cecton marked this pull request as ready for review October 16, 2020 06:34
@github-actions github-actions bot added A0-please_review Pull request needs code review. and removed A3-in_progress Pull request is in progress. No review needed at this stage. labels Oct 16, 2020
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Forked at: d67fc4c
Parent branch: origin/master
Copy link
Member

@bkchr bkchr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some last changes and than we are ready.

client/basic-authorship/src/basic_authorship.rs Outdated Show resolved Hide resolved
client/basic-authorship/src/basic_authorship.rs Outdated Show resolved Hide resolved
use quote::quote;
use syn::{Error, Expr, Ident, ItemFn};

/// Macro that inserts a tracing span with the node name at the beginning of the function.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This says something different than the body.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I fixed the doc. Should be more consistent

///
/// # Implementation notes
///
/// If there are multiple spans with a node name, only the latest will be shown.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/// If there are multiple spans with a node name, only the latest will be shown.
/// If there are multiple spans with a log prefix, only the latest will be shown.

Or similar?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

///
/// ```ignore
/// Builds a new service for a light client.
/// #[sc_cli::substrate_cli_node_name("light")]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outdated.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

(quote! {
#(#attrs)*
#vis #sig {
let span = #crate_name::tracing::info_span!("substrate-node", name = #name);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this span name not be a constant in sc-cli? And it should be renamed to substrate-log-prefix or similar.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hardly because I can't import the const from sc-cli (sc-cli-proc-macro is a dependency of sc-cli). And I'm not too fan to put it in the the proc macro crate... but if you want think it's better I will do it

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh wait, you're right. I see. nevermind!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

client/cli/src/logging.rs Outdated Show resolved Hide resolved
Forked at: d67fc4c
Parent branch: origin/master
@cecton
Copy link
Contributor Author

cecton commented Oct 21, 2020

BOT MERGE

@ghost
Copy link

ghost commented Oct 21, 2020

Checks failed; merge aborted.

@cecton
Copy link
Contributor Author

cecton commented Oct 21, 2020

geezus

@cecton
Copy link
Contributor Author

cecton commented Oct 21, 2020

bot merge --force

@cecton
Copy link
Contributor Author

cecton commented Oct 21, 2020

bot merge force

@ghost
Copy link

ghost commented Oct 21, 2020

Trying merge.

@ghost ghost merged commit a467358 into master Oct 21, 2020
@ghost ghost deleted the cecton-logging-singleton branch October 21, 2020 15:13
@dvdplm dvdplm mentioned this pull request Nov 4, 2020
5 tasks
This pull request was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants