# Monitoring Blocks Heimdall and Bor

#### Server

1 - Prerequisites

Curl

```
sudo apt install curl
```

NVM

```
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.profile
```

Nodejs

```
nvm install node
```

PM2

```
npm install -g pm2
```

Git

```
sudo apt install git
```

2 - Download code

```
git clone git@github.com:Michel-Leidson/blocks-monitoring.git
```

3 - Enter in project directory

```
cd blocks-monitoring
```

4 - Install dependencies of project

```
npm install
```

5 - Running as a service in PM2

```
pm2 start server.js --name <choice-a-name-of-your-service>
pm2 save
pm2 startup
```

6 - Configure job in prometheus config

a - Add job in prometheus config file.

```
 - job_name: 'monitor_polygon_blocks'
    static_configs:
      - targets: ['localhost:9992']
```

b - Restart prometheus service

```
sudo systemctl restart prometheus
```

7 - Configuring reverse proxy nginx

a - Open your nginx configuration file

```
nano /etc/nginx/sites-enabled/default
```

b - Paste the content in the file

```
       location /blockshb/ {
                gzip_types *;
                proxy_pass         http://127.0.0.1:9992/;
                proxy_set_header   Host              $host;
                proxy_set_header   X-Real-IP         $remote_addr;
                proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Host   $host:443;
                proxy_set_header   X-Forwarded-Server $host;
                proxy_set_header   X-Forwarded-Port 443;
                proxy_set_header   X-Forwarded-Proto $scheme;
        }
```

c - Save the file

d - Restart Nginx service

```
sudo systemctl restart nginx
```

#### Client

1 - Prerequisites

Curl

```
sudo apt install curl
```

NVM

```
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.profile
```

Nodejs

```
nvm install node
```

PM2

```
npm install -g pm2
```

Git

```
sudo apt install git
```

2 - Download the code

```
git clone git@github.com:Michel-Leidson/blocks-monitoring-polygon-client.git
```

3 - Enter the project directory

```
cd blocks-monitoring-polygon-client
```

4 - Install dependencies of project, and install dotenv with dev dependency flag

```
npm install
npm install dotenv --save-dev
```

5 - Configure .env file based on .env.example

a - Copy .env.example to .env file

```
cp .env.example .env

nano .env
```

b - Set your variabales

```
MATIC_VALIDATOR_ID=<node_name>
BACKEND_API=https://your-domain.com/blockshb
```

6 - Running as a service in PM2

```
pm2 start index.js --name <choice-a-name-of-your-service>
pm2 save
pm2 startup
```

### Create Heimdall and Bor Grafana Dashboard

1 - In "Dashboards" menu click in "Browse"

<figure><img src="/files/00ae8nRLtxi5ctpMDxi6" alt=""><figcaption></figcaption></figure>

2 - Click in "New Dashboard" button

<figure><img src="/files/RZSlF4JYrLyQ5ZT3r7yJ" alt=""><figcaption></figcaption></figure>

3 - Click in "Add new panel" button

<figure><img src="/files/MyPUIP8T4s7BkPnVeGd8" alt=""><figcaption></figcaption></figure>

4 - Define missed\_blocks\_type="heimdall" and define missed\_blocks\_matic\_id in query

<figure><img src="/files/G7HIQhzyM3cmM6vocNzy" alt=""><figcaption></figcaption></figure>

5 - Define title and description of panel and click in save button

<figure><img src="/files/91cm0rpy2eY0f4s3pna9" alt=""><figcaption></figcaption></figure>

6 - Define name of Dashboard select folder and click in "Save" button

<figure><img src="/files/pEFpBj2gr7Coh8SHFnd6" alt=""><figcaption></figcaption></figure>

7 - Duplicate heimdall panel and click in "Edit" button

<figure><img src="/files/wpxN6CKE3UfA5jDvq6JO" alt=""><figcaption></figcaption></figure>

8 - Define missed\_blocks\_type="bor" and define missed\_blocks\_matic\_id in query

<figure><img src="/files/nLKkKRT3NHJciEXMJx1I" alt=""><figcaption></figcaption></figure>

9 - Define title and description of panel and click in save button

<figure><img src="/files/4qno2gjyJeLN2FJ74guz" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.stakepool.dev.br/polygon/binaries/monitoring-blocks-heimdall-and-bor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
