Mina Node Monitor

Overview

Mina Node Monitor

Mina Monitor is an extended graphical version of the mina client status command with additional indicators. This is a client-server application for visual monitoring of the validator node and alerts when the node has a problem.

Key Features

  1. Track the status of a node in real time
  2. Shows 12 parameters: status, uptime, balance, ...
  3. Shows the load on memory, processor, network
  4. Monitors the state of the node and, if the node is out of sync with the main network and / or has switched in a status other than SYNCED, sends notifications to Telegram
  5. Restart node when de-sync discovered. Two types: de-sync, long time not synced with the same block height.

Monitor built with a stack:

  • server - NodeJS, JavaScript
  • client - JavaScript, HTML, CSS

Credits

How to use

Pre-requirements

To use or/and build monitor you need install NodeJS, npm.

Important! For assembling use the only Parcel 1.x!

Clone repository

git clone https://github.com/olton/mina-node-monitor.git

Install required packages

npm i

The Monitor consists of two parts:

  • Client - uses for visualisation mina node state in a browser
  • Server - uses for retrieves required data from mina node

Create config files

Before build client or/and server, you must create a config files for client and server.

Config file for client

Create file config.json in a client folder. Example below demonstrate witch data you must create.

{
    "hosts": {
        "node1": "xxx.xxx.xxx.xxx:xxxx"
    },
    "useHost": "node1",
    "intervals": {
        "info": 60000,
        "time": 60000,
        "blockchain": 30000,
        "node": 30000,
        "net": 2000,
        "mem": 2000,
        "cpu": 2000,
        "uptime": 600000
    },
    "theme": "auto",
    "useProxy": false,
    "proxy": "https://server/proxy.php",
}

Section hosts contain information about your servers addresses. Each address must be an opened network interface/ip and port on the mina node server. Parameter useHost defines host where client retrieves data.

Section intervals contain information about intervals (in milliseconds), with which data will be retrieve.

  • info - general information about server
  • time - server time and uptime
  • blockchain - total currency, slot info, and epoch
  • node - interval for retrieve data from mina GraphQL server
  • net - interval for retrieve network information: speed, connections
  • mem - interval for retrieve information about server memory
  • cpu - interval for retrieve information about server CPU(s)
  • uptime - interval for retrieve information about sidecar calculating server uptime
  • theme - default auto (dark\light mode dependence from os), value can be dark, light

Section for using proxy (read about proxy below)

  • useProxy - use or not proxy server
  • proxy - proxy server address

Config file for server

Create file config.json in a server folder. Example below demonstrate witch data you must create.

{
    "publicKey": "B62qr...",
    "telegramToken": "XXXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
    "telegramChatID": "XXXXXXXXX, XXXXXXXXX",
    "telegramChatIDAlert": "XXXXXXXXX, XXXXXXXXX",
    "balanceSendInterval": 86400000,
    "alertInterval": 60000,
    "blockDiff": 2,
    "canRestartNode": true,
    "restartAfter": 30,
    "restartCmd": "systemctl --user restart mina",
    "host": "xxx.xxx.xxx.xxx:xxxx",
    "graphql": "xxx.xxx.xxx.xxx:xxxx",
    "https": {
        "key": "",
        "cert": ""
    }
}

where

  • publicKey - node key for getting balance
  • telegramToken - your telegram bot token
  • telegramChatID - chat id(s) for balance info, if there are several, must be separated by commas
  • telegramChatIDAlert - chat id(s) for alerting, if there are several, must be separated by commas
  • balanceSendInterval - the interval with which the server will send the current balance in telegrams
  • alertInterval - the interval with which the server will check node state and send alerts in telegrams
  • blockDiff - difference in blocks with MinaExplorer at which an alert will be sent
  • host - IP and PORT on which the server will run
  • graphql - Mina node GraphQL address (by default localhost:3085)
  • canRestartNode - if true, server can restart mina node
  • restartAfter - value in minutes, if node synced and height is lower from Mina Explorer within the specified time, node will restart after this interval
  • restartCmd - command for restart mina node
  • https - contains paths to cert and key to create https server

Build web client

To build client use command:

for Windows

npm run build

for Linux

npm run build_x

Now folder dist contains a compiled client files. Copy these to your web server.

If you don't have a web server, you can run the client in your local environment. To do this, run the command:

For Windows

npm run serve

For Linux

npm run serve_x

Install server app

The application server must be installed on a machine with a Mina. Monitor use graphql connection defined in config with prop graphql (default is localhost:3085) to get Mina info. Also, the server requires opens external network interface if client run on a different server. I use an external interface with a 3085 port and restrictions by iptables for connecting.

