{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Network.Tracing.PeerSelectionCounters () where
import Cardano.Logging
import Data.Aeson
import Data.Text qualified as Text
import Cardano.Network.PeerSelection.ExtraRootPeers
instance Show peeraddr => LogFormatting (ViewExtraPeers (ExtraPeers peeraddr)) where
forMachine :: DetailLevel -> ViewExtraPeers (ExtraPeers peeraddr) -> Object
forMachine DetailLevel
_dtal ExtraPeerSelectionSetsWithSizes {(Set peeraddr, Int)
viewKnownBootstrapPeers :: (Set peeraddr, Int)
viewColdBootstrapPeersPromotions :: (Set peeraddr, Int)
viewEstablishedBootstrapPeers :: (Set peeraddr, Int)
viewWarmBootstrapPeersDemotions :: (Set peeraddr, Int)
viewWarmBootstrapPeersPromotions :: (Set peeraddr, Int)
viewActiveBootstrapPeers :: (Set peeraddr, Int)
viewActiveBootstrapPeersDemotions :: (Set peeraddr, Int)
viewActiveBootstrapPeers :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewActiveBootstrapPeersDemotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewColdBootstrapPeersPromotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewEstablishedBootstrapPeers :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewKnownBootstrapPeers :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewWarmBootstrapPeersDemotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewWarmBootstrapPeersPromotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
..} =
[Object] -> Object
forall a. Monoid a => [a] -> a
mconcat [ Key
"knownBootstrapPeers" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd (Set peeraddr, Int)
viewKnownBootstrapPeers
, Key
"coldBootstrapPeersPromotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd (Set peeraddr, Int)
viewColdBootstrapPeersPromotions
, Key
"establishedBootstrapPeers" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd (Set peeraddr, Int)
viewEstablishedBootstrapPeers
, Key
"warmBootstrapPeersDemotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd (Set peeraddr, Int)
viewWarmBootstrapPeersDemotions
, Key
"warmBootstrapPeersPromotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd (Set peeraddr, Int)
viewWarmBootstrapPeersPromotions
, Key
"activeBootstrapPeers" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd (Set peeraddr, Int)
viewActiveBootstrapPeers
, Key
"ActiveBootstrapPeersDemotions" Key -> Int -> Object
forall v. ToJSON v => Key -> v -> Object
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd (Set peeraddr, Int)
viewActiveBootstrapPeersDemotions
]
forHuman :: ViewExtraPeers (ExtraPeers peeraddr) -> Text
forHuman = String -> Text
Text.pack (String -> Text)
-> (ViewExtraPeers (ExtraPeers peeraddr) -> String)
-> ViewExtraPeers (ExtraPeers peeraddr)
-> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ViewExtraPeers (ExtraPeers peeraddr) -> String
forall a. Show a => a -> String
show
asMetrics :: ViewExtraPeers (ExtraPeers peeraddr) -> [Metric]
asMetrics ExtraPeerSelectionSetsWithSizes {(Set peeraddr, Int)
viewActiveBootstrapPeers :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewActiveBootstrapPeersDemotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewColdBootstrapPeersPromotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewEstablishedBootstrapPeers :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewKnownBootstrapPeers :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewWarmBootstrapPeersDemotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewWarmBootstrapPeersPromotions :: forall peeraddr.
ViewExtraPeers (ExtraPeers peeraddr) -> (Set peeraddr, Int)
viewKnownBootstrapPeers :: (Set peeraddr, Int)
viewColdBootstrapPeersPromotions :: (Set peeraddr, Int)
viewEstablishedBootstrapPeers :: (Set peeraddr, Int)
viewWarmBootstrapPeersDemotions :: (Set peeraddr, Int)
viewWarmBootstrapPeersPromotions :: (Set peeraddr, Int)
viewActiveBootstrapPeers :: (Set peeraddr, Int)
viewActiveBootstrapPeersDemotions :: (Set peeraddr, Int)
..} =
[ Text -> Integer -> Metric
IntM Text
"peerSelection.KnownBootstrapPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer)
-> ((Set peeraddr, Int) -> Int) -> (Set peeraddr, Int) -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd ((Set peeraddr, Int) -> Integer) -> (Set peeraddr, Int) -> Integer
forall a b. (a -> b) -> a -> b
$ (Set peeraddr, Int)
viewKnownBootstrapPeers)
, Text -> Integer -> Metric
IntM Text
"peerSelection.ColdBootstrapPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer)
-> ((Set peeraddr, Int) -> Int) -> (Set peeraddr, Int) -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd ((Set peeraddr, Int) -> Integer) -> (Set peeraddr, Int) -> Integer
forall a b. (a -> b) -> a -> b
$ (Set peeraddr, Int)
viewColdBootstrapPeersPromotions)
, Text -> Integer -> Metric
IntM Text
"peerSelection.EstablishedBootstrapPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer)
-> ((Set peeraddr, Int) -> Int) -> (Set peeraddr, Int) -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd ((Set peeraddr, Int) -> Integer) -> (Set peeraddr, Int) -> Integer
forall a b. (a -> b) -> a -> b
$ (Set peeraddr, Int)
viewEstablishedBootstrapPeers)
, Text -> Integer -> Metric
IntM Text
"peerSelection.WarmBootstrapPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer)
-> ((Set peeraddr, Int) -> Int) -> (Set peeraddr, Int) -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd ((Set peeraddr, Int) -> Integer) -> (Set peeraddr, Int) -> Integer
forall a b. (a -> b) -> a -> b
$ (Set peeraddr, Int)
viewWarmBootstrapPeersDemotions)
, Text -> Integer -> Metric
IntM Text
"peerSelection.WarmBootstrapPeersPromotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer)
-> ((Set peeraddr, Int) -> Int) -> (Set peeraddr, Int) -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd ((Set peeraddr, Int) -> Integer) -> (Set peeraddr, Int) -> Integer
forall a b. (a -> b) -> a -> b
$ (Set peeraddr, Int)
viewWarmBootstrapPeersPromotions)
, Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveBootstrapPeers" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer)
-> ((Set peeraddr, Int) -> Int) -> (Set peeraddr, Int) -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd ((Set peeraddr, Int) -> Integer) -> (Set peeraddr, Int) -> Integer
forall a b. (a -> b) -> a -> b
$ (Set peeraddr, Int)
viewActiveBootstrapPeers)
, Text -> Integer -> Metric
IntM Text
"peerSelection.ActiveBootstrapPeersDemotions" (Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer)
-> ((Set peeraddr, Int) -> Int) -> (Set peeraddr, Int) -> Integer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set peeraddr, Int) -> Int
forall a b. (a, b) -> b
snd ((Set peeraddr, Int) -> Integer) -> (Set peeraddr, Int) -> Integer
forall a b. (a -> b) -> a -> b
$ (Set peeraddr, Int)
viewActiveBootstrapPeersDemotions)
]
instance MetaTrace (ViewExtraPeers (ExtraPeers peeraddr)) where
namespaceFor :: ViewExtraPeers (ExtraPeers peeraddr)
-> Namespace (ViewExtraPeers (ExtraPeers peeraddr))
namespaceFor ExtraPeerSelectionSetsWithSizes {} = [Text]
-> [Text] -> Namespace (ViewExtraPeers (ExtraPeers peeraddr))
forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Counters"]
severityFor :: Namespace (ViewExtraPeers (ExtraPeers peeraddr))
-> Maybe (ViewExtraPeers (ExtraPeers peeraddr)) -> Maybe SeverityS
severityFor (Namespace [] [Text
"Counters"]) Maybe (ViewExtraPeers (ExtraPeers peeraddr))
_ = SeverityS -> Maybe SeverityS
forall a. a -> Maybe a
Just SeverityS
Debug
severityFor Namespace (ViewExtraPeers (ExtraPeers peeraddr))
_ Maybe (ViewExtraPeers (ExtraPeers peeraddr))
_ = Maybe SeverityS
forall a. Maybe a
Nothing
documentFor :: Namespace (ViewExtraPeers (ExtraPeers peeraddr)) -> Maybe Text
documentFor (Namespace [] [Text
"Counters"]) =
Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"Cardano-specific extensions to peer types"
documentFor Namespace (ViewExtraPeers (ExtraPeers peeraddr))
_ = Maybe Text
forall a. Maybe a
Nothing
metricsDocFor :: Namespace (ViewExtraPeers (ExtraPeers peeraddr)) -> [(Text, Text)]
metricsDocFor Namespace (ViewExtraPeers (ExtraPeers peeraddr))
_ =
[ (Text
"peerSelection.KnownBootstrapPeers", Text
"Number of known bootstrap peers")
, (Text
"peerSelection.ColdBootstrapPeersPromotions", Text
"Number of cold bootstrap peers promotions")
, (Text
"peerSelection.EstablishedBootstrapPeers", Text
"Number of established bootstrap peers")
, (Text
"peerSelection.WarmBootstrapPeersDemotions", Text
"Number of warm bootstrap peers demotions")
, (Text
"peerSelection.WarmBootstrapPeersPromotions", Text
"Number of warm bootstrap peers promotions")
, (Text
"peerSelection.ActiveBootstrapPeers", Text
"Number of active bootstrap peers")
, (Text
"peerSelection.ActiveBootstrapPeersDemotions", Text
"Number of active bootstrap peers demotions")
]
allNamespaces :: [Namespace (ViewExtraPeers (ExtraPeers peeraddr))]
allNamespaces = [[Text]
-> [Text] -> Namespace (ViewExtraPeers (ExtraPeers peeraddr))
forall a. [Text] -> [Text] -> Namespace a
Namespace [] [Text
"Counters"]]