Git Product home page Git Product logo

ethereum-prometheus-exporter's People

Contributors

31z4 avatar evictorero avatar leandro-deveikis avatar legogris avatar santihernandezc avatar thepalbi avatar

Stargazers

 avatar

Watchers

 avatar

ethereum-prometheus-exporter's Issues

Make symbol-retrieving feature optional

The interface that contracts need to attain to implement either tokens (ERC-20), or NFTs (ERC-721) doesn't define methods to ask about name or symbol. They come in extensions to these interfaces.
Since they are not explicitly required, we should make the collectors to a best-effort. If the symbol is found, great!, we'll send it as a label. If not, the collector initialization should not fail.

Make exporter easy to configure for user

We should make the whole integrations (exporter + dashboards) easy to configure for a newcomer user.

  • Create a mixin with dashboards, so it's easily installable. #15
  • Make docker-compose easy to configure and start. Our setup is good enoguh
  • Improve README.md, with a mini tutorial on Infura Alchemy, and an opinionated config

Add config file, and aliases for tracked contracts

Add an alias to contract address I want to listen. For example, when adding 0x128310273012ueaoidu, add a string alias like pepito, that will be shipped as a const label.

As per consensus, in this task a config file will also be added, to use instead of the CLI arguments. Much cleaner!

Pending

  • Add a config file instead of CLI arguments #13
  • Add aliases for ERC20 tracked contracts

Add a simple CI

The CI system should:

  • Build the exporter, and run tests
  • Build in docker, just to test
  • Run a mixin linter
  • Maybe start a docker-compose and call /metrics just to test

Tasks

  • Add CI PR pipeline
  • Add prod deploy pipeline
  • Test

Review failing metrics

Whenever running the exporter, in whichever network, some metrics keep failing.

exporter_1  | * error collecting metric Desc{fqName: "net_peers", help: "number of peers currently connected to the client", constLabels: {}, variableLabels: []}: 400 Bad Request: {"jsonrpc": "2.0", "id": 4, "error": {"code": -32601, "message": "Unsupported method [net_peerCount]. See available methods at https://docs.alchemy.com/alchemy/documentation/apis"}}
exporter_1  | * error collecting metric Desc{fqName: "eth_block_timestamp", help: "timestamp of the most recent block", constLabels: {}, variableLabels: []}: 400 Bad Request: {"jsonrpc": "2.0", "id": 10, "error": {"code": -32602, "message": "Invalid method parameter(s)."}}
exporter_1  | * error collecting metric Desc{fqName: "parity_net_active_peers", help: "number of active peers", constLabels: {}, variableLabels: []}: 400 Bad Request: {"jsonrpc": "2.0", "id": 3, "error": {"code": -32601, "message": "Unsupported method [parity_netPeers]. See available methods at https://docs.alchemy.com/alchemy/documentation/apis"}}
exporter_1  | * error collecting metric Desc{fqName: "parity_net_connected_peers", help: "number of peers currently connected to this client", constLabels: {}, variableLabels: []}: 400 Bad Request: {"jsonrpc": "2.0", "id": 3, "error": {"code": -32601, "message": "Unsupported method [parity_netPeers]. See available methods at https://docs.alchemy.com/alchemy/documentation/apis"}}
exporter_1  | * error collecting metric Desc{fqName: "eth_hashrate", help: "hashes per second that this node is mining with", constLabels: {}, variableLabels: []}: 400 Bad Request: {"jsonrpc": "2.0", "id": 2, "error": {"code": -32601, "message": "Unsupported method [eth_hashrate]. See available methods at https://docs.alchemy.com/alchemy/documentation/apis"}}
exporter_1  | * error collecting metric Desc{fqName: "eth_latest_block_transactions", help: "number of transactions in the latest block", constLabels: {}, variableLabels: []}: invalid argument 0: hex string without 0x prefix
exporter_1  | * collected metric "erc20_transfer_event" { label:<name:"contract" value:"0x3845badAde8e6dFF049820680d1F14bD3903a5d0" > label:<name:"symbol" value:"SAND" > histogram:<sample_count:2 sample_sum:26.25 > } was collected before with the same name and label values
exporter_1  | * error collecting metric Desc{fqName: "eth_sync_starting", help: "block number at which current import started", constLabels: {}, variableLabels: []}: not syncing
exporter_1  | * error collecting metric Desc{fqName: "eth_sync_current", help: "number of most recent block", constLabels: {}, variableLabels: []}: not syncing
exporter_1  | * error collecting metric Desc{fqName: "eth_sync_highest", help: "estimated number of highest block", constLabels: {}, variableLabels: []}: not syncing

Maybe because this was originally designed for OpenEthereum?

Feature planning

List of features we'd like to add to the shipped dashboard alongside with the Exporter.

Dashboard: Pending features

Exporter: Pending features

** Done**

Not select for dev yet

Future work Will not work on this during the hackathon

  • Add CRUD to configure exporter on the fly.
  • Add simple frontend to call CRUD.
  • #33

Add support for ERC-721 contracts.

Tasks

  • Add support for multiple contract definitions #29
    • Refactor contracts to support multiple ones
    • Improve contract generation toolchain
  • Implement ERC721 events collectors

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.