opentemetry快速入门
opentemetry的javaagent或sdk采集调用链、指标数据。采集到数据后,有两种模式来发送到后端。
一种是直接对接到后端:
image.png
可以对接到多种后端:
1、jaeger
2、zipkin
3、OTLP exporter (比如opentelemetry-collector)
4、prometheus(指标)
另一种方式是对接到opentelemetry-collector,再由opentelemetry-collector对接后端:
image.png
这种情况下,collector起到了网关的作用
接下来我们来实际操作一下
下载javaagent
https://github.com/open-telemetry/opentelemetry-java-instrumentation
当然,除了用javaagent,也可以用sdk
直接对接zipkin
增加参数:
-Dotel.traces.exporter=zipkin
通过otel.exporter.zipkin.endpoint可以自定义后端地址
启动zipkin后查看:
http://localhost:9411/
image.png
效果不错
image.png
对接jaeger
增加参数:
-Dotel.traces.exporter=jaeger
对接Prometheus
-Dotel.metrics.exporter=prometheus -Dotel.exporter.prometheus.port=9464
对接普罗,java agent会开放一个server端口9694,等待Prometheus来pull数据
我们可以直接访问http://localhost:9464/ 查看指标数据
在Prometheus增加配置:
- job_name: "opentelemetry"
static_configs:- targets: ["127.0.0.1:9464"]
labels:
opentelemetry: true
- targets: ["127.0.0.1:9464"]
通过collector对接到多个后端
collector收集javaagent的数据之后,仍然可以再export到多个后端
java服务启动参数:otel.traces.exporter=otlp,也可以不加,默认就是
下载collector:
https://github.com/open-telemetry/opentelemetry-collector-contrib
配置文件:
receivers:
otlp:
protocols:
grpc:
http:
cors:
allowed_origins:
- "http://*"
- "https://*"
exporters:
# Data sources: traces
jaeger:
endpoint: "127.0.0.1:14250"
tls:
insecure: true
# Data sources: traces, metrics, logs
logging:
loglevel: debug
# Data sources: metrics
prometheus:
endpoint: "127.0.0.1:9100"
namespace: "default"
# Data sources: traces
zipkin:
endpoint: "http://localhost:9411/api/v2/spans"
processors:
batch:
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch ]
exporters: [logging,zipkin,jaeger ]
metrics:
receivers: [otlp]
processors: [batch ]
exporters: [prometheus, logging]
上述配置文件中,从oltp(即javaagent)接收数据,指标export到普罗,traces export到zipkin和jager
启动collector:
otelcol.exe --config=config.yml