Skip to content

Commit 44478d9

Browse files
committed
expose prometheus metrics in testnet
1 parent 523fc83 commit 44478d9

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

cardano-testnet/src/Testnet/Defaults.hs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,19 @@ import qualified Data.Aeson.Key as Aeson
8484
import qualified Data.Aeson.KeyMap as Aeson
8585
import Data.Bifunctor (bimap)
8686
import qualified Data.Default.Class as DefaultClass
87+
import Data.IORef
8788
import Data.Proxy
8889
import Data.Ratio
8990
import Data.Scientific
91+
import Data.String
9092
import Data.Text (Text)
9193
import qualified Data.Text as Text
9294
import Data.Time (UTCTime)
9395
import Data.Word (Word64)
9496
import Lens.Micro
9597
import Numeric.Natural
9698
import System.FilePath ((</>))
99+
import System.IO.Unsafe
97100

98101
import Test.Cardano.Ledger.Core.Rational
99102
import Testnet.Start.Types
@@ -169,6 +172,11 @@ defaultConwayGenesis = do
169172
, cgInitialDReps = mempty
170173
}
171174

175+
-- TODO REMOVE
176+
nCounter :: IORef Int
177+
nCounter = unsafePerformIO $ newIORef 0
178+
{-# NOINLINE nCounter #-}
179+
172180
-- | The only era supported by cardano-testnet for the moment.
173181
-- It's important to keep the era parameterization everywhere, for ease of development
174182
-- when new eras roll out.
@@ -181,7 +189,7 @@ defaultYamlHardforkViaConfig :: ShelleyBasedEra era -> Aeson.KeyMap Aeson.Value
181189
defaultYamlHardforkViaConfig sbe =
182190
defaultYamlConfig
183191
<> tracers
184-
<> [("TraceOptions", Aeson.Object mempty)]
192+
<> [("TraceOptions", traceOptions)]
185193
<> protocolVersions sbe
186194
<> hardforkViaConfig sbe
187195
where
@@ -295,6 +303,19 @@ defaultYamlHardforkViaConfig sbe =
295303
, (proxyName (Proxy @TraceTxSubmissionProtocol), False)
296304
]
297305

306+
traceOptions = do
307+
let n = unsafePerformIO . atomicModifyIORef nCounter $ \n' -> (n'+1, n')
308+
Aeson.object
309+
[ "" .= Aeson.object
310+
[ "backends" .= Aeson.Array
311+
[ "EKGBackend"
312+
, "Forwarder"
313+
, fromString $ "PrometheusSimple suffix 0.0.0.0 " <> show (12798 + n - 1)
314+
, "Stdout HumanFormatColoured"
315+
]
316+
]
317+
]
318+
298319
defaultYamlConfig :: Aeson.KeyMap Aeson.Value
299320
defaultYamlConfig =
300321
Aeson.fromList

0 commit comments

Comments
 (0)