---
layout: docs
page_title: Automated license utilization reporting
description: >-
  Learn what data HashiCorp collects to meter Enterprise license utilization. Enable reporting or opt out. Review sample payloads and logs.
---

# 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 overutilization, and budget for predicted consumption.

Automated reporting shares the minimum data required to validate license utilization as defined in our contracts. They consist of mostly computed metrics and will 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. The reporting process is GDPR compliant and submits reports roughly once every 24 hours.

## Enable automated reporting

To enable automated reporting, you need to make sure that outbound network traffic is configured correctly and [upgrade](#2-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 HTTPS egress on port 443 from https://reporting.hashicorp.services by allow-listing the following IP addresses:

- 100.20.70.12
- 35.166.5.222
- 23.95.85.111
- 44.215.244.1

### 2. Upgrade

Upgrade to a release that supports license utilization reporting. These releases include: Release 0.13.0 and 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.
The records are sent as system events.
You can use [`file sync`](/boundary/docs/configuration/events/file) to configure a file where Boundary logs events.

```json
{
    "id": "ZWqRK7XlnN",
    "source": "https://hashicorp.com/boundary/Test_InitSysEventer",
    "specversion": "1.0",
    "type": "system",
    "data": {
        "version": "v0.1",
        "op": "census.(censusJob).Run",
        "data": {
            "msg": "the following snapshot has been generated {\"snapshot_version\":1,\"id\":{\"ULID\":\"0001J50MM0QGR5KN21FVGYJVP9\",\"Timestamp\":\"2023-05-02T00:00:00Z\"},\"schema_version\":\"1.0.0\",\"service\":\"boundary\",\"process_id\":\"01H2B2KY823KYPVAVC02V65TZV\",\"metrics\":{\"boundary.sessions\":{\"key\":\"boundary.sessions\",\"value\":2,\"kind\":\"counter\",\"mode\":\"write\",\"description\":\"Number of pending sessions from previous day\"}}}"
        }
    },
    "datacontentype": "application/cloudevents",
    "time": "2023-06-07T10:01:53.158933-04:00"
}
```

If your installation is air-gapped or your network doesn’t allow the correct egress, logs will show an error.

```json
{
    "id": "VQyF5VzbTT",
    "source": "https://hashicorp.com/boundary/Test_InitSysEventer",
    "specversion": "1.0",
    "type": "error",
    "data": {
        "error": "census.(censusJob).Run: unable to export snapshot through agent: unknown: error #0",
        "error_fields": {
            "Code": 0,
            "Msg": "unable to export snapshot through agent",
            "Op": "census.(censusJob).Run",
            "Wrapped": null
        },
        "id": "e_BgPs9hUMxw",
        "version": "v0.1",
        "op": "census.(censusJob).Run"
    },
    "datacontentype": "application/cloudevents",
    "time": "2023-06-07T10:21:48.221494-04:00"
}
```

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](#example-payloads) before opting out. If you have concerns with any of the automatically-reported data please bring them to your account manager.

You have two options to opt out of automated reporting:
HCL configuration (recommended)
Environment variable (requires restart)

Opting out in your product’s configuration file doesn’t require a system restart, and is the method we recommend. Add the following block to your `configuration.hcl` file.

```hcl
reporting {
	license {
		enabled = false
  }
}
```

If you need to, you can also opt out using an environment variable, which will provide a startup message confirming that you have disabled automated reporting. This option requires a system restart.

Set the following environment variable.

```
$ export OPTOUT_LICENSE_REPORTING=true
```

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.

If your configuration file and environment variable differ, the environment variable setting will take precedence.

## Example payloads

HashiCorp collects the following utilization data as JSON payloads:
`exporter_version` - The version of the licensing exporter.

Product payload description:

Sessions is queried from the Boundary store, counts over the last X days.

```json
"metrics": {
  "boundary.sessions": {
    "key": "boundary.sessions",
    "value": 0,
    "mode": "write"
  }
}
```
Product payload description:

Monthly active users tracks the number of unique, active users in a month.
It is a cumulative value for the entire month.
The start time is included in the value, the end time is excluded.

```json
"metrics": {
  "boundary.monthly_active_users": {
    "key": "boundary.monthly_active_users",
    "value": 8,
    "mode": "write",
  }
},
"metadata": {
  "complete": "true",
  "end_time": "2023-04-01T00:00:00Z",
  "start_time": "2023-03-01T00.00:00Z"
}
```