An All-in-One Web3 Observability tooling that collects metrics and logs from blockchain nodes and related infrastructure.
Telescope can be configured either through command line flags or a YAML configuration file.
Basic usage with metrics enabled and auto-discovery:
telescope \
--network=ethereum \
--project-id=my-project \
--project-name=my-project \
--telescope-username=user \
--telescope-password=pass \
--remote-write-url=https://prometheus.example.com/api/v1/write
Enable both metrics and logs with auto-discovery:
telescope \
--network=ethereum \
--project-id=my-project \
--project-name=my-project \
--telescope-username=user \
--telescope-password=pass \
--remote-write-url=https://prometheus.example.com/api/v1/write \
--enable-logs=true \
--logs-sink-url=https://loki.example.com/loki/api/v1/push \
--telescope-loki-username=user \
--telescope-loki-password=pass
For Docker environments with container log collection:
telescope \
--network=ethereum \
--project-id=my-project \
--project-name=my-project \
--telescope-username=user \
--telescope-password=pass \
--remote-write-url=https://prometheus.example.com/api/v1/write \
--enable-logs=true \
--enable-docker-logs=true \
--logs-sink-url=https://loki.example.com/loki/api/v1/push \
--telescope-loki-username=user \
--telescope-loki-password=pass
Telescope features intelligent auto-discovery and configuration generation that automatically creates comprehensive monitoring configurations based on your network and requirements. Instead of manually writing complex YAML configurations, you can use command-line flags and Telescope will generate the complete configuration automatically.
--network flag, Telescope automatically discovers and configures appropriate scrape targets for your blockchain networkWhen you run Telescope with command-line flags, it automatically generates a telescope_config.yaml file containing:
Example of auto-generated configuration for Polkadot:
telescope --network=polkadot --project-id=test --project-name=test \
--telescope-username=user --telescope-password=pass \
--remote-write-url=https://example.com/write \
--enable-features integrations-next
This generates a complete configuration with:
| Network | Targets Discovered | Default Ports |
|---|---|---|
ethereum |
Execution + Consensus nodes | 6060, 8008 |
polkadot |
Relay chain + Parachains | 30333, 9933 |
hyperbridge |
Hyperbridge node | 8080 |
ssv |
Execution + Consensus + MEV-Boost + SSV-DKG + SSV node | 6060, 8008, 18550, 3030, 13000 |
Telescope supports comprehensive log collection with automatic configuration generation. You can enable basic log collection or advanced Docker container log scraping.
Enable basic log collection to send application logs to Loki:
telescope \
--enable-logs=true \
--logs-sink-url=https://loki.example.com/loki/api/v1/push \
--telescope-loki-username=user \
--telescope-loki-password=pass \
--network=ethereum \
--project-id=my-project \
--project-name=my-project
For containerized environments, enable Docker log scraping to automatically collect logs from all Docker containers:
telescope \
--enable-logs=true \
--enable-docker-logs=true \
--logs-sink-url=https://loki.example.com/loki/api/v1/push \
--telescope-loki-username=user \
--telescope-loki-password=pass \
--docker-host=unix:///var/run/docker.sock \
--network=ethereum \
--project-id=my-project \
--project-name=my-project
When Docker logs are enabled, Telescope automatically generates:
The generated configuration includes relabel rules for:
| Flag | Description | Default | Required |
|---|---|---|---|
--enable-logs |
Enable log collection | false |
No |
--logs-sink-url |
Loki endpoint URL | - | Yes¹ |
--telescope-loki-username |
Loki authentication username | - | No |
--telescope-loki-password |
Loki authentication password | - | No |
--enable-docker-logs |
Enable Docker container log scraping | false |
No |
--docker-host |
Docker daemon socket | unix:///var/run/docker.sock |
No |
¹ Required when --enable-logs=true
Telescope includes native Ethereum blockchain metrics collection that replaces the need for running a separate ethereum-metrics-exporter. This integration supports both execution and consensus layer monitoring.
⚠️ Important: Ethereum integration requires the --enable-features integrations-next flag.
Monitor Ethereum execution and consensus nodes:
telescope \
--enable-features integrations-next \
--network=ethereum \
--project-id=my-project \
--project-name=my-project \
--telescope-username=user \
--telescope-password=pass \
--remote-write-url=https://prometheus.example.com/api/v1/write \
--ethereum-execution-url=http://localhost:8545 \
--ethereum-consensus-url=http://localhost:5052
Configure which execution client modules to monitor:
telescope \
--enable-features integrations-next \
--network=ethereum \
--project-id=my-project \
--project-name=my-project \
--telescope-username=user \
--telescope-password=pass \
--remote-write-url=https://prometheus.example.com/api/v1/write \
--ethereum-execution-url=http://localhost:8545 \
--ethereum-execution-modules=sync,eth,net,web3,txpool \
--ethereum-consensus-url=http://localhost:5052
| Flag | Description | Default | Required |
|---|---|---|---|
--ethereum-enabled |
Enable Ethereum metrics collection | false |
No |
--ethereum-execution-url |
Ethereum execution node URL | - | No¹ |
--ethereum-consensus-url |
Ethereum consensus node URL | - | No¹ |
--ethereum-execution-modules |
Execution modules to enable | sync,eth,net,web3,txpool |
No |
¹ At least one of --ethereum-execution-url or --ethereum-consensus-url must be provided when using Ethereum integration.
The Ethereum integration collects metrics with the eth_exe_ prefix for execution layer and eth_con_ prefix for consensus layer, including:
Create a YAML configuration file and run:
telescope --config-file=telescope_config.yaml
Example configuration file:
server:
log_level: info
metrics:
global:
scrape_interval: 15s
external_labels:
project_id: my-project
project_name: my-name
remote_write:
- url: https://metrics.example.com
basic_auth:
username: user
password: pass
wal_directory: /tmp/telescope
configs:
- name: my-name_ethereum_metrics
host_filter: false
scrape_configs:
- job_name: ethereum
static_configs:
- targets: ["localhost:8545"]
logs:
configs:
- name: telescope_logs
clients:
- url: https://logs.example.com
basic_auth:
username: loki-user
password: loki-pass
external_labels:
project_id: my-project
project_name: my-name
positions:
filename: /tmp/telescope_logs
integrations:
agent:
autoscrape:
enable: true
metrics_instance: "my-name_ethereum_metrics"
node_exporter:
autoscrape:
enable: true
metrics_instance: "my-name_ethereum_metrics"
# Optional: Ethereum integration (requires --enable-features integrations-next)
ethereum_configs:
- instance: "ethereum_node_1"
enabled: true
autoscrape:
enable: true
metrics_instance: "my-name_ethereum_metrics"
execution:
enabled: true
url: "http://localhost:8545"
modules: ["sync", "eth", "net", "web3", "txpool"]
consensus:
enabled: true
url: "http://localhost:5052"
event_stream:
enabled: true
topics: ["head", "finalized_checkpoint"]
Telescope supports the following blockchain networks:
Use the --network flag to specify which network configuration to use.
We would love to work with anyone who can contribute their work and improve this project. The details will be shared soon.
Licensed Under Apache 2.0