diff --git a/cardano-node/src/Cardano/Node/Configuration/Logging.hs b/cardano-node/src/Cardano/Node/Configuration/Logging.hs index 8b527b9cfa8..188ac5b419e 100644 --- a/cardano-node/src/Cardano/Node/Configuration/Logging.hs +++ b/cardano-node/src/Cardano/Node/Configuration/Logging.hs @@ -25,6 +25,7 @@ import Cardano.Prelude hiding (trace) import qualified Control.Concurrent.Async as Async import Control.Exception.Safe (MonadCatch) import Control.Monad.Trans.Except.Extra (catchIOExceptT) +import Control.Tracer import Data.List (nub) import Data.Text (pack) import Data.Time.Clock (UTCTime, getCurrentTime) @@ -39,14 +40,8 @@ import Cardano.BM.Backend.TraceForwarder (plugin) import Cardano.BM.Configuration (Configuration) import qualified Cardano.BM.Configuration as Config import qualified Cardano.BM.Configuration.Model as Config -import Cardano.BM.Counters (readCounters) import Cardano.BM.Data.Backend (Backend, BackendKind) -import Cardano.BM.Data.Counter -import Cardano.BM.Data.LogItem (LOContent (..), LOMeta (..), LogObject (..), LoggerName, - PrivacyAnnotation (..), mkLOMeta) -import Cardano.BM.Data.Observable -import Cardano.BM.Data.Severity (Severity (..)) -import Cardano.BM.Data.SubTrace +import Cardano.BM.Data.LogItem (LOContent (..), LOMeta (..), LoggerName) import qualified Cardano.BM.Observer.Monadic as Monadic import qualified Cardano.BM.Observer.STM as Stm import Cardano.BM.Plugin (loadPlugin) @@ -54,8 +49,9 @@ import Cardano.BM.Plugin (loadPlugin) import Cardano.BM.Scribe.Systemd (plugin) #endif import Cardano.BM.Setup (setupTrace_, shutdown) -import Cardano.BM.Trace (Trace, appendName, traceNamedObject) +import Cardano.BM.Stats import qualified Cardano.BM.Trace as Trace +import Cardano.BM.Tracing import qualified Cardano.Chain.Genesis as Gen import Cardano.Slotting.Slot (EpochSize (..)) @@ -75,6 +71,7 @@ import qualified Shelley.Spec.Ledger.API as SL import Cardano.Config.Git.Rev (gitRev) import Cardano.Node.Configuration.POM (NodeConfiguration (..), ncProtocol) import Cardano.Node.Types +import Cardano.Tracing.OrphanInstances.Common() import Paths_cardano_node (version) -------------------------------- @@ -224,19 +221,12 @@ createLoggingLayer ver nodeConfig' p = do startCapturingMetrics :: Trace IO Text -> IO () startCapturingMetrics trace0 = do let trace = appendName "node-metrics" trace0 - counters = [MemoryStats, ProcessStats, NetStats, IOStats, GhcRtsStats, SysStats] _ <- Async.async $ forever $ do - cts <- readCounters (ObservableTraceSelf counters) - traceCounters trace cts - threadDelay 30000000 -- 30 seconds + readResourceStats + >>= maybe (pure ()) + (traceWith $ toLogObject' NormalVerbosity trace) + threadDelay 1000000 -- TODO: make configurable pure () - where - traceCounters :: forall m a. MonadIO m => Trace m a -> [Counter] -> m () - traceCounters _tr [] = return () - traceCounters tr (c@(Counter _ct cn cv) : cs) = do - mle <- mkLOMeta Notice Confidential - traceNamedObject tr (mle, LogValue (nameCounter c <> "." <> cn) cv) - traceCounters tr cs shutdownLoggingLayer :: LoggingLayer -> IO () shutdownLoggingLayer = shutdown . llSwitchboard diff --git a/cardano-node/src/Cardano/Tracing/OrphanInstances/Common.hs b/cardano-node/src/Cardano/Tracing/OrphanInstances/Common.hs index a495248e6f5..db9bbfd8a6e 100644 --- a/cardano-node/src/Cardano/Tracing/OrphanInstances/Common.hs +++ b/cardano-node/src/Cardano/Tracing/OrphanInstances/Common.hs @@ -1,8 +1,11 @@ {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE EmptyCase #-} {-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} @@ -53,6 +56,7 @@ import Cardano.BM.Data.LogItem (LOContent (..), LogObject (..), Privac mkLOMeta) import Cardano.BM.Data.Tracer (HasTextFormatter (..), emptyObject, mkObject, trStructured, trStructuredText) +import Cardano.BM.Stats import Cardano.BM.Tracing (HasPrivacyAnnotation (..), HasSeverityAnnotation (..), Severity (..), ToObject (..), Tracer (..), TracingVerbosity (..), Transformable (..)) @@ -110,3 +114,15 @@ instance ToJSON (OneEraHash xs) where deriving newtype instance ToJSON ByronHash deriving newtype instance ToJSON BlockNo + +instance HasPrivacyAnnotation ResourceStats +instance HasSeverityAnnotation ResourceStats where + getSeverityAnnotation _ = Info +instance Transformable Text IO ResourceStats where + trTransformer = trStructured + +instance ToObject ResourceStats where + toObject _verb stats = + case toJSON stats of + Object x -> x + _ -> mempty