GithubHelp home page GithubHelp logo

cityofzion / neo-mon Goto Github PK

View Code? Open in Web Editor NEW
11.0 9.0 42.0 1 MB

Neo Network Status Monitor

Home Page: http://monitor.cityofzion.io/

License: MIT License

JavaScript 86.38% HTML 6.63% Shell 0.50% SCSS 6.49%
neo-network github-page monitoring

neo-mon's Introduction

NeoMon - Neo Network Status Monitor

NeoMon is a tool for monitoring the status of popular RPC Nodes and REST endpoints on the Neo network.

Install, Build and Run

npm install
bash build.sh

Manage Endpoints

Endpoints can be configured by editing the following JSON files directly. Commits to this repository update the monitor.cityofzion.io web site immediately.

mainnet.json
testnet.json

Manage Flag Icons

Each endpoint in the json has a locale property. Get the corresponding SVG from

https://github.com/lipis/flag-icon-css/tree/master/flags/1x1

Copy the raw source to a new file and add it to /src/assets/icons. Make sure to follow the same file naming convention.

Remove id property from the SVG and add viewBox="0 0 512 512". See one of the other SVGs for an example.

Deploy

Neomon is hosted on GitHub pages by publishing to the gh-pages branch. GitHub Settings are configured to use the custom domain: monitor.cityofzion.io

New updates to the published website are done by CI (GitHub actions).

Common questions

The following is a list of common problems that developers may have while developing an application on the Neo network.

Is an endpoint up or down?

Developers will not be able to communicate with the Neo Network if an endpoint is down. They can use NeoMon to decide which is the best endpoint to use based on whether the endpoint is up and its current block height.

Is the endpoint fully synced?

If transactions are being sent to a Node with the intention of them being relayed to the network, the confirmations will not be seen until the Node is fully synced. There is also a risk that the transactions will be rejected by other Nodes as the transactions being sent may be based on outdated information.

Feature Requests

Do you see any features missing or have any ideas for improvements, you can add feature requests and bugs under Issues.

neo-mon's People

Contributors

apisit avatar aprasolova avatar belane avatar canesin avatar cishardin avatar corollari avatar crypt0munki avatar daghdha avatar dependabot[bot] avatar ejhfast avatar erikzhang avatar fabwa avatar ffox77 avatar gubanotorious avatar gulfofalaska avatar i25959341 avatar interlock avatar jhepkema avatar lllwvlvwlll avatar localhuman avatar metachris avatar panther142 avatar peterlinx avatar rustylogic avatar saltyskip avatar ssmithx avatar superboyiii avatar thomaslobker avatar tungdt-gem avatar valdor27 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

neo-mon's Issues

Fix websockets RTT calculation

Currently the RTT calculation for the websockets protocol calculates the time spent in establishing a connection, which includes the initial hadshake and possible protocol upgrades. This results in a number for RTT which is not comparable with the numbers provided for the HTTP connections.

Adding Feature Requests - milestone page is not editable

I wanted to add a feature request, using the link on the mainpage:
https://github.com/CityOfZion/neo-mon/

Project: Milestone 1 -> https://github.com/CityOfZion/neo-mon/projects/1

But the milestone page is not editable. Please update instructions on how to add feature requests.

The feature I wanted to ask for is to add the code version to the monitor. (2.0.1.0 for example, the results of running the version command on the console, or sending a version command to port 10333)

Best Node API Endpoint

Create API endpoint that exposes an algorithm that generates an "optimum node list" based on an array of factors. This can help to lighten wallets by reducing code duplication through standardization.

Suggestions:

  • Minimum version criteria for a required operation: the node must meet this criteria and will only be returned if it does.
  • Fastest, closest, tallest
  • Dynamic API criteria selection?

Making the web-interface responsive

It would be great if the monitor becomes repsonsive. It requires full screen on a pc now.
Responsive makes it mobile friendly and it does not require a full pc screen.

[idea] Add best RPC node endpoint

There's a good bunch of projects that use or used the neon-wallet-db, however it's being phased out and users are suggested to use the neoscan API instead. One of endpoint provided by neon-wallet-db was the /best_node/ call, which in short gives you the address of the best responsive node to make RPC calls to. Light wallets for example need this call unless they host a node themselves. neoscan provides a get_all_nodes call but that only gives the P2P addresses + port, not the RPC ones.

The neo-mon projects seems to have all the required information (and more) and would be a great candidate for a simple endpoint to provide either the most responsive node or the same data shown on http://monitor.cityofzion.io/ but in JSON format. The service is there already, it would be great if we wouldn't force users to start web scraping the data.

Would love to hear your thoughts :)

Expose an API endpoint that provides a JSON blob

I'm working on some ideas that need a source of nodes alternative to neoscan get_all_nodes.
I understand I could cache a list, but I was wondering what robust solutions are available, if any.

I.e., I was hoping monitor.cityofzion.io exposed a list with the most recent ping times, version, etc. I suppose I can regenerate those pings and all easily enough, but why congest?

Thoughts?

Column Sort

Would really like sorting within columns - country, endpoint, type, latency, version, is it up, block height, and peers, both decreasing and increasing. So for example, I could group by country code, or endpoint name. Can this be done? @ffox77

Add monitoring for notifications service

Notifications service has an endpoint which returns blockheight.
Monitoring this versus the other nodes is important right now when notification service is used to power other services like neoscan.

http://notifications1.neeeo.org/v1/notifications/block/1
http://notifications2.neeeo.org/v1/notifications/block/1
http://notifications3.neeeo.org/v1/notifications/block/1
http://notifications4.neeeo.org/v1/notifications/block/1

Add these in, will need creating a new type (not REST or RPC) unless REST can be bespoke.

Add Filtering in Column

Any way we can add filtering on the monitor by column? Would be nice to only watch coz nodes (for example) (Tyler)

Interface improvement suggestions

Awesome work on the latest feature updates!

I have few suggestions that are close related, hence placing them in the same ticket:

  1. Have prefix of 'ms' somewhere for latency. For the sake of clarity.
  2. Rename 'offline' to 'unreachable', to avoid confusion that the node may be down (which is not proven to be the case)
  3. When a node is detected to be 'unreachable', Have a 'last since' timestamp to indicates when this node was last detected per this web app instance.
  4. With block height, please have a '-K', in red, indicates how many block it is behind from the highest chain. eg/ #1,974,453 (-5).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.