PHO Licence Extension
The PHO Licence Extension validates the licence used by PHO Collector components and reports licence health through Collector self-telemetry.
| Property | Value |
|---|---|
| Component ID | pho_license |
| Type | Extension |
| Availability | PHO Collector distribution |
Capabilities
- Loads a PHO-provided licence from a file or environment-supplied value.
- Confirms that the licence applies to the current host.
- Checks component entitlements and configured capacity.
- Revalidates the licence periodically.
- Reports licence validity and expiry telemetry.
- Logs licence state changes and expiry warnings.
Prerequisites
- A PHO Collector distribution containing
pho_license. - A valid PHO-provided licence for the current host.
- Sufficient licensed capacity for every configured PHO receiver instance.
- Read permission for the Collector service account when a licence file is used.
Configuration
Exactly one licence source must be configured:
file: path to a PHO-provided licence file.inline: base64-encoded licence content, normally supplied through an environment variable or secrets manager.
| Setting | Required | Default | Description |
|---|---|---|---|
file | One source required | — | Licence-file path |
inline | One source required | — | Base64-encoded licence content |
reporting_interval | No | 1h | Reload and validation frequency |
warning_thresholds_days | No | [30, 14, 7] | Expiry-warning thresholds |
Warning thresholds must be positive, unique, and in descending order. Use an empty list to disable expiry warnings.
File-based example
extensions:
pho_license:
file: /etc/otelcol/license.json
reporting_interval: 1h
warning_thresholds_days: [30, 14, 7]
service:
extensions: [pho_license]
Environment-based example
extensions:
pho_license:
inline: ${env:PHO_LICENSE_B64}
reporting_interval: 1h
warning_thresholds_days: [30, 14, 7]
service:
extensions: [pho_license]
Defining the extension does not enable it. It must also appear under service.extensions.
Licence telemetry
Licence metrics are exposed through the Collector’s self-telemetry configuration.
| Metric | Type | Description |
|---|---|---|
pho.license.valid | Gauge | 1 when the licence is valid; otherwise 0 |
pho.license.days_remaining | Gauge | Whole days remaining before expiry |
pho.license.expiry_timestamp | Gauge | Licence expiry as a Unix timestamp |
pho.license.check.success | Counter | Successful licence checks |
pho.license.check.failure | Counter | Failed or expired licence checks |
Prometheus exporters typically expose dotted metric names with underscores, for example pho_license_valid.
Licence telemetry excludes customer identifiers, licence identifiers, host identity, licence contents, signatures, fingerprints, source paths, and raw validation errors.
Recommended alerts
groups:
- name: pho-license
rules:
- alert: PHOLicenseInvalid
expr: pho_license_valid == 0
for: 5m
labels:
severity: critical
annotations:
summary: PHO licence is invalid or expired
- alert: PHOLicenseExpiringSoon
expr: pho_license_days_remaining <= 30 and pho_license_days_remaining > 0
for: 15m
labels:
severity: warning
annotations:
summary: PHO licence expires within 30 days
Operational behaviour
- The licence is checked during Collector startup.
- Licence status is refreshed at the configured reporting interval.
- Expiry warnings are logged when a configured threshold is entered.
- Repeated checks within the same threshold do not generate duplicate warnings.
- A missing, invalid, expired, or host-mismatched licence prevents licensed receivers from starting.
- Each configured receiver instance uses one entitlement from the relevant component capacity.
Troubleshooting
| Symptom | Recommended action |
|---|---|
| Licence-source configuration is rejected | Configure exactly one of file or inline |
| Licence file is missing | Confirm the path, mount, and Collector service-account permissions |
| Licence is reported as invalid | Confirm the file has not been altered and was issued for the current host |
| Licence is expired | Contact PHO for a renewed licence |
| Receiver reports insufficient capacity | Confirm the licence includes enough capacity for all configured instances |
| Licence telemetry is absent | Confirm Collector self-telemetry metrics are enabled and exported |