Cloudability Connect Custom Data (FOCUS Ingress)
The FinOps Open Cost and Usage Specification ( FOCUS) is a community-driven effort to develop a standard schema for cloud, SaaS, and other billing data. The primary goal of the FOCUS specification is to make it easier to understand, report on, and manage cloud costs. The FOCUS specification is intended to be adaptable across a variety of cloud service providers and SaaS product sources and defines columns (dimensions and metrics), column-specific requirements, and attributes (spec-wide requirements).
Custom Data credentialing option should not be used for CSPs that we already support natively (e.g., AWS, Azure, etc.), as some features, such as rightsizing, will not be supported.
Steps for integration
Data Source Management
All the data that is uploaded to any of the storage services must be the entire month-to-date data.
Also, the data must follow a specific structure as:
<Root
Directory>/<Optional_Sub_Directories>/<Vendor>/<Report_Period>/<Epoch Time
Folder>/<prefix>-Manifest.json
The M in Manifest should always be capitalized.
-
Root Directory : A prefix like AWS bucket name, Azure container name or GCS bucket name
-
Optional Sub Directories : An optional field for customer. They may or may not have additional sub directories
-
Vendor : A vendor name which would help in identifying the vendor type
-
Report Period : Report Period for which the data is available. This must be in the formats YYYYMMDD-YYYYMM(+1)DD . For example, for report period 2023-02 the name would look like →20230201-20230301.
-
Epoch Time Folder : This will be used to identify the latest drop for month-to-date data.
-
Manifest : Metadata json file containing details of specific report period dataset.
All custom data sources via this capability needs to adhere to the FOCUS specifications.
{
"compression": "GZIP",
"content_type": "Parquet",
"report_id": "uuid-f431e214843b3c19756368",
"root_dir": "byod-input-prod",
"all_report_keys": [
"<complete/path/excluding/root_dir>/cost-and-usage-report-00001.snappy.parquet",
"<complete/path/excluding/root_dir>/cost-and-usage-report-00002.snappy.parquet"
],
"updated_at": "2024-04-04T05:00:22Z",
"focus_version": "1.0"
}
File Content Type : JSON
Header / Field | Header / Field definition | Value : Required / Optional |
---|---|---|
compression |
CSV : gzip Parquet : All that are supported by Java Hadoop frameworks. |
Optional |
content type | Parquet or CSV | Required |
report ID | Randomly generated unique report identifier. | Optional |
root_dir | S3 Bucket or Azure Directory or GCS bucket to fetch the report from. This will be dependent of the type of credentials chosen. | Required |
all report keys | It is a nested JSON, that is the list of only new absolute file paths excluding the root directory. | Required |
updated at | Last updated time of the report. | Optional |
focus version | FOCUS version as per https://finops.dev/focus-spec The version must match the exact FOCUS Spec version. | Required |
Once you have completed the credentialing process in Cloudability (Described below), you will see a green check mark next to your credential details, but Cloudability will still need to validate that the billing file and the manifest file comply with the requested formats. If you do not see any data in Cloudability after 24 hours, please reach out to the Apptio Support team.
We support AWS Simple Storage Service , Google Cloud Storage and Azure Blob Storage as the storage services for housing FOCUS-aligned data.
-
In Cloudability , navigate to Settings > Vendor Credentials > Custome Data .
-
Select Add a Credential. The Add a Credential panel opens.
-
Click on Preferred Storage Provider .
- Enter Vendor for which the data needs to be ingested.
- Enter AWS Account ID .
- Enter AWS S3 bucket name under Root Directory .
- Enter optional sub prefixes under Sub Directories .
- Enter Manifest Prefix under Manifest Prefix .
- Click Generate template .
For more information, refer to Connect Amazon Web Services.
- Enter the Vendor for which the data needs to be ingested.
- Enter Azure Account ID.
- Enter Tenant ID .
- Enter Subscription ID .
- Enter the Resource Group name.
- Enter the Storage Account name.
- Enter Blob Container Name under Root Directory .
- Enter optional sub directories under Sub Directories .
- Enter Manifest Prefix under Manifest Prefix .
- Click Generate template .
For more information, refer to Connect Microsoft Azure .
- Enter the Vendor for which the data needs to be ingested.
- Enter GCP Account ID .
- Enter GCP GCS bucket name under Root Directory .
- Enter optional sub prefixes under Sub Directories .
- Enter Manifest Prefix under Manifest Prefix .
- Click Generate template .
For more information, refer to Connect Google Cloud.