Skip to content

A utility that listens to pubsub traces produced by Lotus and records them in a Postgresql database.

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

probe-lab/tracecatcher

Repository files navigation

tracecatcher

TraceCatcher is a utility that listens to pubsub traces produced by Lotus and records them in a Postgresql database.

Overview

TraceCatcher can be run alongside a Lotus node to capture pubsub traces. It emulates the ElasticSearch API expected by Lotus and writes each trace to a Postgresql database. Each event type is recorded in a separate table.

The following trace events are supported:

Event type Database tables
publish_message publish_message_event
reject_message reject_message_event
duplicate_message duplicate_message_event
deliver_message deliver_message_event
add_peer add_peer_event
remove_peer remove_peer_event
join join_event
leave leave_event
graft graft_event
prune prune_event
peer_score peer_score_event, peer_score_topic

The following event types are not yet supported:

  • recv_rpv
  • send_rpc
  • drop_rpc

Getting Started

As of Go 1.19, install the latest tracecatcher executable using:

go install github.com/probe-lab/tracecatcher@latest

This will download and build an ipfsfiled binary in $GOBIN

Run the daemon by executing $GOBIN/tracecatcher and use command line options to configure its operation:

  • --addr - the address to listen for traces on (default: ":5151")
  • --db-host - hostname/address of the database server in which to write traces
  • --db-port - port number of the database server (default: 5432)
  • --db-name - name of the database to use
  • --db-password - password to use when connecting the the database
  • --db-user- user to use when connecting the the database
  • --db-sslmode - sslmode to use when connecting the the database (default: "prefer")
  • --batch-size - set the size of query batches to use when inserting into the database (default: 100)

Run $GOBIN/tracecatcher --help to see the full list of options. Each option may also be set using environment variables. These are shown in the help.

Setting up Postgresql

Ensure that TraceCatcher is supplied with a user that has permissions to create tables and indexes. When TraceCatcher runs it creates the necessary tables for each event type.

Configuring Lotus

Lotus has two configuration settings that control the destination of pubsub traces. Set ElasticSearchTracer to the address of TraceCatcher. ElasticSearchIndex must be set to traces.

[Pubsub]
ElasticSearchTracer = "http://localhost:5151/"
ElasticSearchIndex = "traces"

These settings can also be specified using environment variables:

LOTUS_PUBSUB_ELASTICSEARCHTRACER=http://localhost:5151/
LOTUS_PUBSUB_ELASTICSEARCHINDEX=traces

License

This software is dual-licensed under Apache 2.0 and MIT terms:

About

A utility that listens to pubsub traces produced by Lotus and records them in a Postgresql database.

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published