Hetzner Dedicated
Required Hetzner Dedicated Attributes
The following cost calculation tags are required for traces originating from Hetzner dedicated servers.
Always Required Fields
These fields are always required for Hetzner dedicated server cost calculation:
| Attribute Name | Example Value | Allowed Values |
|---|---|---|
cloud.platform | hetzner_dedicated | hetzner_dedicated |
host.id | 2012345 | Hetzner server number |
Optional Fields
These fields improve cost accuracy but are not required. If absent, Beakpoint uses fallback values:
| Attribute Name | Example Value | Allowed Values | Fallback Behavior |
|---|---|---|---|
host.type | AX102 | Hetzner server product | Uses default rate for cloud.region, or global default if region is also absent |
cloud.region | hel1 | Hetzner datacenter | Uses global default rate for the host |
Cost Calculation
Hetzner dedicated servers have a fixed monthly rate. Beakpoint converts this to an hourly rate using 730 hours/month, then calculates cost proportional to span duration:
cost = (span_duration_seconds / 3600) × (monthly_price / 730)
The monthly_price comes from your Beakpoint cost catalog, indexed by the host.type (e.g., AX102). If host.type is omitted, Beakpoint falls back to a default rate for the region specified in cloud.region, or a global default if region is also absent.
Time-Sharing for Overlapping Spans
When multiple spans overlap on the same server (identified by cloud.platform + host.id), Beakpoint proportionally shares the server's hourly cost. For example, if two spans of equal duration overlap in the same hour, each is charged 50% of the hourly rate. Spans on different server instances are priced independently with no sharing.
Example Configuration
Setting Resource Attributes
Set these as OpenTelemetry resource attributes in your application:
OTEL_RESOURCE_ATTRIBUTES: "cloud.platform=hetzner_dedicated,host.id=2012345,host.type=AX102,cloud.region=hel1"
Programmatic Instrumentation
For Go applications:
resource, _ := resource.New(ctx,
resource.WithAttributes(
attribute.String("cloud.platform", "hetzner_dedicated"),
attribute.String("host.id", "2012345"),
attribute.String("host.type", "AX102"),
attribute.String("cloud.region", "hel1"),
),
)
For Python applications:
from opentelemetry.sdk.resources import Resource
resource = Resource(attributes={
"cloud.platform": "hetzner_dedicated",
"host.id": "2012345",
"host.type": "AX102",
"cloud.region": "hel1",
})
Minimal Configuration
If you only have the required fields:
OTEL_RESOURCE_ATTRIBUTES: "cloud.platform=hetzner_dedicated,host.id=2012345"
Beakpoint will use default pricing for the unspecified region and server type.
Error Handling
Beakpoint requires both cloud.platform=hetzner_dedicated and a valid host.id to calculate costs for a trace. If either is missing:
- The trace is still recorded and observable
- Spans are not charged to the Hetzner dedicated account
- Check trace attributes in your Beakpoint dashboard to verify correct tagging
If host.type and cloud.region are both missing, costs are calculated using the global default rate, which may not reflect your actual server configuration.