Docker infrastructure (monitoring)
This folder contains a small monitoring stack used by OsmoWeb:
Prometheus (+ Pushgateway + Alertmanager)
InfluxDB 2.x
Grafana (with provisioning for datasources and dashboards)
The stack is started via simple scripts that run docker compose in each subfolder.
Quick start
From the repository root:
cd docker
./start_stats.sh
Stop everything:
cd docker
./stop_stats.sh
What is started
Prometheus / Pushgateway / Alertmanager
Location: docker/prometheus/
Started by: docker compose -f docker-compose.yml up -d
Services and ports:
Prometheus:
http://localhost:9090Pushgateway:
http://localhost:9091Alertmanager:
http://localhost:9093
Prometheus config:
docker/prometheus/prometheus.ymlscrape_interval: 1sandevaluation_interval: 1sscrapes Pushgateway multiple times under different
job_names (osmo-*).
Alerting:
docker/prometheus/alertmanager.yml(email receiver template; placeholders must be replaced for real use)Alert rules are split by network element:
docker/prometheus/alerts-bsc.ymldocker/prometheus/alerts-hlr.ymldocker/prometheus/alerts-mgw.ymldocker/prometheus/alerts-msc.ymldocker/prometheus/alerts-stp.yml
Persistence:
prometheus-data,pushgateway-data,alertmanager-dataDocker volumes.
InfluxDB
Location: docker/influxdb/
Service and port:
InfluxDB:
http://localhost:8086
Initialization:
On first start, InfluxDB is initialized via environment variables in
docker/influxdb/docker-compose.yml.You almost certainly want to change these defaults before sharing the setup:
DOCKER_INFLUXDB_INIT_USERNAMEDOCKER_INFLUXDB_INIT_PASSWORDDOCKER_INFLUXDB_INIT_ORGDOCKER_INFLUXDB_INIT_BUCKETDOCKER_INFLUXDB_INIT_ADMIN_TOKEN
Persistence:
influxdb-dataDocker volume.
Grafana
Location: docker/grafana/
Service:
Grafana:
http://localhost:3000
Important note about networking:
Grafana is started with
network_mode: host.In this mode, datasource URLs must point to
localhost(not Docker container names), because Docker DNS is not available.
Provisioning:
Datasources:
docker/grafana/provisioning/datasources/datasource.ymlPrometheus:
http://localhost:9090InfluxDB:
http://localhost:8086(plus org/bucket/token placeholders)
Dashboards provider:
docker/grafana/provisioning/dashboards/dashboards.ymlDashboards JSON:
docker/grafana/provisioning/dashboards/osmo-*.json
Credentials:
Default login is
admin/admin(seedocker/grafana/docker-compose.yml).
Persistence:
grafana-dataDocker volume.
Notes / common tweaks
For production-like setups:
You can increase
scrape_interval/evaluation_interval(1s is very aggressive).Replace Alertmanager email placeholders with real SMTP settings.
Replace InfluxDB init credentials/token.
If you want Grafana in a non-host network mode:
remove
network_mode: hostpublish ports (
3000:3000)attach Grafana to the same Docker network as Prometheus/InfluxDB and update datasource URLs accordingly.