Monitoring

scrape_configs:
  - job_name: 'megarepo'
    scrape_interval: 15s
    metrics_path: /actuator/prometheus
    basic_auth:
      username: admin
      password: <your-admin-password>
    static_configs:
      - targets: ['megarepo-host:8080']

MetricType
megarepo_repositories_countGauge
megarepo_components_countGauge
megarepo_storage_bytes_totalGauge
megarepo_artifacts_downloads_totalCounter
megarepo_artifacts_uploads_totalCounter
megarepo_proxy_cache_hits_totalCounter
megarepo_proxy_cache_misses_totalCounter

Metric
jvm_memory_used_bytes
hikaricp_connections_active
http_server_requests_seconds_*
process_cpu_usage

{
  "panels": [
    { "title": "Repositories", "type": "stat", "targets": [{ "expr": "megarepo_repositories_count" }] },
    { "title": "Components", "type": "stat", "targets": [{ "expr": "megarepo_components_count" }] },
    { "title": "Storage Used", "type": "stat", "targets": [{ "expr": "megarepo_storage_bytes_total" }],
      "fieldConfig": { "defaults": { "unit": "bytes" } } },
    { "title": "Downloads / min", "type": "timeseries",
      "targets": [{ "expr": "rate(megarepo_artifacts_downloads_total[5m]) * 60" }] },
    { "title": "Cache Hit Ratio", "type": "timeseries",
      "targets": [{ "expr": "rate(megarepo_proxy_cache_hits_total[5m]) / (rate(megarepo_proxy_cache_hits_total[5m]) + rate(megarepo_proxy_cache_misses_total[5m]))" }],
      "fieldConfig": { "defaults": { "unit": "percentunit", "min": 0, "max": 1 } } },
    { "title": "HTTP p95 Latency", "type": "timeseries",
      "targets": [{ "expr": "histogram_quantile(0.95, sum(rate(http_server_requests_seconds_bucket[5m])) by (le))" }],
      "fieldConfig": { "defaults": { "unit": "s" } } },
    { "title": "JVM Memory", "type": "timeseries",
      "targets": [
        { "expr": "jvm_memory_used_bytes{area=\"heap\"}", "legendFormat": "Used" },
        { "expr": "jvm_memory_max_bytes{area=\"heap\"}", "legendFormat": "Max" }
      ], "fieldConfig": { "defaults": { "unit": "bytes" } } },
    { "title": "DB Connections", "type": "timeseries",
      "targets": [
        { "expr": "hikaricp_connections_active{pool=\"MegaRepoPool\"}", "legendFormat": "Active" },
        { "expr": "hikaricp_connections_idle{pool=\"MegaRepoPool\"}", "legendFormat": "Idle" }
      ] }
  ],
  "schemaVersion": 39,
  "tags": ["megarepo"],
  "title": "MegaRepo Overview",
  "uid": "megarepo-overview"
}

groups:
  - name: megarepo
    rules:
      - alert: MegaRepoStorageHigh
        expr: megarepo_storage_bytes_total / disk_total_bytes > 0.8
        for: 10m
        labels: { severity: warning }

      - alert: MegaRepoHighErrorRate
        expr: sum(rate(http_server_requests_seconds_count{status=~"5.."}[5m])) / sum(rate(http_server_requests_seconds_count[5m])) > 0.01
        for: 5m
        labels: { severity: critical }

      - alert: MegaRepoDown
        expr: up{job="megarepo"} == 0
        for: 1m
        labels: { severity: critical }