Navigation :
This matrix shows feature compatibility for OpenCensus languages.
| Feature |
Java |
Go |
C# |
Python |
Nodejs |
PHP |
Ruby |
Erlang/Elixir |
| Core Data Models |
|
|
|
|
|
|
|
|
| SpanContext |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Tracestate |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
Yes |
| Attributes (String/Bool/Int) |
Yes |
Yes |
Yes |
Yes |
Yes |
String Only |
Yes |
Yes |
| Attributes Double/Float64 |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
Yes |
| Link |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Annotation |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| SpanKind |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| MessageEvent |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Start/End Time |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| SpanData (for exporting) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Status |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Trace Configs |
|
|
|
|
|
|
|
|
| TraceParam Limits (Attributes, Annotations, etc.) |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
No |
| Basic Operations |
|
|
|
|
|
|
|
|
| Create a root span |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Put span into/get span from current context |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Create a span from current context |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Create a span with explicit parent |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
Yes |
| Add attributes, links, annotations, message events |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Register/Unregister Exporters |
Yes |
Yes |
Yes |
Yes |
Yes |
Register only (use Agent) |
Yes |
|
| Child Span Count |
Yes |
Yes |
No |
No |
Yes |
No |
Yes |
Yes |
| Override sampling for a span |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
Yes |
| Propagation |
|
|
|
|
|
|
|
|
| Binary Format - gRPC |
Yes |
Yes |
Yes |
Yes |
Yes |
Client only |
No |
Yes |
| W3C TraceContext Format - HTTP |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
Yes |
| B3 Format - HTTP |
Yes |
Yes |
Yes |
Yes |
Yes |
In Progress |
No |
In Progress |
| Google Cloud Text Format |
Yes |
Yes |
No |
Yes |
Yes |
Yes |
Yes |
No |
| Feature |
Java |
Go |
C# |
Python |
Nodejs |
PHP |
Ruby |
Erlang/Elixir |
| Core Data Models |
|
|
|
|
|
|
|
|
| Tag |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| TagKey (restrictions apply) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| TagValue (restrictions apply) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| TagMap |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| TagMetadata |
Yes |
Yes |
No |
No |
Yes |
No |
No |
No |
| Basic Operations |
|
|
|
|
|
|
|
|
| Validate TagKey and TagValue |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Insert a list of Tags into current context |
Yes |
Yes |
Yes |
No |
Yes |
Yes |
Yes |
Yes |
| Get Tags from current context |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Update Tags in current context |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Propagation |
|
|
|
|
|
|
|
|
| Binary Format |
Yes |
Yes |
No |
Yes |
Yes |
Yes |
No |
Yes |
| Text Format (W3C) |
Yes |
No |
No |
In Progress |
Yes |
No |
No |
Yes |
| gRPC Propagation |
Yes |
Yes |
No |
No |
Yes |
No |
No |
No |
| HTTP Propagation |
In Progress |
No |
No |
No |
In Progress |
No |
No |
No |
| Feature |
Java |
Go |
C# |
Python |
Nodejs |
PHP |
Ruby |
Erlang/Elixir |
| Core Data Models |
|
|
|
|
|
|
|
|
| Measure (Int64 and Double) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Measurement (Int64 and Double) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| MeasureMap or equivalent (allow for batch recording) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Aggregation (Count, Sum, LastValue, Distribution) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Bucket Boundaries (only with positive bounds) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| AggregationData (Count, Sum, LastValue, Distribution) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| View |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| ViewData |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Basic Operations |
|
|
|
|
|
|
|
|
| Create Int64 or Double Measurements |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Validate Measurements (no negative values) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
| Batch recording Measurements |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Record against explicit context |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Record against implicit (current) context |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Record with additional attachments (e.g SpanContext) |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Define and register Views |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Apply Aggregation to Measurements according to View definitions |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Validate bucket boundaries for a Distribution |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
Yes |
| Retrieve aggregated data for a given View |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |
| Stats Plug-in |
|
|
|
|
|
|
|
|
| gRPC plug-in for Metrics |
Yes |
Yes (missing started_rpcs metrics) |
No |
No |
Yes |
No |
No |
Yes |
| HTTP plug-in for Metrics |
Yes |
Yes |
No |
No |
In Progress |
No |
No |
Yes |
| Feature |
Java |
Go |
C# |
Python |
Nodejs |
PHP |
Ruby |
Erlang/Elixir |
| Core Data Models |
|
|
|
|
|
|
|
|
| LabelKey |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| LabelValue |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| Double and Int64 Value |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| Summary Value |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| Distribution Value (including BucketOptions and Exemplar.) |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Point |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| TimeSeries |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| MetricDescriptor |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| Metric |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| Double and Long Gauge |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
| Derived Gauge |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Cumulative |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| MetricProducer |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Basic Operations |
|
|
|
|
|
|
|
|
| Add/remove metric producers |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Retrieve metrics from each metric producer |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Register gauges to metric registry |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Feature |
Java |
Go |
C# |
Python |
Nodejs |
PHP |
Ruby |
Erlang/Elixir |
| Top-level Resource API |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Auto-detect GCE/K8S/AWS EC2 resources |
Yes |
Yes(missing K8S) |
No |
Yes |
Yes |
No |
No |
No |
| Set resources for custom environment |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Encode and decode resource |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Merge mutiple resources |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| Add resource labels to span |
Yes |
No |
No |
Yes (without new names) |
Yes |
No |
No |
No |
| Feature |
Java |
Go |
C# |
Python |
Nodejs |
PHP |
Ruby |
Erlang/Elixir |
| Metrics |
|
|
|
|
|
|
|
|
| Google Cloud Monitoring |
Yes |
Yes |
No |
Yes (without Gauges) |
Yes |
Yes (using Go Daemon) |
Yes |
No |
| Prometheus |
Yes |
Yes |
Yes (without Gauges) |
Yes (without Gauges) |
Yes (without Gauges) |
Yes (using Go Daemon) |
No |
Yes |
| Tracing |
|
|
|
|
|
|
|
|
| Google Cloud Trace |
Yes |
Yes |
No |
Yes |
Yes |
Yes |
Yes |
yes |
| Jaeger |
Yes |
Yes |
No |
Yes |
Yes |
Yes |
No |
Yes |
| Zipkin |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
Yes |