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 |