Skip to content

Commit

Permalink
3penny
Browse files Browse the repository at this point in the history
  • Loading branch information
Denis Shevchenko committed Nov 22, 2021
1 parent e50be64 commit 7c2b070
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 12 deletions.
6 changes: 6 additions & 0 deletions cabal.project
Expand Up @@ -279,6 +279,12 @@ source-repository-package
tag: d9e8fd302fa6ba41c07183d371e6777286d37bc2
--sha256: 0s8cblhq3i528jj7r7yd4v82nqzafj8vrgf0y80l7saxc3a5f2lk

source-repository-package
type: git
location: https://github.com/HeinrichApfelmus/threepenny-gui
tag: e3bb8283fc7d2e8aa374eea29426002e8dcd67a8
--sha256: 0s8cblhq3i528jj7r7yd4v82nqzafj8vrgf0y80l7saxc3a5f2lk

source-repository-package
type: git
location: https://github.com/input-output-hk/cardano-config
Expand Down
1 change: 1 addition & 0 deletions cardano-tracer/cardano-tracer.cabal
Expand Up @@ -75,6 +75,7 @@ library
, snap-server
, stm
, text
, threepenny-gui
, time
, trace-dispatcher
, trace-forward
Expand Down
16 changes: 8 additions & 8 deletions cardano-tracer/src/Cardano/Tracer/Configuration.hs
Expand Up @@ -67,16 +67,16 @@ data Network

-- | Complete configuration.
data TracerConfig = TracerConfig
{ network :: !Network -- ^ How cardano-tracer will be connected to node(s).
, loRequestNum :: !(Maybe Word16) -- ^ How many 'TraceObject's will be asked in each request.
, ekgRequestFreq :: !(Maybe Pico) -- ^ How often to request for EKG-metrics, in seconds.
, hasEKG :: !(Maybe Endpoint) -- ^ Endpoint for EKG web-page.
, hasPrometheus :: !(Maybe Endpoint) -- ^ Endpoint for Promeheus web-page.
, logging :: !(NonEmpty LoggingParams) -- ^ Logging parameters.
, rotation :: !(Maybe RotationParams) -- ^ Rotation parameters.
{ network :: !Network -- ^ How cardano-tracer will be connected to node(s).
, loRequestNum :: !(Maybe Word16) -- ^ How many 'TraceObject's will be asked in each request.
, ekgRequestFreq :: !(Maybe Pico) -- ^ How often to request for EKG-metrics, in seconds.
, hasEKG :: !(Maybe (Endpoint, Endpoint)) -- ^ Endpoint for EKG web-page (list of nodes, monitoring).
, hasPrometheus :: !(Maybe Endpoint) -- ^ Endpoint for Promeheus web-page.
, logging :: !(NonEmpty LoggingParams) -- ^ Logging parameters.
, rotation :: !(Maybe RotationParams) -- ^ Rotation parameters.
} deriving (Eq, Generic, FromJSON, Show, ToJSON)

-- | Read the tracer's configuration file (path is passed via '--config' CLI option).
-- | Read the tracer's configuration file.
readTracerConfig :: FilePath -> IO TracerConfig
readTracerConfig pathToConfig =
eitherDecodeFileStrict' pathToConfig >>= \case
Expand Down
33 changes: 29 additions & 4 deletions cardano-tracer/src/Cardano/Tracer/Handlers/Metrics/Monitoring.hs
Expand Up @@ -14,26 +14,50 @@ import Control.Monad (forever, unless)
import "contra-tracer" Control.Tracer (showTracing, stdoutTracer, traceWith)
import qualified Data.ByteString.Char8 as BSC
import qualified Data.Map.Strict as M
import qualified Graphics.UI.Threepenny as UI
import Graphics.UI.Threepenny.Core (UI, liftIO, onEvent, set, (#), (#+))
import System.Remote.Monitoring (forkServerWith)
import System.Time.Extra (sleep)

import Cardano.Tracer.Configuration
import Cardano.Tracer.Types

runMonitoringServer
:: Endpoint
:: (Endpoint, Endpoint)
-> ConnectedNodes
-> AcceptedMetrics
-> IO ()
runMonitoringServer (Endpoint host port) _connectedNodes acceptedMetrics = forever $ do
try serveEKGPage >>= \case
runMonitoringServer ((Endpoint listHost listPort), (Endpoint monitorHost monitorPort))
_connectedNodes acceptedMetrics =
UI.startGUI wsConfig $ mainPage
where
wsConfig = UI.defaultConfig
{ UI.jsPort = Just listPort
, UI.jsAddr = Just listHost
}

mainPage
:: UI.Window
-> UI ()
mainPage window = do
return ()
--liftIO $ logNotice tr "Web page loading..."

--void $ return window # set UI.title pageTitle



{-
forever $ do
let Endpoint host port = ekgListOfNodes
try (serveEKGPage host port) >>= \case
Left (e :: SomeException) ->
logTrace $ "cardano-tracer, problem with EKG web server: " <> show e
Right _ ->
return ()
sleep 1.0
where
serveEKGPage = do
serveEKGPage host port = do
metrics <- readTVarIO acceptedMetrics
unless (M.null metrics) $ do
-- TODO: temporary solution for testing
Expand All @@ -45,3 +69,4 @@ runMonitoringServer (Endpoint host port) _connectedNodes acceptedMetrics = forev
waitForever = forever $ threadDelay 1000000000
logTrace = traceWith $ showTracing stdoutTracer
-}

0 comments on commit 7c2b070

Please sign in to comment.