Install server app

To install server app, copy files from server folder to your server to any folder convenient for you (for example copy to ~/node-monitor in a home directory).

Dependencies

To run server app, you must install two dependencies:

  • node-fetch
  • systeminformation

You can install these with

cd ~/node-monitor
npm install node-fetch systeminformation --save

Run server

To run server execute command:

node monitor.mjs

Sever side as Service

Also, you can run server as service. To run as service

  • replace user-name with your real server user name in ExecStart in minamon.service file.
  • copy minamon.service to /usr/lib/systemd/user
sudo cp node-monitor/minamon.service /usr/lib/systemd/user

Enable service for autorun when restart server

systemctl --user enable minamon

Start server

systemctl --user start minamon

Now you can start, stop, and restart server app with commands

systemctl --user start minamon
systemctl --user stop minamon
systemctl --user restart minamon
systemctl --user status minamon

Proxy server

If you do not want to provide direct access to the server with Mina and the server side of the monitor, you can additionally use a proxy server. The proxy server is written in PHP. This is a very simple script that allows you to redirect the request to the server side of the monitor and return it to the client side. This approach allows you to provide access to the Mina server and the server side of the monitor only from the IP proxy server, and receive monitoring from any other IP address.

Setting up a proxy server

The proxy server proxy.php is located in the proxy/php folder. Next to the proxy server file there is servers.php with the parameters of the servers where the Monitor server part is installed. This is a simple array in which the server parameters are specified in key:value pairs, and which must match the values, specified in the hosts parameter of the client's configuration file (the client determines which server he wants to contact for using the key config.useHost and specifies this value when requesting a proxy server):

return $servers = [
    "node1" => "127.0.0.1:3085",  // Change to your real server address
    "node2" => "127.0.0.2:3085",  // Change to your real server address
    "node3" => "127.0.0.3:3085"   // Change to your real server address
];

Setting up a proxy server

Copy the files proxy.php and servers.php in the folder proxy/php to a convenient location on your web server. In the client config file, define 2 parameters useProxy, proxy:

{
    ...,
    "useProxy": true,
    "proxy": "https://server/proxy.php"
}
Comments
  • Snark worker not running on-demand

    Snark worker not running on-demand

    I've traced the bug a bit, and I think it's in this line https://github.com/olton/mina-node-monitor/blob/master/server/modules/snark-worker.js#L75 which wants null, while it's already set to false in https://github.com/olton/mina-node-monitor/blob/master/server/index.js#L59 so it never starts. If possible please verify the correct operation of starting/stopping snark worker

    Thanks!

    bug Fixed 
    opened by kim0 5
  • node also restarts while bootstrapping

    node also restarts while bootstrapping

    restartAfter - value in minutes, if node synced and height is lower from Mina Explorer within the specified time, node will restart after this interval

    Currently mina nodes take quite a while to bootstrap. For me it takes longer than 30 minutes at the moment so maybe there should be an exception that the node is not restarted, while its bootstrapping.

    opened by gretzke 4
  • make directory directive missing from package.json

    make directory directive missing from package.json

    In package.json, for the linux build, dist directory have to be created before copying files to this directory.

    package.json

    "build_site_x": "mkdir -p dist && cp -a client/config.json dist/ && parcel build  --dist-dir dist --public-url . --no-optimize  client/index.html",
    
    opened by naamahdaemon 2
  • xcopy not found

    xcopy not found

    Hello, While trying to build the client (npm run build) on my linux server, got :

    > xcopy client\config.json dist\*.* /Y /I && parcel build -d dist --public-url . --no-minify client/index.html
    sh: 1: xcopy: not found
    

    Has there ever been a xcopy command on linux ?

    Thanks for your reply.

    opened by naamahdaemon 2
  • Better memory monitoring

    Better memory monitoring

    This PR improves memory monitoring on Linux-based hosts.

    Node's os.freemem doesn't represent how much ram is available for processes. It returns what is shown in cat /proc/meminfo MemFree, which is calculated from memory used by different applications + buffers + Linux disk in-memory caching. This means that's it's ok to have MemFree close to 0 on Linux host, because Linux can always unload disk caches and buffers from memory without any harm to running processes. To clarify this, Linux developers added new field in /proc/meminfo called MemAvailable. This filed represent real free memory capacity for applications on host, without including disk caching.

    So, if monitoring should answer the question Is it enough free RAM on my host to run an application? it should use MemAvailable parameter. That's why I think it should be better to switch memory monitoring on this parameter, instead of MemFree.

    Unfortunately, there is no way to get MemAvailable from node.os, but thankfully systeminformation is already in use, and you can get MemAvailable there.

    Also here is a little bit more information about free vs available https://www.linuxatemyram.com/

    opened by artmakh 0
  • How are you? Hope everyone in Ukraine is good

    How are you? Hope everyone in Ukraine is good

    Hello, My all good wishes with you and your family . I am happy to see you contributing your repos.Every Ukrainian is suffering the unjustified war on them.

    opened by Manishfoodtechs 1
