Run azimuth contract watcher in active mode (#661)

* Update stack to run azimuth job runner

* Run azimuth watcher in active mode

* Update stack to run job-runners for all watchers

* Update ports in job-runner health checks

* Map metrics ports to host

* Configure historical block processing batch size for Azimuth watcher

* Use deployment command for azimuth stack

---------

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
This commit is contained in:
2023-11-23 15:00:18 +05:30
committed by GitHub
co-authored by neeraj prathamesh
parent 1a37255c18
commit 3fefc67e77
7 changed files with 367 additions and 55 deletions
@@ -9,19 +9,11 @@ Prerequisite: `ipld-eth-server` RPC and GQL endpoints
Clone required repositories:
```bash
laconic-so --stack azimuth setup-repositories
laconic-so --stack azimuth setup-repositories --pull
```
NOTE: If the repository already exists and checked out to a different version, `setup-repositories` command will throw an error.
For getting around this, the `azimuth-watcher-ts` repository can be removed and then run the command.
Checkout to the required versions and branches in repos
```bash
# azimuth-watcher-ts
cd ~/cerc/azimuth-watcher-ts
git checkout v0.1.0
```
For getting around this, the `azimuth-watcher-ts` repository can be removed and then run the command again.
Build the container images:
@@ -31,42 +23,85 @@ laconic-so --stack azimuth build-containers
This should create the required docker images in the local image registry.
### Configuration
## Create a deployment
* Create and update an env file to be used in the next step:
First, create a spec file for the deployment, which will map the stack's ports and volumes to the host:
```bash
laconic-so --stack azimuth deploy init --output azimuth-spec.yml
```
### Ports
Edit `network` in spec file to map container ports to same ports in host
```yaml
...
network:
ports:
watcher-db:
- 0.0.0.0:15432:5432
azimuth-watcher-server:
- 0.0.0.0:3001:3001
censures-watcher-server:
- 0.0.0.0:3002:3002
claims-watcher-server:
- 0.0.0.0:3003:3003
conditional-star-release-watcher-server:
- 0.0.0.0:3004:3004
delegated-sending-watcher-server:
- 0.0.0.0:3005:3005
ecliptic-watcher-server:
- 0.0.0.0:3006:3006
linear-star-release-watcher-server:
- 0.0.0.0:3007:3007
polls-watcher-server:
- 0.0.0.0:3008:3008
gateway-server:
- 0.0.0.0:4000:4000
...
```
### Data volumes
Container data volumes are bind-mounted to specified paths in the host filesystem.
The default setup (generated by `laconic-so deploy init`) places the volumes in the `./data` subdirectory of the deployment directory. The default mappings can be customized by editing the "spec" file generated by `laconic-so deploy init`.
---
Once you've made any needed changes to the spec file, create a deployment from it:
```bash
laconic-so --stack azimuth deploy create --spec-file azimuth-spec.yml --deployment-dir azimuth-deployment
```
## Set env variables
Inside the deployment directory, open the file `config.env` and add variable to update RPC endpoint :
```bash
# External ipld-eth-server endpoints
# External RPC endpoints
CERC_IPLD_ETH_RPC=
CERC_IPLD_ETH_GQL=
```
* NOTE: If `ipld-eth-server` is running on the host machine, use `host.docker.internal` as the hostname to access host ports
* NOTE: If RPC endpoint is on the host machine, use `host.docker.internal` as the hostname to access the host port, or use the `ip a` command to find the IP address of the `docker0` interface (this will usually be something like `172.17.0.1` or `172.18.0.1`)
### Deploy the stack
## Start the stack
* Deploy the containers:
```bash
laconic-so --stack azimuth deploy-system --env-file <PATH_TO_ENV_FILE> up
```
Start the deployment:
```bash
laconic-so deployment --dir azimuth-deployment start
```
* List and check the health status of all the containers using `docker ps` and wait for them to be `healthy`
## Clean up
Stop all the services running in background:
To stop all azimuth services running in the background, while preserving chain data:
```bash
laconic-so --stack azimuth deploy-system down
laconic-so deployment --dir azimuth-deployment stop
```
Clear volumes created by this stack:
To stop all azimuth services and also delete data:
```bash
# List all relevant volumes
docker volume ls -q --filter "name=.*watcher_db_data"
# Remove all the listed volumes
docker volume rm $(docker volume ls -q --filter "name=.*watcher_db_data")
laconic-so deployment --dir azimuth-deployment stop --delete-volumes
```
@@ -1,7 +1,7 @@
version: "1.0"
name: azimuth
repos:
- github.com/cerc-io/azimuth-watcher-ts@v0.1.1
- github.com/cerc-io/azimuth-watcher-ts
containers:
- cerc/watcher-azimuth
pods: