go-etl Monitoring with Prometheus Deployment
1. Deploy Prometheus Environment
1.1 Start Prometheus Environment
Start using Docker:
cd docker
docker compose up -d
Check go-etl-related containers:
docker exec -it etl bash
1.2 Access PostgreSQL
Connect using clients like DBeaver.
Connect to postgres_source:
127.0.0.1:5432
db1
user1
password1
Connect to postgres_dest:
127.0.0.1:5433
db2
user2
password2
1.3 Access Prometheus
Open in browser: http://127.0.0.1:9090.
1.4 Access Grafana
Open in browser: http://127.0.0.1:3000.
2. Generate Test Data
2.1 Create Tables in PostgreSQL
- Connect to
postgres_source. If source.split table doesn't exist, execute:
CREATE SCHEMA source;
CREATE TABLE source.split (
id bigint,
dt date,
str varchar(10)
);
- Connect to
postgres_dest. If dest.split table doesn't exist, execute:
CREATE SCHEMA dest;
CREATE TABLE dest.split (
id bigint,
dt date,
str varchar(10)
);
2.2 Prepare Data Files
Place data files and import_config.json in ETL's mounted volume:
cd docker/data
go run main.go
3. Process Test Data
3.1 Run ETL Jobs
- Import data to source PostgreSQL:
docker exec -it etl release/bin/go-etl -http :6080 -c data/import_config.json
- Sync data to destination PostgreSQL:
docker exec -it etl release/bin/go-etl -http :6080 -c data/config.json
3.2 Monitor in Prometheus
- Check job status:
up{job="etl"}
- Get total sync records:
datax_channel_total_record
- Get records per second:
rate(datax_channel_total_record{job="etl"}[1m])
- Get total data volume:
datax_channel_total_byte
- Get data volume per second:
rate(datax_channel_total_byte{job="etl"}[30s])
3.3.1 Login Grafana
Open browser: http://127.0.0.1:3000 (default credentials: admin/admin).
- Click ⚙️ Configuration (gear icon) → Data Sources.
- Click Add data source → Search for Prometheus.
- Configure:
- HTTP → URL:
http://etl:9090 (replace with your IP)
- Click Save & Test.
3.3.3 Import Dashboard
- Click Dashboards → New → Import.
- Upload
go-etl-grafana.json.
- Select Prometheus as data source.
This completes the monitoring setup for go-etl with Prometheus and Grafana.