Skip to content

Commit 6f2e06c

Browse files
committed
expose prometheus metrics in testnet
1 parent 48327a2 commit 6f2e06c

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
@@ -85,16 +85,19 @@ import qualified Data.Aeson.Key as Aeson
8585
import qualified Data.Aeson.KeyMap as Aeson
8686
import Data.Bifunctor (bimap)
8787
import qualified Data.Default.Class as DefaultClass
88+
import Data.IORef
8889
import Data.Proxy
8990
import Data.Ratio
9091
import Data.Scientific
92+
import Data.String
9193
import Data.Text (Text)
9294
import qualified Data.Text as Text
9395
import Data.Time (UTCTime)
9496
import Data.Word (Word64)
9597
import Lens.Micro
9698
import Numeric.Natural
9799
import System.FilePath ((</>))
100+
import System.IO.Unsafe
98101

99102
import Test.Cardano.Ledger.Core.Rational
100103
import Testnet.Start.Types
@@ -174,6 +177,11 @@ defaultConwayGenesis = do
174177
, cgInitialDReps = mempty
175178
}
176179

180+
-- TODO REMOVE
181+
nCounter :: IORef Int
182+
nCounter = unsafePerformIO $ newIORef 0
183+
{-# NOINLINE nCounter #-}
184+
177185
-- | The only era supported by cardano-testnet for the moment.
178186
-- It's important to keep the era parameterization everywhere, for ease of development
179187
-- when new eras roll out.
@@ -186,7 +194,7 @@ defaultYamlHardforkViaConfig :: ShelleyBasedEra era -> Aeson.KeyMap Aeson.Value
186194
defaultYamlHardforkViaConfig sbe =
187195
defaultYamlConfig
188196
<> tracers
189-
<> [("TraceOptions", Aeson.Object mempty)]
197+
<> [("TraceOptions", traceOptions)]
190198
<> protocolVersions sbe
191199
<> hardforkViaConfig sbe
192200
where
@@ -300,6 +308,19 @@ defaultYamlHardforkViaConfig sbe =
300308
, (proxyName (Proxy @TraceTxSubmissionProtocol), False)
301309
]
302310

311+
traceOptions = do
312+
let n = unsafePerformIO . atomicModifyIORef nCounter $ \n' -> (n'+1, n')
313+
Aeson.object
314+
[ "" .= Aeson.object
315+
[ "backends" .= Aeson.Array
316+
[ "EKGBackend"
317+
, "Forwarder"
318+
, fromString $ "PrometheusSimple suffix 0.0.0.0 " <> show (12798 + n - 1)
319+
, "Stdout HumanFormatColoured"
320+
]
321+
]
322+
]
323+
303324
defaultYamlConfig :: Aeson.KeyMap Aeson.Value
304325
defaultYamlConfig =
305326
Aeson.fromList

0 commit comments

Comments
 (0)