Deploying a Telemetry-Enabled Mesh Node
Since 0x-Mesh will no longer be maintained we also deprecate our telemetry log ingest, that means our telemetry endpoint will return
200for all requests and not store new logs. We return
200to make sure your local fluentbit will not continously retry sending logs our way.
You can disable telemetry by removing the logging configuration from your
docker-compose.ymland spinning down the
0x Mesh is completely permissionless and the beta is open to anyone who wants to participate. You can optionally help improve 0x Mesh by enabling telemetry. Mesh automatically logs a lot of useful information including the number of orders processed and details about any errors and warnings that might occur. Sending this information to us is extraordinarily helpful, but completely optional. If you don't want to enable telemetry, you can follow the Deployment Guide instead.
Let's start by creating a new directory and adding a docker-compose.yml file with the following contents:
# Set your backing Ethereum JSON RPC endpoint below
# Configure maximum amount of logs stored
command: /fluent-bit/bin/fluent-bit -c /fluent-bit/etc/fluent-bit.conf
In most cases, the only change you need to make to the docker-compose.yml file is to set
ETHEREUM_RPC_URLto your own Ethereum JSON RPC endpoint. The
GRAPHQL_SERVER_ADDRabove will allow any Docker containers running in the same Docker Compose file to access the Mesh GraphQL API via links. To use this feature, be sure to add the following line to any containers you wish to access the Mesh GraphQL API from:
You can then use the URL
ws://mesh:60557/graphqlto access the GraphQL API.
Alternatively, if you want to open up your Mesh GraphQL API to the public internet, you can set
GRAPHQL_SERVER_ADDR=0.0.0.0:60557If you choose to go this route, we strongly recommend using a firewall or VPC to restrict who can access your GraphQL API.
We are now ready to deploy our instance. Before we can continue, you will need to set up an account with the cloud hosting provider of your choice, and retrieve your access token/key/secret. We will use them to create a new machine with name
mesh-node. Docker has great documentation on doing all of that for DigitalOcean and AWS. Instead of naming the machine
docker-sandboxas in those examples, let's name ours
mesh-nodeas shown below.
docker-machine create --driver digitalocean --digitalocean-access-token xxxxx mesh-node
Make sure you replaced
xxxxxwith your access token. This command will spin up a new instance on your cloud provider, pre-installed with Docker so that it's ready-to-use with the
docker-machinecommand. Once the command completes, let's make sure the machine exists:
You should see something like:
mesh-node - digitalocean Running tcp://188.8.131.522:2376 v18.09.7
Now comes the Docker Machine magic. By running the following commands, we can ask Docker Machine to let us execute any Docker command in our local shell AS IF we were executing them directly on the
eval $(docker-machine env mesh-node)
Presto! We are now ready to spin up our telemetry-enabled Mesh node! We do this using the Docker Compose command
docker-compose up -d
docker logs <fluent-bit-container-id> -f
Instead of reading them from the
If you need to see the IP address of your Mesh node, use:
docker-machine ip mesh-node
Finally, in order to prevent our log aggregation stack from getting overloaded, we whitelist the peers that are allowed to send us logs. Look for a field in the logs called