0

我对 APM 和 Kibana 真的很陌生,但是可以使用 Python 和 ElasticSearch。在我拥有 Graphite 之前,进行自定义跟踪非常容易。

我希望跟踪 3 个简单的自定义指标及其随时间的演变。

  1. CounterName 及其值。例如 queue_size: 23 并由任何工作人员发送。当不同的工人发送不同的值时会发生什么?(由于时间的原因,该值可能会迅速增加/减少)。

我确实有 20 个要跟踪的队列名称。我应该将所有内容放在 service_name 下还是应该使用标签?

在我使用之前:

self._graphite.gauge("service.queuesize", 3322)

不知道现在在这里有什么:....

  1. 在方法中花费的时间。我在这里看到可以有一个上下文管理器。

在我有之前:

with self._graphite.timer("service.action")

会变成

with elasticapm.capture_span('service.action')
  1. 请求数。(只算不计其他跟踪)

在我有之前

self._graphite.incr("service.incoming_requests")

这个对吗?

client.begin_transaction('processors')
client.end_transaction('processors')
...

多谢!

4

1 回答 1

0
  1. 您可以向APM 中的事件添加几种不同类型的元数据。由于听起来您希望能够在这些计数器上搜索/仪表板/聚合,因此您可能需要标签,使用elasticapm.label().

  2. elasticapm.capture_span确实是这里的正确工具。请注意,它既可以用作函数装饰器,也可以用作上下文管理器。

  3. 事务确实是跟踪请求量的最佳方式。如果您使用受支持的框架之一,这些事务将自动创建,因此您不必处理跟踪Client对象或自己启动事务。

于 2020-03-16T16:43:38.197 回答