Terraform
Automated license utilization reporting
Automated license utilization reporting sends license utilization data to HashiCorp without requiring you to manually collect and report them. It also lets you review your license usage with the monitoring solution you already use (for example Splunk, Datadog, or others) so you can optimize and manage your deployments. Use these reports to understand how much more you can deploy under your current contract, protect against over-utilization, and budget for predicted consumption. For details on forwarding your license usage data to a monitoring solution, see Log Forwarding.
Automated reporting shares the minimum data required to validate license utilization as defined in our contracts. The proccess is GDPR compliant, and consists of mostly computed metrics that never contain Personal Identifiable Information (PII) or other sensitive information. Automated reporting shares the data with HashiCorp using a secure, unidirectional HTTPS API and makes an auditable record in the product logs each time it submits a report.
Enable automated reporting
To enable automated reporting, you need to make sure that outbound network traffic is configured correctly and upgrade your enterprise product to a version that supports it. If your installation is air-gapped or network settings are not in place, automated reporting will not work.
1. Allow outbound HTTPS traffic on port 443
Make sure that your network allows egress to https://api.replicated.com
, as described in the network requirements documentation.
Make sure that your network also allows HTTPS egress on port 443 from https://reporting.hashicorp.services
by allow-listing the following IP addresses:
2. Upgrade
Upgrade to Terraform Enterprise v202305-1 or later.
3. Check logs
Automatic license utilization reporting will start sending data within roughly 24 hours. Check the product logs for records that the data sent successfully.
{
"@level": "debug",
"@message": "export finished successfully",
"@module": "tfe-licensing.licensingexporter",
"@timestamp": "2023-05-10T17:48:06.656979Z"
}
If your installation is air-gapped or your network doesn’t allow the correct egress, logs will show an error.
{
"@level": "error",
"@message": "error exporting snapshot",
"@module": "tfe-licensing.census",
"@timestamp": "2023-05-11T01:50:51.662155Z",
"err": "export failed with error POST https://reporting.hashicorp.services giving up after 5 attempt(s): Post \"https://reporting.hashicorp.services\": dial tcp 35.166.5.222:443: i/o timeout"
}
In this case, reconfigure your network to allow egress and check back in roughly 24 hours.
Opt out
If your installation is air-gapped or you want to manually collect and report on the same license utilization metrics, you can opt-out of automated reporting.
Manually reporting these metrics can be time consuming. Opting out of automated reporting does not mean that you also opt out from sending license utilization metrics. Customers who opt out of automated reporting will still be required to manually collect and send license utilization metrics to HashiCorp.
If you are considering opting out because you’re worried about the data, we strongly recommend that you review the example payloads before opting out. If you have concerns with any of the automatically-reported data please bring them to your account manager.
Add the following JSON to the Replicated Application Settings Config (settings.json
), then check the product logs for a confirmation message.
{
“optout_license_reporting”: {
“value”: “1”
}
}
If you are on a standalone installation, you can also configure this setting in the Replicated Admin Console UI.
Now restart your system.
Check your product logs roughly 24 hours after opting out to make sure that the system isn’t trying to send reports.
Example payloads
HashiCorp collects the following utilization data as JSON payloads:
payload_version
- The version of this payload schemalicense_id
- The license ID for this productproduct
- The product that this contribution is forproduct_version
- The product version this contribution is forexport_timestamp
- The date and time for this contributionsnapshots
- An array of snapshot details. A snapshot is a structure that represents a single data collection.snapshot_version
- The version of the snapshot package that produced this snapshotsnapshot_id
- A unique identifier for this particular snapshotprocess_id
- An identifier for the system that produced this snapshottimestamp
- The date and time for this snapshotschema_version
- The version of the schema associated with this snapshotservice
- The service that produced this snapshot (likely to be product name)metrics
- A map of representations of snapshot metrics contained within this snapshotkey
- The key name associated with this metricworkspacecount
- Total number of workspaces defined in the TFE instancekind
- The kind of metric (feature, counter, sum, or mean)mode
- The mode of operation associated with this metric (write or collect)value
- The value of the metric at the time the licensing exporter took this snapshot
metadata
- Optional product-specific metadatareplicated_license_id
- The unique ID of the Replicated licensesf_opportunity_id
- The Salesforce Opportunity ID associated with the license
{
"payload_version": "1",
"license_id": "934b62bd-7e7b-7872-7341-9683ecd9acb4",
"product": "terraform",
"product_version": "v202305-01",
"export_timestamp": "2023-05-24T10:11:12Z",
"snapshots": [
{
"snapshot_version": 1,
"snapshot_id": "01GW2Y117Z2BZ7MGS9YQXPF2A4",
"process_id": "01GVKT7533WF8TBNSJYZV0T10F",
"timestamp": "2023-05-23T20:33:32.927Z",
"schema_version": "1.0.0",
"service": "terraform",
"metrics": {
"terraform.workspacecount": {
"key": "terraform.workspacecount",
"kind": "counter",
"mode": "write",
"value": 20
}
}
}
],
"metadata": {
"terraform": {
"replicated_license_id": "vi15fg2ysml54yhhd8evcfjl63h6pt6k",
"sf_opportunity_id": "ix0z0kj5f7egd64bo1"
}
}
}