我正在尝试使用python应用程序(基于django)进行测试,以便能够将事务跟踪推送到Elastic APM,稍后可以使用OpenDistro Elastic中的跟踪分析工具查看。
我试过以下方法
方法1:
安装opentelemeter-exporter-otlp
然后,在manage.py
文件中,我添加了以下代码,以直接将跟踪发送到弹性APM。
span_exporter = OTLPSpanExporter(
endpoint="http://localhost:8200",
insecure=True
)
运行代码时,出现以下错误:
Transient error StatusCode.UNAVAILABLE encountered while exporting span batch, retrying in 1s.
Transient error StatusCode.UNAVAILABLE encountered while exporting span batch, retrying in 2s.
方法2:
由于方法1不起作用,我尝试在两者之间使用OpenTelemetry Collector。我用以下方式配置了收集器:
extensions:
memory_ballast:
size_mib: 512
zpages:
endpoint: 0.0.0.0:55679
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
memory_limiter:
# 75% of maximum memory up to 4G
limit_mib: 1536
# 25% of limit up to 2G
spike_limit_mib: 512
check_interval: 5s
exporters:
logging:
logLevel: debug
otlp/elastic:
endpoint: "198.19.11.22:8200"
insecure: true
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [logging, otlp/elastic]
metrics:
receivers: [otlp]
processors: [memory_limiter, batch]
exporters: [logging]
extensions: [memory_ballast, zpages]
并将我的代码配置为像这样向收集器发送跟踪-
span_exporter = OTLPSpanExporter(
endpoint="http://localhost:4317",
insecure=True
)
一旦启动程序,收集器日志中就会出现以下错误-
go.opentelemetry.io/collector/exporter/exporterhelper.(*retrySender).send
go.opentelemetry.io/collector@v0.35.0/exporter/exporterhelper/queued_retry.go:304
go.opentelemetry.io/collector/exporter/exporterhelper.(*tracesExporterWithObservability).send
go.opentelemetry.io/collector@v0.35.0/exporter/exporterhelper/traces.go:116
go.opentelemetry.io/collector/exporter/exporterhelper.(*queuedRetrySender).start.func1
go.opentelemetry.io/collector@v0.35.0/exporter/exporterhelper/queued_retry.go:155
go.opentelemetry.io/collector/exporter/exporterhelper/internal.ConsumerFunc.Consume
go.opentelemetry.io/collector@v0.35.0/exporter/exporterhelper/internal/bounded_queue.go:103
go.opentelemetry.io/collector/exporter/exporterhelper/internal.(*BoundedQueue).StartConsumersWithFactory.func1
go.opentelemetry.io/collector@v0.35.0/exporter/exporterhelper/internal/bounded_queue.go:82
2022-01-05T17:36:55.349Z error exporterhelper/queued_retry.go:304 Exporting failed. No more retries left. Dropping data. {"kind": "exporter", "name": "otlp/elastic", "error": "max elapsed time expired failed to push trace data via OTLP exporter: rpc error: code = Unavailable desc = connection closed", "dropped_items": 1}
我在这里错过了什么?
注意:我使用的是最新版本的opentelemetry sdk和API以及最新版本的collector。
好的,所以使用开放发行版的Elastic来获取跟踪的方法是:
避免使用APM本身。OpenDistro提供了一个名为Data Prepper的工具,必须使用该工具才能将数据(跟踪)从Otel Collector发送到OpenDistro Elastic。
以下是我为Otel Collector
所做的配置,用于将数据发送到数据预处理器
:
... # other configurations like receivers, etc.
exporters:
logging:
logLevel: debug
otlp/data-prepper:
endpoint: "http://<DATA_PREPPER_HOST>:21890"
tls:
insecure: true
... # Other configurations like pipelines, etc.
这就是我如何配置Data Prepper
来从Collector
接收数据并将其发送到弹性
entry-pipeline:
delay: "100"
source:
otel_trace_source:
ssl: false
sink:
- pipeline:
name: "raw-pipeline"
raw-pipeline:
source:
pipeline:
name: "entry-pipeline"
prepper:
- otel_trace_raw_prepper:
sink:
- elasticsearch:
hosts: [ "http://<ELASTIC_HOST>:9200" ]
trace_analytics_raw: true
我收到弹性APM日志结构中来自opentelemeter收集器的日志: “{Timestamp:HH:mm:ss}{Level:u3}trace.id={TraceId}事务。id={SpanId}{NewLine}{Message:lj}{NewLine}{Exception}” 例子: 我试着使用管道 我的目标是查看Elastic APM中的日志
logstash的elasticsearch输出可以选择关闭SSL验证 https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-输出-elasticsearch-ssl_证书_验证 apm是否有类似的选择? Elasticsearch使用自签名证书,而apm在连接到ES时
之前我们介绍过,响应式网站设计主要包括三部分:弹性布局、媒体查询和弹性媒介。我们分别了解下这几个。 弹性布局 所谓的弹性布局,说的是在创建网站的时候,采用流体网格布局方式,动态地调整网站布局宽度以此来适应各种设备屏幕大小。 弹性布局不使用固定的测量单位,比如像素或者英寸。原因显而易见,视窗( viewport )的高度和宽度在不同设备之间是不断变化的,那么弹性网站布局为了适应这种变化,所以就不可能
我使用Kafka作为队列,节点服务使用Kafka节点生成和使用Kafka主题的消息。 我一直在使用自制的分布式跟踪解决方案,但现在我们正在转向弹性APM。 这似乎是为HTTP服务器量身定制的,但如何配置它以与Kafka一起使用呢? 我希望能够像下面这样跟踪事务:服务A向服务B发送一个HTTP请求,服务B向Kafka Topic C生成该请求,服务D从中使用该请求,服务D将一些数据放入Kafka T
我们正在尝试安装弹性apm(目前在我们的开发系统上)。 根据自制软件,我们有最新的(7.10.2)、(7.10.2),今天安装了(7.13.0版)。运行apm服务器测试输出,我们得到: 因为关于让APM运行的文档有些迟钝,这可能是一个配置问题。但如何进一步调查呢? 解决方案是安装早期版本的apm服务器吗?如果是的话。。。。如何用自制软件实现这一点?
Kibana反应是 APM服务器返回503-内部服务器错误,难以确定根本原因。是ES队列已满或内存不足,还是群集设置不正确? 根据ES文件:https://www.elastic.co/guide/en/apm/server/master/common-problems.html#queue-满满的 满队列通常意味着代理收集的数据比APM服务器能够处理的要多。当APM服务器没有为您的Elastic