FinOps Open Cost & Usage Specification Support
Preflight Checklist
- [X] I have searched the issue tracker for an issue that matches the one I want to file, without success.
Problem Description
At the moment we use CloudEvent (https://cloudevents.io/) to define OpenMeter ingesting API specification.
{
"specversion": "1.0",
"type": "api-calls",
"id": "00001",
"time": "2023-01-01T00:00:00.001Z",
"source": "service-0",
"subject": "customer-1",
"data": {
"duration": "12",
"path": "/hello"
}
}
The result of any metering system is costs&usage reports. One of the important use-cases of report usage is data exporting.
There are two goals of data exports:
-
Integration (accounting/payment systems). A scenario in which reports are exported from OpenMeter to target systems such as Stripe, Paypal, OEBS, NetSuite, etc. In this case, each system has its own data format, and standardization is impossible.
-
FinOps Observability (datalakes, dwh). In this scenario, data is typically uploaded to customer's S3 in a specific format at a specific frequency. Then transferred by customers into company-wide DWH/Data Lake. This practice is presented, for example, in all top cloud providers such as GCP, AWS, Azure and some SaaS services.
So, we use CloudEvent CNCF specification for OpenMeter as input at Ingesting API. Probably we should consider FOCUS (FinOps Open Cost & Usage Specification) as OpenMeter output at Reports Exporting API.
Proposed Solution

- Research CNCF proposed specification - https://focus.finops.org/
- Add this format as an option in planned S3 exports API if that makes sense
Alternatives Considered
No response
Additional Information
No response
@kbespalov this is a great idea; thank you for the detailed path forward. I think OpenMeter can play a significant role in providing usage for cloud cost analysis if we support FOCUS as you highlighted above.
We are following FinOps FOCUS conversations and are mainly waiting for 1.0.0 to see what dimensions will be required. One challenge with FOCUS is that it currently has required non-nullable dimensions like Region, Service Category, and Service Name. These can be static values but we need to collect them somehow, wondering if we should ask them in OpenMeter config.yaml as global config or per meter config or make it required to pass in the FOCUS output API.
What do you think?