If you wish to monitor your JuneoGo node, it is possible to do so by using the juneogo-monitoring repository. This repository implements Prometheus and Graphana to monitor, store, and display key JuneoGo node metrics.
It assume also that you have a JuneoGo node running with the required endpoints for Prometheus and JuneoGo metrics.
These installation instructions assume that you already have Docker and docker-compose installed on your system. For more information, please refer to their documentation: https://docs.docker.com/get-docker/
First, open the command line on the machine running your node and execute the following command:
git clone https://github.com/Juneo-io/juneogo-monitoring
If you use secure metrics endpoints, you need to configure Prometheus to use the correct credentials.
- Create a
.env
file in the root directory of the project with the following variables:PROMETHEUS_USERNAME=<your_prometheus_username> PROMETHEUS_PASSWORD=<your_prometheus_password>
PROMETHEUS_USERNAME
: The username to access the Prometheus metrics endpoint.PROMETHEUS_PASSWORD
: The password to access the Prometheus metrics endpoint.
Each server need to have the same credentials. If you have different credentials for each server, you need to modify the prometheus.yml
file.
To ensure proper monitoring and DNS configuration, you must configure the servers.json
files. Check the servers.example.json
file for an example.
Each server entry should include:
name
: A name to identify the server.target
: The target address to fetch metrics from.ip
: The IP address for DNS configuration.
Example:
{
"servers": [
{
"name": "server1",
"target": "server1.mydomain.com",
"ip": "10.10.10.1"
},
{
"name": "server2",
"target": "server2.mydomain.com",
"ip": "10.10.10.2"
}
]
}
The target need to expose 2 endpoints:
/metrics
for Prometheus metrics./ext/metrics
for juneogo metrics.
Follow the juneogo-docker repository to deploy your JuneoGo node with the required endpoints.
To be able to access to Grafana with HTTPS, you need to configure Caddy with your domain name.
-
Add The domain name to your DNS configuration with the IP address of the machine running the monitoring.
-
Create a
.env
file in the root directory of the project with the following variables:CADDY_DOMAIN=<your_domain> CADDY_EMAIL=<your_email> GF_SERVER_ROOT_URL=<your_domain>
To automatically manage DNS records for your servers using Cloudflare, follow these steps:
-
Create a
.env
file in the root directory of the project with the following variables:CLOUDFLARE_READ_TOKEN=<your_cloudflare_read_token> CLOUDFLARE_WRITE_TOKEN=<your_cloudflare_write_token>
-
Ensure your both token have access to all target DNS zones present in your
servers.json
file. -
Ensure your
servers.json
file is correctly populated with your server details (in Socotra and/or Mainnet).
If you do not provide Cloudflare tokens, DNS will not be managed automatically.
To receive notifications via Telegram, follow these steps:
-
Create a Telegram bot and get the bot token. Refer to the Telegram documentation for instructions.
-
Create a Telegram group and add the bot to the group.
-
Invite the
@getmyid_bot
to the group and get the chat id. -
Create a
.env
file in the root directory of the project with the following variables:BOT_TOKEN=<your_telegram_bot_token> CHAT_ID_SOCOTRA=<your_telegram_chat_id> CHAT_ID_MAINNET=<your_telegram_chat_id>
You can use the same chat id for both Socotra and Mainnet, or use different chat ids for each. Different chat ids can be useful if you want to receive notifications for Socotra on one group and Mainnet on another.
If you do not provide Telegram tokens, notifications will not be sent.
docker-compose up -d
If you want to have grafana accessible with port 3000, you need to uncomment the grafana port configuration in the docker-compose.yml file.
Grafana should be accessible with user: admin
and password: admin