Make all validator monitor logs INFO (#3727)

## Issue Addressed

NA

## Proposed Changes

This is a *potentially* contentious change, but I find it annoying that the validator monitor logs `WARN` and `ERRO` for imperfect attestations. Perfect attestation performance is unachievable (don't believe those photo-shopped beauty magazines!) since missed and poorly-packed blocks by other validators will reduce your performance.

When the validator monitor is on with 10s or more validators, I find the logs are washed out with ERROs that are not worth investigating. I suspect that users who really want to know if validators are missing attestations can do so by matching the content of the log, rather than the log level.

I'm open to feedback about this, especially from anyone who is relying on the current log levels.

## Additional Info

NA

## Breaking Changes Notes

The validator monitor will no longer emit `WARN` and `ERRO` logs for sub-optimal attestation performance. The logs will now be emitted at `INFO` level. This change was introduced to avoid cluttering the `WARN` and `ERRO` logs with alerts that are frequently triggered by the actions of other network participants (e.g., a missed block) and require no action from the user.
This commit is contained in:
Paul Hauner 2022-12-13 06:24:52 +00:00
parent 1b28ef8a8d
commit 6f79263a21

View File

@ -4,7 +4,7 @@
use crate::metrics; use crate::metrics;
use parking_lot::RwLock; use parking_lot::RwLock;
use slog::{crit, debug, error, info, warn, Logger}; use slog::{crit, debug, info, Logger};
use slot_clock::SlotClock; use slot_clock::SlotClock;
use state_processing::per_epoch_processing::{ use state_processing::per_epoch_processing::{
errors::EpochProcessingError, EpochProcessingSummary, errors::EpochProcessingError, EpochProcessingSummary,
@ -580,7 +580,7 @@ impl<T: EthSpec> ValidatorMonitor<T> {
); );
} }
if !attestation_miss.is_empty() { if !attestation_miss.is_empty() {
error!( info!(
self.log, self.log,
"Previous epoch attestation(s) missing"; "Previous epoch attestation(s) missing";
"epoch" => prev_epoch, "epoch" => prev_epoch,
@ -589,7 +589,7 @@ impl<T: EthSpec> ValidatorMonitor<T> {
} }
if !head_miss.is_empty() { if !head_miss.is_empty() {
warn!( info!(
self.log, self.log,
"Previous epoch attestation(s) failed to match head"; "Previous epoch attestation(s) failed to match head";
"epoch" => prev_epoch, "epoch" => prev_epoch,
@ -598,7 +598,7 @@ impl<T: EthSpec> ValidatorMonitor<T> {
} }
if !target_miss.is_empty() { if !target_miss.is_empty() {
warn!( info!(
self.log, self.log,
"Previous epoch attestation(s) failed to match target"; "Previous epoch attestation(s) failed to match target";
"epoch" => prev_epoch, "epoch" => prev_epoch,
@ -607,7 +607,7 @@ impl<T: EthSpec> ValidatorMonitor<T> {
} }
if !suboptimal_inclusion.is_empty() { if !suboptimal_inclusion.is_empty() {
warn!( info!(
self.log, self.log,
"Previous epoch attestation(s) had sub-optimal inclusion delay"; "Previous epoch attestation(s) had sub-optimal inclusion delay";
"epoch" => prev_epoch, "epoch" => prev_epoch,