diff --git a/README.md b/README.md index 3781ccd..aa4a4bf 100644 --- a/README.md +++ b/README.md @@ -15,40 +15,51 @@ This project collects the outputs from conversations in the Slack [#KPIs room](h ## List of common FinOps KPIs -* RI Coverage -* Savings Plan Coverage -* Committed Use Discount coverage -* Rightsizing opportunity value -* Usage on weekends vs weekdays -* % of spot vs other coverage -* custom pricing commitment tracking -* % orphaned EBS volumes -* % orphaned snapshots -* Aged snapshots -* Idle instances > 30-days -* Idle instances < 30-days -* Total bill vs. forecast -- including variance % of forecast: actual bill -* % of oversized instances (not tagged as approved) -* % S3 storage on the wrong tier -* % EBS storage on wrong tier -* % unattached elastic IPs -* % wrong instance type -* % dev resources running out of hours (this means, running out of non-peak hours, like nights and weekends -* % untagged resources -* % wrongly tagged resources -* % total tag coverage -* % taggable items tagged -* % of spend that is untaggable -* Hours between cost incurred and cost displayed to end team -* Frequency of data updates -* Avg price per hour of compute -* Unit cost (spend divided by a business metric) +### platform team, sre, eng + +### finance + +| KPI | purpose | audience | | | +|---|---|---|---|---| +|% of resoruces considered waste (qty) | determine (1) how severe waste problem is and (2) if clean-up action is needed | eng | | | +|percentage of resources that are considered waste ($) | determine (1) how severe waste problem is and (2) if clean-up action is needed | eng | | | +| total cost of resources that are considered waste | determine (1) how severe waste problem is and (2) if clean-up action is needed | eng | | | +| % of untagged resources | baseline: determine if / when new tagging efforts are needed | eng | | | +| opportunity value of rightsizing efforts | determine when/if cleanup action is necessary | eng | | | +| % of orphaned ebs volumes | determine when/if cleanup action is necessary | eng | | | +| % of orphaned snapshots | determine when/if cleanup action is necessary | eng | | | +| avg age of snapshots | determine if new lifecycle policies are needed | eng | | | +| idle instances > 30-days | locate instances to shut-down or terminate | eng | | | +| Idle instances < 30-days | no actions required: useful visibility metric | eng | | | +| % of oversized instances (not tagged as approved) | targets for rightsizing | eng | | | +| % S3 storage on without recommended tier | | | | | +| % S3 storage on the wrong tier | | | | | +| % EBS storage on without recommended tier | | | | | +| % EBS storage on wrong tier | | | | | +| % unattached elastic IPs | | | | | +| % instances without recommended instance type | | | | | +| % dev resources running out of hours (this means, running out of non-peak hours, like nights and weekends | | | | | +| % untagged resources | | | | | +| % total tag coverage | | | | | +| % taggable items tagged | | | | | +| % of spend that is untaggable | | | | | +| frequency of data updates | | | | | +| avg price per hour of compute | | | | | +| unit cost (total spend divided by a business metric) | | | | | +| SP/RI coverage percentage | determine when or if to buy new plans | finance | | | +| SP/RI utilization percentage | determine when or if to sell existing plans, or prefer specific resource types | finance | | | +| expiring SP/RI plans | select when or if to purchase new plans | finance | | | +| total spot pricing opportunities (#) | determine spot eligibility | finance | | | +| total spot pricing opportunities ($) | determine spot viability | finance | | | +| total bill vs forecast (14, 21, 28 day) | | finance | | | +| budget variance | | finance | | | +| forecast variance (14, 21, 28 day) | finance | | | | +| usage on weekdays VS weekends | | finance | | | ## Planned Projects * Add categories to KPIs (tags, optimization, accuracy, etc) -* Split out metrics by persona (FinOps team vs. Eng team vs Finance team) * Add FinOps team OKRs / Goals ## Related Links diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..4e2e0cf --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,14 @@ +[tool.poetry] +name = "finops_kpis" +version = "0.1.0" +description = "collection of kpis for finops intiatives" +authors = ["Your Name "] + +[tool.poetry.dependencies] +python = "3.8.*" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api"