1
- # OpenCensus Service Design Specs
1
+ # OpenTelemetry Service Design Specs
2
2
3
- This document describes the architecture design and implementation of OpenCensus Agent and
4
- OpenCensus Collector.
3
+ This document describes the architecture design and implementation of OpenTelemetry Agent and
4
+ OpenTelemetry Collector.
5
5
6
6
# Table of contents
7
7
- [ Goals] ( #goals )
8
- - [ OpenCensus Agent] ( #opencensus -agent )
8
+ - [ OpenTelemetry Agent] ( #opentelemetry -agent )
9
9
- [ Architecture overview] ( #agent-architecture-overview )
10
10
- [ Communication] ( #agent-communication )
11
11
- [ Protocol Workflow] ( #agent-protocol-workflow )
12
12
- [ Implementation details of Agent server] ( #agent-implementation-details-of-agent-server )
13
13
- [ Receivers] ( #agent-impl-receivers )
14
14
- [ Agent Core] ( #agent-impl-agent-core )
15
15
- [ Exporters] ( #agent-impl-exporters )
16
- - [ OpenCensus Collector] ( #opencensus -collector )
16
+ - [ OpenTelemetry Collector] ( #opentelemetry -collector )
17
17
- [ Architecture overview] ( #collector-architecture-overview )
18
18
19
19
## <a name =" goals " ></a >Goals
@@ -23,32 +23,32 @@ optionally run a daemon on the host and it will read the
23
23
collected data and upload to the configured backend.
24
24
* Binaries can be instrumented without thinking about the exporting story.
25
25
Allows open source binary projects (e.g. web servers like Caddy or Istio Mixer)
26
- to adopt OpenCensus without having to link any exporters into their binary.
26
+ to adopt OpenTelemetry without having to link any exporters into their binary.
27
27
* Easier to scale the exporter development. Not every language has to
28
28
implement support for each backend.
29
29
* Custom daemons containing only the required exporters compiled in can be created.
30
30
31
- ## <a name =" opencensus -agent" ></a >OpenCensus Agent
31
+ ## <a name =" opentelemetry -agent" ></a >OpenTelemetry Agent
32
32
33
33
### <a name =" agent-architecture-overview " ></a >Architecture Overview
34
34
35
35
On a typical VM/container, there are user applications running in some processes/pods with
36
- OpenCensus Library (Library). Previously, Library did all the recording, collecting, sampling and
36
+ OpenTelemetry Library (Library). Previously, Library did all the recording, collecting, sampling and
37
37
aggregation on spans/stats/metrics, and exported them to other persistent storage backends via the
38
38
Library exporters, or displayed them on local zpages. This pattern has several drawbacks, for
39
39
example:
40
40
41
- 1 . For each OpenCensus Library, exporters/zpages need to be re-implemented in native languages.
41
+ 1 . For each OpenTelemetry Library, exporters/zpages need to be re-implemented in native languages.
42
42
2 . In some programming languages (e.g Ruby, PHP), it is difficult to do the stats aggregation in
43
43
process.
44
- 3 . To enable exporting OpenCensus spans/stats/metrics, application users need to manually add
44
+ 3 . To enable exporting OpenTelemetry spans/stats/metrics, application users need to manually add
45
45
library exporters and redeploy their binaries. This is especially difficult when there’s already
46
- an incident and users want to use OpenCensus to investigate what’s going on right away.
46
+ an incident and users want to use OpenTelemetry to investigate what’s going on right away.
47
47
4 . Application users need to take the responsibility in configuring and initializing exporters.
48
48
This is error-prone (e.g they may not set up the correct credentials\monitored resources), and
49
- users may be reluctant to “pollute” their code with OpenCensus .
49
+ users may be reluctant to “pollute” their code with OpenTelemetry .
50
50
51
- To resolve the issues above, we are introducing OpenCensus Agent (Agent). Agent runs as a daemon
51
+ To resolve the issues above, we are introducing OpenTelemetry Agent (Agent). Agent runs as a daemon
52
52
in the VM/container and can be deployed independent of Library. Once Agent is deployed and
53
53
running, it should be able to retrieve spans/stats/metrics from Library, export them to other
54
54
backends. We MAY also give Agent the ability to push configurations (e.g sampling probability) to
@@ -84,7 +84,7 @@ assoicated, Agent should handle the data properly, as if they were sent in a sub
84
84
Identifier is no longer needed once the streams are established.
85
85
3 . On Library side, if connection to Agent failed, Library should retry indefintely if possible,
86
86
subject to available/configured memory buffer size. (Reason: consider environments where the
87
- running applications are already instrumented with OpenCensus Library but Agent is not deployed
87
+ running applications are already instrumented with OpenTelemetry Library but Agent is not deployed
88
88
yet. Sometime in the future, we can simply roll out the Agent to those environments and Library
89
89
would automatically connect to Agent with indefinite retries. Zero changes are required to the
90
90
applications.) Depending on the language and implementation, retry can be done in either
@@ -105,7 +105,7 @@ invocations.
105
105
106
106
The Agent consists of three main parts:
107
107
108
- 1 . The receivers of different instrumentation libraries, such as OpenCensus , Zipkin,
108
+ 1 . The receivers of different instrumentation libraries, such as OpenTelemetry , Zipkin,
109
109
Istio Mixer, Prometheus client, etc. Receivers act as the “frontend” or “gateway” of
110
110
Agent. In addition, there MAY be one special receiver for receiving configuration updates
111
111
from outside.
@@ -149,18 +149,18 @@ Once in a while, Agent Core will push `SpanProto` with `Node` to each exporter.
149
149
receiving them, each exporter will translate ` SpanProto ` to the format supported by the
150
150
backend (e.g Jaeger Thrift Span), and then push them to corresponding backend or service.
151
151
152
- ## <a name =" opencensus -collector" ></a >OpenCensus Collector
152
+ ## <a name =" opentelemetry -collector" ></a >OpenTelemetry Collector
153
153
154
154
### <a name =" collector-architecture-overview " ></a >Architecture Overview
155
155
156
- The OpenCensus Collector runs as a standalone instance and receives spans and
157
- metrics exporterd by one or more OpenCensus Agents or Libraries, or by
156
+ The OpenTelemetry Collector runs as a standalone instance and receives spans and
157
+ metrics exporterd by one or more OpenTelemetry Agents or Libraries, or by
158
158
tasks/agents that emit in one of the supported protocols. The Collector is
159
159
configured to send data to the configured exporter(s). The following figure
160
160
summarizes the deployment architecture:
161
161
162
- ![ OpenCensus Collector Architecture] ( https://user-images.githubusercontent.com/10536136/46637070-65f05f80-cb0f-11e8-96e6-bc56468486b3.png " OpenCensus Collector Architecture")
162
+ ![ OpenTelemetry Collector Architecture] ( https://user-images.githubusercontent.com/10536136/46637070-65f05f80-cb0f-11e8-96e6-bc56468486b3.png " OpenTelemetry Collector Architecture")
163
163
164
- The OpenCensus Collector can also be deployed in other configurations, such as
164
+ The OpenTelemetry Collector can also be deployed in other configurations, such as
165
165
receiving data from other agents or clients in one of the formats supported by
166
166
its receivers.
0 commit comments