{"id":50454159,"url":"https://github.com/mizcausevic-dev/latency-distribution-analyzer","last_synced_at":"2026-06-01T01:05:42.566Z","repository":{"id":357458356,"uuid":"1236255011","full_name":"mizcausevic-dev/latency-distribution-analyzer","owner":"mizcausevic-dev","description":"Julia backend for latency distribution fitting, SLA breach probability forecasting, and percentile band analysis. Ingests service log exports, fits LogNormal/Weibull via MLE, computes P50–P99.9 with confidence intervals, and projects 24h SLA breach probability using Markov chains. HTTP.jl REST surface.","archived":false,"fork":false,"pushed_at":"2026-05-12T21:40:25.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-12T22:28:56.207Z","etag":null,"topics":["julia"],"latest_commit_sha":null,"homepage":"","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mizcausevic-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-12T04:52:10.000Z","updated_at":"2026-05-12T21:40:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mizcausevic-dev/latency-distribution-analyzer","commit_stats":null,"previous_names":["mizcausevic-dev/latency-distribution-analyzer"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mizcausevic-dev/latency-distribution-analyzer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Flatency-distribution-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Flatency-distribution-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Flatency-distribution-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Flatency-distribution-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mizcausevic-dev","download_url":"https://codeload.github.com/mizcausevic-dev/latency-distribution-analyzer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Flatency-distribution-analyzer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33755379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["julia"],"created_at":"2026-06-01T01:05:42.486Z","updated_at":"2026-06-01T01:05:42.555Z","avatar_url":"https://github.com/mizcausevic-dev.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# latency-distribution-analyzer\n\n\u003e **Julia · HTTP.jl · Distributions.jl · StatsBase**  \n\u003e Platform Reliability | SRE | Observability\n\nStatistical latency analysis engine for production services. Ingests raw latency logs, fits optimal probability distributions via MLE, computes P50–P99.9 with bootstrap confidence intervals, and forecasts 24-hour SLA breach probability using a Markov chain model.\n\n---\n\n## Why Julia?\n\nJulia provides C-level numerical performance with Python-level ergonomics. For large-scale latency log processing, MLE distribution fitting, and Monte Carlo percentile bootstrapping, it outperforms Python/Pandas by 10–100× on hot numerical paths — without JVM overhead.\n\n---\n\n## Features\n\n- **Distribution fitting** — Evaluates Normal, LogNormal, Gamma, Weibull, Exponential; selects best by AIC\n- **Percentile bands** — P50, P75, P90, P95, P99, P99.9 with 95% bootstrap confidence intervals\n- **SLA breach forecasting** — Two-state Markov chain projects 24h breach probability\n- **REST API** — `POST /analyze`, `GET /health` via HTTP.jl\n- **CLI mode** — `julia src/main.jl analyze \u003cfile.csv\u003e \u003cservice\u003e [sla_ms]`\n- **Dockerized** — single `docker run` to serve\n\n---\n\n## Quickstart\n\n### Docker\n```bash\ndocker build -t latency-analyzer .\ndocker run -p 8080:8080 latency-analyzer\n```\n\n### Local\n```bash\njulia --project=. -e 'using Pkg; Pkg.instantiate()'\njulia src/main.jl serve\n```\n\n### CLI one-shot analysis\n```bash\njulia src/main.jl analyze data/sample_latency.csv checkout 200\n```\n\n---\n\n## API\n\n### `POST /analyze`\n```json\n{\n  \"service\": \"checkout\",\n  \"window_minutes\": 60,\n  \"sla_ms\": 200\n}\n```\n\n**Response:**\n```json\n{\n  \"service\": \"checkout\",\n  \"sample_count\": 1200,\n  \"sla_threshold_ms\": 200,\n  \"best_fit_distribution\": {\n    \"name\": \"LogNormal\",\n    \"mean\": 84.3,\n    \"std\": 42.1,\n    \"params\": \"(4.28, 0.47)\"\n  },\n  \"percentiles\": {\n    \"p500\":  { \"value\": 72.4,  \"ci_lo\": 70.1,  \"ci_hi\": 74.8  },\n    \"p990\":  { \"value\": 198.3, \"ci_lo\": 185.0, \"ci_hi\": 212.7 },\n    \"p999\":  { \"value\": 341.2, \"ci_lo\": 310.4, \"ci_hi\": 378.9 }\n  },\n  \"breach_probability_24h\": 0.0312,\n  \"current_breach_rate\": 0.028,\n  \"health\": \"green\"\n}\n```\n\n### `GET /health`\n```json\n{ \"status\": \"ok\", \"version\": \"1.0.0\" }\n```\n\n---\n\n## Architecture\n\n```\nCSV / Log Input\n      │\n      ▼\n  Ingestion.jl  ──→  filter by service + time window\n      │\n      ▼\n  DistributionFitter.jl  ──→  MLE fit (5 candidate distributions, AIC selection)\n      │\n      ├──→  Percentiles.jl  ──→  P50–P99.9 + bootstrap CI\n      │\n      └──→  SLABreach.jl    ──→  Markov chain 24h breach probability\n                │\n                ▼\n           Report.jl  ──→  JSON + Markdown\n                │\n                ▼\n           Server.jl  ──→  HTTP REST surface\n```\n\n---\n\n## Input Format\n\n`data/sample_latency.csv`:\n```csv\ntimestamp,service,latency_ms\n2026-05-01T00:00:01,checkout,45.2\n2026-05-01T00:00:02,checkout,52.7\n```\n\n| Column | Type | Description |\n|---|---|---|\n| `timestamp` | ISO 8601 | Request timestamp |\n| `service` | String | Service identifier |\n| `latency_ms` | Float | End-to-end latency in milliseconds |\n\n---\n\n## Environment Variables\n\n| Variable | Default | Description |\n|---|---|---|\n| `PORT` | `8080` | HTTP listen port |\n| `SLA_MS` | `200` | SLA threshold in milliseconds |\n| `LATENCY_DATA` | `data/sample_latency.csv` | Path to latency log CSV |\n\n---\n\n## Testing\n```bash\njulia --project=. test/test_distributions.jl\n```\n\n---\n\n## Stack\n\n| Package | Purpose |\n|---|---|\n| `Distributions.jl` | MLE distribution fitting |\n| `StatsBase.jl` | Weighted percentiles, resampling |\n| `HTTP.jl` | Lightweight REST server |\n| `CSV.jl` + `DataFrames.jl` | Log ingestion |\n| `JSON3.jl` | Request/response serialization |\n| `Optim.jl` | Numerical optimization for MLE |\n\n---\n\n## Related Projects\n\n| Repo | Relationship |\n|---|---|\n| [`latency-budget-enforcer`](https://github.com/mizcausevic-dev/latency-budget-enforcer) | Upstream: latency budget policy enforcement (Go) |\n| [`agent-canary`](https://github.com/mizcausevic-dev/agent-canary) | Sibling: progressive rollout driven by latency signals |\n| [`kinetic-flightdeck`](https://github.com/mizcausevic-dev/kinetic-flightdeck) | Consumer: operator surface for platform health |\n\n---\n\n## License\n\nAGPL-3.0 © [Miz Causevic](https://kineticgain.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Flatency-distribution-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmizcausevic-dev%2Flatency-distribution-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Flatency-distribution-analyzer/lists"}