Releases(2.2.2)
  • 2.2.2(Jul 18, 2022)

    CrisF: Vulnerability Report - Mina Node Monitor

    I’ll add information reported here:
    through node js you can get any file from the host
    all monitor versions are affected since December 14, 2021 commit 7ee51e82d885af951fcb7ef5f9139d7ebc072d50
    
      https://github.com/olton/mina-node-monitor/commit/7ee51e82d885af951fcb7ef5f9139d7ebc072d50
    
    This is a feature of the nodejs (actually HTTP protocol), developers using it as a server must take care of security themselves.
    
      https://github.com/olton/mina-node-monitor/blob/552607a18b3e91e66f7c9e1e14ade1643b23685f/server/index.js#L92
    
     this code line
    he doesn't sanitaze url from ".."
    so attacker can get any file from host
    

    Fixed, completely removed the code with this vulnerability

    Source code(tar.gz)
    Source code(zip)
  • 2.1.2(Mar 26, 2022)

    2.1.2

    • [x] Server: changed helper timestamp() for arguments order, now first date, second divider - timestamp(date, '-:')
    • [x] Server: changed algorithm for analyze command line arguments. Now for config parameter with value you must use format --PARNAME value, format -PARNAME reserved for flags
    • [x] Server: send alert when config reloaded
    Source code(tar.gz)
    Source code(zip)
  • 2.1.1(Dec 27, 2021)

    2.1.1

    • [x] Christmas Edition
    • [x] Server: fixed uptime positions sorting
    • [x] Server: added config parameter uptimeUpdateInterval, default amd minimal value is 5 min
    • [x] Server: fixed spam for uptime
    • [x] Client: fixed for version number
    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Dec 22, 2021)

    Changelog for 2.1.0

    • [x] Server: added interaction with a block height from Mina Explorer
    • [x] Server: added interaction with the latest block from Mina Explorer
    • [x] Server: changed config for telegram and discord definition, updated functions for sending alerts and price
    • [x] Server: removed config parameters telegramToken, telegramChatID, telegramChatIDAlert, discordWebHook
    • [x] Server: added config parameters telegram, discord
    • [x] Server: added config options for telegram: token, tokenInfo, tokenAlert, chatIDInfo, chatIDAlert
    • [x] Server: added config options for discord: webhook, webhookInfo, webhookAlert, botName
    • [x] Server: to config parameters alertToTelegram, alertToDiscrod added value PRICE. Parameter price:targets deprecated
    • [x] Server: to config parameters alertToTelegram, alertToDiscrod added value REWARDS
    • [x] Server: to config parameters alertToTelegram, alertToDiscrod added value UPTIME
    • [x] Server: removed config parameter balanceSendInterval
    • [x] Server: added config parameter channel:info to define which alerts will send to the info channel
    • [x] Server: changed reconnect interval to comparable node from 1s to 30s
    • [x] Server: changed parameter comparison. Now this parameter has a new structure
    • [x] Server: added response for Monitor Version
    • [x] Server: added watcher for config file
    • [x] Server: config parameters memAlert, memRestart deprecated. You must use new parameters: memory:alert, memory:restart
    • [x] Server: config parameters hangIntervalAlert, hangInterval deprecated. You must use new parameters: hang:alert, hang:restart
    • [x] Server: added response about server start mode https with value true or false
    • [x] Server: added support for static files for webserver
    • [x] Server: added config parameter webRoot. With this parameter you can set a webRoot folder other than default (the same where the monitor is installed)

    What’s new in 2.1.0

    • [x] In the new version returned interaction with a Mina Explorer. Now, Monitor sends a request to the Mina Explorer for information about the last canonical block and blockchain height.
    • [x] Changes have been made to the config file structure to make it clearer, and to support new features. I changed parameters which respond to interaction with messengers (Discord and Telegram), interaction with others nodes where Monitor installed (comparison nodes), parameters, which defines a behavior of the Monitor for control memory usage and node hanging state.
    • [x] Added new usefulness messages to messengers about won blocks, about uptime changes in the leaderboard.
    • [x] Changed algorithm sending information about balance state. Now, information is sent only when the balance was changed. So, parameter balanceSendInterval deprecated, and for enabling balance state sending you must add value BALANCE to the alertToTelegram or alertToDiscord.
    • [x] Added a special observer for config file changing. Now, if you change a config.json file content, Monitor applies new values on the fly.
    • [x] Now, the server sends the protocol mode (HTTP or HTTPS) to the clients, and this mode is displayed as a closed lock on the left corner in each node panel (in Cluster client).
    • [x] Added support for using additional static HTML files in an internal web-server.

    Interaction with Mina Explorer

    For Interaction with Mina Explorer a special module was added. You can control this module with a composite parameter explorer.

    {
            "explorer": {
                "getRewardsInterval": "3m",
                "getLatestBlocksInterval": "1m",
                "getBlockchainSummaryInterval": "1m"
            }
    }
    

    Параметры:

    • getRewardsInterval - this key responsible for how often Monitor will ask information about won blocks in current epoch.
    • getLatestBlocksInterval - this key responsible for how often Monitor will ask information about the latest canonical block in blockchain.
    • getBlockchainSummaryInterval - this key responsible for how often Monitor will ask blockchain summary info.

    Changing in alert system

    Parameters responsible for organization information users to Telegram and/or to Discord were reorganized for simplification and clearing from one side, and for ability to control new features. The next parameters were deprecated: telegramToken, telegramChatID, telegramChatIDAlert`, discordWebHook. Added composite parameters instead telegram and discord. Also was added parameter channel:info for defining messages, which Monitor sends to INFO channel, others messages Monitor will send to ALERT channel. Now, you can divide messages between INFO and ALERT channels and send them to different chats.

    telegram

    {
        “telegram”: {
            “token”: “”,
            “tokenInfo”: “”,
            “tokenAlert”: “”,
            “chatIDInfo”: “”,
            “chatIDAlert”: “”
        }
    }
    

    discord

    {
        “discord”: {
            “webhook”: “”,
            “webhookInfo”: “”,
            “webhookAlert”: “”,
            “botName”: “”
        }
    }
    

    channel

    {
        “channel”: {
            “info”: ["HELLO", "BALANCE", "PRICE", "REWARDS", "UPTIME"]
        }
    }
    

    Messages types

        const defaultAlerts = [
            "FAIL",
            "EXEC",
            "HELLO",
            "STATUS",
            "MAX",
            "FORWARD-MAX",
            "FORK",
            "FORWARD-FORK",
            "HANG",
            "EXPLORER",
            "RESTART",
            "BALANCE",
            "PEERS",
            "MEM",
            "COMPARE",
            "PRICE",
            "REWARDS",
            "UPTIME"
        ]
    

    Channel defining

    Starting from Monitor 2.1.0 you can use one or two different channels (one for INFO messages, and one for ALERTS) for sending messages from Monitor. If you are only going to use one channel, you can define Telegram token in key token in parameter telegram, and Discord chat webhook in key webhook in parameter discord. If you wish to use different channels, you can define values for keys tokenInfo, tokenAlert, webhookInfo, and webhookAlert. Also, for sending messages to Telegram, you must define users IDs in keys chatIDInfo and/or chatIDAlert. If you wish to send and info messages and alerts to the user, you must put the user chat id to both keys or use merging key chatID.

    Split messages to different types

    You can split messages to two different types: info and alert. For this purpose you can use parameter channel:info. In the key info of the parameter channel, you must define those messages that are delivered into the info channel. Other messages the Monitor will send to the alert channel. By default, this key contains the following values: "HELLO", "BALANCE", "PRICE", "REWARDS", "UPTIME".

    Control the Node hanging state

    For a more convenient and understandable perception of the parameters responsible for the behavior of the Monitor in the event of a node hanging detection, next parameter were deprecated hangIntervalAlert, hangInterval. To set Monitor behavior you must use a composite parameter hang with keys alert and restart.

    {
        “hang”: {
            “alert”: “30m”,
            “restart”: “60m”
        }
    }
    

    Control memory usage

    For a more convenient and understandable perception of the parameters responsible for the behavior of the Monitor in the event of a node memory usage detection, next parameter were deprecated memAlert, memRestart. To set Monitor behavior, you must use a composite parameter memory with keys alert and restart.

    {
        “memory”: {
            “alert”: 95,
            “restart”: 0
        }
    }
    

    Interaction with others Mina Monitors

    Beginning from version 2.0.2 Monitor receives a module for interaction with other Mina Monitor instances. This module can control matching block heights and inform you in case when height is different. In 2.1.0 the structure of parameters for this module was changed to:

    {
        "comparison": {
            "reconnect": "30s",
            "blockDiff": 3,
            "nodes": [
                {
                    "name": "Host1",
                    "address": "host1.com:8000",
                    “https”: false
                },
                {
                    "name": "Host2",
                    "address": "host2.com:8000",
                    “https”: false
                }
            ]
        }
    }
    

    Attention! Interaction with other nodes may work incorrectly or not work at all if you have self-signed certificates installed or ssl certificates are installed incorrectly (incomplete chains, ...).

    New messages

    In 2.1.0 new information messages: 1) info about won blocks, 2) changes for your address in uptime leaderboard, 3) information about Mina cost. To activate these messages, you must add values PRICE, UPTIME, REWARDS to the parameter alertToTelegram and/or to the parameter alertToDiscord.

    Note: it is necessary to take into account that the price:target parameter is canceled.

    Config file watcher

    In 2.1.0 added a module that monitors the state of the configuration file (config.json) and if any changes are made to it, this module applies these changes to the Monitor. With this, you no longer need to restart the monitor. You can change any parameter without restarting the Monitor, except for the parameters host, https, journal.

    This functionality does not work yet with a Monitor running as a Docker Container.

    HTTP or HTTPS

    Now Monitor sends to clients information about protocol where he works. If the Monitor was started in secure mode (with using SSL certificate on HTTPS protocol), On the client (supported only in Cluster Client) you can see that on the top left corner on the node panel.

    Supports static HTML files

    In 2.1.0 was added support for using static html files on the level of the internal web server. You can control a place of the web server root folder with a parameter webRoot. You can use this feature to create and renew Let’s Encrypt certificate in automatic mode (if you use 80/443 ports to start Monitor).

    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Nov 7, 2021)

    2.0.2

    • [x] Server: added restart by long uptime with config parameter restartAfterUptime. The value must be defined in milliseconds or internal time string format . Default value is 0 (no restart)
    • [x] Server: added config parameter name. Now you can define a name for you node, if name is not define, Monitor will use a hostname
    • [x] Server: improvements for singing messages
    • [x] Server: command node index --init now updated config file if one exists
    • [x] Server: added config parameter comparison
    • [x] Server: added alert with rule COMPARE for alerting when node height is different from comparable nodes
    • [x] Server: changed algorithm for memory observing
    Source code(tar.gz)
    Source code(zip)
  • 2.0.1(Oct 14, 2021)

    2.0.1

    • [x] Server: fixed snark worker controller for first start, issue #7
    • [x] Server: fixed spams when snark worker controller can not start sw
    • [x] Server: fixed issue for set telegramChatID from command line
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Oct 5, 2021)

    What's new

    • [x] Changed data exchange protocol from http(s) to ws(s)
    • [x] Added Docker file for server and built docker image (olton/mina_monitor_server)
    • [x] To the Server added command line arguments support. Now you can rewrite config parameters with command line arguments
    • [x] Refactoring server code, switch to CommonJS modules
    • [x] Control for mina stopped with journalctl and write this event to the log
    • [x] New supported time format for config parameters - short string (see README)
    • [x] A lot of client config parameters are deprecated: intervals, price, hosts, useHost, useHttps

    Changelog

    • [x] Server: changed data exchange protocol from http(s) to ws(s)

    • [x] Server: added command line arguments support. Now you can rewrite config parameters with command line arguments

    • [x] Server: refactoring code, switch to CommonJS modules

    • [x] Server: improved alerter for HANG state detecting

    • [x] Server: added logic to disable HANG alert/restart when hangInterval, hangIntervalAlert is 0

    • [x] Server: added control for mina stopped with journalctl and write this event to the log

    • [x] Server: added alert to telegram and/or discord about mina daemon stops by failure (info from journalctl)

    • [x] Server: added response for request sync-state. Return daemon sync state (SYNCED, BOOTSTRAP, ...) or UNKNOWN

    • [x] Server: added helper function timeParser(t) for parsing time, defined in short string (ex: 1d3h23m45s, 30m, 10s, 2h30s)

    • [x] Server: config parameter restartAfterNotSynced must be defined in milliseconds or short time string (ex: 30m)

    • [x] Server: changed alerts events to Telegram and Discord. Value NON_SYNCED is deprecated, to alert change sync status use value STATUS

    • [x] Server: changed config property price:interval to price:sendInterval

    • [x] Server: removed collecting Mina Explorer Height, config parameter observeExplorer deprecated

    • [x] Server: config parameter blockDiff now can be 0 to disable fork checking

    • [x] Server: config parameter blockDiffToRestart now can be 0 to disable restart node when fork detected

    • [x] Client: changed data exchange protocol from http(s) to ws(s)

    • [x] Client: added support short string time format in config

    • [x] Client: config parameters inervals:* are deprecated

    • [x] Client: config parameters price:* are deprecated

    • [x] Client: config parameters proxy, useProxy are deprecated

    • [x] Client: config parameters hosts, useHost are deprecated. You must use parameter host: "server_ip_or_name:port"

    • [x] Client: config parameter useHttps are deprecated. You must use parameter https: true|false

    • [x] Client: fixed color for uptime position label for 120+ places

    Source code(tar.gz)
    Source code(zip)
  • 1.1.4(Jul 27, 2021)

    What's new in 1.1.4

    • [x] Snark worker controller
    • [x] Node response time

    Changelog for 1.1.4

    • [x] Server: added snark worker controller
    • [x] Server: added request for node response time
    • [x] Server: improved work of the alerter for detecting forks
    • [x] Server: use stored state for responses
    • [x] Client: updated for using new responses
    Source code(tar.gz)
    Source code(zip)
  • 1.1.3(Jul 14, 2021)

  • 1.1.2(Jul 13, 2021)

  • 1.1.1(Jul 11, 2021)

    What's new in 1.1.1

    • [x] New algorithm to check node hanging
    • [x] New alert for NO PEERS state
    • [x] health object for the node to display node health on the client (OK, FORK, UNKNOWN, NO PEERS, NOT-SYNCED).
    • [x] Many changes for improving work of the server-side
    • [x] Alert and restart node if Critical memory usage state detected
    • [x] Can be used for Mina Monitor Cluster

    Changes in 1.1.1

    • [x] Server: improved alerts for FORK states

    • [x] Server: added alert for NO PEERS state

    • [x] Server: node info now stored into local object every time interval defined in consfig.nodeInfoCollectInterval

    • [x] Server: added config property config.blockSpeedDistance with default value 10 to calculate blockchain speed

    • [x] Server: information about mina now return from stored object

    • [x] Server: added request for node health, request return empty array if OK or filled array with critical states

    • [x] Server: alerter now use stored node info

    • [x] Server: improved alerts for HANG state

    • [x] Server: added config properties hangInterval, hangIntervalAlert, config option restartAfterPrev is deprecated, use hangInterval

    • [x] Server: added config options memAlert, memRestart as a percent value (0 - 100)

    • [x] Client: added reaction for node health request

    • [x] Client: Node health now is displaying in sync status block

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Jun 27, 2021)

    What's new 1.0.5 -> 1.1.0

    • [x] Alert to Discord
    • [x] Define which alerts will send to telegram or discord
    • [x] Reorder blocks with config.blocks
    • [x] Optimized config files. Configs changed! Read readme and changeloag
    • [x] New visual (soft changes)
    • [x] Changed rules to restart, now node will restart if value in block difference reached
    • [x] Send price info to telegram/discord
    • [x] Request to COINGECKO moved from client to server

    Changelog 1.0.5 -> 1.1.0

    • [x] Server: fixed uptime sender for using publicKeyDelegators

    • [x] Server: fixed alerter module for forward for when unvalidated length is 0

    • [x] Server: changed possible values for config.restartStateSyncedRules to ["MAX", "FORK", "FORWARD-FORK", "HANG"]

    • [x] Server: config props restartAfterMax, restartAfterUnv is deprecated, use blockDiffToRestart

    • [x] Server: added alert to DISCORD (used discord webhooks)

    • [x] Server: added config props alertToTelegram, alertToDiscord. Possible values: ["NOT-SYNCED", "MAX", "FORK", "FORWARD-FORK", "HANG", "EXPLORER", "RESTART", "BALANCE"]

    • [x] Server: moved request to coingecko from client to server

    • [x] Server: added config.price parameter

    • [x] Client: added flashing for maxHeight, unvalidateHeight, explorerHeight when difference present with the current height

    • [x] Client: high/low price now showing all-time high/low

    • [x] Client: added price change in currency, added colored arrow for indicate price change

    • [x] Client: next config props deprecated and not used: cpu, net, mem, blockchain, node, info, time

    • [x] Client: added new config props: system (server info and time), resources (cpu, net, ram), daemon (data from Mina GraphQL: node info, blockchain status)

    • [x] Client: changed CPU temperature view

    • [x] Client: changed block height view

    • [x] Client: added border radius to panels

    • [x] Client: progress bar for epoch now showing time left

    • [x] Client: added config check. If config contains errors, Monitor puts to the console error message

    • [x] Client: reorder blocks with config.blocks option

    • [x] Client: optimized build scripts. (Important, required npm i)

    Source code(tar.gz)
    Source code(zip)
  • 1.0.4(Jun 16, 2021)

    What's new

    • [x] Delegations info
    • [x] Rewards in current epoch info
    • [x] Mina price info
    • [x] Calculate balance in USD
    • [x] Check for forward fork

    Changes

    1.0.4

    • [x] Server: added request for delegators

    • [x] Server: added new config props publicKeyDelegators

    • [x] Server: added check for chain exist in node.mjs:getBlockSpeed()

    • [x] Server: added check for forward fork (block height more than unvalidated)

    • [x] Server: added request to Explorer GraphQL to get won blocks for current epoch

    • [x] Client: show delegations count and total stack for current and next epoch

    • [x] Client: added price data from coingecko.com

    • [x] Client: change style for scrollbars

    • [x] Client: new config props price: {currency, interval}

    • [x] Client: updated uptime, the position value now more pronounced

    • [x] Client: fixed using dark theme

    • [x] Client: added won blocks for current epoch into EPOCH panel

    Source code(tar.gz)
    Source code(zip)
  • 1.0.3(Jun 6, 2021)

    1.0.3

    • [x] Server: The node will don't more restart is the block height different from Explorer.

    • [x] Server: Alert for difference height to Explorer height now enabled/disabled with config parameter observeExplorer

    • [x] Server: For restart in not SYNCED now uses parameter restartAfterNotSynced from config file.

    • [x] Server: The Node will not restart when non-synced for states defined in config parameter restartStateException. This is an array. Recommended set it to ["BOOTSTRAP"].

    • [x] Server: Changed rules for restart node in synced. Added rules for difference with max block length, unvalidated block length, and equal to previous block height

    • [x] Server: Removed config parameter redtartAfter

    • [x] Server: Now you must use parameters restartAfterMax, restartAfterUnv, restartAfterPrev (restartAfterMax, restartAfterUnv parameters must have value in minutes, restartAfterPrev - integer, how many times the alert must go off before the mine is restarted)

    • [x] Server: You can enable restart rules for synced mode with the config parameter restartStateSyncedRules. This parameter must have value as an array and can contain the next values: ['MAX', 'UNV', 'PREV']

    • [x] Server: Added alerts to telegram for: difference block height from max block and unvalidated block, and equals to previous retrieved block height

    • [x] Client: Split RAM usage chart to two separate charts: free, usage.

    • [x] Client: Block producer and snark worker now have a short name, you can click on these to copy to clipboard full name.

    • [x] Client: Added block speed, showed in BLOCK HEIGHT panel

    • [x] Client: Fixed work with server if one started on https. To config added key useHttps with true or false values.

    • [x] Client: Fixed network chart for align max value and split to two different charts

    Source code(tar.gz)
    Source code(zip)
  • 1.0.2(May 30, 2021)

    1.0.2

    • [x] Added cpu threads load chart
    • [x] Re-disposition RAM and CPU panels content
    • [x] Added https server creation. Use server conf option https to set paths to cert and key
    • [x] Added dark/light modes
    • [x] Visual improvements
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(May 20, 2021)

    Mina Monitor is an extended graphical version of the mina client status command with additional indicators.

    What's new:

    1. Restarting Node if this operation granted and require
    2. Added simple proxy-server, written on PHP
    3. Added uptime position and score from sidecar
    4. Visual improves
    5. Re-written server code for cpu and ram
    6. Added HOW-TO (RU, EN)
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(May 20, 2021)

    Mina Node Monitor v1.0.0

    Mina Node Monitor is an extended graphical version of themina client status command with additional indicators. This is a client-server application for visual monitoring of the validator node and alerts when the node has a problem.

    Key Features

    1. Track the status of a node in real-time
    2. Shows 12 parameters: status, uptime, balance, ...
    3. Shows the load on memory, processor, network
    4. Monitors the state of the node and, if the node is out of sync with the main network and/or has switched in a status other than SYNCED, sends notifications to Telegram
    Source code(tar.gz)
    Source code(zip)
Owner
Serhii Pimenov
I cannot solve the problem if I cannot reproduce it!
Serhii Pimenov
Borscht - A Russian service monitor to track the uptime of domains and services

borscht ?? Borscht is a simple uptime and status monitor of Russian sites and services You can view the public status page here ?? About ?? This proje

Grant Birkinbine 10 Jul 8, 2022
A dockerized uptime monitoring RESTful API server that allows authenticated users to monitor URLs

A dockerized uptime monitoring RESTful API server that allows authenticated users to monitor URLs, and get detailed uptime reports about their availability, average response time, and total uptime/downtime.

Anas Hamed 2 Oct 7, 2022
cpace - nodemon for C/C++ files. Monitor for any changes in your [.c] and [.cpp] application and automatically restart it - perfect for development

cpace cpace is a tool that helps develop [.c] and [.cpp] based applications by automatically restarting them when file changes are detected. The packa

null 17 Dec 3, 2022
Mi Band/Amazfit heart rate monitor with OSC integration for VRChat

Mi Band/Amazfit OSC heart rate monitor for VRChat By Vard Based on Jaapp-'s miband-5-heart-rate-monitor and gzalo's miband-6-heart-rate-monitor Thanks

Vard 34 Jan 1, 2023
A simple app that helps a user monitor daily activities by adding, storing and deleting activities.Built with HTML,CSS and JavaScript

To-do-list A simple list app that allows a user to add and remove tasks. Built With HTML CSS JS Webpack Live Demo Click To-do-list to see the page. Ge

Catherine K 7 Apr 8, 2022
Uptime monitoring RESTful API server that allows authenticated users to monitor URLs, and get detailed uptime reports about their availability, average response time, and total uptime/downtime.

Uptime Monitoring API Uptime monitoring RESTful API server that allows authenticated users to monitor URLs, and get detailed uptime reports about thei

Mohamed Magdi 2 Jun 14, 2022
A matrix bot to monitor and respond to investment scam spamming across the matrix platform, for example in rooms with a permanently offline admin.

Spam Police A matrix bot to monitor and respond to investment scam spamming across the matrix platform, for example in rooms with a permanently offlin

jjj333_p 7 Dec 26, 2022
NFT listing monitor bot of the marketplace. (Opensea, X2Y2, LooksRare)

NFT Listing Monitor Bot NFT listing monitor bot of the marketplace. Market Coverage Opensea Looksrare X2Y2 Prerequisites Opensea API Key - apply here

null 21 Jan 2, 2023
Simple but Complete & Fast network monitor for your home network

netmon Netmon is an opensource project for protecting and monitoring your home network. Netmon is written to run on a Raspberry PI and is optimized to

Tommaso Ventafridda 9 Jul 6, 2022
Monitor incoming SMS for SMS-codes, add them to clipboard

MacOs only. Monitors SMS for codes, adds them to the clipboard. Monitors Messages SQLite file ~/Library/Messages/chat.db for new messages, uses regexp

Ilya Kantor 3 Sep 23, 2022
Monitor your code for exposed API keys, tokens, credentials, and high-risk security IaC misconfigurations

Spectral VS Code extension The Spectral VS Code extension is a tool for developers that want to catch security issues (such as credentials, tokens and

null 15 Dec 19, 2022
Astrospeed is a performance monitor for your AstroJS codebase.

astroSpeed astroSpeed Performance monitor for Astro & Next.js web applications. Explore astrospeed.io » View Demo · Report Bug · Request Feature Table

OSLabs Beta 38 Dec 15, 2022
Create Route53 HealthChecks to monitor TCP, HTTP, HTTPS endpoints, CloudWatch Alarms and other Route53 HealthChecks

AWS CDK Route53 HealthCheck Create Route53 HealthChecks to monitor TCP, HTTP, HTTPS endpoints, to monitor CloudWatch Alarms and to monitor other Route

Pepperize 7 Dec 15, 2022
Node 18's node:test, as a node module

node-core-test This is a user-land port of node:test, the experimental test runner introduced in Node.js 18. This module makes it available in Node.js

Julian Gruber 62 Dec 15, 2022
Node-cli-starter - Basic starter kit for building Node CLI applications with TypeScript.

node-cli-starter Minimal starter kit for building Node CLI applications with TypeScript. Getting Started To get started clone repo locally and run npm

Cory Rylan 7 May 17, 2022
Apilytics for Node.js - Easy API analytics for Node backends

apilytics-node Apilytics is a service that lets you analyze operational, performance and security metrics from your APIs without infrastructure-level

Apilytics 9 Sep 2, 2022
This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js

This is a vanilla Node.js rest API created to show that it is possible to create a rest API using only vanilla Node.js. But in most cases, I would recommend you to use something like Express in a production project for productivity purposes.

Eduardo Dantas 7 Jul 19, 2022
Inter Process Communication Module for node supporting Unix sockets, TCP, TLS, and UDP. Giving lightning speed on Linux, Mac, and Windows. Neural Networking in Node.JS

Inter Process Communication Module for node supporting Unix sockets, TCP, TLS, and UDP. Giving lightning speed on Linux, Mac, and Windows. Neural Networking in Node.JS

Node IPC 43 Dec 9, 2022
Node js package makes creating node jd dependincies files like Controllers,Entities and Repositories easier by executing a few instructions

Nodejs Studio Node js package makes creating node js project dependincies files like Controllers,Entities and Repositories easier by executing a few i

Syrian Open Source 9 Oct 12, 2022