OpenCensus is being archived! Read the blog post to learn more

Feature Matrix

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