thepalbi / ethereum-prometheus-exporter Goto Github PK
View Code? Open in Web Editor NEWThis project forked from 31z4/ethereum-prometheus-exporter
Prometheus exporter for Ethereum client metrics
License: MIT License
This project forked from 31z4/ethereum-prometheus-exporter
Prometheus exporter for Ethereum client metrics
License: MIT License
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.
We should make the whole integrations (exporter + dashboards) easy to configure for a newcomer user.
docker-compose
easy to configure and start.Improve dashboards adding:
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
The CI system should:
docker-compose
and call /metrics
just to testTasks
See https://docs.dune.xyz/data-tables/data-tables for details on how Dune does it. I think something similar can be achieved with Loki + Grafana.
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?
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
Tasks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.